10 языков программирования, которые могут перевернуть мир IT

Эти передовые языки программирования обладают уникальной способностью изменить будущее разработки ПО

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

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

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

Таким образом, здесь представлены 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 поставляется бесплатно и на данный момент доступен для 64-х битных 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 код, а двоичные файлы могут быть созданы лишь на платформах со встроенным 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.


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

Многие языки можно использовать для написания переносимого кода. C-компиляторы доступны практически для всех ЦПУ архитектур, а 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.

Neil McALLISTER,
InfoWorld

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Пути языков ... неисповедимы. (С)

Язык Java, созданный для программирования пульта управления телевизором - с появление интернета и первого броузера - ставшим языком для показа движущихся картинок - апплетов - каким-то макаром переместился на сервер и занял там нишу, фактически с каждым днём теряя её на клиенте (его вытесняет Javascript с клиента-броузера)

Накопившаяся толпа Javascript программистов вскорости ринется на серверную сторону (Node.js) и в базы данных (MongoDB). Smile

Пути языков ... неисповедимы. (С)