13 языков программирования, которые изменят будущее

Содержание

Будущее за программистами

by Andrej — Category Обзоры on 18/07/2020

Автоматизация производства и офисного труда обеспечат программистов работой как минимум до ближайшего апокалипсиса.

Есть два типа людей. Первые уверены в том, что будущее за программистами и вскоре искусственный интеллект займет их рабочее место и лишит кровного заработка, заставив исследовать ценовую разницу пивных бутылок в пункте сдачи стеклотары.
Вторые — ждут не дождутся, когда нейронные сети наконец начнут выполнять за них всю рутинную работу, чтобы посвятить свою жизнь дивану и получению безусловного дохода от государства.

Есть и третий тип людей, которые понимают, что замена человеческого труда машинным — неизбежный процесс, но если он кого-то и оставит без работы, то точно не их. Эти люди — программисты.
Именно их так боятся клерки, ведь все идет к тому, что вскоре целые отделы в корпорациях будет заменять программист-бородач, обслуживающий самообучающуюся нейросеть. Офис-менеджеры, операторы колл-центров, продавцы, гостиничный персонал и даже бармены — как показало исследование Оксфордского университета за 2015 год именно эти профессии стоят первыми в очереди на исчезновение.

На заводах творится то же самое, ведь китайцы и вьетнамцы уже давно не готовы работать за тарелку риса. Открытие в 2020 году полностью автоматизированного производства кроссовок Adidas в Германии или строительство «Гигафабрики» Tesla в Неваде служит этому подтверждением. И это лишь верхняя часть айсберга, так как…

Засилье гаджетов требует все большего числа программистов, и дальше будет только хуже

Смартфоны, планшеты, очки дополненной реальности, гироскутеры, дроны, фитнес-браслеты, смарт-часы — все это требует огромной армии программистов, ежедневно создающих новые приложения лишь для того, чтобы утром вы знали, какой у вас был пульс во время фазы быстрого сна.

Уже в самом ближайшем будущем нас ждет бум шлемов виртуальной реальности и беспилотных автомобилей. Подобные технологии уже породили целые новые профессии среди программистов, вроде архитекторов виртуальной реальности или разработчиков систем по оперированию большими данными.
Более того, рано или поздно навык программирования станет неотъемлемой частью любого образованного человека, будь он менеджер или юрист. И во многих странах это отлично понимают, поэтому…

Будущее за программистами? Программированию уже учат с самого детства!

Если вы до сих пор думаете, что программирование — это удел спецов и профессионалов, то вы напрочь застряли в прошлом, будущее за программистами. И уже сегодня программируют даже дети дошкольного возраста, для которых существуют специально разработанные обучающие языки. Самые известные — это Scratch от MIT и Blockly от Google.
Оба построены по одинаковому «блочному» принципу — каждая команда здесь представлена в виде графического блока. Их можно соединять в цепочки — такие «паровозики» из блоков и составляют код, задающий последовательность действий программы.
Причем программировать можно не только виртуальные объекты — в продаже есть куча роботизированных игрушек, функционирующих на детских языках программирования. Дети постарше используют одноплатные компьютеры micro:bit.

Компьютер уже сейчас стоит как ужин в среднем ресторане

Функционал одноплатных компьютеров micro:bit целиком и полностью находится во власти фантазии программиста.
Сегодня цены на такие компьютеры составляют считанные доллары.
Все это говорит о важной перемене — если еще недавно изобретение гаджетов было уделом дипломированных инженеров из крупных корпораций, то теперь, благодаря дешевым компьютерам, ситуация в некотором роде вернулась в 70-е года ХХ века, когда технологии двигали вперед продвинутые гики из гаражей. А это в свою очередь значит, что…

Сегодня программисты даже не обязаны ходить на работу?

Мы можем себе в этом не признаваться, но работа в офисе давно выглядит как атавизм дремучего прошлого. Программисты поняли это раньше всех — именно поэтому среди них такое огромное количество фрилансеров и сотрудников на «удаленке».

Действительно, какой смысл программисту сидеть в офисе, если его код все равно никто не понимает, кроме него самого? Нет, конечно, если офис представляет собой креативное пространство с бесплатными печеньками, то ходить в него даже в удовольствие. Правда, ирония в том, что такой офис, как правило, — удел именно ИТ-компаний.
Скажем больше, сегодня программист может себе позволить вообще не устраиваться на работу. Программисты-фрилансеры востребованы как никогда, а число стартапов в технологичной сфере и вовсе скоро превысит количество задействованных в них сотрудников. Новые формы взаимодействия между программистом и работодателем приводят к замечательному следствию:

Программист может работать в любом уголке мира, не выходя из дома

Даже программист с минимальными знаниями английского может работать с зарубежными заказчиками, ведь компьютерный язык универсален для всех. Отсюда весьма привлекательная «плюшка» для наших специалистов — оплата в валюте. Еще не забыли конец 2014 года? Многие программисты с зарплатой в долларах точно нет — ведь в рублевом эквиваленте их доход тогда увеличился почти в два раза!
Все это далеко не тайна и приток программистов в профессию растет. Впрочем, спрос растет еще быстрее. Как показывают исследования Бюро статистики труда США, в 2020 году около миллиона вакансий программистов в Америке будут незаняты. И дело здесь не в институтах, которые не справляются с запросами индустрии, ведь…

Для получения профессии программист совершенно не обязан просиживать штаны в вузе

Банальная мысль, но от этого не менее верная — в вузах учат теории, а не практике. Вот убедительный пример: даже продвинутые инженеры, приходящие на работу в Facebook, проходят шестинедельные курсы, большая часть которых посвящена программированию. А туда нанимают только лучших в своем деле.
Среди подразделений программистов Google есть те, в которых 14% сотрудников не имеют даже диплома об окончании колледжа. Можно сказать, что требовать от программиста окончания профильного вуза, это то же самое, что требовать от строителя диплома архитектора. Но как же тогда люди приходят в профессию? Некоторые учатся сами, а многие заканчивают курсы, которых оказывается вполне достаточно, чтобы найти первую работу в этой сфере.

Возможно Вас также заинтересует…

В разработке интернет-проектов, как и в промышленности активно используется термин ЧПУ. Однако здесь он не…

Изготовление сайта — это еще не гарант привлечения посетителей. И даже если привлечь их получится,…

Я часто забываю что-нибудь из важных вещей во время предпроектной работы, поэтому собрал советы самому себе о том,…

В 2014 году в профессиональной среде стал активно использоваться термин инфографика. Несмотря на то, что…

Blogerator.org

Эксклюзивные ИТ-новости, обзоры и интервью

10 перспективных языков программирования, которые могут перевернуть мир ИТ

Действительно ли нам нужны новые языки программирования? Безусловно, на данный момент их вполне достаточно. Среди разнообразия императивных, функциональных, объектно-ориентированных, динамических, компилируемых, интерпретируемых и скриптовых языков ни один разработчик не сможет познать все доступные на сегодняшний день возможности.

И всё же возникновение новых языков — явление довольно частое. Некоторые из них создаются студентами или любителями в качестве индивидуальных проектов, другие являются продуктами крупных производителей программного обеспечения. Даже небольшие и средние компании принимают участие в этом процессе, создавая языки для нужд своих отраслей. Так почему же люди продолжают изобретать велосипед снова и снова?

Дело в том, что, несмотря на мощность и многофункциональность популярных на данный момент языков, ни один синтаксис не является идеально универсальным. Более того, само программирование постоянно развивается. Распространение многоядерных процессоров, облачного программирования, мобильности, а также распределённых архитектур создали новые проблемы для разработчиков. Добавление поддержки самых последних функций, парадигм и шаблонов к уже существующим языкам, особенно наиболее популярным, может быть чрезмерно сложным. Иногда лучшим решением является начать с нуля.

Таким образом, ниже представлены 10 передовых языков программирования, каждый из которых рассматривает искусство разработки ПО с новой стороны, решая определённую проблему либо специфический недостаток языков, наиболее популярных на сегодняшний день. Некоторые из них являются уже законченными проектами, тогда как другие находятся лишь на ранних стадиях своего развития.

Вполне вероятно, что некоторые из них так и не обретут популярность, но любой из них может стать революционным достижением, которое окончательно изменит программирование — по крайней мере, до тех пор, пока не будут созданы новые языки.

Исследуемый язык программирования № 1: Dart

JavaScript хорош для добавления базовых элементов интерактивности веб-страницам, но когда код ваших веб-приложений состоит из тысяч строк, слабые места этого языка становятся заметны. Вот почему Google создала Dart — язык, который, как полагает компания, станет новым «родным» языком веб-программирования.

Как и в JavaScript, в Dart используются синтаксисы и ключевые слова, похожие на те, которые используются в языке C. Однако одним существенным различием является то, что в то время как JavaScript основывается на прототипах, объекты в Dart определяются с помощью классов и интерфейсов, как в C++ или Java. Также Dart позволяет программистам дополнительно задавать переменные со статическими типами. Идея заключается в том, чтобы сделать Dart таким же привычным, динамичным и гибким языком, как и JavaScript, который в то же время позволяет разработчикам писать коды, быстрые и лёгкие в выполнении, и в которых сложно сделать труднонаходимые ошибки.

Сегодня Dart мало где можно использовать. Он разработан для запуска либо на клиенте, либо на сервере (а-ля Node.js), но единственным способом запустить клиентскую версию Dart-кода является его кросскомпиляция в JavaScript. Однако и после этого он не будет запускаться во всех браузерах. Но так как Dart выпускается по бесплатной лицензии типа BSD, то любой продавец, который согласен с условиями Google, может свободно использовать этот язык в своих продуктах. Всё, что осталось сделать Google, — это убедить всю индустрию.

Исследуемый язык программирования № 2: Ceylon

Гэвин Кинг (Gavin King) отрицает тот факт, что Ceylon, разрабатываемый им язык в Red Hat, должен стать «убийцей Java». Кинг хорошо известен как создатель фреймворка объектно-реляционного отображения Hibernate для Java. Ему нравится Java, но он считает, что в нём ещё многое нужно улучшить.

Среди тех вещей, которые не устраивают Кинга в Java, находятся подробный синтаксис языка, отсутствие первоклассных функций и функций высшего порядка, а также недостаточная поддержка метапрограммирования. Особенно его огорчает отсутствие декларативного синтаксиса для определения структурированных данных, что, по словам Кинга, «приравнивает Java к XML». Ceylon нацелен решить все эти проблемы.

Кинг и его команда не планируют заново изобретать колесо. Никакой виртуальной Ceylon-машины не будет, Ceylon-компилятор будет выдавать java-байткод, который можно запустить на JVM. Но Ceylon будет больше, чем просто компилятор. Стратегической целью данного проекта является создание нового комплекта разработчика для Ceylon, который заменит Java, являющегося, по словам Кинга, «разбухшим», неуклюжим и до сих пор тщательно не модернизированным.

