Спор о первом языке программирования: окончательное решение
Некоторые относятся к спору о выборе первого языка программирования примерно так:

Говорят, на выбор влияет миллион фаторов и спорить по этому поводу не имеет никакого смысла. Тем не менее, холивары продолжаются.
Виталий Брагилевский решил поставить точку и на Saint AppsConf представил окончательное решение. После прочтения статьи (или просмотра доклада) вы будете знать, как правильно отвечать родственникам или знакомым, которые узнали, сколько зарабатывают в IT и что удалёнка тут не помеха, и теперь интересуются, с чего же начать.
Виталий Брагилевский работает в JetBrains и преподает в СПбГУ на факультете математики и компьютерных наук, член комитета по стандартизации языка программирования Haskell и наблюдательного комитета по разработке компилятора Glasgow Haskell Compiler языка Haskell, автор книги «Haskell in Depth».
Итак, давайте разбираться, как начать изучать программирование, какие инструменты использовать? На самом деле, это важный вопрос.
Еще Дейкстра в 1972 году написал: «. the tools we are trying to use and the language or notation we are using to express or record our thoughts are the major factors determining what we can think or express at all!»
Часто язык программирования (и язык вообще) просто не дает сделать то, что мы хотим, или дает это сделать не так, как мы хотим. Язык — это важный инструмент, и к его выбору нужно относиться серьезно.
Если совершить в этом выборе ошибку (или чаще кто-то делает выбор за ученика), то последствия могут быть серьезными. Именно так появились программисты:
- испорченные Фортраном;
- пострадавшие от BASIC;
- раздавленные C++;
- задушенные Java.
Раз мы видим таких людей, то логично предположить, что первый язык программирования как-то влияет.
У меня есть персональная история на этот счет. Моим первым языком программирования был Фортран, если не считать неудачного похода на лекцию по Бэйсику, на которой преподаватель рассказывал уже о массивах, а мне как новичку все было непонятно и отбило желание продолжать. Тогда я пошел в библиотеку, взял книжку по Фортрану и стал выполнять упражнения по программированию на листочке. Мне, честно говоря, так было даже удобнее — зато компилятор не ругается.
История вопроса
Начну с так называемой проблемы Ричарда Вексельблата. Этот человек известен тем, что его PhD стала первой в департаменте Computer Science. В 1980 году он написал статью о последствиях выбора первого языка программирования (Richard L. Wexelblat. The consequences of one’s first programming language. Proceedings of the 3rd ACM SIGSMALL symposium and the first SIGPC symposium on Small systems, 1980).
Началось все в 1978 году, когда Ричард написал в журнал письмо с провокационным заголовком «Ошибки молодости, или Действительно ли Бейсик вреден для вашего здоровья?». Ответы на это письмо и послужили материалом для статьи.

На основе повторяющихся точек зрения Ричард Вексельблат сделал следующие выводы:
- Скорее всего, некоторые языки (Pascal, PL/C) лучше подходят для обучения, чем другие (COBOL, FORTRAN). При этом конкретные характеристики языков выявить трудно.
- Негативные эффекты от плохого обучения значительнее, чем от плохого языка. Верно и обратное — если учить хорошо, то и с не очень хорошим языком выйдет толк.
- Один из респондентов отметил, что начинал с Бейсика, но его способности к программированию ничуть не пострадали. Бэйсик был таким образом оправдан.
Изучив историю вопроса поглубже, я убедился, что исследований, посвященных выбору языка программирования, сотни. Есть даже работы, обобщающие работы по выбору ЯП, например: Kevin Parker, Bill Davey. The History of Computer Language Selection. (In Arthur Tatnall. Reflections on the History of Computing: Preserving Memories and Sharing Stories, AICT-387, Springer, pp.166-179, 2012, IFIP Advances in Information and Communication Technology (SURVEY)).
Авторы, опираясь на обширную библиографию, выделяют факторы, влияющие на выбор языка, не только для обучения, но и для реализации проектов:
- Прагматичные: распространение в промышленности, популярность на рынке (влияние коммерческих субъектов). Тут можно вспомнить множество крупных компаний, которые продвигают свои языки через поддержку университетов.
- Педагогические: простое окружение для простых программ (без необходимости создавать 150 вспомогательных файлов для написания «Hello world!» или конфигурировать 500 пунктов в IDE); ориентация на problem-solving, а не на синтаксис ЯП; наличие учебных материалов и преподавателей.
- Язык и библиотеки: реализация определённой парадигмы (например, в 2000-х это было ООП); работа с графикой и интерактивность.
- Применимость в обучении.
- Язык и среды разработки.
- Поддержка и доступность.
- Использование за пределами вводного курса.

В оригинале у каждого критерия есть дополнительные характеристики, которые для нас не так важны. Нам интересно, что лидерами по итоговому «Authors’ score» является Python и Eiffel — язык, который вряд ли можно назвать популярным.
Сначала я надеялся проранжировать ЯП по этим критериям и сделать собственные выводы, но, посмотрев на колонку Haskell, обнаружил вранье по каждому пункту! И решил, что таблица не имеет никакого отношения к действительности — вот такое «объективное» сравнение.
Поразмыслив, я пришел к выводу, что в таком сравнении нет смысла. Допустим, я бы добавил столбец с Kotlin и поставил бы галочку в каждом пункте, или не поставил. Это бы не означало ровным счетом ничего.
Тогда я решил посмотреть, а что же используется для обучения по факту. Тут картина другая.

Источник данных.
То, что данные за 2014 год, не должно вас смущать, потому что системы высшего образования меняются очень медленно и общая картина к настоящему времени не сильно изменилась.
Python по-прежнему на первом месте, Java — отражает запросы Oracle, Sun Microsystems и других компаний на обучение именно этому языку. Среди университетов, которые начинают обучение программированию с C++ наверняка университет Техаса — там начальный курс читает Бьёрн Страуструп и, думаю, студенты справляются с ним хорошо.
Многие языки, интересные академической общественности, вообще не попали в этот рейтинг, в частности:
- Популярные среди исследователей функциональные ЯП со статической типизацией Haskell и ML.
- Широко распространённые в веб-разработке ЯП с динамической типизацией JavaScript, Ruby, PHP.
- Завязанные на платформу промышленные языки Objective-C и C#/Visual Basic.
Глас народа
Изучив историю вопроса, я решил узнать мнение современных разработчиков через опрос в twitter. Вопрос сформулировал так: «Какое свойство языка программирования вы считаете наиболее важным при выборе ПЕРВОГО языка для обучения программированию?» И предложил варианты ответов, которые довольно легко соотнести с конкретными языками.
С учетом всех технических особенностей опросов в twitter, результаты следующие.

