- PVSM.RU - https://www.pvsm.ru -
Если разделять языки программирования по популярности, то они делятся на три эшелона. Первый эшелон включает мейнстрим-языки, такие как Java, JavaScript, Python, Ruby, PHP, C#, C++ и Objective-C. Несмотря на то, что некоторые из ведущих языков возможно увядают [1], вам лучше знать один или несколько из них, если вы хотите иметь возможность легко найти работу.
Языки второго эшелона пытаются пробиться в мейнстрим, но ещё не добились этого. Они доказали свою состоятельность путем создания сильных сообществ, но они до сих пор не используются большинством консервативных IT-компаний. Scala, Go, Swift, Clojure и Haskell — языки, которые я бы отнёс ко второму эшелону. Некоторые компании используют эти языки для отдельных сервисов, но широкое применение встречается редко (за исключением Swift, который начинает обгонять Objective-C в качестве основного языка для iOS). Go и Swift имеют хорошие шансы на переход из второго эшелона в первый в течение ближайших двух-трёх лет.
Большинство языков в первом эшелоне прочно укоренились на своих позициях. Поэтому выпадение языка с лидирующих позиций занимает ощутимое время, а для языка второго эшелона очень трудно пробиться в первый.
Перспективные языки из данной статьи относятся к третьему эшелону, и они только начинают свой путь наверх. Некоторые языки пребывают в третьем эшелоне на протяжении многих лет, не получая популярности, в то время как другие врываются на сцену всего за пару лет. Как, например, языки, про которые пойдёт речь в статье.
Пять языков программирования, о которых пойдёт речь, весьма новы (не исключено, что о каком-то вы услышите впервые), и они явно имеют отличные шансы пробиться во второй эшелон в ближайшие 2-3 года. Может быть, когда-нибудь один из этих языков сможет потеснить и языки первого эшелона.
Вот почему эти пять языков были выбраны для этого списка:
Elm набирает популярность в сообществе JavaScript, в первую очередь среди тех, кто предпочитает функциональное программирование, которое находится на подъеме [2]. Как и Babel, TypeScript и Dart, Elm транспилируется в JavaScript.
Rust является языком системного программирования, предназначенным в основном для ниш, где применяют С и С++. Поэтому удивительно видеть, что популярность этого языка быстрее растёт среди веб-разработчиков. Этот факт становится более осмысленным, когда вы выясняете, что язык был создан в Mozilla, которая хотела дать лучший вариант веб-разработчикам, которые вынуждены писать низкоуровневый код, и при этом более производительный, чем PHP, Ruby, Python или JavaScript. Rust был также признан лучшим в номинации ”сама любимая технология” по результатам опроса разработчиков [3], проведённом StackOverflow в 2016 году (это означает, что большинство пользователей хотели бы продолжать использовать этот язык).
Kotlin существует уже около пяти лет, но только в этом году он достиг production-ready версии 1.0. Несмотря на то, что он ещё не достиг популярности Scala, Groovy или Clojure — три самых популярных и зрелых (не считая Java) языков под JVM — он выделяется из множества других JVM-языков и, кажется, готов занять свое место [4] среди лидеров этой группы. Язык возник в JetBrains (создатель популярной IntelliJ IDEA IDE). Так что он продуман с упором на производительность труда разработчиков [5].
Crystal — ещё один язык, который надеется принести производительность программ на уровне C в высокоуровневый мир веб-разработчиков. Crystal нацелен на Ruby-сообщество, т.к. его синтаксис подобен, а порой идентичен, Ruby. И без того большое количество стартапов на Ruby продолжает расти, и Crystal может сыграть ключевую роль, помогая поднять производительность этих приложений на следующий уровень [6].
Elixir также черпал вдохновение из экосистемы Ruby, но вместо того, чтобы пытаться принести C-подобные преимущества, он ориентирован на создание высокодоступных, отзывчивых систем [7], т.е. на то, с чем Rails имеет проблемы по мнению критиков [8]. Также Elixir достигает прироста производительности при помощи Erlang VM, которая имеет прочную репутацию, основанную на 25 годах успешного применения в телекоммуникационной отрасли. Phoenix [9] (веб-фреймворк для Elixir), наряду с большой и цветущей экосистемой, придаёт этому языку дополнительную привлекательность.
Теперь взгляните, как четыре из этих пяти языков карабкаются по лестнице популярности (на основе данных StackOverflow и GitHub):
Каждый из этих языков может похвастаться увлечённым сообществом и собственной еженедельной новостной рассылкой. Если вы подумываете об изучении молодого языка с захватывающими возможностями для будущего, прочитайте краткие презентации для каждого из этих пяти языков, написанные опытными энтузиастами и лидерами соответствующих экосистем.
Elm — функциональный язык программирования, ориентированный на удобство и простоту использования, который компилируется в высокопроизводительный JavaScript-код. Вы можете использовать его, в том числе и совместно с JavaScript, для создания пользовательских интерфейсов в интернете. Основными преимуществами Elm по сравнению с JavaScript являются надёжность, лёгкость в поддержке и нацеленность на удовольствие от программирования. Более конкретно:
elm-package
обеспечивает соблюдение семантических версий автоматически [12]. Если автор пакета пытается сделать ломающие API изменения, не поднимая основной номер версии, elm-package
обнаружит это и откажет в публикации новой версии пакета. Ни один другой известный менеджер пакетов не обеспечивает соблюдение семантического версионирования настолько надёжно.elm-format
[14] форматирует исходный код в соответствии со стандартом сообщества. Нет больше споров по конвенциям оформления кода. Просто нажимаете кнопку “Сохранить” в вашем редакторе и ваш код становится красивым. elm-test
[15] поставляется с “батарейками” для поддержки как модульного, так и случайного тестирования [16]. elm-css
[17] позволяет писать Elm-код, который компилируется в css-файл, так что вы можете разделять код между приложением и таблицами стилей, чтобы гарантировать, что ваши константы никогда не рассинхронизируются.Elm код также может взаимодействовать с JavaScript. То есть вы можете вводить его в малых дозах в ваш JS код, и вы всё ещё можете использовать огромную экосистему JS и не изобретать колесо.
Посмотрите guide.elm-lang.org [18], чтобы начать, Elm in Action [19] для более глубокого ознакомления и How to Use Elm at Work [20], если вам интересно, как можно было бы использовать Elm на работе.
Этот раздел написал Richard Feldman [21] — автор Elm in Action [19] и создатель elm-css
[17], CSS-препроцессора для Elm.
Rust является языком системного программирования, который сочетает в себе эффективность C и контроль над памятью с функциональными возможностями, такими как сильная статическая типизация и вывод типов.
Для получения дополнительной информации, ознакомьтесь с The Rust Book [28] и Rust by Example [29].
Этот раздел написал Will Crichton [30] — аспирант Стэнфордского университета, который специализируется на параллельных и конкурентных системах, визуальных вычислениях и архитектуре компиляторов и языков программирования. Он часто пишет о Rust в своем блоге [31].
Kotlin представляет собой статически типизированный язык, который ориентирован на JVM и JavaScript. Kotlin родился из потребности JetBrains, которая искала новый язык для разработки своего набора инструментов (который был в основном написан на Java). Что-то, что позволило бы им использовать существующую кодовую базу и в то же время решить некоторые проблемы, которые возникали из-за Java. И именно решения этих распространенных недочётов, встречающихся при написании программного обеспечения, определили большую часть характеристик Kotlin.
Kotlin был и всегда будет нацелен на прагматизм — выискивая распространённые проблемы, с которыми мы часто сталкиваемся при написании кода, и пытаясь помочь в их решении. Это проходит красной нитью через различные языковые особенности, такие как:
html {
head {
title {+"XML encoding with Kotlin"}
}
body {
p { + "This is some HTML" }
}
}
Kotlin 1.0 был выпущен в феврале 2016 года, спустя более пяти лет разработки и тщательного тестирования в реальных проектах. В настоящее время более десяти продуктов JetBrains используют Kotlin. Также его используют такие компании, как Amex, NBC Digital, Expedia и Gradle.
Для получения дополнительной информации посетите kotlinlang.org [32]
Этот раздел написал Hadi Hariri [33] — вице-президент JetBrains, редактор блога Kotlin [34] и главный докладчик на темы, посвящённые этому языку.
Crystal является языком программирования общего назначения с девизом “Быстр как C, привлекателен как Ruby."
Это высокоуровневый, статически типизированный, компилируемый, полностью объектно-ориентированный язык программирования с передовым выводом типов и сборкой мусора.
spawn
и сделать выполнение асинхронным/неблокирующим.crystal
: Команда crystal
сама по себе полнофунциональна и поставляется с большим количеством встроенных инструментов. Она используется для создания нового проекта, компиляции, запуска тестов и многого другого. Там также есть встроенная утилита для автоматического форматирования кода. А ещё crystal play
представляет интерактивную среду для быстрого прототипирования, подобно irb
.Бонус:
Выразительность: Код читают гораздо чаще, чем пишут. Благодаря Ruby, Crystal действительно выразителен и лёгок для понимания. Это облегчает обучение для новичков и окупается в долгосрочной перспективе, благодаря упрощению сопровождения кода.
Для получения дополнительной информации вы можете обратить внимание на официальную Crystal Book [36] и Crystal for Rubyists [37].
Этот раздел был написан Serdar Doğruyol [38] — автор Crystal for Rubyists [37], создатель Kemal [39], веб-фреймворка для Crystal, куратор Crystal Weekly [40].
Впервые представленный в 2012 году, Elixir является функциональным языком общего назначения, предназначенным для повышения производительности, масштабируемости и эксплуатационной надежности. В то время как язык является относительно новым, он компилируется в байт-код, который выполняется на виртуальной машине Erlang (BEAM). Erlang VM родилась в телекоммуникационной отрасли, развивается в течение почти 25 лет и стоит за многими сложными системами с высокой доступностью и низкой задержкой.
В настоящее время Elixir в основном используется для создания веб-приложений с использованием либо Cowboy [41] (низкоуровневый HTTP-сервер), либо Phoenix [9] (полнофункциональный фреймворк для разработки веб-приложений). Кроме того, Elixir пробивается в нишу встраиваемых систем благодаря фреймворку Nerves [42].
Синтаксис Elixir и набор инструментов черпали вдохновение от Ruby. В то время как синтаксические сходства только поверхностны, набор инструментов будет ощущаться знакомым каждому, кто знает Ruby. Команды хорошо продуманы, просты в использовании и обеспечивают прекрасную производительность труда разработчиков.
Пример Phoenix-контроллера, написанного на Elixir
Elixir и Phoenix набирают популярность, поскольку это сочетание позволяет легко создавать сложные надёжные веб-приложения и API с хорошей поддерживаемостью, отличной производительностью и масштабируемостью. Вот почему Pinterest, Bleacher Reports и многие другие компании выбирают Elixir для ключевых частей инфраструктуры своих продуктов. Вы можете получить продуктивность без ущерба для производительности (или наоборот), чего не скажешь о большинстве других языков.
Этот раздел написан Christian Nelson [45] — партнер и директор по разработке в Carbon Five [46].
P.S. Каков ваш Top-5 перспективных языков программирования?
P.P.S. От переводчика: На мой взгляд в список перспективных языков можно было бы включить ещё Nim. Если кто-то из уже применяет этот ЯП и готов написать о нём подобное краткое эссе, то я с удовольствием добавлю его в статью (само собой, с указанием авторства).
Автор: Source
Источник [47]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/188973
Ссылки в тексте:
[1] возможно увядают: http://techbeacon.com/5-programming-languages-are-fading-fast
[2] находится на подъеме: http://blog.wolksoftware.com/the-rise-of-functional-programming-and-the-death-of-angularjs
[3] опроса разработчиков: http://techbeacon.com/highlights-stack-overflow-2016-developer-survey
[4] занять свое место: https://github.com/slurpdurp/nogood/wiki/JVM-language-activity
[5] производительность труда разработчиков: https://medium.com/@octskyward/why-kotlin-is-my-next-programming-language-c25c001e26e3
[6] на следующий уровень: https://blog.codeship.com/an-introduction-to-crystal-fast-as-c-slick-as-ruby
[7] создание высокодоступных, отзывчивых систем: https://medium.com/software-sandwich/how-elixir-helped-us-to-scale-our-video-user-profile-service-for-the-olympics-dd7fbba1ad4e
[8] по мнению критиков: http://solnic.eu/2015/06/06/cutting-corners-or-why-rails-may-kill-ruby.html
[9] Phoenix: http://www.phoenixframework.org/
[10] никогда не выбрасывающего исключений во время выполнения: https://www.youtube.com/watch?v=FV0DXNB94NE
[11] хвалят: https://twitter.com/id_aa_carmack/status/735197548034412546
[12] обеспечивает соблюдение семантических версий автоматически: https://github.com/elm-lang/elm-package#version-rules
[13] быстрее, чем React, Angular или Ember: http://elm-lang.org/blog/blazing-fast-html-round-two
[14] elm-format
: https://github.com/avh4/elm-format
[15] elm-test
: https://github.com/elm-community/elm-test
[16] случайного тестирования: http://package.elm-lang.org/packages/elm-community/elm-test/latest/Test#fuzz
[17] elm-css
: https://github.com/rtfeldman/elm-css
[18] guide.elm-lang.org: http://guide.elm-lang.org/
[19] Elm in Action: https://www.manning.com/books/elm-in-action
[20] How to Use Elm at Work: http://elm-lang.org/blog/how-to-use-elm-at-work
[21] Richard Feldman: https://twitter.com/rtfeldman
[22] висячие указатели: https://en.wikipedia.org/wiki/Dangling_pointer
[23] RAII: https://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
[24] смарт-указатели: https://en.wikipedia.org/wiki/Smart_pointer
[25] динамическая диспетчеризация: https://en.wikipedia.org/wiki/Dynamic_dispatch
[26] гарантий на уровне типа: https://doc.rust-lang.org/book/concurrency.html
[27] прославленная возможность Rust: https://www.youtube.com/watch?v=WQbg6ZMQJvQ
[28] The Rust Book: https://doc.rust-lang.org/book/
[29] Rust by Example: http://rustbyexample.com/
[30] Will Crichton: http://twitter.com/wcrichton
[31] в своем блоге: http://notes.willcrichton.net/
[32] kotlinlang.org: https://kotlinlang.org/
[33] Hadi Hariri: http://twitter.com/hhariri
[34] блога Kotlin: https://blog.jetbrains.com/kotlin/author/hhariri/
[35] CSP: https://en.wikipedia.org/wiki/Communicating_sequential_processes
[36] Crystal Book: https://crystal-lang.org/docs
[37] Crystal for Rubyists: http://www.crystalforrubyists.com/
[38] Serdar Doğruyol: https://twitter.com/sdogruyol
[39] Kemal: http://kemalcr.com/
[40] Crystal Weekly: http://www.crystalweekly.com/
[41] Cowboy: http://ninenines.eu/
[42] фреймворку Nerves: http://nerves-project.org/
[43] Путь к 2 миллионам подключений: http://www.phoenixframework.org/blog/the-road-to-2-million-websocket-connections
[44] Почему WhatsApp требуется только 50 инженеров для обслуживания 900 миллионов пользователей: http://www.wired.com/2015/09/whatsapp-serves-900-million-users-50-engineers/
[45] Christian Nelson: http://twitter.com/xianpants
[46] Carbon Five: http://blog.carbonfive.com/
[47] Источник: https://habrahabr.ru/post/310252/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.