Для чего нужен язык программирования и какие критерии его выбора
Программирование
Языков программирования существует множество. В одном из них может нуждаться корпоративная система, другой необходим для разработки сайта, третий подойдет для решения определенных задач с приложениями Android и iOS, а четвертый требуется для компьютерных программ. Однако, это еще не все, языки отличаются друг от друга степенью востребованности у работодателя и уровнем оплаты. Для новичков основными критериями при выборе языка будут:
— простота изучения;
— востребованность языка в дальнейшем;
— размер оплаты труда.
Мы подготовили список языков, с которыми можно начать работать. Некоторые из них максимально простые, другие пользуются популярностью среди программистов. Зная их, будет проще найти работу.
HTML и CSS относятся к категории легких
Если быть точным, то HTML и CSS скорее не языки программирования, а языки разметки. Они оказывают помощь в работе любого сайта и применяются при верстке. HTML работает с текстом и отвечает за все элементы на странице. CSS это каскадные таблицы стилей, которые определяют, как элементы располагаются на сайте. CSS необходим для создания стилей, интересных шрифтов и различной цветовой гаммы. При должном старании на изучение этих языков хотя бы до уровня любителя должно хватить несколько недель.
Итак, HTML отвечает за структуру сайта, а CSS за графику и внешний вид. Преимущества обоих в простоте изучения, наличии вакансий в компаниях. Большинство приложений понимают HTML, производительность сайта зависит от CSS. Изучив основы HTML и CSS, можно разработать простой сайт.
JavaScript еще один несложный язык программирования
Он был создан для применения веб-разработчиками, но сегодня стал использоваться во многих областях программирования. Его задействуют при написании приложений, мобильных игр, десктопных программ. Выучить JavaScript можно довольно быстро. Если с языком Java необходимо написать десять строк, чтобы заставить машину совершить действие, то с JavaScript для аналогичной задачи достаточно одной. Однако, следует помнить, что такое положение дел делает код не очень надежным, его нельзя использовать для создания сложных программ. Среди преимуществ JavaScript:
— гибкий язык, наличие большого числа шаблонов;
— готовые библиотеки, что говорит о популярности языка;
— применение в разных областях разработки.
В особенности JavaScript входит необходимость обеспечения кроссбраузерности, отсутствие универсальной стандартной библиотеки. Для изучения языка предлагается следующая литература: Marijn Haverbeke, «Выразительный JavaScript»; Коди Линдли, «JavaScript Enlightenment»; Дэвид Сойер Макфарланд, «JavaScript и jQuery. Исчерпывающее руководство»; Дэвид Флэнаган, «JavaScript. Подробное руководство».
Все три вышеупомянутые языка входят в полный набор знаний Frontend-разработчика. По данным Work.ua, средняя оплата труда обладателя этой профессии в Украине составляет 25 тысяч гривен, а в Киеве 35 тысяч.
IT-школа DevEducation п
может, я обойдусь фреймворком? / Habr
В чем вообще разница?
Если говорить об объектно-ориентированных языках со статической типизацией, на самом деле разница небольшая. Единственное, о чем действительно стоит помнить, так это управление памятью. Если есть сборщик мусора, то особенно заботиться об указателях и удалении объектов не нужно. Вы жертвуете частью производительности и памяти (на самом деле, не всегда, так как сборщик мусора помогает избежать фрагментации и сегментации памяти, и у вас всегда есть занятая часть памяти, а также память для дальнейшего распределения, разделенные между собой указателем на следующую свободную область памяти). Тем не менее, лучшее понимание стека и кучи, значений, указателей, месседжинга между объектами, приходит из языков, где сборщика мусора по умолчанию нет. Вообще-то, вы можете использовать сборщик мусора (как пример — Boehm GC), но существуют паттерны, такие как, скажем, умные указатели и пулы, которые помогают управлять памятью, и быть уверенным, что объекты освобождаются. То есть, есть вещи, которым можно научиться из обоих «миров»: научиться тому, как управлять памятью, а также тому, как делегировать управление памяти, и понять, по каким принципам осуществляется сбор мусора. Мне это представляется достаточно полезным.
Чтение кода и применение практик
Чтение кода является одним из основополагающих умений для разработчиков. Я знаю несколько человек, которые чувствуют себя достаточно комфортно используя «свой» язык программирования, и не хотят даже пытаться посмотреть на возможности остальных. Но это ведь не так плохо, правда? Не совсем так. При изучении нового языка, люди часто начинают изучать набор библиотек, либо фреймворк, вместо изучения самого языка. Дело в том, что если есть фрейморк, качественно написанный, и отлично функционирующий, с открытым исходным кодом, то можно открыть код и посмотреть на его реализацию, и понять принципы и практики, примененные там, вместо непосредственно изучения верхушки айсберга — его API и функциональности, описанной в туториалах.
В следующий раз, когда вы смотрите на новый фреймворк, вне зависимости от того, над чем вы работаете, спросите себя, можете ли вы _сами_ реализовать подобную функциональность. Если нет, посмотрите на код, реализацию, постарайтесь понять, по каким причинам все сделано именно так, каким образом можно сделать лучше и удобнее. Я понимаю, что это не всегда возможно, но Open Source разработки с каждым днем становятся все более популярными, и покрывают больше и больше решаемых задач. Не пытайтесь выучить фреймворк. Учите язык. API будут меняться, и со временем, возможно, вам придется изменять код используемого фреймворка для решения собственных задач. Как пример, какая первая мысль приходит вам в голову, когда ваш JS селектор не работает? Если вы гуглите решение проблемы, то решается только половина задачи. Вторая остается на месте: возможность читать, понимать, отлаживать код, добираться до корня проблемы, и реализовывать решение своими руками.
Выводы?
Новые языки — это клево и весело. Вы снова задумываетесь о синтаксисе, и меняете свое восприятие. Задумываясь о том, каким образом подобную проблему можно решить на другом языке, вы смотрите на свой код с другой точки зрения. Мне все же кажется, что изучения любого языка может помочь понять глубже тот набор инструментов, что вы используете сейчас, и найти более элегантные решения. Изучения API, тем не менее, позволят вам чувствовать себя комфортно достаточно длительное время, но существенной пользы не принесут, так как запомнить всего невозможно. Главное — понимать, как устроены библиотеки, и какие основные принципы применяются в их разработке.
Не много толку учить еще один фреймоврк и еще один метод решения чего-то, нужно учить более общие тероии, позволяющие выводить эти методы самому, теорию типов, категорий, множеств и тп.
Для чего нужны языки программирования
Что такое язык программирования (стр. 1 из 3)
1) Введение стр. 1
2) Что такое язык программирования стр. 2
3) Для чего нужны языки программирования стр. 3
4) Какие существуют языки программирования стр. 4 – 7
5) Что такое компилятор и интерпретатор стр. 8
6) Список использованной литературы стр. 9
До середины 60-х компьютеры были слишком дорогими машинами, использовавшимися только для особых задач, и выполнявшими только одну задачу за раз (т. н. пакетная обработка).
Языки программирования этой эры, как и компьютеры на которых они использовались, были разработаны для специфичных задач, таких как научные вычисления. Поскольку машины были дорогими и лишь одна задача выполнялась за раз, то и машинное время было дорого – поэтому скорость выполнения программы стояла на первом месте.
Однако в течение 60-х цена на компьютеры стала падать так, что даже небольшие компании могли их себе позволить; скорость компьютеров всё увеличивалась и наступило время, когда они стали часто простаивать без задач. Чтобы этого не происходило, стали вводить системы с разделением времени (time-sharing).
В таких системах процессорное время «нарезалось», и все пользователи поочерёдно получали короткие отрезки этого времени. Машины были достаточно быстрыми для того, чтобы в результате каждый пользователь за терминалом чувствовал себя так, будто работает с системой в одиночку. Машина же, в свою очередь, простаивала меньше, поскольку выполняла не одну, а сразу много задач. Разделение времени радикально снижало стоимость машинного времени, поскольку одна машина могла совместно использоваться сотнями пользователей.
В этих условиях — когда мощность стала дешева и доступна — создатели языков программирования все больше стали задумываться об удобстве написания программ, а не только скорости их выполнения. «Мелкие»(атомарные) операции, выполняемые непосредственно устройствами машины, объединили в более «крупные», высокоуровневые операции и целые конструкции, с которыми человеку куда проще и удобнее работать.
Язык программирования — формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить то, на какие события будет реагировать компьютер, как будут храниться и передаваться данные, а также какие именно действия следует выполнять над этими при различных обстоятельствах.
Со времени создания первых программируемых машин человечество придумало уже более двух с половиной тысяч языков программирования. Каждый год их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты иногда применяют в своей работе более десятка разнообразных языков программирования.
Создатели языков по-разному толкуют понятие язык программирования. Среди общин мест, признаваемых большинством разработчиков, находятся следующие:
- Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами.
- Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека компьютеру, в то время как естественные языки используются лишь для общения людей между собой. В принципе, можно обобщить определение «языков программирования» — это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
- Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Для чего нужны языки программирования
Процесс работы компьютера заключается в выполнении программы, то есть набора вполне определённых команд во вполне определённом порядке. Машинный вид команды, состоящий из нулей и единиц, указывает, какое именно действие должен выполнить центральный процессор. Значит, чтобы задать компьютеру последовательность действий, которые он должен выполнить, нужно задать последовательность двоичных кодов соответствующих команд. Программы в машинных кодах состоят из тысячи команд. Писать такие программы – занятие сложное и утомительное. Программист должен помнить комбинацию нулей и единиц двоичного кода каждой программы, а также двоичные коды адресов данных, используемых при её выполнении. Гораздо проще написать программу на каком-нибудь языке, более близком к естественному человеческому языку, а работу по переводу этой программы в машинные коды поручить компьютеру. Так возникли языки, предназначенные специально для написания программ, — языки программирования.
Имеется много различных языков программирования. Вообще-то для решения большинства задач можно использовать любой из них. Опытные программисты знают, какой язык лучше использовать для решения каждой конкретной задачи, так как каждый из языков имеет свои возможности, ориентацию на определённые типы задач, свой способ описания понятий и объектов, используемых при решении задач.
Всё множество языков программирования можно разделить на две группы: языки низкого уровня и языки высокого уровня.
К языкам низкого уровня относятся языки ассемблера (от англ. toassemble – собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначения, а вместо двоичных адресов данных, используемых при выполнении команды, — символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называют мнемокодом или автокодом.
Большинство программистов пользуются для составления программ языками высокого уровня. Как и обычный человеческий язык, такой язык имеет свой алфавит – множество символов, используемых в языке. Из этих символов составляются так называемые ключевые слова языка. Каждое из ключевых слов выполняет свою функцию, так же как в привычном нам языке нам языке слова, составленные из букв алфавита данного языка, могут выполнять функции разных частей речи. Ключевые слова связываются друг с другом в предложения по определённым синтаксическим правилам языка. Каждое предложение определяет некоторую последовательность действий, которые должен выполнить компьютер.
Язык высокого уровня выполняет роль посредника между человеком и компьютером, позволяя человеку общаться с компьютером более привычным для человека способом. Часто такой язык помогает выбрать правильный метод решения задачи.
Перед тем как писать программу на языке высокого уровня, программист должен составить алгоритм решения задачи, то есть пошаговый план действий, который нужно выполнить для решения этой задачи. Поэтому языки, требующие предварительного составления алгоритма, часто называют алгоритмическими языками.
Фортран
Языки программирования стали появляться уже с середины 50-х годов. Одним из первых языков такого типа стал язык Фортран (англ. FORTRAN от FORmulaTRANslator – переводчик формул), разработанный в 1957 году. Фортран применяется для описания алгоритма решения научно-технических задач с помощью ЦВМ. Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественно-научных и математических расчётов. В усовершенствованном виде этот язык сохранился до нашего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при проведении научных исследований. Наиболее распространены варианты Фортран-II, Фортран-IV, EASICFortran и их обобщения.
Алгол
После Фортрана в 1958-1960 годах появился язык Алгол (Алгол-58, Алгол-60) (англ. ALGOL от ALGOrithmicLanguage – алгоритмический язык).Алгол был усовершенствован в 1964-1968 годах – Алгол-68.Алгол был разработан комитетом, в который входили европейские и американские учёные.Он относится к языкам высокого уровня (high-level language) и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе СССР, в то время как сравнимый с ним Фортран был распространен в США и Канаде. Алгол оказал заметное влияние на все разработанные позднее языки программирования, и, в частности, на язык Pascal. Этот язык так же, как и Фортран, предназначался для решения научно-технических задач. Кроме того, этот язык применялся как средство обучения основам программирования – искусства составления программ.
Обычно под понятием Алгол подразумевается язык Алгол-60, в то время как Алгол-68 рассматривается как самостоятельный язык. Даже когда язык Алгол почти перестал использоваться для программирования, он ещё оставался официальным языком для публикации алгоритмов.
Кобол
В 1959 – 1960 годах был разработан язык Кобол (англ. COBOL от COmmom Business Oriented Language – общий язык, ориентированный на бизнес). Это язык программирования третьего поколения, предназначенный, в первую очередь, для разработки бизнес приложений.Также Кобол предназначался для решения экономических задач, обработки данных для банков, страховых компаний и других учреждений подобного рода. Разработчиком первого единого стандарта Кобола являлась Грейс Хоппер (бабушкаКобола).
Кобол обычно критикуется за многословность и громоздкость, поскольку одной из целей создателей языка было максимально приблизить конструкции к английскому языку. (До сих пор Кобол считается языком программирования, на котором было написано больше всего строк кода). В то же время, Кобол имел прекрасные для своего времени средства для работы со структурами данных и файлами, что обеспечило ему долгую жизнь в бизнес приложениях, по крайней мере, в США.
Какой язык программирования больше всего любят в Яндексе? И всегда ли любовь взаимна
В любой компании, где есть разработчики, периодически возникают споры о том, ужасен 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. У меня очень плохая память, а программы на них требуют, чтобы человек много всего запоминал. Нужно держать в голове какую-то информацию о типах, которой нет в коде. На самом деле, условно говоря, мне с ними совсем тяжело, потому что у меня плохая память. Людям, у которых хорошая память, просто тяжело.
Пока я готовила этот пост, задумалась, что если бы материал про языки программирования выходил в каком-нибудь массовом издании, там бы наверняка был психологический тест вроде «Какой язык программирования вам подходит». А как вы считаете, от чего зависит выбор того, на каком языке вы будете писать? И какие у вас любимые и нелюбимые языки программирования?
Отправить ответ