Больше половины опрошенных сказали, что главное — простота. 25%, ответивших распространенность, считают, видимо, что надо сразу думать о востребованности на рынке. Высокий процент людей, которые считают, что сначала надо с указателями разобраться, меня настораживает. А то, что только 8% за богатый набор библиотек, показывает, что первый язык все-таки не должен быть предназначен для того, чтобы делать что-то реальное.
Ответы к опросу
Приведу несколько интересных мнений из обсуждения опроса.
Дмитрий Коваников (@ChShersh) — опытный разработчик и преподаватель — высказал ряд важных соображений, с которыми я полностью согласен: «Высокоуровневость и интерактивность. Чтобы получить результат работы программы и иметь возможность посмотреть его можно было с минимальным числом шагов. Программирование — это не про создание переменных, циклов или рекурсий, это про решение проблем средствами ЯП».
Артём Пеленицын (@ulysses4ever) отметил методическую составляющую: «Наличие специализированных методических (учебники, задачники, туториалы, Q&A форумы) и технических (простые и внятные IDE с минималистичным интерфейсом, степперы/дебаггеры с GUI) средств».
Андрей Мисков (@andreymiskov) напомнил о другом важном факторе: «Предсказуемость: не отвлекаться на null/undefined и 0.1 + 0.2. Постепенное увеличение возможностей: никакого ООП и мутаций, пока не освоишь данные и функции. Типа как в Racket/HtDP или в Pyret/PAPL».
Нашлись и защитники С: «Лично я считаю, что C был и остаётся самым лучшим для более фундаментального изучения. На мой взгляд, простой и достаточно интуитивный синтаксис, и много разных концепций (память, указатели, стэк, аллокации). Только одно НО, ни в коем случае не C89, минимум C99, а лучше C11».
Были и упоминания Scala, и Rust — причем в контексте типизации и простоты. Что наводит нас на мысль, что, к сожалению, языки программирования как тоталитарные секты. У них есть адепты, которые несмотря ни на что продвигают свой любимый язык и не желают прислушиваться к критике (и вообще чужому мнению).
Яркий пример такого «сектантства» — спор о том, как обозначать присваивание «=» или «: https://habrastorage.org/r/w780q1/webt/kw/wy/kk/kwwykkm6eilc4fdhmsu56di26nm.jpeg» data-src=»https://habrastorage.org/webt/kw/wy/kk/kwwykkm6eilc4fdhmsu56di26nm.jpeg» data-blurred=»true»/>
В очень классической (только посмотрите на обложку) книге «Структура и интерпретация компьютерных программ» создается впечатление о программировании как о магической деятельности, а о программистах как, обладающих исключительными способностями, колдунах. Это, конечно, совершенная неправда.
Обложка второй книги «How to design Programs» отражает абсолютно другой подход — инженерный. Он мне нравится гораздо больше, и я считаю, что учить программировать надо как любому другому инженерному делу.
В «How to design Programs» есть несколько важных принципов, чему нужно учить при обучении программированию:
- Как читать постановку задачи и выявить, из каких компонентов должно состоять решение.
- Как перенести задачу на структуру программы.
- Тесты являются частью программы, и значит, их нужно писать сразу.
- Учить проектированию, а не кодированию.
Beginning Student Language
Чтобы реализовать эти принципы, автор книги Matthias Felleisen придумал идею языков для обучения. Это языки, которые постепенно расширяют свои возможности.
Начинается все с BSL — Beginning Student Language — в котором есть только необходимый минимум: определение функции, вызов функции, условная операция, арифметика. И дальше, вместе с задачами, язык постепенно растёт, добавляются такие конструкции как списки, рекурсия, функции высшего порядка. Постепенно с помощью языка, уже SL, становится возможным решать более сложные задачи. Заканчивается эта цепочка языком Racket из семейства Lisp, который является замыканием всех предыдущих и позволяет программисту реализовать что угодно.
Так выглядит элементарная программа в среде DrRacket в режиме для начинающего студента.

Pyret
Другой подход к обучению программирования предложили Shriram Krishnamurthi с соавторами. Они создали язык Pyret и опубликовали книгу «Programming and Programming Languages», потому что, повторюсь, без обучающих материалов никто язык изучать не станет.
Обратите внимание на названия некоторых глав из этого учебника:
- Introduction to Tabular Data (4)
- Interactive Games as Reactive Systems (11)
- Examples, Testing, and Program Checking (12)
- Graphs (19)
- Processing Programs: Parsing (23)
- Reasoning about Programs: A First Look at Types (27)
- Objects: Interpretation and Types (32)
Язык Pyret строится таким образом, чтобы было можно идти по плану без забегания вперед. На нём на самом деле можно запрограммировать всё, что встречается до 27-й главы, не зная, что в языке есть типы. А в 27-й главе выясняется, что тут есть статическая типизация и ей можно пользоваться. Этот язык создан специально, чтобы двигаться от начала к концу, постепенно водя в оборот новые концепции.
Ниже пример программы на языке Pyret и среды, в которой для этого языка.

Например, тесты, которые встраиваются в программу (блок where: ), — обязательная часть синтаксиса. Документирование тоже встраивается в синтаксис ( doc: ). Такие полезные конструкции верхнеуровнево есть в языке и их использование прививается в процессе обучения.
CodeWorld
Идея простой реализации графики реализована в среде CodeWorld. Там есть свой язык, но можно использовать Haskell и тут же получать что-нибудь красивое — для новичков это привлекательно.

