# data[].attributes.attachment_link.title
Классификация языков программирования

# data[].attributes.headline
Передовые Языки программирования

# data[].attributes.subject
Передовые Языки программирования

# data[].attributes.attachment_link.readable_text
Действительно ли нам нужны новые языки программирования? Безусловно, на данный момент их вполне достаточно. Среди разнообразия императивных, функциональных, объектно-ориентированных, динамических, компилируемых, интерпретируемых и скриптовых языков ни один разработчик не сможет познать все доступные на сегодняшний день возможности.
И всё же возникновение новых языков - явление довольно частое. Некоторые из них создаются студентами или любителями в качестве индивидуальных проектов, другие являются продуктами крупных производителей программного обеспечения. Даже небольшие и средние компании принимают участие в этом процессе, создавая языки для нужд своих отраслей. Так почему же люди продолжают изобретать велосипед снова и снова?

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

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

Гэвин Кинг (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".

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

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

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

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

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

Код F# чем-то похож на код OCaml, но содержит свой собственный интересный синтаксис. Например, для облегчения проведения научных расчётов числовыми типами данных в F# могут являться единицы измерения. Также в F# имеются конструкции для облегчения асинхронных вводов/выводов, параллелизации ЦПУ и вывода процессов на графический процессор.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# data[].attributes.attachment_link.keywords[]
программирование

# data[].attributes.attachment_link.keywords[]
языки программирования

# data[].attributes.attachment_link.title
10 языков программирования, которые могут перевернуть мир IT

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

# data[].attributes.body
Программалық жабдықтамалар

# data[].attributes.attachment_link.title
Программалык жабдыктар  мен Программалау тилдери

# data[].attributes.headline
Программалау тілдерінің даму тарихы

# data[].attributes.subject
Программалау тілдерінің даму тарихы

# data[].attributes.attachment_link.title
Программалау тилдери мен стильдери