- Почему языков программирования так много? Проблемы виртуальной лингвистики
- В мире более 8 тысяч языков программирования. Зачем их так много и как в них разобраться?
- Какие языки программирования наиболее популярны и востребованы?
- Почему языков программирования так много? Они действительно все нужны?
- Зачем вообще нужны новые языки, если их и так уже много?
- Какими качествами должен обладать язык программирования, чтобы стать популярным и повсеместно используемым?
- Почему, несмотря на такое многообразие, некоторые продолжают писать код на C, хотя и говорят, что он сложный и неудобный?
- А как насчет совсем старых языков, вроде Fortran или COBOL?
- Какие языки используются только в узких областях, например, только в науке или в аналитике?
- Мнение: за какими языками — будущее?
Почему языков программирования так много? Проблемы виртуальной лингвистики
На сегодняшний день известно уже более двух с половиной тысяч самых разнообразных языков программирования.
С каждым годом их число увеличивается, причем с непостижимой быстротой. Выходят обновленные или измененные версии прежних языков. Разрабатываются языки под отдельные программные продукты. Короче говоря, софтверный рынок требует новых технологий, а новые технологии требуют новейших, более мощных языков разработки.
И здесь возникает проблема столь же ускоренного освоения новых языков разработки или их обновленных версий. То есть, обрисовывается примерно следующая ситуация. Предположим, выходит обновленная версия популярного языка разработки. Освоение новой версии языка упрощается в том случае, если синтаксис новой версии ненамного отличается от синтаксиса старой версии. Синтаксис языка программирования не меняется, а лишь дополняется и усложняется. При этом увеличивается мощь языка разработки.
Совсем другое дело, когда новая версия языка фундаментально проработана и переделана. Изменен синтаксис, парадигма и некоторые характерные особенности данного языка разработки. Разработчикам попросту приходится осуществлять переход на абсолютно новый уровень языка разработки. Причем, происходит это не сразу, а поэтапно. Это означает, что разработчик пишет своё приложение, скажем, процентов на восемьдесят на старой версии языка, а на десять — на новой. Благо, если сохраняется поддержка старой версии. Но в результате такого смешения версий, то есть, нерационального программирования, выходит продукт, который не отвечает принципиальным требованиям стабильности и скорости работы. Это касается даже вопросов безопасности, если продукт рассчитан на сферы применения, где конфиденциальность и сохранность данных приоритетны.
Это еще не всё. Как было сказано выше, на сегодняшний день существует огромное множество языков программирования. Их разрабатывают примерно столько же компаний, больших и не очень. Иногда — даже отдельные группы людей. Возникает серьезная конкуренция, особенно у крупных разработчиков средств программирования, чьи результаты пользуются большим спросом в мире. Отсюда вытекает тот факт, что невозможно определить хотя бы три наилучших языка разработки среди имеющихся. Это значит, что ни один из наиболее распространенных языков разработки программных продуктов не отвечает (частично или полностью) некоторым требованиям, предъявляемым разработчиками приложений. Причем те возможности, которые имеются у одного из языков разработки, лишь частично реализованы в другом языке. Здесь идет, так сказать, взаимное дополнение одного языка другим.
Современные среды разработки приложений позволяют писать код для программ на различных языках программирования, причем даже на языке разработки компании-конкурента! И этим активно начинают пользоваться многие разработчики в своих проектах. Иногда даже недостаточно хороший уровень написания приложения на одном языке заставляет разработчика перейти в определенной части кода программы на другой язык и обратно. И снова проблема — стабильность и скорость подобных «винегретов».
Разработчики программных продуктов сильно расходятся во мнении, насколько хорош тот или иной язык разработки. Существует даже некий рейтинг языков программирования.
В итоге имеется многообразнейший рынок средств и языков разработки, неменьший рынок разработчиков на этих языках, которые пишут программные продукты, применяя все эти средства и вместе, и поврозь, и комбинируя их, и играя на совместимости языков… Опять же, в итоге либо получая максимально оптимизированный готовый продукт (в случае, если изощрялся профессионал), в котором из массы языков было выжато всё, что только допустимо, либо получая «сырой», нестабильный, «тяжелый», неоптимизированный продукт. Это в случае, когда извращался непрофессионал.
Но, в любом случае, здесь важен конечный результат, а не инструменты. Так что можно и нужно уметь писать программы на разных языках, в том случае, когда это действительно необходимо для реальной пользы дела.
В мире более 8 тысяч языков программирования. Зачем их так много и как в них разобраться?
Число языков программирования продолжает расти: некоторые из них становятся популярными, некоторые остаются в тени, некоторые требуют больше времени на освоение, а другие можно изучить за пару месяцев. Зачем языков так много? Почему появляются новые? И как понять, какой из них будет востребованным? Разобраться в этом многообразии нам помогают Роман Елизаров, преподаватель курса «Параллельное программирование» на факультете информационных технологий и программирования ИТМО, сотрудник JetBrains, эксперт по языку Java и один из разработчиков языка Kotlin, и основатели компании Serokell Арсений Серока и Йонн Мостовой.
Какие языки программирования наиболее популярны и востребованы?
(Здесь и далее отвечает Роман Елизаров, преподаватель курса «Параллельное программирование», сотрудник JetBrains, эксперт по языку Java и один из разработчиков языка Kotlin)
Наиболее популярные языки в настоящее время — Java, JavaScript, Python, С и C++. Java активно используется в системах крупных предприятий, на JavaScript пишутся веб-сайты и веб-приложения, Python очень активно используется в научном сообществе и для работы с данными, C и С++ применяются для написания системного программного обеспечения (операционных систем, драйверов, браузеров, баз данных и т.п.).
Почему языков программирования так много? Они действительно все нужны?
Первая десятка наиболее популярных языков закрывает более половины рынка, но программирование сейчас используется в каждой области человеческой деятельности. Огромное число создаваемых языков рассчитано на узкую нишу, другие же — это просто эксперименты или исследовательские языки, не рассчитанные на массовую аудиторию.
Зачем вообще нужны новые языки, если их и так уже много?
Новые языки создаются с разными целями. Подавляющее большинство вновь создаваемых языков — это просто эксперименты небольшой группы программистов или даже одного человека, редко выходящие за пределы узкой сферы. Реже языки создаются при поддержке крупных компаний и ставят себе определенные цели. При этом цели могут быть абсолютно разными — упростить программирование, повысить надежность кода, увеличить скорость разработки, захватить рыночную нишу в борьбе с конкурентами, помочь исследованиям в определенной области, дать возможность пользователям настраивать и программировать какую-то другую систему и так далее.
Какими качествами должен обладать язык программирования, чтобы стать популярным и повсеместно используемым?
Cейчас в мире насчитывается несколько десятков миллионов программистов. Чтобы стать популярным, язык должен быть рассчитан на область, в которой есть как минимум миллион программистов. Кроме того, создатели языка должны поставить себе четкую цель сделать язык нужным и полезным в этой нише, а значит, он должен давать что-то новое и решать какие-то реальные трудности, возникающие в повседневной работе программистов в этой сфере деятельности.
Почему, несмотря на такое многообразие, некоторые продолжают писать код на C, хотя и говорят, что он сложный и неудобный?
C — старый язык, но его все-таки рано назвать устаревшим, так как на нем программируется очень много разных встроенных систем — от елочных гирлянд и кофемашин до автоматизированных станков на заводах. Более того, ядро самой популярной операционной системы — Linux — пишется на C и активно эволюционирует. Да и сам язык C не стоит на месте и продолжает развиваться (последнее обновление стандарта было в 2018 году).
А как насчет совсем старых языков, вроде Fortran или COBOL?
А вот язык COBOL действительно устарел настолько, что нового ПО на нем практически не пишется. Однако, так как он был очень популярен в прошлом, еще остались отдельные системы крупных предприятий и государственных организаций, которые написаны на нем, они продолжают работать и поддерживаться (в настоящее время эту нишу занял язык Java). Язык Fortran находится примерно в таком же состоянии, но он продолжает использоваться в науке.
Какие языки используются только в узких областях, например, только в науке или в аналитике?
Таких языков сотни. Например, язык Lua активно используется в разработке игр для написания игровых скриптов. Язык R — в статистике. На языке Bash часто пишутся различные скрипты автоматизации в операционной системе Linux, а в Windows эту роль сейчас занимает PowerShell. Язык ABAP создан и используется исключительно для программирования в системах SAP, а в его российском аналоге, системе 1С, также есть свой язык программирования.
Мнение: за какими языками — будущее?
(Отвечают Йонн Мостовой и Арсений Серока, основатели компании Serokell)
Текущие тенденции направлены в сторону создания более продуманных, грамотных, «сделанных с культурой» инструментов. Например, с учетом научных подходов или более глубокого анализа возможностей и последствий, а также необходимостей рынка.
Поскольку большинство вузов не говорит о математике процесса, а также про функциональное программирование, чтобы в данном статусе кво язык стал популярным, он должен сильно поддерживать императивную парадигму «подай в эту переменную то, принеси в ту переменную это». В Serokell мы смотрим на шаг вперед и закладываем почву для того, чтобы разрушить этот статус кво и оказаться в мире, где норма мышления декларативная: «эта переменная такая, мы ее учитываем, утверждая этот факт про то».
В этой новой парадигме языки программирования, которые поддерживают декларативный подход, будут успешными. При этом, смешным образом в наше время уже наличие функциональной парадигмы «программы следует кодировать композициями функций» в языке является необходимым (но не достаточным) требованием успеха языка.
Среди молодых специалистов (которые формируют подавляющее большинство рынка) существует заблуждение, что чем больше вакансий использует тот или иной стек, тем важнее этот стек для профессиональной деятельности.
Ребята посообразительнее оценивают отношение спроса и предложения и понимают, что те же Haskell и Erlang имеют огромную отдачу. Эрланг – это самый важный и основной инструмент для сферы телекоммуникаций. Хаскель невероятно популярен в финансовой и банковской сфере. Просто много всегда остается за кулисами коммерческих направлений.
Когда рынок наполнится высококвалифированными специалистами в немейнстримовых языках, адаптация этих технологий станет очевидно выгодной для бизнеса.