PascalABC.NET
Наш ответ BSL и Pyret разрабатывают в ЮФУ в Ростове-на-Дону Станислав Михалкович и его студенты.
Это такой Pascal, который не устарел. В нём есть, например: foreach, внутриблочные описания переменных, case по строкам, длинные целые, обобщённые классы и подпрограммы, интерфейсы, перегрузка операций, лямбда-выражения, исключения, сборка мусора, методы расширения.
Некоторые вещи из .NET появляются там даже раньше, чем в C#. То есть в знакомой обертке синтаксиса Pascal это суперязык с полным доступом к возможностям платформы .NET. В нём реализованы современные концепции с точки зрения разработки ЯП.

Выше на скриншоте программа в 120 строчек красиво и с анимацией собирает Ханойские башни.
Окончательное решение
Проницательный читатель уже догадался, что никакого окончательного решения в вопросе выбора первого языка программирования нет. Его нет ни у меня, ни у кого-то еще. И это хорошо: нам в информатике не нужны единые учебники истории, рассказывающие единственно правильную точку зрения.
Мы еще в самом начале статьи выяснили, что важнее, как учить, чем на каком языке. Тем не менее, есть способы начать изучать программирование правильнее с точки зрения будущего развития.
Начать лучше с языка, который больше для этого подходит: Racket, Pyret, Python, PascalABC.NET. Главное, чтобы начальный этап — этот первый язык — заложил основу для будущего развития.

С языков первого уровня в этой схеме будет легко перейти на какой-то из базовых промышленных или академических языков: JavaScript, C, C#, Java, Haskell, OCaml, F#. Но если начать сразу с JavaScript, то получится Фортран-программист на новый лад, который потом везде будет писать как на JS, и это будет ужасно. А если это будет второй язык, то такой деформации не произойдет.
Дальше, когда заложена основа в определенной области, открывается миллион возможностей. На схеме показаны только некоторые из них.
Возможно, сейчас вам не нужно знать много языков. Особенно, если вы мобильный разработчик. Но все платформы рано или поздно устаревают, и когда это произойдет, окажется, что выигрывает тот, у кого шире бэкграунд и кто знает больше языков из разных областей.
Если вы пройдетесь по языкам нижнего уровня схемы, и будете примерно представлять их устройство, это сделает вас лучшим разработчиком на любом языке.
Если (а как иначе, вы же читаете это на Хабре) вы уже успешно стартовали карьеру разработчика, углубились в какую-нибудь одну область и теперь хотите знать, а что происходит за её пределами и куда еще направить своё внимание, — присоединяйтесь к фестивалю РИТ++ Online. Там за два дня (25 и 26 мая) вы сможете получить срез всей IT-индустрии, а на мастер-классах с 27 мая по 10 июня прокачать отдельные навыки.
- языки программирования
- обучение программированию
- bsl
- pyret
- pascalabc.net
- python
- appsconf
- Блог компании Конференции Олега Бунина (Онтико)
- Python
- Программирование
- Учебный процесс в IT
- Карьера в IT-индустрии
Что такое языки программирования и какие они бывают

Представьте, что вы делаете ремонт в квартире: вешаете полки, собираете мебель. Без инструментов в этом деле вам не обойтись: многофункциональный шуруповерт поможет быстро собрать шкаф, просверлить отверстие в стене, вкрутить крепежные элементы, а отвертка подойдет для закрутки шурупов или реставрации мебели.
В написании программ разработчики тоже используют инструменты — языки. С их помощью можно «общаться» с компьютером: давать ему команды, управлять им, изменять данные, проводить вычисления и многое другое.
Языки программирования — это формальные языки для создания компьютерных программ.
По данным разных источников, всего существует от 250 до 9000 языков программирования, и с каждым годом их число увеличивается. Их много, потому что все они используются для разных задач. Прямо как тяжелый шуруповерт для сборки мебельного гарнитура или простая отвертка для аккуратной закрутки пары шурупов.
Для начала давайте разберем виды языков программирования, инструменты разработчика, а потом то, для каких задач они подходят.
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки

Виды языков программирования
Компилируемые и интерпретируемые языки
На международные деловые встречи делегаты ездят с переводчиками, так как сами они могут не понимать иностранную речь.
Процессор, «мозг» компьютера, тоже не понимает код, который пишет разработчик на языке программирования. Процессор воспринимает лишь последовательность из нулей и единиц. Понять друг друга разработчику и компьютеру тоже помогают специальные переводчики: компиляторы и интерпретаторы.

Компилятор переводит весь код в машинный (состоящий из нулей и единиц) сразу же при запуске программы. Работу компилятора можно описать так:
Программист пишет программу на языке программирования → Запускает компилятор → Компилятор переводит всю программу в машинный код и кладет его в исполняемый файл (.exe в Windows)
К компилируемым языкам программирования относят C, С++, Java, Swift, Go.
Интерпретатор переводит код в машинный построчно каждый раз, когда запускается программа.
Программы, написанные на интерпретируемых языках, чаще всего запускаются медленнее компилируемых программ — как раз из-за построчного перевода кода. Однако процесс разработки на интерпретируемом языке быстрее, чем на компилируемом, так как программисту не нужно снова и снова компилировать программу в машинный язык.
К интерпретируемым языкам программирования относят Python, PHP, JavaScript.
Читайте также:
Низкоуровневые и высокоуровневые языки
До изобретения компилятора и интерпретатора программисты вручную писали код на машинном языке. Код, созданный на таком языке, разный для каждого компьютера, так как у каждого производителя процессоров свой собственный набор инструкций к написанию кода.
Разработчики тратили много времени и усилий, чтобы писать код на машинном языке. Со временем они научили компьютер понимать языки программирования, близкие по написанию к нашим естественным языкам. Так появилось условное деление языков программирования на высокоуровневые и низкоуровневые (куда и отнесли машинный язык).
К низкоуровневым языкам также отнесли язык ассемблера — надстройку над машинным языком. На нем программистам писать код чуть проще, чем на машинном. Однако все так же не слишком удобно — язык ассемблера, как и машинный язык, не содержит функций, структур данных, списков, объектов.
Код на высокоуровневых языках легко читаем и понятен программисту. Такие языки позволяют создавать программы, не переживая о совместимости кода с разными процессорами. Высокоуровневые языки требуют компиляции или интерпретации. К таким языкам относят Java, JavaScript, Python, Ruby, PHP и другие.
Языки со статической типизацией и динамической типизацией
Представьте, что вы переезжаете и собираете коробки с вещами. Чтобы понять, в какой из коробок лежат вещи для кухни, гостиной и спальни, вы их подписываете. Это и есть типизация.
Типизация — это набор правил, по которым язык программирования классифицирует информацию. Благодаря типизации компьютер понимает, какие данные ему нужно обработать, что с ними делать и какой объем памяти займет предстоящая операция.
Если у языка нет типизации, программист может присваивать переменной любой тип данных (строку, число), а потом отнести к этой же переменной другой тип данных. Это позволяет быстрее писать код, но в таком коде проще запутаться. Так же, как можно запутаться в неподписанных коробках.
Коробки можно подписывать по-разному — и у языков программирования типизация бывает разной. Статическая типизация определяет типы данных в программе до ее запуска (во время компиляции).
Языки со статической типизацией — Java, C++, Swift.
В динамически-типизированных языках тип переменной определяется во время запуска программы. Объявлять тип переменной в явном виде не нужно: интерпретатор определяет его в процессе работы программы. Программу, созданную на языке с динамической типизацией, сложнее отлаживать и расширять ее функциональность.
Языки с динамической типизацией — Python, JavaScript, Ruby.