Это трудная задача, и пока что Red Hat не выпустил никаких утилит для Ceylon. Кинг говорит, что компилятор должен выйти в этом году. Но в ближайшее время не ждите какого-либо ПО, написанного на «100% чистом Ceylon».

Исследуемый язык программирования № 3: Go

Интерпретаторы, виртуальные машины, а также управляемые коды сегодня очень популярны. Неужели нам действительно нужен ещё один старомодный язык, который компилирует в «родные» двоичные коды? Команда инженеров Google — под руководством Роберта Гризмера (Robert Griesemer) и легенд Bell Labs Кена Томпсона (Ken Thompson) и Роба Пайка (Rob Pike) — говорит «да».

Go — язык программирования общего назначения, который подходит для всего: начиная от разработки приложений и заканчивая программированием систем. В этом смысле он больше похож на C или C++, чем на Java или C#. Однако как и последние языки, Go включает в себя такие современные функции, как очистка памяти от ненужных данных, отражение текущих процессов выполнения и поддержку параллельности.

Также важно то, что Go был создан для лёгкого программирования. Его основной синтаксис похож на C, однако Go удаляет ненужный синтаксис и повторения во время оптимизации таких программ, как, к примеру, определение объектов. Целью команды Go было создание языка, на котором было бы удобно писать коды, как и на динамическом языке сценариев, но который в то же время обладал мощью компилируемого языка.

Над Go ещё работают, и спецификация языка ещё может быть изменена. Тем не менее, работать с ним можно уже сейчас. Google создала утилиты и компиляторы, к которым прилагается подробная документация. К примеру, в учебном руководстве Effective Go хорошо показаны отличия Go от предыдущих языков.

Исследуемый язык программирования № 4: F#

Функциональное программирование давно пользуется популярностью у программистов и академиков, но чисто функциональные языки, такие как Lisp и Haskell, часто считаются непригодными для разработки реального ПО. Одной из наиболее распространённых причин является то, что код функционального вида очень сложно сочетать с кодом и библиотеками, написанными на императивных языках, к примеру, на C++ или Java.

Знакомьтесь, F# (произносится «Эф-шарп») — язык, разработанный Microsoft с целью объединения в себе функциональности и практичности. Так как F# является языком первого класса на виртуальной машине .Net CLR, он может поддерживать такие же библиотеки и функции, как и другие CLR языки, например, как C# и Visual Basic. Код F# чем-то похож на код OCaml, но содержит свой собственный интересный синтаксис. Например, для облегчения проведения научных расчётов числовыми типами данных в F# могут являться единицы измерения. Также в F# имеются конструкции для облегчения асинхронных вводов/выводов, параллелизации ЦПУ и вывода процессов на графический процессор.

После длительного периода созревания в Microsoft Research, на сегодняшний день F# поставляется вместе с Visual Studio 2010. Что ещё лучше, но не характерно для корпорации, Microsoft создала F# компилятор и корневую библиотеку, доступную по открытой лицензии Apache. Вы можете начать работу с ним бесплатно и даже использовать его на системах Mac и Linux (с помощью Mono runtime).

Исследуемый язык программирования № 5: Opa

Веб-программирование — дело очень сложное. Даже самые простые веб-приложения состоят из бесконечных строк, написанных на нескольких языках: HTML и JavaScript для клиента, Java или PHP для сервера, SQL для базы данных и т.д.

Opa не заменяет ни один из этих языков по отдельности. Более того, он пытается заменить их все сразу, представляя собой совершенно новую парадигму в веб-программировании. В Opa-приложении интерфейс пользователя клиента, логика сервера и база данных ввода-вывода написаны на одном языке, Opa.

Это достигается с помощью комбинации фреймворков со стороны клиента и сервера. Компилятор Opa решает, где должна быть запущена данная программа (на клиенте, сервере либо же и там, и там), и затем выполняет её код. Для клиентских программ он переводит Opa на соответствующий JavaScript код, в том числе и AJAX вызовы.

Естественно, с такого рода интегрированной системой в конце должно получиться что-то волшебное. Среда выполнения Opa объединяет собственный веб-сервер и систему управления базой данных, которые не могут быть заменены самостоятельными альтернативами. Как бы то ни было, это может быть не так уж и важно, учитывая возможность разработки современных веб-приложений, управляемых данными, с помощью всего лишь нескольких десятков строк кода. Opa поставляется бесплатно и на данный момент доступен для битных Linux и Mac OS X платформ, другие же порты пока разрабатываются.

Исследуемый язык программирования № 6: Fantom

Хотите создавать приложения для Java или .Net? Если Вы пишите на Fantom, то можете сделать выбор, а потом даже поменять платформы. Всё потому, что Fantom с самого начала создавался для кросс-платформенной мобильности. Проект Fantom состоит не только из компилятора, который может выводить байткод как для JVM или .Net CLI, но также из набора API, которые отделяют API Java и .Net и создают дополнительный уровень мобильности.

Планируется ещё больше увеличить мобильность Fantom. Уже доступен компилятор из Fantom в JavaScript, а в следующие цели могут входить проект компилятора LLVM, Parrot VM и Objective-C для iOS.

Однако мобильность — не вся суть Fantom. Оставаясь по своей природе похожим на C, он также должен улучшить языки, которые вдохновили разработчиков на его создание. Он пытается занять промежуточную позицию в некоторых наиболее спорных вопросах синтаксиса, таких как строгая или динамическая типизация, либо же при выборе между интерфейсами и классами. Он обладает дополнительным лёгким синтаксисом для объявления структур данных и сериализации объектов. Также он поддерживает встроенное функциональное программирования и параллелизм.

Fantom распространяется бесплатно в соответствии с Academic Free License 3.0 и доступен для Windows и Unix-подобных платформ (в том числе и Mac OS X).

Исследуемый язык программирования № 7: Zimbu

Большинство языков программирования заимствуют функции и синтаксис из ранее существовавших языков. Zimbu взял по кусочку почти из каждого. Детище Брэма Мооленаара (Bram Moolenaar), создателя текстового редактора Vim, Zimbu намерен стать быстрым, точным, портативным и лёгким для чтения языком, который может быть использован для разработки чего угодно: от GUI-приложений до ядер ОС.

Благодаря своему смешанному характеру, синтаксис Zimbu уникален и специфичен, но в то же время обладает большим количеством функций. Он использует выражения и операторы, похожие на те, которые используются в C, но со своими ключевыми словами, типами данных и блочными структурами. Он поддерживает управление памятью, потоки и конвейеры.

Единственной проблемой является портативность. Хотя Zimbu и является компилируемым языком, его компилятор выдаёт ANSI C код, а двоичные файлы могут быть созданы лишь на платформах со встроенным

К сожалению, проект Zimbu находится на стадии разработки. Компилятор и несколько программ-примеров могут быть созданы самостоятельно, но не весь действительный Zimbu-код будет компилироваться и выполняться должным образом. Не все заявленные функции ещё разработаны, а некоторые из уже представленных работают некорректно. Спецификация языка также, возможно, со временем изменится: по мере необходимости добавятся ключевые слова, типы и синтаксис. Следовательно, документация также ещё неполная. Однако если Вы хотите попробовать, предварительные утилиты уже доступны по лицензии Apache.

Исследуемый язык программирования № 8: X10

Когда-то параллельная обработка данных была специализированной нишей разработки ПО, но с распространением многоядерных процессоров и распределённых вычислений, параллелизм обрёл популярность. К сожалению, нынешние языки программирования не успевают за этой тенденцией. Именно поэтому IBM Research создаёт X10 — язык, созданный специально для современных параллельных архитектур, который нацелен на увеличение производительности разработчиков «в десять раз».

Параллелизм в X10 возможен благодаря PGAS модели программирования (модели разделённого глобального адресного пространства). Код и данные выделяются в блоки и распределяются по разным «пространствам», тем самым облегчая шкалирование программы от однопотокового прототипа (одно пространство) до многопотокового, выполняемого на одном или более многоядерном процессоре (несколько пространств) в высокопроизводительном кластере.

Код X10 больше всего похож на Java. По сути, среда выполнения X10 доступна как в качестве встроенных исполнимых файлов, так и как классовые файлы для JVM. Компилятор X10 может выдавать исходные коды либо на C++, либо на Java. В будущем планируется разработать прямую совместимость с Java.

А пока язык развивается, хотя он уже довольно разработан. Компилятор и среда выполнения доступны для различных платформ, в том числе Linux, Mac OS X и Windows. В качестве дополнительных утилит выступают интерактивная среда разработки (IDE), основанная на Eclipse, и отладчик, которые распространяются по лицензии Eclipse Public License.

Цукерберг рекомендует:  Opencart - CMS для крупного интернет-магазина

Исследуемый язык программирования № 9: haXe

Многие языки можно использовать для написания переносимого кода. доступны практически для всех ЦПУ архитектур, а Java-байткод будет выполняться везде, где есть JVM. Но haXe (произносится как «хекс») является более чем просто переносимым. Это мультиплатформенный язык, который может использоваться в различных операционных средах, начиная от встроенных двоичных систем до интерпретаторов и виртуальных машин.

На данный момент разработчики могут писать программы на haXe, затем компилировать их в объектный код, JavaScript, PHP, Flash/ActionScript или байткод NekoVM. Дополнительные модули для компилирования C# и Java находятся в разработке. Дополнением к базовому языку является стандартная библиотека haXe, которая одинаково работает с любым объектом, а также специализированные библиотеки для выполнения характерных функций каждой из платформ.

Синтаксис haXe похож на C и обладает богатым набором функций. Главным преимуществом является способность устранения проблем, свойственных каждой из платформ. К примеру, в haXe строгая типизация используется там, где она не используется в JavaScript; к ActionScript добавляются параметры настройки и выведение типа; также полностью исключается плохо разработанный, непродуманный синтаксис PHP.

Несмотря на то, что haXe всё ещё находится в разработке, он уже используется в коммерческих целях своим создателем, игровой студией Motion Twin, так что всё серьёзно. Он доступен для Linux, Mac OS X и Windows по комбинации бесплатных лицензий.

Исследуемый язык программирования № 10: Chapel

В мире высокопроизводительных вычислений редкие имена звучат громче, чем Cray. Никого не должно удивлять то, что Chapel, первый язык программирования, созданный Cray, был разработан с учётом суперкомпьютерных вычислений и кластеризации.

