Какие есть технологии для разработки браузерных онлайн-игр? На каком языке пишут браузеры
Какие есть технологии для разработки браузерных онлайн-игр? — Toster.ru
Как верно сказал @Eugene22, выбирать язык стоит из двух факторов - 1) существующий опыт на каком-то языке и 2) что хочется изучить для будущего. Если с первым пунктом плохо, то остаётся выбрать какой-то язык и начать его изучать. Браузерные игры состоят из трёх компонентов: 1) клиентская часть - тут практически без вариантов - javascript. 2) серверная часть - тут есть множество вариантов. Из основных два варианта - php или Node.js (это серверный javascript). Оба варианта достойны рассмотрения, у каждого есть свои достоинства и недостатки. Также можно рассмотреть Python и Ruby. Не стоит сбрасывать со счёта Java и .Net языки (тут c# и asp.net). Ну и экзотика - Erlang или Go (всё-таки go я отнёс к экзотике, потому что это развивающийся язык, но активно набирает очки). 3) База данных - для хранения игровых данных. Здесь тоже есть о чём подумать - взять обычный привычный вдоль и поперёк исследованный MySQL, или подумать о более мощных базах типа Postgres, или взять модный MongoDb и его nosql-братьев. Выбирайте, что вам нужно и вперёд. Но самый главный мой совет - не беритесь за что-то "типа Травиана и Гриполиса" в качестве первого проекта. Подобные проекты делаются годами профессиональными опытными программистами. Сделайте что-то гораздо проще - типа танчиков, бомбермена, вертолётиков, гонок - где есть только одна основная игровая механика. За время разработки этого проекта вы получите бесценный опыт, без которого вы даже не сможете оценить сложность тех проектов, о которых вы говорили в вопросе.
UPD. В своём ответе вы просите добавить аргументов в пользу некоторых серверных языков. Добавлю про них.Первым рассмотрим php. Это достаточно простой язык для начала написания скриптов, и можно очень быстро написать что-то уже рабочее. Но это язык, который за внешней простотой прячет большую гибкость и достаточно сложные моменты. Поэтому для профессионального его использования нужны его глубокие знания, иначе получившийся код будет 1) медленным, 2) дырявым (ошибки и уязвимости) и 3) сложным в поддержке (сложно добавлять новые функции). Но начать его использовать очень просто.Node.js. Это серверная платформа, имеющая в качестве языка программирования javascript. Он в некоторых задачах намного быстрее, чем php, но в некоторых может быть сравним по скорости. Его преимущество, что используется тот же язык, что и для клиентской части - меньше изучать. Его сложность в том, что для серверного языка он достаточно сложен, писать хороший код сложнее, чем на php. Плюс, его основные парадигмы - прототипное наследование и асинхронный код - достаточно сложны для понимания. Хорошим советом может оказаться учиться писать не обычный javascript, а его разновидность CoffeeScript, но многие не согласятся, тут нет единого мнения.Python. Это очень мощный язык, позволяющий писать программы не только для web (собственно, сервер игры), но он используется очень много где. Он имеет очень простой синтаксис (кстати, отличающийся от многих других c-подобных языков), но очень гибкий и быстрый, и обладает богатейшей библиотекой готового кода (в принципе, php и node.js тоже обладают этим преимуществом). Недостатком можно отметить то, что гораздо меньшее количество программистов им владеют, и может быть, будет сложнее получить консультацию по возникшим вопросам (а вопросы будут - причём в любом языке). В общем, Python - отличный выбор для начала изучения серверного программирования.Ruby может дать очень быстрый старт и быструю разработку. Но его знают ещё меньше программистов, чем Python. Насчёт скорости выполнения он, вроде, медленнее питона (тут я не уверен, не хочу обманывать - у меня нет опыта на ruby). Его синтаксис достаточно своеобразен. Но если вы его хорошо освоите, то никогда не останетесь без высокооплачиваемой работы.Java и C# - очень мощные языки общего назначения, дадут очень сильную платформу для любого приложения, в том числе и сервера. Но они сложные, изучать их и хорошо писать на них гораздо сложнее предыдущих рассмотренных языков.Go - новый развивающийся язык, можно рассмотреть его для изучения. Но на нём пока мало готового кода, мало материалов, небольшое сообщество.Erlang - функциональный язык с очень необычной архитектурой (с точки зрения всех предыдущих языков), и очень необычный синтаксис. Изучать его сложно, но он даёт потрясающие результаты - в некоторых задачах. Советовать его не буду.
toster.ru
15 самых популярных языков программирования по версии GitHub / Хабрахабр
Разработчики программного обеспечения пользуются огромным спросом в настоящее время. В некоторых компаниях даже стажеры-программисты получают высокую зарплату. ИТ-компании борются друг с другом за талантливые кадры.
А кадры, в свою очередь борются за место под солнцем. Успех тех и других будет зависеть от того, насколько хорошо у них получается держать руку на пульсе, быть в тренде, использовать перспективные технологии и языки программирования. Чтобы понять, на что ориентироваться и в каком направлении идти, разработчики ПО и их работодатели изучают различные исследования и рейтинги популярности – будь то бизнес-модели или те же технологии и языки программирования.
Однако некоторые игроки ИТ-рынка оказались предприимчивыми и создали проекты, посвященные ранжированию и трендам. К примеру, на этой неделе GitHub опубликовал собственный рейтинг 15 самых популярных языков программирования. Конечно же, популярность определялась по количеству pull-запросов на GitHub за последний год.
В настоящее время в GitHub представлены 5.8 миллиона активных пользователей, 331 тысяча организаций и 19.4 миллиона репозиториев.
No. 15 — TypeScript:
Язык своим появлением обязан компании Microsoft. Он создан как средство разработки веб-приложений, расширяющее возможности JavaScript. Основным разработчиком языка TypeScript является Андерс Хейлсберг который ранее участвовал в создании Turbo Pascal, Delphi и C#. В ближайшее время выйдет релиз TypeScript 2.0.
No. 14 — Swift:
Язык собственного приготовления – от компании Apple. Он был создан для iPhone-приложений в 2014 году. Однако Swift за столь короткий срок сумел завоевать популярность.
Такси-сервис Lyft переписал свое iPhone-приложение на этом языке и сообщил об «огромном скачке» в производительности.
А совсем недавно вышло новое приложение Swift Playgrounds – самый простой способ познакомиться с языком Swift. По крайней мере, в этом уверен Крейг Федериги, старший вице-президент компании Apple по программному обеспечению.
No. 13 — Scala:
Этот язык программирования вышел в свет в 2001 году. Его подхватили такие крупные компании, как Airbnb и Apple. По их мнению, на нем проще и быстрее писать приложения для их нужд, нежели на набившем оскомину языке Java.
Изначально Scala, поддерживающий объектно-ориентированную и функциональную парадигмы, был создан с расчетом на трансляцию в байт-код Java и .NET. Со временем также появился транслятор Scala в код JavaScript — Scala.js. Однако в мае 2016 года стало известно, что в рамках проекта Scala Native создается компилятор, обещающий ускорить выполнение приложений, написанных на этом языке.
No. 12 — Objective-C:
Изначальный С так понравился людям, что у него появились последователи. В частности, некоторые из них вдохновились на создание Objective-C, который предстал перед публикой в 1983 году. Конечно, в него были добавлены новые идеи и элементы языка Smalltalk, но буква С не зря венчает его название.
Особенно распространился Objective-C среди разработчиков под платформы Apple. Пока он удерживает эти позиции, но Swift грозится потеснить потомка С в скором времени.
No. 11 — Shell:
Это гадкий утенок среди прочих участников списка: Shell – не столько язык, сколько интерпретатор команд для выполнения тех или действий в операционных системах семейства UNIX. Его скрипты используются, например, для автоматизации обновления ПО. Он содержит стандартные конструкции для циклов, ветвления, объявления функций и так далее.
No. 10 — Go:
Был разработан внутри компании Google. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон. Официально язык был представлен в ноябре 2009 года.
Язык Go разрабатывался как язык системного программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языку Си.
При разработке уделялось особое внимание обеспечению высокоэффективной компиляции. Программы на Go компилируются в объектный код (хотя доступен и интерпретатор) и не требуют для исполнения виртуальной машины.
No. 9 — C:
Это язык, которому теперь пытаются найти замену. Язык Си был разработан Деннисом Ритчи в 1972 году в Bell Labs. Он является предшественником таких языков программирования как С++, Java, C#, JavaScript и Perl. По этой причине изучение этого языка ведет к понимаю и других языков. Язык С используется для разработки низкоуровневых приложений, так как считается ближе всего к аппаратному, уступая только ассемблеру.
No. 8 — C#:
С# принадлежит семье языков программирования Microsoft и был разработан в 2000 году и стал частью первого релиза .NET framework. Язык С# сочетает в себе надежность С++ с дополнительными возможностями Java. Поэтому если вы хорошо знаете Java, можно легко переключиться на С# и наоборот.
Язык С# позволяет разрабатывать практически любые приложения, которые связаны с Visual Studio IDE.
No. 7 — CSS:
Cascading Style Sheets (каскадные таблицы стилей) — формальный язык описания внешнего вида документа, написанного с использованием языка разметки. Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам.
Указан рост популярности языка в процентах. Его место в рейтинге определяется числом pull-запросов пользователей. Рейтинг отражает популярность применения языков программирования в репозиториях.
No. 6 — C++:
Языку Си не хватало работы с объектами. Чтобы решить проблему, в 1986 году был разработан С++, который является одним из самых распространенных языков в мире. Google Chrome, Mozilla Firefox, Winamp и линейка продуктов Adobe были разработаны с помощью С++. Кроме того, некоторые современные игры и операционные системы были разработаны на С++ из-за быстрого процессинга и компиляции. Кроме того, разработчики С++ имеют огромный спрос на рынке труда.
No. 5 — PHP:
PHP — это один из наиболее широко используемых языков для разработки динамических веб сайтов. PHP был разработан в 1995 году и является языком сценариев на стороне сервера, что означает, что PHP код обрабатывается на сервера, а конечный результат пользователь получает в виде обычного HTML.
PHP открытый язык разработки, поэтому написаны уже тысячи модулей, которые можно модифицировать до требуемой функциональности.
Однако недоброжелатели не дремлют: Джефф Этвуд. основатель Stack Exchange, как-то писал, что PHP – это даже не язык программирования, это куча не связанных друг с другом фрагментов функциональности.
No. 4 — Ruby:
Ruby — простой и читаемый язык программирования, ориентированный на разработку веб приложений. Разработанный Юкихиро Мацумто в 1995 году, фреймворк Ruby использовался для разработки Github, Scribd, Yammer, Shopify и Groupon. Ruby сочетает в себе некоторые возможности Lisp, Pearl и Eiffel. Ruby имеет хороший рынок труда и разработчики получают достойно.
No. 3 — Python:
Python — это другой высокоуровневый язык программирования и часто считается самым легким языком, благодаря своей простоте, читаемости и синтаксису. Python был разработан Гвидо Ван Россумом в 1991 году. Python не использовался так широко в прошлом, однако стал особенно популярным за последние годы благодаря инвестициям Google. В настоящее время некоторые весьма известные и надежные сайты работают на python, особенно pinterest.com, instagram.com и rdio.com. Как и PHP, Python можно использовать для разработки веб приложений.
No. 2 — Java:
Java был разработан Джеймсом Гослингом в 1990 году в компании Sun Microsystems. Java дополнительно увеличивает возможности языка С++. Особенность Java заключается в том, что это первый чисто объектно-ориентированный язык программирования. Java был разработан по принципу WORA (Write Once Run Anywhere или «написав код однажды, вы запустите его везде»). Речь идет про переносимость Java. Необходимо скомпилировать исходный код на Java всего лишь раз, а затем запустить на любой машине с установленным JVM (Java Virtual Machine) и затем использовать.
No. 1 — JavaScript:
Серверные языки сценариев идеально подходят для разработки сложных веб приложений, но каждая такая задача сильно нагружает сервер. Поэтому разработчики делегировали часть функций на сторону клиента и использовали JavaScript. JavaScript — это язык программирования, выполняемый в клиентском браузере и обрабатывает команды на компьютере конечного пользователя, а не сервера, что приводит к снижению нагрузки на сервер и увеличению скорости работы приложения. JavaScript был разработан компанией Netscape и вряд ли есть сайты, которые не используют его.
Указан рост популярности языка в процентах. Его место в рейтинге определяется числом pull-запросов пользователей. Рейтинг отражает популярность применения языков программирования в репозиториях.
По данным GitHub, JavaScript, C# и Go показали двойной рост аудитории. А аудитория Swift и TypeScript выросла в 3,5 раза.
Индекс TIOBE распределил места немного по-другому: на первом месте оказался языка Java, далее следуют С, С++, С# и Python. А лидер рейтинга GitHub здесь занимает только 6-е место.
habrahabr.ru
Какой язык программирования больше всего любят в Яндексе? И всегда ли любовь взаимна
Сегодня мы хотим продолжить серию постов, в которых задаём разработчикам из Яндекса и пользователям Хабра самые острые для любого программиста вопросы. Сегодня это вопрос о том, какой язык программирования для вас любимый.
В любой компании, где есть разработчики, периодически возникают споры о том, ужасен Perl или прекрасен, обязательно ли знать функциональные языки или нет, насколько мотивирован выбор C++, с какого языка программирования нужно начинать учиться и т.п.
А если сотрудников в этой компании несколько тысяч, масштаб бедствия становится поистине грандиозным. Когда я пришла к тем своим коллегам, которых вы увидите в этом посте, то думала, что и причины для любви и ненависти у них будут отличаться. Но оказалось, что все ещё интереснее.
Многие из тех, с кем я говорила, знакомы вам по постам в блоге Яндекса на Хабре: anatolix, kappa, bobuk, yafinder, styskin. Несмотря на то, что многие участники нашего опроса стали руководителями, они продолжают писать код. Под катом можно прочитать подробные ответы, не полностью попавшие в видео, и рассказать, что вы думаете по теме.Григорий bobuk БакуновПрограммирует 25 лет. В Яндексе — 10 лет.
Когда-то пришёл работать системным администратором, а сейчас — директор по распространению технологий.
Вопрос, как всегда, очевидный. У меня любимых языков программирования, наверное, много. Больше всего я в последнее время пишу на Питоне — просто в силу того, что это язык, который позволяет мне максимально быстро выразить то, о чем я думаю. Но, конечно, он не единственный, и иногда приходится довольно много писать на JavaScript. Это не самое приятное развлечение в моей жизни. Наверное, больше всего кода и с наибольшим удовольствием я написал на Лиспе.
Мне никогда не удавалось написать что-то хорошо на Erlang, потому что меня от него немножко подташнивает. Я бы даже не сказал, что это язык. Erlang — это такая среда, которая создана одной конкретной компанией, развивается в рамках одной конкретной компании, в которой был такой своеобразный культ личности. Иногда это хорошо, но иногда это приводит к тому, что все делается так, как удобно одному конкретному человеку. Есть небольшая группа людей, которые сильно похожи на создателя Erlang. Для них все удобно, эффективно, красиво — и я даже двух таких человек знаю. Но в реальной жизни для меня это что-то неудобное. Это как сесть в треугольное кресло и пытаться как-то разместиться. Ты садишься и понимаешь, что вообще не мое. И здесь болит, и здесь болит, как ни откинься. И уснуть невозможно. Вот у меня от Erlang такое ощущение. Примерно похожие ощущения были, когда я пытался заниматься Smalltalk, но тут тонкость в том, что он был для меня вынуженной необходимостью и поэтому я себя немного пересиливал. Видимо, Smalltalk принял мою форму. Ну, я не верю, что это я принял его форму. А с Erlang не срослось.
Данил stolen ЗагоскинПрограммирует 16 лет. В Яндексе — год.
Разработчик в группе разработки интерфейсов облачной платформы. Данил занимается нашим WebDAV-сервером, о котором мы рассказывали и который был написан на Erlang.
Мой любимый язык — Erlang, поэтому я здесь на нём и пишу. Когда я думал о том, как я хочу программировать, я подумал-подумал и что-то придумал. И когда я начал рассказывать об этом своим друзьям, они сказали, что я придумал Erlang. Поэтому я просто взял его и стал на нем писать.
С Erlang можно легко создавать очень конкурентные приложения, когда работает много независимых потоков, пусть даже общающихся, но в целом очень слабо друг на другам влияющих. Erlang позволяет не думать при разработке о том, что кто-то кого-то заблокирует, что из-за жирной задачи какая-то небольшая не выполнится быстро. При этом Erlang позволяет не думать о таких вещах, как совместный доступ к данным, потому что они у каждого процесса свои. И при обмене данными между процессами они копируются (ну, или делают вид, что копируются). При этом нет изменяющихся переменных. Это не всегда удобно, но позволяет избежать очень многих ошибок, которые возникают из-за того, что ты в одном месте что-то изменил, а в другом — не учел этого.
Нелюбимых языков у меня нет. Есть языки удобные и неудобные. Я думаю, что есть те, которые для меня неудобны, но я не могу назвать их нелюбимыми.
Сергей svv ВавиновПрограммирует 27 лет. В Яндексе — 6 лет.
Пришёл в Яндекс разработчиком в Яндекс.Видео. Был главным в разработке Музыки, потом — в службе медиасервисов. Сделал несколько проектов для Яндекс.Диска. Сейчас — руководитель группы технологий работы с большими данными. Одна из задач, над которой работает Сергей, — проекты Яндекса для ЦЕРНа.
Я боюсь, что моего любимого языка программирования еще не создали, но могу перечислить нелюбимые. Мне не нравится C++. Он из тех языков, которые, наверное, нужно знать и на которых нужно уметь писать. То есть, как зарабатывать деньги, драться — можно любить, можно не любить, но нужно уметь. Для многих проектов полезно знать Java. С точки зрения самого языка, он достаточно плохой и убогий. Люди, которые всерьез занимаются программированием, сразу будут чувствовать его ограничения. Но Java — это не только язык, но и платформа: виртуальная машина JVM, стандартная библиотека, большое количество open source библиотек. Если понимать достоинства и ограничения платформы, это вполне подходящий язык для многих больших проектов. Очень важно знать какие-то скриптовые языки — Perl, Python. Первый, скорее, из нелюбимых, в второй — из любимых.
Есть некоторые количество языков, у которых есть какие-то перспективы и из которых могут вырасти реально достойные. Сейчас сложно судить, какие из них выстрелят, но за ними стоит следить, чтобы понимать, какие в них заложены идеи. Из таких языков, например, Rust — язык, который сейчас используется для всяких мозилловских разработок. Он достаточно современный и потенциально может заполнить нишу, которую сейчас занимает C++ и отчасти Java. В нём много идей и из функционального мира, много идей о безопасном программировании. Но пока это именно исследовательская разработка, но Rust из тех языков, за которыми стоит следить.
Артём breqwas КуликовПрограммирует 12 лет. В Яндексе — 8 лет.
В Яндекс позвали за то, что я парсил данные из Поиска по блогам с помощью Перла. Позвали не только поругать, но и на работу. Много лет делал Поиск по блогам, в частности был основным разработчиком подсервиса Яндекс.Пульс. Сейчас разрабатывает Рекламную сеть, один из самых критичных в смысле отказоустойчивости сервисов.
Я пишу программы на языке программирования Perl, и мне это нравится. Когда-то давно меня прособеседовали на язык C++ и взяли на работу. Я тогда хоть и был студентом, но уже успел где-то поработать. И вот в Яндексе мой тогдашний начальник, которого все именуют Дрюха, несмотря на то, что у него есть имя и фамилия, спросил меня: «Хочешь на C++ программировать?» Я ответил: «Не-е-ет». В ответ он сказал: «Тогда учи Perl». И я его выучил. С тех пор пишу на нём, и это просто прекрасно Он не пытается объяснять мне, что надо делать, и я пишу так, как хочу сам.
Нелюбимый язык программирования — это тот, который вызывает боль и несчастье. Обычно на таких языках люди не пишут. Зачем? Есть языки, которые у меня вызывают боль, а у остальных — нет. Например, есть у нас люди (и некоторые из них даже сидят со мной в одной комнате), которые любят писать большие программы на языке Shell. Это ужасно. Зачем они это делают, я не знаю, но они их пишут. И мне их приходится читать. Это неприятно.
Андрей МищенкоПрограммирует 24 года. В Яндексе — 9 лет.
Пришёл в Яндекс разработчиком на C++, долго был руководителем разработки Поиска по блогам. Сейчас работает над улучшением алгоритмов машинного обучения в поиске.
Мой любимый язык программирования не для работы, а для души, это, конечно, Haskell. По крайней мере, когда я о нём узнал, он произвел на меня самое большое впечатление. Все, что было до этого, померкло. Я представить себе не мог, что могут быть языки программирования настолько стройные математически. Какие там замечательные системы типов, какие там замечательные ленивые вычисления, как там можно удобно и компактно формулировать мысли. Но я прекрасно понимаю, что для работы он более-менее не применим. На нём удобно писать статьи, когда ты хочешь рассказать о каком-то алгоритме так, чтобы его очень хорошо все поняли, а твой рассказ при этом был очень коротким. Вот в таких случаях код лучше всего написать на Haskell. Кому надо, те поймут.
Вообще программировать я начинал с Паскаля, потом были C, C++, немного скриптовых языков. Язык, который я лучше всего знаю для работы, это Perl, но не скажу, что он сильно мною любимый. В нем хватает своих недостатков, так скажем.
Если говорить о нелюбимых языках, то, наверное, могу вспомнить XSL. Он очень громоздкий. То есть в нем были совершенно замечательные задумки, но то, как они воплотились, меня пугает.
Алексей kappa КапрановПрограммирует 21 год. В Яндексе — 3 года.
Когда-то был руководителем Рамблер-Почты. Сейчас руководит группой инфраструктуры персональных сервисов в Яндексе. Лёша рассказывал на Хабре, как мы научили Почту обмениваться письмами по IPv6 и поддерживать SSL-шифрование.
Мой любимый язык программирования традиционно старый Perl. Начал я им заниматься еще на первых курсах института. Вопреки требованиям наших преподавателей делал на нём все лабораторные и диплом. Сейчас я не так часто занимаюсь непосредственно программированием, но по-прежнему Perl — это инструмент, который я использую чаще, чем любой другой.
Когда-то это был первый динамический, первый скриптовой язык, который позволял очень-очень быстро воплощать свои идеи и мысли в жизнь. После него появилось много последователей, но, мне кажется, он остался самым нескучным из всех скриптовых языков. Один из его важных принципов — это то, что любое действие можно выполнить несколькими способами. Часто этих способов действительно много, и это позволяет выбрать из них иногда самый быстрый, иногда — самый элегантный, иногда — самый короткий, иногда, может быть, самый понятный другому человеку, не знакомому с языком. Perl позволяет одну и ту же программу написать миллионами разных способов. Это очень прикольно.
А языка, который бы вызывал у меня прям негативные эмоции, я не припомню. Разве что какие-то очень-очень многословные языки типа неаккуратной студенческой Java.
Анатолий anatolix ОрловПрограммирует 25 лет. В Яндексе — 9 лет.
Первые два года писал Маркет. Долгое время занимался поиском — в основном его производительностью, а потом и всем остальным. Сейчас занимается разными проектами в области скорости, архитектуры и т.д. Заместитель руководителя направления поисковых сервисов. Входит в 2% людей, которые заканчивают курсы на Coursera.
Любимый язык программирования у меня C++. И нелюбимый язык программирования у меня тоже C++. Что достаточно странно. Я его люблю за то, что он мощный и в нём ты не платишь за возможности, которые не используешь. Но современные языки программирования позволяют писать те же самые вещи сильно проще.
К сожалению, никакого более любимого языка программирования уже не появится. Сейчас все новые языки условно не для тех программистов, которым нужно написать какой-нибудь high performance, а для индусов, за которыми нужно почистить память, потому что они сами этого не умеют. А я хочу язык, чтобы, грубо говоря, если и была сборка мусора, то опциональной. В некоторых современных языках ее можно выключить, но если вся твоя стандартная библиотека написана в концепции, когда у тебя есть сборщик мусора, то в тот момент, когда ты его выключишь, у тебя все сломается. На самом деле, нужен язык без сборщика мусора, куда его можно включить.
Андрей yafinder ПлаховПрограммирует 24 года. В Яндексе — 6 лет.
Пришел в Яндекс старшим разработчиком. Первой его задачей было создание нового типа факторов ранжирования — доменных. Сейчас руководит службой функциональности поиска — в частности, разрабатывает поисковые подсказки.
C++. Это такой швейцарский нож. Это плохой молоток, плохой нож, плохая ложка, плохая вилка, плохой штопор и так далее. Но когда вы где-нибудь в поле, а у вас нет штопора, но есть швейцарский нож, это замечательно.
Мой нелюбимый язык программирования Haskell. Он замечательный, на нём можно заниматься увлекательнейшими вещами, имеющими отношения к теории языков программирования. И это как-то удивительным образом перпендикулярно производству какой-то осмысленной работы.
Алексей ЗахаровПрограммирует 24 года. В Яндексе — 6 лет.
Руководитель Java-разработки в отделе разработки облачных сервисов.
По сказке я должен сказать, что мой любимый язык программиррования — Java, но я с одинаковой силой люблю, но по разным причинам, люблю Java и Python. Java — хороший язык. Я с ним познакомился практически во время его зарождения где-то в 1996 году, начал на нём писать еще в институте, потом на всяких разных работах, потом продолжил в Яндексе.
Java такой, на самом деле, серьезный язык, на котором можно написать достаточно серьезный код. Он будет хорошо работать, будет статически проверен, в нем будет мало ошибок. Для него написано очень много всяких фреймворков, хороших IDE, тулзов, которые многое за тебя сделают: и подсветят синтаксис, и проверят его. Много всего хорошего сделано за время существования платформы. А Python такой более легковесный, более легкомысленный язык. Но на нём можно делать такие элегантные штучки, красивые и короткие программы, которые ласкают глаз, когда ты на них смотришь.
В Python нет статической типизации, поэтому ту программу, которая на Java занимает два экрана, можно уместить в 10 строчек и получить удовольствие от этого. Но в то же время он не обладает таким страшным синтаксисом, как Perl и еще какие-то языки. Но это, конечно, дело вкуса. Кому-то нравится Python, кому-то — только Perl, кому-то — только Java. Есть много Java-разработчиков, которые любят такие легкомысленные штуки вроде Python’а и JavaScript’а. А я люблю и то, и другое.
В той части Яндекса, где я работаю, традиционно не очень любят Perl, потому что он страшен. Немножко побаиваются C++, потому что на нем можно сделать очень серьезные большие и страшные программы, которые потом никто не поймет, в которых очень долго можно искать ошибку, потому что в C++ можно делать очень много такого, что запрещенно, скажем, в Java. Вот это пресловутое множественное наследование, перегрузка операторов в плюсики и минусики. Можно сделать такую программу, которая вообще непонятно о чем будет. Но, конечно, если это будут читать люди, которые любят C++, то они, наверное, начнут генерировать какой-то гнев в мою сторону. Так что я не буду больше ничего говорить.
Михаил mlevin ЛевинПрограммирует 18 лет. В Яндексе — 5 лет.
Вы могли видеть лекцию Миши о том, как математика помогает Яндексу зарабатывать. Очень большая часть его деятельности — работа в наших академических программах. Он преподает в Школе анализа данных, участвует в создании программы обучения на факультете Computer Science Вышки и Яндекса. Дважды завоевывал медали на ACM ICPC в составе команды МГУ им. М.В. Ломоносова.
Есть язык программирования, на котором я пишу всякие олимпиады, — это C++. Просто исторически так сложилось, что на нём много опыта и удобнее получается быстро что-то написать так, чтобы оно работало. На работе я постепенно все меньше и меньше программирую. На самом деле, никаких предпочтений у меня нет. Я скорее отношусь к языку как к инструменту, на котором нужно выразить свои мысли и решить задачи, поэтому во всяких холиварах предпочитаю не участвовать. Все любят жаловаться и на C++, и на другие языки. Я воспринимаю это как необходимое зло.
Антон pg83 СамохваловПрограммирует 18 лет. В Яндексе — 9 лет.
Пришёл в Маркет программистом на C++. Работал над самыми разными задачами сервиса. Через несколько лет перешёл в поиск, где занялся надежностью и производительностью runtime поиска. Сейчас занимается системой сборки, которая позволит собирать всю нашу кодовую базу за несколько минут на большом распределенном кластере.
У меня нет любимого языка программирования, потому что язык программирования — это инструмент, то, чем ты сейчас пользуешься. Есть языки, на которых мне нравится писать больше и на которых мне нравится писать меньше, но нет любимых. Я достаточно консервативен в выборе. То есть у каждого программиста есть коробочка с языками, которые он использует. Я хочу, чтобы моя коробочка была маленькой, и на текущий момент времени я выбрал для себя C++ и Python. Собственно эти языки и использую. Но они не любимые, а просто инструмент.
Начиная с какого-то времени, хороший программист может за неделю-две войти в курс дела и начать писать на любом языке — это совершенно не вопрос.
Андрей styskin СтыскинПрограммирует 18 лет. В Яндексе — 9 лет.
Пришёл в Яндекс разработчиком на Java в группу поиска Маркета. Занимался классификацией товарных текстов и извлечением фактов из товарных описаний. Так началось его увлечение поиском и машинным обучением. Вне работы Андрей делал различные IR-игрушки: генератор стихов на языковых моделях, робота для прокачки социальных сетей. Сейчас Андрей руководит отделом ранжирования, в котором работает команда почти из 200 человек.
Любимый язык программирования — Java. Но я так давно им не занимался, потому что в поиске принято все делать на C++, когда это что-то серьезное, и на Python, когда у людей очень мало времени и быстро хочется показать результат. Это о таких, как я.
Java достаточно прост для того, чтобы быстро делать прототипы любой сложности, потому что он достаточно унифицирован. Все люди, которые умеют писать на нём, смогут воспринимать чужой код, быстро разбирать и переиспользовать компоненты. C++ этим свойством, например, абсолютно не обладает. И, если заранее не договориться, что вот здесь мы делаем так, а здесь — так, прочитать чужой код на C++ практически нереально.
Нелюбимых языков у меня, наверное, нет. Каждый чем-то хорош. Но из тех, с которым приходится сталкиваться в Яндексе, но не всерьез, а так по-игрушечному, могу вспомнить какой-нибудь Haskell, который очаровывает своими математическими концепциями и абсолютно не применим в реальной работе.
Степан КольцовПрограммирует 10 лет. В Яндексе — 7 лет.
Старший разработчик в службе разработки систем хранения и обработки данных. Стёпа из тех сотрудников Яндекса, которые уходили, но потом возвращались. Сейчас работает над системами мониторинга в поиске.
Я считаю, что есть языки, на которых надо писать программы, а есть те, на которых будут писать программы через 10 лет. Сегодня программы должны писаться преимущественно на Java, поэтому сейчас я пишу на нём, и, кажется, это хорошо.
Условно говоря, есть всего два вида программ. Первые должны очень-очень быстро работать и выжимать последние байты из памяти и последние такты из процессора. А программы второго вида не очень требовательны к железу, и главное требование к ним самим — писать их нужно быстро, а поддерживать — дёшево. Сейчас мир устроен так, что первые, очень требовательные к железу, программы пишут на C++, а вторые — на Java. Как я уже говорил, я пишу на последнем и мне больше нравится писать, когда, условно говоря, можно написать много кода, от которого не требуют быстрой работы.
Но в будущем все будут писать на Rust. Rust — это моя любимая тема. Я всем рассказываю про Rust. Проблема C++ в том, что хотя программы получаются быстрыми, но написать их на нём так, чтобы они не падали, очень тяжело. Язык дает очень мало гарантий безопасности. Java дает очень много гарантий, но не позволяет писать программы так, чтобы они быстро работали. Rust, с одной стороны, позволяет писать безопасные программы, с другой — очень быстрые. Поэтому мой любимый язык программирования — это Rust. Но он еще не дошел до такого состояния, чтобы его можно было использовать, и будет таким лет через пять.
Я не люблю все динамические типизированные языки программирования — Python, Perl, JavaScript. У меня очень плохая память, а программы на них требуют, чтобы человек много всего запоминал. Нужно держать в голове какую-то информацию о типах, которой нет в коде. На самом деле, условно говоря, мне с ними совсем тяжело, потому что у меня плохая память. Людям, у которых хорошая память, просто тяжело.
Пока я готовила этот пост, задумалась, что если бы материал про языки программирования выходил в каком-нибудь массовом издании, там бы наверняка был психологический тест вроде «Какой язык программирования вам подходит». А как вы считаете, от чего зависит выбор того, на каком языке вы будете писать? И какие у вас любимые и нелюбимые языки программирования?