Универсальные и специальные языки
Существуют языки, которые могут использоваться для различных целей и областей применения. Их называют универсальными. Например, C++ подходит как для разработки несложных вычислительных программ, так и для создания высоконагруженных приложений, игр.
Специальные языки программирования (или доменно-специфические) подходят для решения определенного круга задач. Это, например, SQL, на котором можно писать запросы к базам данных, HTML или CSS, предназначенные для проектирования и верстки веб-страниц.
Читайте также:
Эзотерические языки
Существует группа языков, которая не подходит для решения практических задач, а применяется для проведения экспериментов или развлечения. Эзотерические языки дают возможность разработчикам воплощать необычные идеи, исследовать возможности языков, а также помогают развивать гибкость ума и воображение.
Так программа на языке программирования Piet выглядит как абстрактная картина , Chef записывает программы в качестве кулинарных рецептов, а команды ArnoldC представляют собой цитаты из фильмов с Арнольдом Шварценеггером.

Визуальные языки
Иногда большие объемы данных сложно описать текстовым кодом. Зато их удобно разбить по блокам и представить в виде схемы. В таких ситуациях удобно использовать визуальные языки программирования. Так код будет написан при помощи графических элементов (блоков и изображений).
Работа с визуальными языками подходит для начинающих специалистов, так как написание кода выполняется более просто и интуитивно. К визуальным языкам относят Scratch, Blockly, Substance Designer.

Какие бывают языки программирования и где они используются
Как мы уже сказали, каждый язык программирования предназначен для решения определенных задач. Давайте рассмотрим самые популярные языки и разберемся, где их применяют и в чем их особенности.
Python
Где используется. Python применяют в области машинного обучения и искусственного интеллекта, в разработке веб-приложений, аналитике данных, программировании игр. Python используют такие известные приложения, как Dropbox, Spotify, Netflix, Uber.
Насколько язык популярен. Python — один из самых простых и доступных языков программирования. Он занимает первое место в рейтинге самых популярных языков согласно индексу TIOBE за сентябрь 2023 года.
Особенности языка. У Python понятный синтаксис, большое количество библиотек и фреймворков (инструментов и правил, которые упрощают и ускоряют процесс разработки). Но у программ, написанных на Python, медленная скорость работы.
JavaScript
Где используется. JavaScript подходит для разработки интерфейса сайтов, веб-приложений, расширений для браузера, мобильных приложений, серверной части приложений (бэкенда). JS используют в разработке фронтенда и бэкенда Slack, Discord, Microsoft Teams, Uber, Amazon, Apple.
Насколько язык популярен. В индексе TIOBE за сентябрь 2023 года JavaScript занимает шестое место. А по данным рейтинга GitHub Octoverse за 2022 год, JavaScript — самый популярный язык, занимает первое место.
Особенности языка. У JS высокая скорость и производительность, большое число библиотек, баз данных, средств автоматизации тестирования и мониторинга.
Java
Где используется. Язык программирования, который подходит для разработки бэкенда приложений и кроссплатформенных сайтов. Java используется для разработки серверной части Amazon, Netflix и Spotify.
Насколько язык популярен. По данным журнала IEEE Spectrum (Института инженеров электротехники и электроники), Java занимает второе место в рейтинге самых популярных языков программирования за 2023 год. По версии индекса TIOBE Java на четвертой строчке.
Особенности языка. У Java простой синтаксис, читаемый и компактный код, встроенные библиотеки и фреймворки.
Читайте также:
PHP
Где используется. Изначально PHP использовался для создания персональных веб-страниц. Сегодня он применяется в бэкенде, часто используется в сочетании с HTML и JavaScript. PHP применялся для разработки проекта Ted.com, видеохостинга Dailymotion, платформы BlaBlaCar.
Насколько язык популярен. Популярность PHP постепенно возрастает. В сентябре 2023 года, по данным индекса TIOBE , он расположился на восьмой строчке, опередив Go, Swift, Ruby и другие языки. А по данным рейтинга GitHub Octoverse за 2022 год, PHP занимает седьмое место.
Особенности языка. Исходный код на PHP обладает высокой читаемостью, у языка большое сообщество разработчиков. Но также у кода на этом языке низкий уровень безопасности и низкая производительность.
C/C++
Где используются. С и C++ подходят для разработки высоконагруженного программного обеспечения, игр, программ для роботов. Эти языки программирования используются для разработки Microsoft Office, Adobe Illustrator, игры World of Warcraft.
Насколько языки популярны. Согласно индексу TIOBE , в сентябре 2023 года C и C++ занимают второе и третье место в списке самых популярных языков программирования. В рейтинге IEEE за 2023 год C и C++ занимают третье и четвертое место, уступив Python и Java.
Особенности языков. С и С++ используются, когда нужно точно управлять памятью и экономить пространство. Высокая производительность и большое сообщество делают C и C++ привлекательными для IT-специалистов. Но чтобы писать хороший код на этих языках, нужно хорошо разбираться, как работает «железо» компьютера. И также у С и С++ не так много библиотек для веб-разработки, как, например, у JavaScript или Python.
Go
Где используется. Используется для создания высоконагруженного бэкенда. Go применяют для разработки таких платформ как Uber, Netflix, Facebook.
Насколько язык популярен. По версии IEEE , в 2023 году Go занимает восьмое по популярности место. Опережает Swift, Ruby, Kotlin и другие языки.
Особенности языка. У Go простой и понятный синтаксис, широкий выбор инструментов, большое количество библиотек. Go хорошо подходит для высоконагруженных веб-приложений.
Читайте также:
C Sharp
Где используется. C# создан компанией Microsoft для разработки приложений под платформу .NET. Используется для разработки корпоративных веб-сервисов и программ Tesla, складских и логических систем Ozon, 3D-графики Сбербанка.
Насколько язык популярен. Согласно индексу TIOBE за сентябрь 2023 года, C# занимает пятое место. По данным рейтинга GitHub Octoverse, C# также занимает пятую строчку.
Особенности языка. У C# большое сообщество разработчиков, компактный и легко читаемый код.
Swift
Где используется. Язык программирования, который подходит для разработки iOS и macOS-приложений. Например, мобильные приложения для iOS FireFox и WordPress были разработаны с помощью языка программирования Swift.
Насколько язык популярен. В 2023 году Swift занимает шестнадцатую строчку по данным сразу двух рейтингов: TIOBE и IEEE .
Особенности языка. У Swift простой синтаксис, высокая скорость работы программ, поддержка управления памятью. Осложнить работу на этом языке может небольшое число встроенных инструментов и библиотек.
Kotlin
Где используется. Kotlin — язык программирования, который имеет небольшой объем кода. Чаще всего используется в серверной и мобильной разработке на Android, а также при создании мобильных приложений. С помощью Kotlin были написаны Pinterest, Coursera, Evernote.
Насколько язык популярен. Входит в топ-20 самых популярных языков программирования по данным рейтинга TIOBE .
Плюсы и минусы языка. Если говорить о преимуществах Kotlin, то он полностью совместим с Java. Его исходный код отличается простотой и читаемостью. Минусом выступает низкая скорость компиляции, небольшое количество встроенных библиотек.
Можно ли быть программистом, не зная языков программирования?
Нет. Если вы не знаете ни одного языка программирования, вы не сможете передать свои идеи и инструкции компьютеру. Вспомним нашу аналогию с ремонтом: без инструментов сделать ремонт в квартире не получится. Так же и без языков программирования разработчики не смогут создавать программы.
Высококлассные специалисты не просто хорошо знают разные языки: они постоянно повышают свою квалификацию и улучшают навыки разработки. Ведь программистам важно не только писать код. Главное для них — быстро и эффективно решать проблемы пользователей с помощью программирования.
Зарплаты разработчиков на разных языках программирования
Ниже — статистика зарплат разработчиков, согласно данным «Хабр Карьеры» и вакансиям, размещенных на hh.ru:

На уровень заработной платы разработчиков влияют:
- Уровень квалификации и опыт работы. Все просто: чем выше уровень знаний, софт скиллов — тем выше зарплата.
- Тип и масштаб задачи. Чем сложнее и ответственнее задачи, тем выше оплата.
- Знание иностранных языков — это хорошее конкурентное преимущество, которое выделяет разработчиков на рынке труда и позволяет им работать в международных компаниях.
- Регион проживания. Заработная плата в Москве и Санкт-Петербурге несколько выше, чем в регионах. Но без нужды о переезде задумываться не стоит: многие компании предоставляют возможность работать удаленно.
Какой язык выбрать для старта в программировании
Начинающему специалисту необходимо решить, что и в какой области он хочет программировать. Важно понимать, какие задачи интересно решать — программировать роботов, исследовать данные или создавать приложения и игры. Так будет проще выяснить, какие инструменты потребуются для разработки.
Например, для создания веб-приложений лучше всего подойдет JavaScript. Если вы хотите попробовать себя в Data Science — выбирайте Python. Для бэкенда подойдет тот же JavaScript с Node.js, Java, PHP.
Как быть с языками, которые решают одну и ту же проблему? Тут выбор за программистом. Каждый выбирает язык по своим предпочтениям, доступности изучения, удобству и качеству комьюнити вокруг языка.
Какой стек технологий учить
Чтобы выбрать наиболее подходящий для вас стек, переходите на сайты по поиску работы, ищите наиболее востребованные направления разработки, изучайте рейтинги языков программирования и выбирайте стек, исходя из ваших знаний и зарплатных ожиданий.
Существует много бесплатных материалов, которые помогут вам сделать первый шаг в программировании. Вот несколько ресурсов, которые будут полезны новичку:
- GitHub — это место, где программисты размещают код своих проектов. Вы можете исследовать исходный код проектов и учиться на их примерах.
- Stack Overflow — это сообщество разработчиков, где вы можете задавать вопросы и получать на них ответы.
- Code Basics — бесплатные курсы по основам языков программирования.
Самый простой способ научиться программировать — много практиковаться и кодить. Попробуйте сделать простой сайт, Telegram-бота или написать программу для командной строки. А еще проходите курсы в Хекслете — они помогут понять, какая сфера в программировании подходит вам больше всего и какой стек технологий лучше изучить.
Бесплатные курсы по программированию в Хекслете
- Освойте азы современных языков программирования
- Изучите работу с Git и командной строкой
- Выберите себе профессию или улучшите навыки
Какой язык программирования учить прямо сейчас: 9 самых востребованных

Люди придумали больше 8 тыс. языков программирования. Их популярность меняется каждый год, а требования для входа в профессию все ниже. Разбираемся, какие языки востребованы, зачем нужны и как их учить непрограммистам
Самые востребованные языки программирования
- Python
- C
- C++
- Java
- C#
- JavaScript
- Visual Basic
- PHP
- Assembly Language