Chapel является частью программы Cray Cascade Program, масштабного проекта по высокопроизводительным вычислениям, частично профинансированного американским Управлением перспективных исследовательских программ в области обороны (DARPA). Среди целей данного проекта находятся отделение алгоритмов параллельной обработки от используемого оборудования, улучшение их производительности на архитектурах и увеличение портативности параллельных программ.

Синтаксис Chapel составлен из синтаксисов нескольких языков. В дополнение к наиболее часто используемым (C, C++, Java), в нём заимствованы понятия из таких языков научного программирования, как Fortran и Matlab. На его функции параллельной обработки данных повлияли ZPL и High-Performance Fortran, а также предыдущие проекты Cray.

Одной из наиболее притягательных функций Chapel является его поддержка «программирования с переменным разрешением», что позволяет разработчикам создавать приложения с очень абстрактным кодом и делать дополнения по мере того, как реализация становится более определённой.

Работа над Chapel продолжается. На данный момент он может быть запущен на суперкомпьютерах Cray и различных высокопроизводительных кластерах, но его можно портировать на большинство систем типа Unix (в том числе на Mac OS X и Windows с помощью Cygwin). Исходный код доступен по бесплатной лицензии типа BSD.

Ключевые слова: языки будущего, самые перспективные, продвинутые языки программирования, сравнение языков программирование, современные и развитые языки завтрашнего дня, востребованные завтра, современные и бурно развивающиеся языки, будущий, передовые языки программирования, уникальные, следующее поколение.

Лингвистическое будущее: какие языки стоит учить на перспективу и почему пора отказаться от снобизма в адрес пиджинов

Еще в конце XIX века ученые (и лингвисты в их числе) предвидели бум глобализации и начали задумываться об универсальном средстве общения. В это же время предпринимались первые попытки изобрести единый искусственный язык — так появились волапюк и эсперанто. Грамматика и правила произношения первого оказались слишком запутанными, а второй появился уже после того, как английский начал свою мировую экспансию. Эксперимент провалился, английский утвердился в качестве lingua franca — международного языка, и сегодня каждый третий житель Земли им владеет.

В научной фантастике часто описываются планеты, все население которых говорит на одном языке. Какой бы соблазнительной или ужасающей ни казалась эта идея, нам до такого еще далеко. Язык не только стал для человека способом коммуникации, но и взял на себя другие функции — в частности, он отражает культуру и историю каждого отдельного народа. Сейчас мы наблюдаем две полярные тенденции: с одной стороны, человечество стремится к глобализации и унитарности, с другой — нации крепко держатся за устои и собственную идентичность.

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

Многие предполагают, что место английского языка вскоре займет китайский, поскольку количество носителей последнего неуклонно растет.

Однако такой сценарий маловероятен. Во-первых, английский будет непросто согнать с насиженного места: не забывайте про массовость QWERTY-клавиатур и главные англоязычные интернет-источники. Во-вторых, изучение тонов китайского с возрастом дается все тяжелее, а освоить иероглифы на хорошем уровне и вовсе можно только начав учить язык с самого раннего детства. Разумеется, мы помним, как в недалеком прошлом дети аристократов сражались с латинскими спряжениями и греческими падежами, но переход от простого к сложному совершается гораздо менее охотно. Английская грамматика и лексика заставила людей расслабиться и привыкнуть к стандарту «основы языка за три месяца» — с китайским такой фокус не пройдет. Поднебесная вполне может стать гегемоном на мировой арене, но для главенствующего положения языка этого явно недостаточно — вспомните примеры монгольского ига или Маньчжурской империи.

Но вернемся к не столь далекому будущему. Весьма вероятно, что к 2115 году на планете останется не более 600 языков (сейчас их около 6000).

Виной тому все та же глобализация, но процесс исчезновения языков идет уже не первое столетие. Он начался с многочисленных захватов территорий и колонизации, когда носителей либо порабощали, либо наказывали за использование родной речи. Так исчезло большинство языков Северной Америки и Австралии. Затем началась урбанизация, которая принудила людей к проживанию вдали от дома и изучению городского lingua franca.

Даже ликвидация безграмотности, несмотря на очевидную пользу подобных мер, может угрожать лингвистическому разнообразию. Мы считаем «законным» язык с письменностью и сводом правил, а количество наречий, представленных исключительно устной формой речи, неуклонно сокращается. Многим кажется, что язык без письменности — ущербный, но подумайте, например, об идише, который часто причисляют к вымирающим языкам, хотя на нем общаются тысячи жителей США и Израиля.

Новые вариации языков еще не получили отдельного терминообозначения, но уже можно выделить несколько любопытных основных течений.

Kiezdeutsch — мультиэтнический язык молодежи Германии, в котором часто происходит смешение арабских и турецких слов с немецкими.

Singlish — сингапурский вариант английского, уже ставший родным для многих сингапурцев и вторым языком для остальных граждан страны. Лексика состоит из слов английского, малайского и китайского происхождения.

Naija — креольский язык на английской основе, широко используемый в Нигерии в качестве lingua franca. На нем уже говорят более 75 млн человек.

Kebab norsk — норвежский этнолект, в котором встречаются слова из турецкого, арабского, урду, панджаби и других восточных языков, служит средством общения проживающих в Норвегии мигрантов.

Такие диалекты и разновидности языка, разумеется, будут использоваться не самыми большими этническими группами, но, как мы видим на примере идиша, они вполне могут занять достойное место на лингвистической карте.

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

Каковы же прогнозы, если говорить о 2050-х и 2100-х годах? В ближайшие лет двадцать английский не собирается уступать лидерство менее удачливым собратьям. Если же вы хотите не прогадать с выбором курсов для детей, то подумайте, каким вы видите их будущее.

1. Заработок

Недавнее исследование Британского совета выявило более двадцати растущих рынков. В отчете упомянуты страны БРИКС, которые сейчас переживают серьезный экономический подъем, и эта положительная динамика должна сохраниться в будущем.

Таким образом, португальский, хинди, русский (хотя бы тут повезло!) и китайский остаются довольно перспективными для изучения в данный момент. Но вот первое и второе места достались испанскому и арабскому.

Однако у американских ученых несколько другие данные. К 2050 году они прогнозируют расцвет хинди, бенгали, урду и индонезийского, за ними следуют испанский, португальский, арабский и русский. Словом, чтобы окупить инвестиции в языковые курсы, выберите что-нибудь с лингвистической карты Индийского полуострова.

2. Общение с максимальным количеством носителей

Хотите использовать приобретенные навыки по полной? Тогда у вас есть три основных варианта:

  • китайский — язык, все еще обладающий большим потенциалом, особенно в сфере туризма. Видели надписи на китайском в русских церковных лавках? То-то же;
  • испанский частенько выбирают вторым языком для изучения. Американцы делают это из-за близкого соседства с Мексикой, все остальные — из-за любви к хамону;
  • французский несколько сдал позиции за последние десятилетия, но некоторые лингвисты прогнозируют резкое увеличение числа носителей за счет высокой рождаемости в бывших французских колониях на западе и севере Африки.

Почти 2/3 населения Земли говорит на одном из этих 12 языков. Источник: The Washington Post

3. Туризм

По данным на 2015 год, для повседневного общения английский язык используют жители 101 страны, арабский — 60 стран, французский — 51 страны, а китайский с испанским находятся примерно на одном уровне — на них говорят в 33 и 31 стране соответственно. Еще один серьезный повод задуматься, стоит ли изучать китайский.

Количество стран, в которых говорят на этих языках. Источник: The Washington Post

4. Интерес к культуре

Участники переводческого проекта ЮНЕСКО проанализировали более 2,2 млн текстов и выяснили, что если книга опубликована на языке с небольшим количеством носителей, тогда она наверняка будет переведена на один из языков-хабов.

Русский становится таким хабом для грузинского, азербайджанского, узбекского, чувашского и многих других языков бывшего СССР.

С русского книгу переведут на английский, а с него — на любой другой. «Крупными» языками-связками являются итальянский, немецкий и голландский. К слову, до китайских читателей доходит очень небольшой процент переводов между ними, а ситуация с переводами «в обратном направлении» еще хуже: за девять лет на других языках вышло всего 863 книги, хотя вдвое больше произведений только шведских писателей было опубликовано на хинди, арабском, немецком и английском.

Часть графика с указанием языков, для которых русский стал связующим

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

Идеальным гаджетом, конечно же, станет вавилонская рыбка из «Автостопом по галактике», но до ее появления нам остается только гадать, на что будет похожа наша речь через столетие. Она может упроститься и подстроиться под культурное многообразие, а может пасть жертвой ревнителей чистоты языка и превратиться в музейный экспонат для ценителей диковин. Точно известно одно: скучно не будет.

13 языков программирования, которые изменят будущее

Лучшие Языки Программирования 2020, Которые Стоит Изучать

Один из самых важных навыков на сегодня – умение написать программу. Ведь компьютерные технологии есть везде, от заводов и транспорта, до.

Содержание

Один из самых важных навыков на сегодня – умение написать программу. Ведь компьютерные технологии есть везде, от заводов и транспорта, до бытовой техники. Они значительно упростили нашу жизнь.

Обычный пользователь, как правило, слышал о 3-4 языках программирования. Но профессиональные кодеры знают, что их в разы больше. По данным разных источников, в среднем сегодня насчитывается от 500 до 5000 языков программирования.

Но среди них, из года в год, программисты доверяют лишь дюжине (если не меньше).

Статистические данные

Очевидно, что достаточно часто выбирают язык по субъективным причинам. Но для меня было удивлением увидеть огромную разницу в опросах разными источниками.

Данные Github

Один из самых крупных ИТ-хостингов ежегодно публикует статистику использования и развития языков программирования, фреймворков и библиотек. Их аудитория насчитывает порядка 31 миллиона разработчиков и не менее 2 миллионов организаций. Потому показатели можно считать достаточно надежными.

Они также опубликовали данные популярности языков в разных частях света:

PYPL-index и Tiobe

PYPL и TIOBE это два индекса, анализирующие популярность языков программирования согласно частоте поисковых запросов. PYPL исследует исключительно тренды Google, в то время, как Tiobe берет данные с Youtube, Wikipedia, Bing и других популярных системы.

Но есть один нюанс: PYPL исследует исключительно страницы, в которых описывается процесс программирования, а TIOBE создает рейтинг на основе всех сайтов, где есть хотя бы упоминание о языке. Потому он менее точен. Предоставляю последние опубликованные данные, чтобы Вы могли сами убедиться.

Популярность языков по PYPL. Источник изображения

Данные значительно отличаются от рейтингов Github. Прежде всего, Javascript занимает лишь третье место, уступив Java и Python. Typescript в данном списке расположен на 11 месте, Ruby – на 12. Ну такие языки программирования, как Shell и C не попали даже в Top-20.
Перейду статистике TIOBE:

Stackoverflow

Вы могли бы сказать, что я отношусь предвзято. Но я хочу предоставить результаты опроса программистов, проведенного Stackoverflow, обратив внимание на некоторые детали.

Typescript и Ruby в этом рейтинге заняли 12 и 13 места соответственно. А вот Visual Basic. NET расположился на 18, в то время, как по индексу TIOBE – на 6.

На что обращать внимание

Изучив всю статистику можно выделить несколько языков программирования, которые однозначно будут трендовыми в 2020 году.

Front-end

Javascript

Javascript является фронт-энд языком программирования, наиболее широко используемым в мире для разработки веб-приложений. Он позволяет создать все анимации, настроить множество кнопок, управлять мультимедиа и многое другое. Иными словами, Javascript – это безоговорочная основа front-end разработки.

Преимущества:

  • высокая скорость работы благодаря возможности запуска через браузер на клиентской стороне;
  • прост в изучении;
  • прекрасно сочетается с другими языками;
  • возможность создание насыщенного интерфейса;
  • ежегодные обновления.

Недостатки:

  • поскольку код исполняется на стороне клиента, это несколько снижает защищенность компьютера пользователя;
  • сценарии могут исполняться по-разному в зависимости от браузера.

Уникальная особенность Javascript – набор функциональных фреймворков. Так, Node.js совместно с Express.js позволяет использовать этот язык программирования для запуска сценариев на стороне сервера.

80% компаний требуют от кандидатов на работу знания Javascript и наличия опыта работы в его среде. Потому этот язык – неизменный тренд уже несколько лет.

Typescript

По мере роста популярности Javascript и его применения крупными компаниями, процесс упрощения написания кода и его сопровождения становится все сложнее. По этой причине Microsoft разработали Typescript, который расширяет возможности JS. Кроме того, приложения, написанные на Typescript можно компилировать в Javascript. Современенный и мощный фреймворк Ангуляр как раз и требует понимание и изучения TypeScript. Если вы решили войти во front-end, typescript будем вам очень кстати.

Преимущества:

  • полное описание каждой составляющей кода, что исключает вероятность нарушения работы одного элемента при изменении другого;
  • требует меньше тестов благодаря особой архитектуре;
  • расширенный набор инструментов;
  • возможность настроить так, чтобы ошибочный код не получилось закоммитить.

Недостатки:

  • для интеграции библиотек необходимо описать каждый модуль, чтобы не возникало ошибок при компиляции;
  • мало специалистов;
  • код пишется дольше, чем в JS.

Как показала статистика Github и PYPL, этот язык набирает обороты, а его сообщество расширяется. Документация оформлена очень хорошо, потому его не так сложно выучить. Несмотря на имеющиеся недостатки, высока вероятность, что его рейтинги значительно вырастут к 2020.

HTML 5

HTML позволяет организовывать весь контент страницы. Он также широко используется для верстки веб-страниц и считается довольно простым для изучения. Очень часто свой путь программирования начинают именно с HTML.

Преимущества:

  • легко создавать сайты;
  • поддерживается любым браузером;
  • хорошо оптимизирует вид страницы для любых устройств;
  • легковесные файлы;
  • полностью бесплатный.

Недостатки:

  • невозможность корректной интерпретации без браузера;
  • создает только статические страницы;
  • нужно писать большой код для создания простой страниц;
  • низкий уровень безопасности;
  • каждая страница должна быть создана отдельно.

Нельзя сказать, что этот язык будет использоваться большими корпорациями. Его функциональности сегодня недостаточно для создания сайтов уровня 2020 года. Тем не менее, он все еще хорош для новичков и будет часто применяться для создания новостных порталов, онлайн-магазинов и многого другого.

Back-end

Python

Один из самых популярных языков программирования серверной части. Согласно последней статистике PYPL пользователи чаще всего ищут курсы обучения и помощь в работе с Python. Как правило, его применяют для написания скриптов и плагинов. К примеру, посредством Python прописываются эпизоды и действия персонажей в играх.

Это универсальный язык с легко читаемым кодом. Благодаря особенностям синтаксиса программистам необходимо проводить меньше действий для создания плагина, нежели в Java или С++. Его используют такие бренды, как Instagram и Surveymonkey. Без Python не обходятся в Google, Nettflix и Quora.

Преимущества:

  • очень простой код;
  • возможность асинхронного кодирования (чередование выполнения циклов обработки);
  • поддерживает большинство библиотек;
  • бесплатный;
  • открытый код;
  • объектно-ориентированный.

Недостатки:

  • несмотря на упрощенный способ написания кода, многие процессы выполняются достаточно долго;
  • слаб для программирования мобильных приложений;
  • требует много тестов для полного исключения ошибок.

Многие советуют Python полным чайникам программирования для первоначального изучения. В идеале, уже через 2-3 урока можно будет писать простенький код.

Рейтинги Python заметно растут. В прошлом статистические данные ставили его на 4-5 места, но в феврале 2020 он уже вырвался на первое место по количеству поисковых запросов. Более подробная статистика будет лишь по окончанию года. Но уже сейчас можно уверенно говорить, что это главный тренд среди языков программирования.

Java

Еще один популярный выбор программистов. Этот язык широко используется масштабными предприятиями для создания приложений разного рода. Среда Java невероятно стабильна, благодаря чему его выбрали для написания Android-приложений.

Очень много сайтов сегодня не функционируют без Java. Примечательно, что с каждым годом таких сервисов все больше. Потому спрос на специалистов, хорошо разбирающихся в этом языке программирования, все больше.

Преимущества:

  • объектно-ориентированное программирование;
  • читабельный и легкоуправляемый язык;
  • не требует специфической инфраструктуры аппаратного обеспечения;
  • хороший уровень защищенности;
  • стабильность;
  • автоматическое управление памятью.

Недостатки:

  • нестандартный внешний вид, к которому нужно долго привыкать;
  • потребляет много памяти и снижает производительность оборудования;
  • сложный в изучении;
  • ограниченная настройка критической задержки;
  • не поддерживает общее программирование, что увеличивает объем работы при написании кода;
  • нет возможности резервного копирования;
  • медленный.

Что я могу сказать о Java? Крепкий старичок, которому никто не нашел замену. Он немного отстает от нынешних темпов развития технологий. Но благодаря качественной компиляции кода и высокой стабильности он все еще занимает высокие позиции. Последнее время наблюдается падение интереса к Java, но это все еще один из самых желанных языков среди программистов.

PHP

Несмотря на то, что этот PHP проигрывает борьбу Python и Javascript, он все еще высоко котируется на рынке. Сегодня порядка 70% сайтов используют PHP, а в WordPress порядка 90% кода пишутся именно посредством этого языка. Благодаря PHP можно создавать очень динамичные и интерактивные сайты, что очень радует глаз нынешнего пользователя.

Преимущества:

  • низкий порог знаний для начала работы;
  • большая экосистема;
  • огромное сообщество;
  • высококлассная отладка.

Недостатки:

  • интерпретируемый язык: требует больше ресурсов и замедляет исполнение кода;
  • многопоточное выполнение (требует много памяти, но она всегда лимитирована);
  • требует изменения файла конфигурации для установки расширений.

PHP – один из самых противоречивых трендов. Если Вы в курсе событий, большинство разработчиков назвали его худшим языком программирования. Более того, из-за низкого порога знаний легко наткнуться на дилетанта, нежели квалифицированного специалиста.

Тем не менее, уже который год он занимает верхние строчки и, поверьте, в 2020 будет одним из самых востребованных на рынке.

Перспективные языки программирования

Найдены дубликаты

В следующий раз попробуй белый текст на светло жёлтом фоне, получится еще читабельнее.

Позволю заметить Вам, сударь: «Вы профан!» Белый текст на светло белом поле читается куда лучше.

ну, рано ещё шарпы хоронить.

Всё-же шансы, что .NET Core (а в частности более низкоуровневая прослойка .NET Standard) выстрелит, не так уж и малы )

Так он уже выстрелил имхо. В 17 вижле уже из коробки, я сам начал юзать и пока доволен, правда не в продакшене еще, но не вижу для этого проблем. Скорее нет желания переводить с 4.5 на core без нужды.

Данный рейтинг (по популярности языков) строится исходя из количества поисковых запросов на один из языков, выпущенные книги и статьи и пр. Этот рейтинг абсолютно не отображает реального позиционирования языка как такого и не дает никакого представления о том на сколько ценен специалист того или иного яп

два компилятора этому программисту.

Фигню какую-то написал. Прогнозы говорят о том, что .NET Core серьёзно подвинет жабу. Мы уже пилим рабочие проекты на коре, я размышляю как легаси переводить существующее.

Дурацкий фон, странная подборка.

Что значит перспективные? Те на которых проще всего работу найти новичку? Тогда надо смотреть на что больше спрос в конкретном городе и идти получать опыт. Скорее всего, это будет джава или C#.

Или перспективные технологии на которые в будущем будет хороший спрос? Тогда я бы ставил на свифт.

Цукерберг рекомендует:  Обучение - На каком языке пишут программы под Astra Linux