Рейтинг TIOBE, сентябрь 2023 года
1. Язык программирования Python
Python — логичный и относительно простой язык с минималистичным синтаксисом. У него небольшой набор основных правил, язык легко читать и писать на нем не сложно. Разработчики написали для Python множество библиотек, поэтому вы можете использовать готовые решения в своих проектах. Главный минус Python — его невысокая скорость. Программы на нем будут работать в среднем медленнее, чем на других языках.
С октября 2021 года Python стал самым популярным языком программирования, сместив с первой строчки рейтингов Java и C.
Игорь Музыкин, руководитель направления «Программирование» в Skillbox:
«Главная причина стабильного роста запросов на Python — растущая востребованность IT-специальностей для переориентирования карьеры в сферу разработки. Представим человека, который задумался о первых шагах в IT. Для начала он скорее всего начнет искать информацию в интернете. Что он увидит? Аргументацию об относительной простоте Python для новичков и статьи о широкой области применения языка — от научно-исследовательской работы до геймдева. Поэтому Python все чаще выбирают в качестве первого языка программирования для освоения.
В пользу простоты Python играет лаконичный синтаксис. Например, блоки кода отделяются отступами, а не скобками, это сокращает количество строк и символов. Еще есть синтаксические конструкции, введение которых позволяет все рутинные задачи по управлению памятью и потоками отдавать интерпретатору Python вместо дополнительного кода. За счет этого разработчик может сосредоточиться на задачах, а не коде как таковом.
Несмотря на критику некоторых аспектов работы Python, например, медленную скорость программ и зависимость языка от системных библиотек, в ближайшие годы он продолжит укреплять свои лидерские позиции в веб-разработке, machine learning, тестировании и DevOps».
Где используют. Чаще всего на Python создают серверы, обрабатывают данные и разрабатывают нейронные сети. После изучения Python можно работать бэкенд-разработчиком или разработчиком в сфере data science. С помощью Python можно «прикрутить» неочевидные функции к программам — это его главное удобство. Например, создать нейронную сеть для определения степени поражения легких, а заодно в этой же программе сделать просмотр снимков КТ.
Сколько платят программисту. Разработчик в крупной компании в Москве, знающий Python, зарабатывает от ₽100 тыс. до ₽250 тыс. При этом спрос на разработчиков в сфере data science растет, поэтому можно рассчитывать даже на более высокую оплату.
Зачем изучать. С помощью Python можно создать бота для мессенджеров или социальных сетей. Или написать программу для парсинга — поиска и переноса информации с разных сайтов в один документ. Такая программа пригодится дизайнерам и журналистам.

Марина Архипцева, ментор курса Data Science в SkillFactory, ETL-разработчик:
«Если следить за индексом TIOBE, то мы увидим, что месяц от месяца лидер меняется, но тройка остается неизменной — Python, Java, C. Собственно поэтому за ежемесячным рейтингом следить не так интересно, а что более любопытно — тот же TIOBE кроме ежемесячного рейтинга ежегодно выбирает язык года, и Python удостаивался этой чести неоднократно с 2003 года (в том числе и в 2023 году). Это лучший показатель среди всех языков программирования. Почему популярность Python растет с каждым годом?
Во-первых, сейчас наблюдается активный рост сферы Data Science. Если проанализировать, например, HeadHunter, то мы обнаружим множество открытых вакансий в данной области. Компании ищут инженеров данных, data scientist’ов, аналитиков данных, специалистов по большим данным, MLops’ов. Конкуренция большая, но спрос все еще превышает предложение на рынке. В 2012 году журнал Harvard Business Review выпустил статью «Data Scientist: The Sexiest Job of the 21st Century», в которой наука о данных была названа самой сексуальной профессией XXI века, и с тех пор, кажется, интерес к этой сфере только растет. И как раз Python является основным инструментом исследователя данных. Во-вторых, у Python обширное комьюнити — на любой вопрос практически со 100% вероятностью найдется ответ на StackOverFlow, главное правильно его сформулировать.
Во-третьих, Python — это язык для всех возрастов. Дети пишут на нем игры, создают миры в Minecraft и сдают ЕГЭ по информатике. Взрослые специалисты, кроме обработки данных, пишут бэкенд на Python и решают множество прикладных задач.
Безусловно, Python — это не идеальный язык и не панацея для всего, но основную тенденцию в мире программирования отлично иллюстрирует внутренний девиз Google: «Использовать Python, там, где можем, C++ — где должны». Здесь имеется в виду, следующее: С++ оптимален для разработки приложений, в которых важна скорость работы. За это приходится расплачиваться высоким порогом входа и сложностью самого языка. Поэтому там, где скорость не критична, Google предпочитает использовать Python».
2. Язык программирования C
C — один из самых старых и популярных языков программирования. Он «легкий» и быстрый, поэтому его используют там, где нужна высокая производительность. Например, для создания драйверов, операционных систем или ПО для микроконтроллеров. При этом C сложно изучить — многое приходится писать с нуля. Если сравнивать языки программирования с автомобилями, то C — гоночный болид, неудобный на городских дорогах, но очень быстрый.
Где используют. С помощью С создают драйвера, пишут ядра операционных систем, а также пишут библиотеки для Python и других языков.
Сколько платят программисту. В Москве разработчик на C получает в среднем от ₽100 тыс. до ₽250 тыс. В других городах зарплаты меньше — от ₽50 тыс. до ₽200 тыс.
Зачем изучать обычным людям. С — это не тот язык, на котором можно легко написать приложение для смартфона или программу для умного дома. Но с него можно начать изучение языков программирования. Учиться непросто, но если справитесь, поймете принцип действия почти всех остальных языков.
3. Язык программирования C++
С++ — кроссплатформенный язык семейства C с расширенными функциями.
Огромное количество программистов пишут на нем код, делятся библиотеками и шаблонами, отвечают на вопросы новичков.
Где используют. Чаще всего на С++ создают операционные системы, драйверы и утилиты. Делают популярные десктопные приложения серий Adobe и Office. Из-за высокой скорости и производительности C++ используют для разработки компьютерных игр. Например, на нем написан популярный движок Unreal Engine.
Движок Unreal Engine создали в 1998 году. Компания Epic Games продолжает выпускать на нем игры. Например, на Unreal Engine работает популярная игра PUBG
Сколько платят программисту. В регионах разработчик на C++ зарабатывает от ₽50 тыс. до ₽150 тыс., в Москве — от ₽100 тыс. до ₽250 тыс. Зарплата зависит не только от города, но и от сферы — в геймдеве можно заработать больше, чем в разработке системных приложений.
Зачем изучать. C++ плохо подходит для решения простых «домашних» задач, но с него можно начать обучение языкам, чтобы понять их структуру и принципы. Если решили изучать, запаситесь терпением — с С++ в полной мере работает принцип «тяжело в учении — легко в бою».
4. Язык программирования Java
Java — кроссплатформенный язык с большим количеством библиотек и большим сообществом разработчиков. Кроссплатформенность — это возможность написать программу один раз и сразу пользоваться ей на нескольких операционных системах: Windows, Linux и MacOS. Благодаря библиотекам Java подойдет практически для всего: работы с графикой, звуком, создания небольших игр. А в большом сообществе начинающий разработчик легко найдет готовые куски кода для разных задач и ответы почти на любые вопросы.
Программисты пользуются библиотеками, чтобы создавать программы быстрее. Библиотека — это набор готовых программ, объектов и функций для решения типовых задач.
Где используют. Java — это язык для всего. На нем пишут мобильные приложения для Android, программы для микроволновых печей и серверы. Для разработки мобильных приложений сейчас все активнее используют язык Kotlin. Но на Java уже написали очень много приложений, которые придется обслуживать и обновлять.
Сколько платят программисту. Зарплаты Java-разработчиков не сильно отличаются от обычных зарплат программистов — от ₽100 тыс. до ₽250 тыс. в Москве.
Зачем изучать. С помощью Java можно создать домашний сервер или приложение для мобильного телефона. Это будет не очень просто, но можно убить двух зайцев одним выстрелом — сделать программу и заодно выучить популярный язык.

5. Язык программирования C#
C# (си-шарп) — язык, изначально придуманный компанией Microsoft, чтобы создавать приложения под Windows. Это объектно-ориентированный язык — его сложнее изучать, но проще использовать, например, меньше писать одинаковый код. С помощью С# можно работать с платформой WPF, которая помогает создавать «красивые» оконные приложения. Например, последние версии MS Office.
Где используют. Чаще всего на C# пишут приложения для Windows и создают компьютерные игры. Например, на C# работает популярный движок Unity. Кроме того, на нем можно разрабатывать системные приложения и создавать библиотеки для С++.
Сколько платят программисту. В регионах разработчики на С# получают от ₽35 тыс. до ₽130 тыс., в Москве — от ₽100 тыс. до ₽250 тыс.
Зачем изучать. С помощью C# можно создать оконное приложение для Windows, например, калькулятор или небольшую игру. Но изучать его сложнее, чем языки для создания мобильных приложений.
6. Язык программирования JavaScript
JavaScript — быстрый кроссплатформенный язык для веб-разработки. С помощью кода на JavaScript разработчик «говорит» странице, как она будет реагировать на действия пользователя. С помощью JS можно показывать пользователю информацию без перезагрузки страницы — так работают выпадающие меню, всплывающие окна, оконные клавиатуры.
При этом у JavaScript есть свои ограничения — он позволяет допускать ошибки, которые затем сложно обнаружить. Поэтому его редко используют для создания сложного программного обеспечения, например, ПО серверов.
Где используют. JS постоянно используют для веб-разработки. На нем удобно создавать мобильные и десктопные приложения, которые будут работать через браузер. Например, Notion, Discord, Visual Studio Code.
Сколько платят программисту. Разработчик на JavaScript в Москве зарабатывает от ₽140 тыс. до ₽300 тыс.
Зачем изучать. С помощью JS можно создать простой сайт или модуль для него, работающий с запросами клиента. Например, онлайн-калькулятор.

7. Язык программирования Visual Basic
Visual Basic — язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемые корпорацией Microsoft. Visual Basic во многом похож на своего предшественника — язык BASIC, у которого есть немало диалектов, у них схожи стиль и синтаксис. Однако при этом Visual Basic также сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Интегрированная среда разработки VB включает инструменты для визуального проектирования пользовательского интерфейса, редактор кода с возможностью IntelliSense и подсветкой синтаксиса, а также инструменты для отладки приложений.
Где используют. Visual Basic также является хорошим средством быстрой разработки (RAD) приложений баз данных для операционных систем семейства Microsoft Windows. Главной особенностью Visual Basic, отличающей его от большинства языков, стало применение в программировании графического интерфейса.
Сколько платят программисту. От ₽30 тыс. до ₽100 тыс. Средняя зарплата по России ₽62 тыс. Многие программисты считают, что Visual Basic отошел в прошлое — тем не менее, в интернете можно найти хорошие вакансии — и предложения работать за эти деньги удаленно.
Зачем изучать. К достоинствам языка относят достаточно простой синтаксис, что обеспечивает низкий порог входа для начинающих программистов.
8. Язык программирования PHP
PHP — используют в веб-разработке для создания программ, которые работают на сервере и помогают обрабатывать запросы клиентов. PHP постепенно теряет популярность, потому что серверы можно создавать с помощью других языков. Но на PHP до сих пор работают многие ранее созданные сайты, например, «ВКонтакте».
Где используют. С помощью PHP создают программы, которые работают на сервере и помогают отправлять почту с сайта, взаимодействовать с базами данным. PHP облегчает работу интернет-магазинов — можно не создавать 1 тыс. одинаковых страниц, а генерировать их автоматически из базы данных по запросу клиента.
Сколько платят программисту. В регионах PHP-разработчик получает от ₽50 тыс. до ₽120 тыс., в московских компаниях — от ₽80 тыс. до ₽220 тыс.
Зачем изучать. Со знанием PHP легко начать карьеру разработчика. Такой разработчик сможет найти работу, даже если у него мало опыта.

Вакансии PHP-разработчика в Москве на HeadHunter
9. Язык программирования Assembly Language
Assembly Language или язык ассемблера — это язык программирования низкого уровня, который используется внутри операционной системы для того, чтобы в автоматическом режиме преобразовывать исходную программу (заданную компьютеру) на машинный язык. Он работает непосредственно с процессором, и каждая его команда — это инструкция процессора, а не операционной или файловой системы. Перевод языка ассемблера в машинный код называется ассемблированием.
Где используют. Ассемблер используют те, кто работает с железом. На нем пишут драйверы устройств и некоторые компоненты операционных систем — например, ядро или загрузчик. Любительские операционные системы MenuetOS и KolibriOS полностью написаны на ассемблере. На нем также разрабатывают встроенные программы для микроконтроллеров, игровых приставок, его активно используют в реверс-инжиниринге.
Сколько платят программисту. От ₽80 тыс. до ₽300 тыс. в зависимости от уровня квалификации и опыта.
Зачем изучать. Если хотите писать высокопроизводительный код для конкретной аппаратной платформы или устройства. Также Assembly Language пригодится для отладки низкоуровневых проблем в программах или оборудовании. Но учтите, что изучать его сложнее, чем языки более сложного уровня, и его знание не пригодится для понимания других языков, поэтому он не подойдет для новичков.

Общие тренды IT-сферы вне зависимости от языков программирования
Код становится более читабельным. В последние годы разрабатывают все больше приложений, в том числе для мобильных устройств. Приложения становятся все сложнее по архитектуре, их нужно постоянно обновлять и обслуживать — важно, чтобы код можно было легко прочитать и понять. Приложение может жить десять лет. За это время сменится несколько разработчиков, которым нужно будет понимать код, написанный другими. Поэтому важно, чтобы программы не только решали свои задачи, но и были аккуратно, понятно написаны.
Растет популярность мобильной разработки и машинного обучения. Мобильная разработка стала привычным делом за несколько лет. Многие компании запускают только мобильные приложения, не думая об их браузерных и десктопных версиях. Из-за этого сильнее разрабатывают стандарты мобильной разработки. С одной стороны, это усложняет работу, с другой — сообществу выгодно обучить новичков этим стандартам.
Машинное обучение из диковинки становится неотъемлемой частью жизни — предсказывание и обработка данных слишком часто помогают в обычных ситуациях. Становится больше приложений по распознаванию лиц и обработке голосовых сообщений в текст.
Нужно писать код для всех платформ. Платформ становится все больше — например, Apple оснастила свои ноутбуки ARM-процессорами, которые раньше использовала только для смартфонов и планшетов. Поэтому разработчики должны учитывать все существующие технические возможности и писать приложения так, чтобы они работали везде.
Работодатели хотят посмотреть портфолио на GitHub. Если раньше при найме сотрудника работодатели смотрели приложения, к которым программист приложил руку, то теперь даже непрофессионалы все чаще хотят увидеть код. На Гитхабе можно посмотреть все проекты разработчика, увидеть, как он думает и пишет, как развивался и рос.
Программирование молодеет. Дети и подростки изучают программирование на онлайн-курсах или самостоятельно. Из-за этого уже в 13–15 лет они могут писать приложения, выкладывать их в Appstore или GooglePlay и даже зарабатывать деньги. Некоторые из них так начинают карьеру разработчика и конкурируют с выпускниками вузов и более старшими коллегами.

Еще пять статей о программировании
- Программирование с нуля: с чего начать и как выучить
- Вчерашняя техника уже завтра: могут ли устареть языки программирования
- Почему программистам не обойтись без гибких навыков
- Стартап или гигант: что выбирают ИТ-специалисты
- Где брать программистов: почему компании приходят в буткемпы
Что такое язык программирования
Представьте, что вас на улице спросили, как дойти до ближайшей аптеки. Для того, чтобы объяснить дорогу, вам нужно использовать язык, который понимает человек, и набор конкретных инструкций (ориентиров), которые помогут ему достичь цели.
Языки программирования работают аналогичным образом: они помогают человеку объяснить компьютеру, какие действия ему нужно выполнить.
Как и в случае с естественными языками (испанский, английский, китайский и другие), существуют различные языки программирования: Python, Java и C++. Каждый из них имеет свой набор правил и синтаксис, которые программисты используют для написания кода.
Инструкции компьютеру могут быть как простыми (например сложи число А и число Б), так и очень сложными: например, выполни действия, необходимые для создания видеоигры или мобильного приложения. Код на определенном языке — набор действий, которые приведут к конкретному результату.
Чем отличаются языки программирования от алгоритма
Со стороны может показаться, что это совершенно разные вещи, однако они связаны между собой. Алгоритм — набор инструкций и шагов, которые сообщают компьютеру, что именно нужно сделать. А язык программирования — это инструмент для написания этих инструкций так, чтобы компьютер смог их понять.
Если провести аналогию с кулинарией, то алгоритм можно сравнить с рецептом торта: он содержит информацию, каким ингредиенты нужно добавить, в каких пропорциях смешать и как долго выпекать получившееся тесто.
В этой аналогии язык программирования — это язык, на котором написан рецепт. Точно так же, как разные люди могут написать один и тот же рецепт на разных языках, программисты могут написать один и тот же алгоритм на разных языках программирования.

Почему языки программирования появляются и исчезают
Языки программирования, как и любая другая технология, могут появляться и исчезать по целому ряду причин.
- Требования пользователей и разработчиков меняются. Например, новый язык программирования может быть создан для решения конкретных проблем или для использования преимуществ новых аппаратных или программных возможностей. По мере развития технологий могут появляться новые языки программирования, отвечающие новым требованиям.
- Языки программирования устаревают. Им на смену приходят новые, которые предлагают лучшую производительность, функции или простоту использования. Например, COBOL, язык программирования, который широко использовался в 1970-х и 1980-х годах, был постепенно вытеснен Java, Python и JavaScript, которые предлагают более современные функции и которые легче изучать и использовать.
Кроме того, некоторые языки программирования могут исчезнуть просто потому, что они непопулярны. Если язык не получил широкого распространения, он не получает необходимой поддержки от сообщества разработчиков и ресурсов, необходимых для его дальнейшего существования и развития.
Elbrus Bootcamp
Вам может также понравиться.

Мы меняем цены на курсы

24 окт. 2023 г.
Рейтинг языков программирования 2023

24 окт. 2023 г.