P.S. Пишу на расте за деньги. (:

После цвета шрифта и бэкграунда, сразу вспоминается попытки прочитать ман tengine от китайских ребят

Перспективные / не перспективные — это ага.

Надо знать основные парадигмы программирования и быть готовым изучать новые языки.

А так, у языков списка очень разные сферы применения.

5 языков программирования, которые в будущем могут стать доминирующими

Перевод статьи Ника Колаковского «5 Programming Languages That May Dominate the Future».

Статья, посвященная языкам, находящимся на грани вымирания, собрала множество комментариев и заставила нас задуматься: а какие языки программирования займут доминирующее положение в ближайшие годы? Приведенный здесь список не претендует на исключительность. Мы просто отобрали пять языков, которые могут показать очень хорошие результаты, исходя из существующих тенденций в анализе данных и в мобильных ОС.

Kotlin

Язык Kotlin пережил довольно крутой подъем, превратившись из малоизвестного проекта в «первоклассный» язык для Android-разработки. Делая каждый последующий Android SDK более «дружественным к Kotlin», Google ясно дал понять, что приветствует разработку Android-приложений на этом языке.

Недавний опрос, проведенный Pusher, показал, что 79,5% программистов, использующих Kotlin, применяют его для Android, а 31% – для работы с бэкендом/серверами. При этом 30,5% взаимодействуют с Kotlin в плане библиотек, а 5,5% используют его при «других» действиях.

Поддержка Google и очевидный интерес разработчиков означают, что у Kotlin есть очень солидная основа для расширения в ближайшие годы. И хотя планы Google относительно его будущих операционных систем неясны (Fuchsia, это намек!), Kotlin вполне может играть в этих планах большую роль. А с учетом всемирного распространения Google, для языка программирования это означает неизбежный взлет.

Swift

Несколько лет назад Apple решил заменить Objective-C, на котором десятки лет создавались приложения для экосистемы Apple, на Swift – новый язык, созданный для устранения недостатков Objective-C.

В прошлом эксперты пытались представить Objective-C и Swift в качестве соревнующихся за рынок языков, но сейчас уже ясно, что победителем в этой гонке является Swift. Доказательство этого утверждения служит огромная официальная поддержка Apple для этого языка.

Но это не означает, что в ближайшем будущем Objective-C полностью уйдет со сцены. В конечном счете, есть большое количество legacy-кода, который нужно поддерживать. Но Swift скорее всего станет основой программирования в Apple на ближайшие годы. Именно на нем будет писаться ПО для огромного количества устройств (с учетом macOS, iOS и watchOS).

Множеству людей нравится Rust. В этом году, например, ежегодный опрос на Stack Overflow назвал его «самым любимым языком» – в этом рейтинге он обогнал Kotlin. А это значит, что разработчики хотят пользоваться им больше, чем другими языками.

Что стоит за всей этой любовью? Rust имеет открытый исходный код, в нем реализована «умная» модель памяти (никаких нулевых или висячих указателей, а также состояний гонки). В этом языке точный синтаксис, сходный с C и C++. Он элегантный, дружественный к неопытным пользователям и применимый в веб-е и операционных системах. Что ж тут не любить?

Другими словами, есть все основания считать, что в ближайшие годы Rust станет настоящим монстром. Впрочем, прежде чем он станет конкурентом C и C++ по степени распространения на рынке, может пройти некоторое время: пока что он даже не ворвался в топ-20 на TIOBE.

MATLAB

Хотя на данный момент и в обозримом будущем MATLAB не вытеснит Java, C или Python с первых строчек разнообразных рейтингов, этот язык переживает стабильный подъем. Например, в недавнем выпуске индекса TIOBE он поднялся с 17-го на 13-е место.

Чем вызван такой рост? Этот язык применяется в анализе данных, он довольно хорошо взаимодействует с популярными языками, такими как Python, Fortran и Java. И поскольку все больше компаний задействуют анализ данных в своей работе, MATLAB может занять довольно большую нишу на рынке.

Python

Да, Python никуда не денется: он для этого слишком популярен и применяется на слишком большом количестве различных платформ.

Будущее разработчиков: как технологии искусственного интеллекта изменят профессию Материал редакции

Директор по науке и технологиям шопинг-мессенджера «Алоль» Роман Душкин написал для vc.ru колонку о том, что ждёт профессию разработчика с распространением технологий искусственного интеллекта и как программист может остаться востребованным на рынке.

В предыдущей публикации мы говорили о замене специалистов разных профессий искусственным интеллектом и чат-ботами. Тема будущего программистов в связи с таким поворотом вызвала волну обсуждения, и мы решили подробнее раскрыть этот вопрос.

Код, который пишет код

Три года назад разработчик Кори Бекер опубликовал подробный материал о своём подходе, при помощи которого можно заставить эволюционировать код на языке Brainfuck. Этот подход на деле демонстрирует принципы «генетического программирования».

Написанная Кори Бекером программа получает на вход некоторое описание функции приспособленности, которая описывает целевую программу, после чего «выращивает» код на языке программирования, который решает поставленную задачу.

Простыми словами: вы ставите программе задачу написать другую программу, которая выведет на экран слово «Hello!» — и она это делает. Технически это означает воплощение решения при помощи искусственного интеллекта неформализованных задач. Похожий подход используется в персональном помощнике Viv, над которым работают создатели голосового ассистента Siri.

В выводах эксперимента Кори Бекер подчёркивает, что в недавнем прошлом ресурсов вычислительного устройства не хватило бы, чтобы такая программа в принципе функционировала. Сегодня же она выполняет условия разной степени сложности от одной минуты до нескольких часов.

Язык программирования Brainfuck является Тьюринг-полным, а это значит, что на нём можно написать программу, которая вычислит любую теоретически вычислимую функцию. Это язык общего назначения, и подобным методом можно «вырастить» программу, которая, скажем, будет представлять собой операционную систему, по сложности не уступающую Windows, Unix или macOS.

Возможно, для языков с более высоким уровнем абстракции (Haskell или Pascal) также существуют подобные разработки. Использование Brainfuck — наиболее простой подход к решению задачи в «домашних условиях». Пример иллюстрирует, что человек вне корпорации или большого проекта в силах реализовать такую задачу. А значит, что решение может быть значительно масштабировано в рамках индустрии. И индустрия уже движется в этом направлении.

От программирования к управлению программами

В феврале в компании Google сменили Амита Сингхала, главного специалиста по поисковым алгоритмам, на Джона Джинандреа, ставшего руководителем направления технологий искусственного интеллекта. Эта перестановка иллюстрирует переход от разработки и написания алгоритмов к управлению нейросетями глубокого обучения.

В процессе решения задач с помощью «классического» программирования и с помощью ИИ-технологий есть важное отличие. В первом случае функциональность и логика работы программы понятна и подконтрольна разработчику, так как полностью определяется созданной им структурой кода. В случае с нейросетями, как и в примере с программой Кори Бекера, алгоритм, который используется для выполнения задания, недоступен и часто не может быть проинтерпретирован человеком даже после «дизассемблирования».

Это меняет суть работы программиста, так как осуществляется переход от производителя к управляющему ИИ-продуктом. От такого человека требуется писать меньше кода, но больше работать с оценкой и анализом результатов продукта, управлять им и планировать его развитие.

Сегодня бизнес, условно говоря, держит одного высокоуровневого системного архитектора, который описывает задачи и передаёт их десятке кодеров, чтобы они перевели задачи на синтаксис заданного языка. Получается парадоксальная ситуация: при наличии языков высокого уровня, чем сложнее ставятся задачи, тем проще нанять кучу кодеров в Бангалоре для их решения. Но в ближайшие 7-10 лет такой подход будет вытеснен — функции «переводчика» возьмёт на себя ИИ.

«Индустриализация» в программировании

Приход методов искусственного интеллекта в профессии — это не апокалипсис в духе фильмов про Терминатора, это про деньги. Прогресс и растущая экономика требуют разделения труда и появления узких специалистов. При подъёме тренда спрос на специалистов растёт, что мы и наблюдаем сегодня.

Чем больше перенасыщается рынок и чем больше специалистов вовлекается в «производство», тем больше возникает потребность снижать затраты, в том числе и путём сокращения расходов на персонал.

Программированию тоже предстоит пройти подобную «индустриализацию», это нормально. Искусственный интеллект станет тем парнем, на которого ляжет выполнение рутинных операций и помощь в проверке гипотез и принятии решений. Число специалистов, решающих задачи, сократится. Условно, вместо 10 сотрудников, понадобятся двое или трое, чтобы ставить задачи искусственному интеллекту, оценивать и анализировать результаты его работы, разрабатывать новые подходы и так далее.

Само по себе умение писать код перестанет быть тем уникальным навыком, на котором можно зарабатывать. В цене останутся способность творчески мыслить, умение разрабатывать новые методы и алгоритмы. В этом смысле профессия программиста всегда будет востребована.

Деньги ускоряют технологии

Разработки в области искусственного интеллекта сегодня смещаются из научной области в бизнес, поэтому развитие технологий будет ускорятся. Одна из приоритетных задач в индустрии — вывести анализ естественных языковых запросов на новый уровень. За последние 20 лет удалось снизить процент неправильно распознаваемых слов с 43% до 6–7%. Сегодня нужно сосредоточиться на обучении ИИ тому, как адекватно реагировать на запросы в случаях языковой неопределённости.

В проекты, связанные с ИИ и анализом естественного языка, инвестируют гиганты индустрии: Microsoft, Google, Amazon, IBM и многие другие. Прогнозируется, что к 2025 году рынок продуктов на основе методов искусственного интеллекта вырастет в шесть раз и составит примерно $36 млрд. За 10 лет денежные вливания и требования рынка заставят ИИ, который сегодня пишет примитивный код, «закрыть» более сложные участки работы: поиск и исправление ошибок, анализ и оптимизацию алгоритмов и так далее.

Вместо заключения

Ближайшее будущее программирования — в создании продуктов на технологиях искусственного интеллекта, управление ими и внедрение их в другие отрасли. Чтобы быть на волне изменений, которые произойдут в индустрии, я рекомендую совмещать совершенствование в программировании с изучением смежных областей:

  • Изучать фундаментальную математику (линейную алгебру, формальную логику, теорию автоматов и другие разделы дискретной математики) как методологию символьных вычислений. Эти знания помогут лучше понять, как работают искусственный интеллект.
  • Изучать такие прикладные области знаний, как лингвистика (необходимо понимать, как устроено общение на естественном языке), психология (это поможет разобраться в том, как устроено мышление) и биохимия (чтобы изучить, какое «железо» лежит в основе сознания и процессов мышления и общения).
  • Изучать современные достижения, методы и техники, связанные с искусственным интеллектом: искусственные нейронные сети, машинное обучение, обработка естественного языка, символьные вычисления и др.
  • Решать практические задачи, связанные с ИИ, участвовать в хакатонах, общаться с другими разработчиками. Могу рекомендовать наших друзей AI Сommunity, которые активно создают тусовку ИИ-специалистов в России.

Будущее языков программирования

Оригинал: The Future of Computer Languages
Автор: Juliet Kemp
Дата публикации: 14 декабря 2020 г.
Перевод: А.Панин
Дата перевода: 1 февраля 2020 г.

Будущее невозможно предугадать. но в случае языков программирования мы все же можем выдвинуть некоторые предположения.

Для чего это нужно?

  • Вы сможете уверенно говорить о будущем языков программирования на следующем собеседовании.
  • Вы сможете выбрать новый язык программирования для последующего изучения.
  • Вы узнаете об ошибках разработчиков языков программирования, допущенных в прошлом.

После рассмотрения нескольких языков программирования, которые были разработаны в течение последних 50 лет, пришло время прикоснуться к хрустальному шару и попытаться предсказать события, которые будут происходить в мире языков программирования в течение следующих 50 лет. или хотя бы следующих 20 лет. Завершат ли используемые сегодня старые языки программирования свое существование? Какие новые языки программирования захватят умы разработчиков? Какие серьезные проблемы пытаются решить современные разработчики программного обеспечения и языков программирования сегодня? И как практика программирования повлияет на изменения в мире языков программирования в будущем?

При рассмотрении истории развития языков программирования в течение последних 30-50 лет несложно заметить, что существует некое количество старых языков программирования, которые используются и по сей день. Fortran, COBOL, C, Ada и некоторые другие языки программирования все еще развиваются и в ближайшее время явно не будут находиться на грани исчезновения, хотя некоторые из них и являются менее надежными, чем другие.

Некоторые более старые языки программирования все еще используются главным образом для разработки программного обеспечения для устаревших систем (особенно мэйнфреймов), причем есть вероятность, что со временем это программное обеспечение будет переписано на более современных языках программирования. Ввиду того, что данные языки практически не развиваются, после портирования всего существующего программного обеспечения они станут попросту никому не нужными. Однако, более вероятным развитием событий является задействование современного аппаратного обеспечения (современных мэйнфреймов, а также виртуальных и облачных машин) для репликации устаревшего аппаратного обеспечения и запуска существующего кода; это гораздо проще, дешевле и безопаснее, чем переработка всего кода (с точки зрения руководства проекта).

Язык C, с другой стороны, активно используется при разработке современных программных продуктов и все еще лежит в основе большой части используемого сегодня программного обеспечения. Ни для кого не секрет, что ядро Linux разработано с использованием языка программирования C. Этот язык идеально подходит для решения ставящихся перед ним задач, поэтому очень сложно представить, что в ближайшее время какой-либо язык программирования потеснит его в сфере разработки программного обеспечения, тесно взаимодействующего с аппаратными устройствами.

Стоит ли удивляться тому, что код на языках Fortran, C и COBOL все еще успешно используется в отдельных областях? Отнюдь!

Языки программирования среднего возраста, такие, как Java, JavaScript и Python все также активно разрабатываются и используются. Методика использования данных языков программирования изменилась (о чем будет сказано ниже), но сами языки программирования уже набрали значительный вес и, скорее всего, никуда не исчезнут в течение следующих 20 лет. С другой стороны, 15 лет назад язык Perl использовался повсеместно, в то время, как сегодня он используется крайне редко; однако, на сегодняшний день язык Perl все еще используется во многих программных продуктах и позволяет решать различные задачи. (И, разумеется, рано или поздно появится интерпретатор Perl 6, который может снова изменить положение в мире языков сценариев.)

Более старые функциональные языки программирования, такие, как Scala (2001) и Haskell (1990) в последнее время обрели относительную популярность. Например, в компаниях Facebook и Google язык Haskell используется для автоматизации определенных рабочих процессов; в компаниях LinkedIn, Twitter и Tumblr для аналогичных целей используется язык Scala. Это обстоятельство ознаменовало общее повышение интереса к функциональному программированию, выразившееся в переносе идей и возможностей из функциональных языков программирования в языки программирования общего назначения (примером могут служить лямбда-выражения в Java 8). Пока не понятно, приведет ли это к воцарению функциональных языков программирования (как считают сторонники функционального программирования) или всего лишь к кратковременной популярности идей функционального программирования благодаря их реализации в рамках более популярных языков. Вполне вероятно, что по мере ознакомления разработчиков с функциональным программированием соответствующие языки программирования наберут популярность в тех сферах, где их использование позволит решать задачи наиболее оптимальным образом, но при этом другие языки и парадигмы программирования все также будут популярны в своих нишах. По сути, аналогичные тренды прослеживались и в случае других языков программирования в другие промежутки времени ввиду того, что их определенные возможности позволяли наиболее оптимально решать возникающие задачи (обратитесь к разделу «Параллельное исполнение инструкций» ниже).

Другой подход к разработке языков программирования заключается в переносе новых (или не самых новых) возможностей в существующие старые языки программирования. Все больше и больше языков программирования создается на основе виртуальной машины Java — наиболее известными из них являются Clojure, Groovy, JRuby и Jython, но существует и множество других. Это обозначает, что наметился определенный крен в сторону создания единой платформы для множества языков программирования? По сути, это неплохая идея, которая могла бы иметь практические преимущества в случае корректной реализации; она могла бы упростить упаковку и установку программного обеспечения и позволила бы программистам работать с более высокоуровневыми языками программирования, которые лучше всего подходят для решения задач из их области интересов. При этом возникает необходимость в трате ресурсов для поддержания в рабочем состоянии дополнительной виртуальной машины, но сегодня виртуальные машины (а также аналогичные механизмы) все чаше и чаще используются при реализации программных продуктов.

Неужели мэйнфреймы с исполняющимся с помощью них программным обеспечением доживают свои последние дни?

A, B, C. D?

Языки C и C++ были разработаны достаточно давно и уже доказали свою состоятельность, о чем было сказано выше. Язык D разрабатывается специалистами, имеющими опыт практического программирования на языке C++, в качестве его замены, заимствующей удачные идеи, в особенности, высокую производительность, но в то же время более удобной для разработчиков. Он не поддерживает некоторые возможности C++, но в тоже время предоставляет широкий спектр дополнительных возможностей, включая систему модульного тестирования, сборщик мусора и различные механизмы обработки массивов. Также данный язык поддерживает ассемблерные вставки, наглядно иллюстрируя утверждение о том, что он, как и языки C/C++, позволяет программисту при необходимости осуществлять доступ к низкоуровневым функциям центрального процессора. Его разработчики заявляют, что D подходит для разработки любого программного обеспечения, начиная с высокопроизводительного кода серверных приложений и заканчивая низкопроизводительными заменами сценариев.

Компиляция кода на языке D с помощью компилятора gdc. (Все эти сообщения об ошибках генерируются из-за единственного отсутствующего символа точки с запятой.) Обратите внимание на необходимость указания имени результирующего файла с помощью параметра -o

Параллельное исполнение инструкций

Параллельное исполнение инструкций является, скорее всего, самой сложной задачей, с которой сталкиваются современные программисты. Потребность в нем возникает при необходимости осуществления множества одновременных вычислений с возможным взаимодействием. Такие операции могут осуществляться как с помощью чипа с единственным ядром, так и с помощью центрального процессора с поддержкой программных потоков или нескольких центральных процессоров/машин. Ввиду того, что расчеты не должны в обязательном порядке осуществляться в параллельном режиме, а в ходе их исполнения могут запрашиваться данные (или использоваться общие ресурсы), существует множество условий, при выполнении которых соответствующий процесс будет протекать корректно, включая определенные подходы к обмену данными, резервированию памяти и планированию исполнения инструкций. Параллельное исполнение инструкций является особенно важным аспектом программирования, так как по мере развития аппаратного обеспечения становится все оптимальнее (и дешевле!) задействовать множества программных потоков/ядер центрального процессора/центральных процессоров одновременно.

Для решения описанной задачи существуют и разрабатываются различные решения и ресурсы. Язык Erlang (работа над которым была начата в далеком 1986 году) в последнее время набрал популярность в облачных высокопроизводительных вычислительных средах, в которых требуется параллельное исполнение инструкций. Erlang имеет соответствующий встроенный механизм с набором примитивов для создания процессов и осуществления межпроцессного взаимодействия; эти процессы формируют базовую структуру программы на Erlang. Erlang также позволяет обойти стороной проблему работы с изменяемыми разделяемыми данными и блокировкой доступа к ним путем принудительного использования механизма отправки сообщений без какой-либо возможности использования разделяемых данных. Это обозначает, что каждый процесс имеет набор собственных данных состояния, причем процессы изменяют состояние в зависимости от своего поведения или от данных из полученных от других процессов сообщений, а не от данных из разделяемой структуры, к которой имеет доступ каждый из процессов. (При использования разделяемых структур данных обычно возникает необходимость в использовании блокировок доступа к ним со стороны отдельных процессов; а в случае некорректного завершения одного из процессов, удерживающего блокировку, другие процессы не смогут получить доступ к разделяемой структуре данных.) При этом Erlang является и функциональным языком программирования, разработанным с прицелом на высокую масштабируемость, доступность и минимальные простои инфраструктуры. Это объясняется его происхождением, связанным с индустрией телекоммуникаций; данная индустрия попросту не допускает значительных простоев инфраструктуры. Подобная особенность делает рассматриваемый язык программирования отличным выбором для реализации современных сетевых и коммуникационных сервисов (Erlang используется в инфраструктуре мессенджера WhatsApp). Виртуальная машина Erlang осуществляет планирование исполнения и балансировку нагрузки, избавляя программиста от необходимости самостоятельной реализации соответствующих механизмов.

Программа Hello World на языке Erlang. Сохраните код в файле и исполните его с помощью командной оболочки Erlang

Другой технологией для параллельного исполнения инструкций является язык CUDA (или его свободный аналог OpenCL), который позволяет задействовать вычислительные ядра (GPU) современных графических карт в то время, когда они не используются для обработки графики и могут осуществлять параллельные вычисления. Данная технология позволяет с успехом решать ряд специфических задач и популярна в академических кругах. По сути, CUDA позволяет преобразовывать данные в структуры, используемые для представления графики и использовать вычислительные ядра графической карты для их обработки и анализа, ведь эти ядра оптимизированы для работы с графикой.

Языки Perl 6 и Clojure также нередко рекомендуются в качестве инструментов для решения проблем параллельного исполнения инструкций. Язык Clojure (вариант языка Lisp) был изначально предназначен для «упрощения проектирования и реализации алгоритмов, связанных с параллельным исполнением инструкций» и позволяет генерировать байткод для виртуальной машины Java. Perl 6 также позволяет значительно упростить разработку подобных алгоритмов благодаря возможностям динамического языка программирования. Однако, никому пока не известна точная дата выпуска стабильной версии интерпретатора Perl 6 (или хотя бы финальная версия соответствующего стандарта).

Новый язык программирования Go от компании Google (представленный общественности в 2009 году) изначально проектировался с поддержкой механизма параллельного исполнения инструкций, хотя главной целью его разработчиков было создание языка программирования с читаемым кодом, который «был бы достаточно простым для полного понимания любым программистом». Go является компилируемым языком со статической типизацией, предназначенным для системного программирования. (В этом году разработчики получили возможность использования данного языка для разработки приложений для мобильных устройств и смартфонов, что еще раз подчеркивает важность разработки программного обеспечения для мобильных платформ.) Код на языке Go должен быть кратким и читаемым, причем, как и в коде на языке Swift (о котором будет сказано ниже), в нем должны использоваться интерфейсы и встраивание типов для реализации механизмов виртуального или не виртуального наследования. Гибкость, высокая скорость разработки и своеобразная простота рассматриваемого языка программирования являются его важными особенностями.

Цукерберг рекомендует:  Python - Google таблицы и python

Это режим «песочницы» языка Swift в OS X, причем код расположен слева, результаты его исполнения — справа, а всплывающая подсказка с результатом исполнения определенной инструкции — прямо под этой инструкцией. Данный режим не доступен в Linux (возможно, лишь временно), хотя компилятор языка Swift может быть загружен с веб-сайта swift.org

Большие данные

Возрастающая актуальность «больших данных» обуславливает популярность языка R (статистического языка программирования, разработанного в 1997 году), который на сегодняшний день используется в таких компаниях, как Google, Facebook и New York Times. Однако, данный язык не достаточно производителен для обработки действительно больших объемов данных и больше подходит для создания прототипов, чем рабочих моделей программных проектов. О применимости Matlab (вычислительный язык программирования), активно используемого в научных кругах для обработки любых объемов данных, все еще нет единого мнения. Недавние значительные оптимизации математических и статистических библиотек языка Python вполне могут сделать этот язык приемлемым инструментом для решения вычислительных задач. Проекты IPython и NumPy (созданные с целью сделать язык Python конкурентом Matlab в плане вычислительных задач) неплохо подходят для создания несложных проектов, при этом сообщество Python-разработчиков предоставляет в ваше распоряжение большое количество других интересных тулкитов. Разумеется, среда Matlab все еще активно используется в определенных сферах, хотя и является достаточно дорогим программным продуктом с закрытым исходным кодом. Как в Matlab, так и в R имеются пакеты для организации параллельного исполнения инструкций.

Язык Julia очень похож на язык Python, но при этом имеет гораздо более высокую производительность. Он разрабатывался специально для решения академических задач, связанных с дроблением чисел с поддержкой мощных механизмов параллельного исполнения инструкций и сетевого взаимодействия, а также интерфейсов для библиотек на языках Fortran и C. При учете сложности некоторых длящихся неделями академических вычислений, более высокая производительность языка Julia обретает особую важность (затрата на расчет 1 секунды вместо 4 не выглядит, как существенная оптимизация; затрата на другой расчет недели вместо четырех недель, очевидно, выглядит как таковая). Язык Julia является очень быстрым и в теории более масштабируемым, чем Python, при этом его так же просто выучить; но стоит помнить и о том, что сообщество разработчиков данного языка еще не достаточно развито, поэтому он не имеет большого количества библиотек и тулкитов для создания конкуренции языкам Python и R.

Разработка веб-приложений и приложений для мобильных платформ

Еще одной проблемой современного программирования является разработка веб-приложений и приложений для мобильных платформ. Все больше и больше программного обеспечения исполняется силами веб-браузеров (самым ярким подтверждением данного утверждения является операционная система ChromeOS), что делает JavaScript и другие языки для разработки веб-приложений особенно актуальными.

На сегодняшний день JSON является наиболее популярным форматом обмена данными, поддерживаемым с помощью библиотек для всех актуальных языков программирования, а веб-сервисы используют технологию REST, хотя всего 10 лет назад повсеместно использовались формат XML и технология SOAP. Остается лишь задать вопрос: «Будем ли мы по прошествии еще 10 лет считать JSON и REST устаревшими технологиями?» Технологии веб-разработки все также стремительно развиваются, поэтому данная сфера в любом случае претерпит кардинальные изменения в ближайшем будущем.

Важность разработки приложений для мобильных платформ обуславливает актуальность языка программирования Java в ближайшем будущем, так как платформа Android (использующая свою собственную версию Java) занимает доминирующую позицию на рынке смартфонов и планшетов. Другую большую долю этого рынка занимает, разумеется, платформа iOS от компании Apple; исходя из этого, новый язык Swift от компании Apple, пришедший на смену языку Objective C, является одним из самых актуальных языков программирования на сегодняшний день.

Язык Swift был представлен общественности в середине 2014 года, он очень быстро развивается, причем в текущее время код его компилятора открыт под свободной лицензией. В соответствии с заявлением представителей из компании Apple, это «язык для протоколо-ориентированного программирования». В Swift протоколы являются практически тем же самым, что и интерфейсы в других языках программирования; при этом в Swift вместо создания классов и подклассов рекомендуется создавать протоколы, а затем — типы и структуры, которые будут использовать их. Протоколы могут расширяться с помощью наборов стандартных поведений. Это делает язык Swift крайне гибким в особенности из-за того, что типу без каких-либо проблем может ставиться в соответствие сразу множество протоколов, в то время, как множественное наследование классов в доступных языках программирования либо не реализовано, либо максимально затруднено. Протоколы также могут использоваться не только для работы с типами классов. Имеется возможность простого расширения возможностей существующих протоколов с помощью ключевого слова extension, в результате чего все функции протокола будут доступны также в рамках вашего расширения.

Крайне удобной особенностью рассматриваемой технологии является возможность совместного использования языков Swift и Objective C в рамках одного приложения, которая максимально упрощает переход к использованию нового языка. Также данная технология позволяет использовать интерактивный режим разработки, а именно, режим «песочницы» в интегрированной среде разработки, который позволяет разработчику без труда тестировать фрагменты кода. (Данная возможность также предназначена для начинающих разработчиков, изучающих язык.) При этом у разработчиков есть стимулы к переходу на Swift, а именно, большая рыночная доля программного обеспечения для iOS/OS X и низкий порог вхождения. Если вы лишь начинаете свое путешествие по вселенной Apple, вам стоит использовать Swift вместо Objective C, а если вы являетесь опытным разработчиком на Objective C, вам также будет полезно изучить Swift.

Swift демонстрирует несколько идей современного программирования — вынесение на первый план гибкости и скорости разработки, а также создание интерактивных окружений для разработки и автоматической оптимизации кода (в подобных окружениях компилятор выводит сообщения с описаниями методик оптимизации кода).

Интернет вещей

Интернет вещей является новой концепцией, которая у всех на слуху, при этом ее развитие сложно предугадать. Некоторые из вариантов применения данной концепции являются очевидно бессмысленными (классическим примером является «умный холодильник»), но в то же время данная концепция актуальна хотя бы из-за того, что затрагивает множество базовых аспектов программирования. Скорее всего, любого знакомого с ней человека не будет покидать ожидание ее кардинального изменения в ближайшем будущем, под которое впоследствии подстроятся языки, и, возможно, практики программирования. Может быть, развитие 3D-печати приведет к необходимости создания компиляторов для компиляции объектов, а не кода? И как же это будет выглядеть?

Разработка кода: обучение и практика

На сегодняшний день начинающим программистам доступно гораздо больше ресурсов, чем когда-либо в прошлом. Проекты Raspberry Pi и Scratch позволяют использовать различные методики обучения программированию, включая методики для обучения детей (это относится главным образом к Scratch). Проекты Robots Dash и Dot также предназначены для ознакомления детей с основами программирования с последующим переходом к изучению более сложных приемов программирования и алгоритмов. В данном случае процесс разработки заключается в решении очевидных задач с помощью кода. Новое поколение разработчиков программного обеспечения, получившее знания в процессе работы с данными проектами, вполне может перевести языки программирования и сам процесс программирования на новые рельсы.

Задачи для разработчиков также начинают изменяться. Смещение фокуса в сторону облачных платформ и упрощение процесса обмена кодом обуславливают возможность работы над проектами отдельных команд со всех уголков света, члены которых крайне редко встречаются друг с другом в реальной жизни. Облачные платформы позволяют создавать приложения, абсолютно не зная системных администраторов, которые ответственны за их развертывание и управление ими, хотя раньше подобные задачи могли решаться вашими силами. При этом следует помнить о том, что сегодня актуальнее разрабатывать приложения, работающие на ваших серверах, чем оправлять установочные диски клиентам для установки приложений на их системы.

Повышение степени автоматизации позволяет программистам выделять больше времени для работы над решением важных задач. Наличие библиотек, фреймворков, API и плагинов позволяет в большинстве случаев комбинировать существующие программные компоненты, а не разрабатывать их с нуля; кроме того, использование этих программных компонентов позволяет сконцентрировать внимание на реализации логики работы приложений и избежать множества ошибок, выявленных в процессе тестирования популярных библиотек и фреймворков широким кругом их пользователей. Очевидная в последние годы популярность языка Python в какой-то мере связана с расширением номенклатуры его библиотек, которое значительно упрощает повторное использование кода в новых сценариях. Проблемы могут возникать лишь в случае одновременного использования нескольких конкурирующих фреймворков; выбор подходящего фреймворка не всегда является простой задачей, а наличие множества подобных программных компонентов сокращает выгоду от их использования ввиду уменьшения пользовательской базы каждого из них.

Интегрированные среды разработки и их различные расширения позволяют генерировать код, что особенно полезно при использовании языков программирования, требующих наличия больших объемов шаблонного кода. Примером является язык JavaScript, имеющий такие дополнения, как CoffeeScript и Less.js, которые упрощают процесс разработки сценариев с задействованием сложных таблиц каскадных стилей.

Автоматизированное тестирование, разработка через тестирование, push-on-green и другие аналогичные практики также позволяют в случае корректного использования создавать более краткий и надежный код, сокращая затраты времени на на исправления ошибок после развертывания приложений. Улучшения в системах контроля версий, реализации хуков для запуска автоматизированных тестов и другие подобные возможности, разумеется, отличают современный процесс разработки программного обеспечения от соответствующего процесса 10 лет назад (и делают просто неузнаваемым по сравнению с соответствующим процессом 30 лет назад).

Далекое будущее

Закон Мура замедляет свое действие? Может быть это означает, что через некоторое время произойдет какое-то переломное событие, аналогичное замене транзисторов на интегральные схемы (на которые, в свою очередь были заменены вакуумные лампы)? Рэмонд Курцвейл отстаивает подобную точку зрения и считает самой вероятной заменой нанолампы. (Он также считает, что в будущем вычислительные мощности будут расти по экспоненте, что в итоге приведет к созданию множества устройств, работающих на основе принципа технологической сингулярности, с которым, на мой взгляд, пока еще рано разбираться.) Перенастраиваемое аппаратное обеспечение является еще одной популярной концепцией будущего, которая начинает реализовываться в ограниченных масштабах уже сегодня. Выпуск нового аппаратного обеспечения обычно приводит к созданию нового программного обеспечения, поэтому без информации о том, как оно будет работать (если оно вообще будет выпущено) практически невозможно сделать предположения о каких-либо функциях программного обеспечения будущего.

Однако, если оглянуться на 40 лет назад, можно без труда заметить, что аппаратное обеспечение претерпело значительные изменения, а программное обеспечение изменялось вместе с ним, но при этом мы все еще имеем дело с некоторыми языками программирования, которые были популярны в то время. Если воспользоваться грубой экстраполяцией, можно сделать вывод о том, что мы будем использовать некоторые из актуальных на сегодняшний день языков программирования в течение следующих 40 лет. Вместе с изменениями практик программирования обычно меняются и сами языки программирования. Так, современный язык Fortran немного отличается от оригинального языка Fortran, а версия языка Java 8 ушла очень далеко от версии языка Java 1.

Фундаментальная проблема языков программирования заключается в отсутствии универсального языка, который имел бы все возможности, необходимые каждому из программистов, ведь некоторые из возможностей могут быть не совместимы друг с другом. Именно поэтому все теории об «единственном универсальном языке программирования» являются несостоятельными изначально. (При этом многие языки программирования позволяют генерировать байткод для одной виртуальной машины, который может впоследствии исполняться и с помощью других совместимых виртуальных машин.) У нас всегда было множество языков программирования для решения различных задач и мы всегда могли использовать различные парадигмы в зависимости от сложившихся условий. Наибольший интерес в данном случае представляют постепенно появляющиеся новые задачи и методики их решения современными программистами с помощью новых и старых языков программирования.

Перспективные языки программирования

Найдены дубликаты

В следующий раз попробуй белый текст на светло жёлтом фоне, получится еще читабельнее.

Позволю заметить Вам, сударь: «Вы профан!» Белый текст на светло белом поле читается куда лучше.

ну, рано ещё шарпы хоронить.

Всё-же шансы, что .NET Core (а в частности более низкоуровневая прослойка .NET Standard) выстрелит, не так уж и малы )

Так он уже выстрелил имхо. В 17 вижле уже из коробки, я сам начал юзать и пока доволен, правда не в продакшене еще, но не вижу для этого проблем. Скорее нет желания переводить с 4.5 на core без нужды.

Данный рейтинг (по популярности языков) строится исходя из количества поисковых запросов на один из языков, выпущенные книги и статьи и пр. Этот рейтинг абсолютно не отображает реального позиционирования языка как такого и не дает никакого представления о том на сколько ценен специалист того или иного яп

два компилятора этому программисту.

Фигню какую-то написал. Прогнозы говорят о том, что .NET Core серьёзно подвинет жабу. Мы уже пилим рабочие проекты на коре, я размышляю как легаси переводить существующее.

Дурацкий фон, странная подборка.

Что значит перспективные? Те на которых проще всего работу найти новичку? Тогда надо смотреть на что больше спрос в конкретном городе и идти получать опыт. Скорее всего, это будет джава или C#.

Или перспективные технологии на которые в будущем будет хороший спрос? Тогда я бы ставил на свифт.

P.S. Пишу на расте за деньги. (:

После цвета шрифта и бэкграунда, сразу вспоминается попытки прочитать ман tengine от китайских ребят

Перспективные / не перспективные — это ага.

Надо знать основные парадигмы программирования и быть готовым изучать новые языки.

А так, у языков списка очень разные сферы применения.

Рейтинг языков программирования в 2020 году

Для оценки перспективности своих усилий каждый программист должен регулярно смотреть рейтинги языков программирования. Часто бывает так, что появится некоторый модный язык, о котором все начинают писать, но потом этот язык тихо исчезает. Те программисты, которые бросились изучать этот язык, вдруг видят, что их усилия оказались напрасными.

Например, в середине в 80-х стал очень популярен язык Prolog, но потом его популярность резко снизилась. И сейчас на нем практически никто не пишет. А место популярного новичка занял Python.

Как же узнать рейтинг языков программирования? Общего рейтинга не существует, так как нет простого способа собрать подобную статистику. Но существуют разные способы оценки популярности языков программирования. Рассмотрим самые популярные рейтинги.

1. Рейтинг Черной утки

Самым крупным сайтом, посвященным программам с открытым исходным кодом является сайт Black Duck (Черная утка) blackducksoftware.com

Одним из проектов Черной утки является каталог open source. В этом каталоге представлено около 500 000 проектов. Так как у всех проектов код открыт, то легко определить, на каком языке эти проекты написаны. На январь 2020 года рейтинг выглядит так.

Как видно, здесь практически половина программ (46%) написано на C. Это понятно, потому что С — это язык общения программистов. Это единственный язык, компилятор которого есть на всех платформах: от встроенных систем до суперкомпьютеров.

2. Рейтинг Wappalyzer для веб-приложений

Сервис Wappalyzer использует различные методы для идентификации веб-технологий. Рейтинг языков программирования для разработки сайтов на январь 2020 выглядит так.

В веб-программировании однозначно лидирует язык PHP, более 80% сайтов написано на этом языке.

3. Рейтинг TIOBE Index

Рейтинг TIOBE Index построен на оценке результатов поисковых запросов, содержащих название языка. Логика этого индекса очень проста: «Если язык ищут в поисковых системах, то он популярен». Конечно же, это заявление спорное, потому что программисты-профессионалы крайне редко будут искать в поисковике именно название языка программирования. Они чаще ищут решение конкретной задачи. Но громадный плюс этого рейтинга в том, что он достаточно объективно показывает интерес к тому или иному языку.

Индекс TIOBE показывает самые популярные языки программирования, информации о которых искали на 25-ти самых популярных поисковых системах, то есть запросы вида: «+» programming». Индекс подсчитывается каждый месяц.

Индекс TIOBE на январь 2020 года выглядит так:

В этом индексе однозначным лидером является Java.

На графике изменений индекса хорошо видны как менялась популярность языков программирования. Но при этом первое-второе место постоянно делят два языка Java и C. Хотя Java активно продвигается компанией Oracle, а язык C никто не продвигает.

И еще интересно то, что C++ ни разу не смог превысить по популярности C.

4. Рейтинг IEEE Spectrum

Ежегодный рейтинг IEEE Spectrum Top Programming Languages использует 11 метрик из 9-ти источников, включая поисковые запросы, упоминания в твиттере и даже упоминания в вакансиях на работу программиста. С одной стороны этот рейтинг использует больше данных, но с другой стороны во многих источниках данные имеют связанный характер. Чем больше публикуются вакансий на некоторый язык программирования, тем больше запросов будет в поисковых системах. То есть у новых языков больше шансов попасть на вершину рейтинга.

Рейтинг IEEE на 2020 год выглядит так:

Важностью особенностью рейтинга IEEE является то, что рейтинг интерактивный и можно поиграть с параметрами. В этом рейтинге лидирует Python.

5. Рейтинг Stack Overflow

Сайт Stack Overflow — это площадка, на которой разработчики могут задавать и отвечать на вопросы по программированию. Этот сайт имеет около 40 миллионов посещений в месяц. Есть русскоязычная версия сайта: ru.stackoverflow.com

Этот рейтинг рассчитывается на основе опроса разработчиков. В январе 2020 года было опрошено более 100 000 разработчиков и составлен рейтинг языков программирования. Скорее это рейтинг языков, которые вызывают вопросы. В этом рейтинге лидером стал JavaScript.

Такая популярность вполне объяснима, сейчас JavaScript бурно развивается и каждая новая возможность вызывает массу вопросов, поэтому программисты идут на сайт Stack Overflow, чтобы задать вопросы.

Любопытно, что C не попал даже в первую десятку.

6. Вакансии на Head Hunter

Можно подойти к рейтингу языков программирования с другой стороны и посмотреть, какие языки указываются в вакансиях и сколько собираются платить. Одна из самых популярных площадок для поиска работы в IT-сфере — это сайт HeadHunter. Там есть отдельный раздел — вакансии для программистов.

Внизу страницы можно посмотреть список похожих запросов и убедиться, что у работодателей немного другие запросы.

Здесь видно, что программист, знающий Pascal (среда Delphi), все еще востребован.

7. Google Books Ngram Viewer

И в конце рассмотрим чрезвычайно полезный сервис Гугл, на котором можно смотреть использование ключевых слов в публикациях.Поэтому можно смотреть популярность не только языков программирования, а любых технологий.

В начале этой статьи приведены графики использования слов Prolog и Python. А теперь введем JavaScript, Python и PHP.

Видно как в 1992 году появляется интерес к JavaScript и он быстро обгоняет Python и PHP.

Похожие записи:

Комментарии 18

Совсем мелкая ошибка в предпоследнем предложении. Вы написали «В начале этой статьи приведены графики использования слов Prolog и Pascal», а там были Prolog и Phyton.

«Для оценки перспективности своих усилий каждый программист должен регулярно смотреть рейтинг языков программирования.» — совет неоднозначный. Профессионал обычно хорошо знает 1-2 языка и специализируется на них довольно долго. Изучение другого языка происходит обычно по причине старта какого-нибудь проекта, или тупика в карьере с текущими знаниями.

Здравствуйте! Спасибо за статью!
Хотел бы узнать Ваше мнение насчет языка программирования Prolog. Дело в том, что язык программирования Prolog используется в разработке программ для искусственного интеллекта.Так как технологии искусственного интеллекта развиваются все интенсивнее, не станет ли язык программирования Prolog популярным, ну или востребованным?

Здравствуйте! Язык Prolog стал популярен в 1980-х годах в связи с японской программой создания программы искусственного интеллекта. Но эту программа кончилась грандиозным провалом. В результате все наработки были розданы бесплатно и никаких полезных программ так и не было создано. Поэтому сейчас Prolog полностью морально устарел и не используется. Даже если и будет новый прорыв в разработке искусственного интеллекта, то, скорее всего, он будет связан с другой технологией и другим языком программирования.

В девяностом году шеф мой взял аспиранта себе на написание САПР, типа Симулинк в Матлабе. Тогда ещё XT-шки были в диковинку. И был в то время бум создания «Искусственного интеллекта». Ходили шутки, что это нужно, когда своего интеллекта не хватает. Ну и аспирант этот решил создавать этот САПР на языке Пролог. Тогда ещё книг, типа Братко не было. В ДОСе работали. Ну и он разобрался в языке этом глубоко так. Ему понравилось в нём лазить по деревьям и делать откаты. В других языках это геморройно было, а в Прологе это вшито как аксиома (исходные кирпичики языка). То есть если программа заходит в тупик, то как-то самореализуется всё там, что она, делая откаты назад сама ищет выход из этого тупика. И аспиранту это нравилось в ней. Написал он в ней САПР свой, «Гаммой» назвал его, была куча публикаций. Но потом бросил заниматься этим и диссертации не защитил. Его пригласили в СберБанк программистом работать, а там зарплаты уже со стипендией аспиранта не сравнить. Так всё это и забросилось. Отчёт в семи томах кода сохранился с той поры и валяется где-то. У меня на даче очень много книг по Прологу на чердаке стопками лежит не тронутых, а Братко, по моему, аж десять экземпляров. В то время хлеб стоил сто рублей, а книги эти по рублю продавались. На растопку жалко их рвать…

Интересный обзор! А что вы можете сказать про Rust в контексте перспективы дальнейшего развития?

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих