Д.з. - языки программирования, возникшие за последние 10 лет (про распространенность ничего сказано не было)
2008 год
Objeck — объектно-ориентированный язык с некоторыми функциональными элементами (функции высшего порядка).
Прототип языка был создан для исследования процесса трансляции команд стека в команды регистра и затем в машинные коды. По этому прототипу была создана виртуальная машина с простым ассемблером. Со временем ассемблер был заменен на гораздо более сложный объектно-ориентированный фронт-энд, и проект был переименован в Objeck.
В настоящее время язык считается стабильным, и его развитие фокусируется на дальнейшем упрощении программирования. Язык не проходил стандартизацию, и авторская реализация остается единственной. В нее входят компилятор (в байт-код), виртуальная машина со сборщиком мусора и динамическим компилятором и отладчик с интерфейсом командной строки.
Все типы данных, за исключением функций высшего порядка, считаются объектами.
Kotlin (Ко́тлин)(2011 год) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Компилируется также в JavaScript и на другие платформы через инфраструктуру LLVM. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт. Авторы ставили целью создать язык более лаконичный и типобезопасный, чем Java, и более простой, чем Scala. Следствием упрощения по сравнению со Scala стали также более быстрая компиляция и лучшая поддержка языка в ИСР. Позиционируется разработчиками как объектно-ориентированный язык промышленного уровня, а также как язык, который сможет заменить Java. При этом язык полностью совместим с Java, что позволяет разработчикам постепенно перейти с Java на Kotlin. В частности, в Android язык встраивается с помощью Gradle, что позволяет для существующего Android-приложения внедрять новые функции на Kotlin без переписывания приложения целиком.
Clojure(2007) — современный диалект Лиспа, язык программирования общего назначения с поддержкой разработки в интерактивном режиме, поощряющий функциональное программирование и упрощающий поддержку многопоточности. Clojure работает на платформах JVM и CLR. Clojure отличает философия «код как данные» (Гомоиконность) и развитая система лисп-макросов.
Транслятор Clojure свободно распространяется на условиях Eclipse Public License.
Elixir(2012) — функциональный, распределённый язык программирования общего назначения, который работает на виртуальной машине Erlang (BEAM). Построен поверх Erlang, что обеспечивает распределённость, отказоустойчивость, исполнение в режиме мягкого реального времени, метапрограммирование с макросами и полиморфизмом, реализованным через протоколы. Использует Erlang/OTP для работы с деревьями процессов.
Создан Жозе Валимом (José Valim), ранее являвшимся одним из основных разработчиков фреймворка Ruby on Rails и сооснователем компании Plataformatec. Его целью было включить более высокую расширяемость и производительность в Erlang VM, сохраняя совместимость с инструментами и экосистемой Erlang.
Crystal — это объектно-ориентированный язык общего назначения, спроектированный и созданный Ary Borenszweig и Juan Wajnerman. Crystal статически типизирован и имеет Ruby-подобный синтаксис. Первый официальный релиз языка произошел в июне 2014 года. Изначально компилятор языка был написан на Ruby, пока в 2013 году не был переписан на Crystal. Язык находится в активной разработке.
Несмотря на схожесть синтаксиса, Crystal намного эффективнее чем Ruby компилируется в машинный код, используя LLVM, жертвуя при этом динамическими аспектами языка. По результатам тестов Crystal показывает схожую с языком С производительность…
Д.з. - языки программирования, возникшие за последние 10 лет.
2014 год
Swift — открытый мультипарадигмальный компилируемый язык программирования общего назначения. Создан компанией Apple в первую очередь для разработчиков iOS и macOS. Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. Swift задумывался как более легкий для чтения и устойчивый к ошибкам программиста язык, нежели предшествовавший ему Objective-C[7]. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы.
Домашнее задание, ЯП Vala(2007)
Vala по своему синтаксису очень похож на C# и полностью реализует объектно-ориентированный подход. Поддерживаются интроспекция, выведение типов, сборка мусора основанная на подсчёте ссылок, лямбда-функции, концепция сигналов и слотов, подобная используемой в Qt, но реализованная на уровне языка, строковые типы, обобщённое программирование, срезы массивов, оператор перечисления элементов коллекции foreach, делегаты, замыкания, интерфейсы, свойства и исключения.
Особенность системы разработки состоит в том, что программа на Vala транслируется в программу на языке C, которая в свою очередь компилируется в исполняемый код целевой платформы со стандартными библиотеками C, Glib и выполняется со скоростью откомпилированного в объектный код целевой платформы приложения C. Чтобы получить транслируемый код на языке С, нужно указать параметр -C компилятору Vala. При наличии в программе графического интерфейса пользователя во время компиляции используется библиотека GTK+ (параметр --pkg gtk±3.0 компилятора). Благодаря такому подходу откомпилированный код на Vala бинарно совместим с системными библиотеками, написанными на C. Для подключения сторонних библиотек к программам на языке Vala используются специальные vapi-файлы, в которых даётся описание интерфейса библиотеки. Для многих библиотек уже существуют vapi-файлы, входящие в штатную поставку компилятора Vala. Кроме того, имеются vapi-файлы для библиотек, поддерживаемые сторонними пользователями, пока не включенные в штатную поставку.
Groovy — объектно-ориентированный язык программирования, разработанный для платформы Java как дополнение к языку Java с возможностями Python, Ruby и Smalltalk.
Использует Java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java-кодом и библиотеками. Язык может использоваться в любом Java-проекте или как скриптовый язык.
Основные возможности языка, отличающие его от Java: как статическая, так и и динамическая типизация; встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений; перегрузка операций. Замыкания в Groovy появились задолго до Java. На Groovy создан веб-фреймворк Grails, основное применение язык нашёл именно в сочетании с ним.
Первым упоминанием о языке было сообщение в блоге Джеймса Стрэчена от августа 2003 года. Позднее было выпущено несколько версий между 2004 и 2006 годами. После того, как начался процесс стандартизации JCP, нумерация версий была изменена, и версию называют «1.0». Версия «1.0» была выпущена 2 января 2007 года. В декабре 2007 года вышел Groovy 1.1, эта версия вскоре была перенумерована как «1.5» вследствие значительных изменений в языке.
LOLCODE — эзотерический язык программирования, созданный под влиянием интернет-мема о lolcat’ах.
На официальном сайте находится спецификация этого языка, и, хотя некоторые моменты в ней не описаны, уже существуют несколько работающих интерпретаторов и компиляторов этого языка. LOLCODE является Тьюринг-полным языком, так как возможна реализация интерпретатора Brainfuck на LOLCODE.
Пример программы, выводящей “Hello world”:
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Apex (2007)— Java-подобный язык программирования для платформы Force.com от корпорации Salesforce.com.
Clojure (2007)— язык программирования общего назначения с поддержкой разработки в интерактивном режиме, поощряющий функциональное программирование и упрощающий поддержку многопоточности. Clojure работает на платформах JVM и CLR. Clojure отличает философия «код как данные» (Гомоиконность) и развитая система лисп-макросов.
Fortress (буквально «крепость») (2008)— черновая спецификация языка программирования, разрабатывавшегося компанией Sun Microsystems. Инициатива спонсировалась Агентством по перспективным оборонным научно-исследовательским разработкам США DARPA в рамках программы организации вычислений HPCS на суперкомпьютерах.
Одним из разработчиков спецификации стал Гай Стил (англ.) (англ. Guy L. Steele, Jr.), ранее работавший над такими языками программирования, как Scheme, Common Lisp и Java.
Elm(2011) — функциональный язык, предназначенный для декларативного создания графических интерфейсов, основанных на браузере. Elm предоставляет возможность описывать графические интерфейсы, не выходя за рамки функциональной парадигмы, используя функционально-реактивный стиль программирования.
Kotlin (2011) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Компилируется также в JavaScript и на другие платформы через инфраструктуру LLVM. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт
Red (2011)— императивный и функциональный язык представленный в 2011 году французским программистом Ненадом Ракоцевичем. Его синтаксис унаследован от интерпретируемого языка программирования REBOL, представленного в 1997 году. Создание Red направлено на преодоление некоторых ограничений языка REBOL, в результате чего Red является, по словам создателя языка, «языком полного стека». Red может использоваться как для высокоуровневого предметно-ориентированного программирования и создания графических интерфейсов, так и для низкоуровневого программирования операционных систем и драйверов.
Elixir (2012)— функциональный, распределённый язык программирования общего назначения, который работает на виртуальной машине Erlang (BEAM). Построен поверх Erlang, что обеспечивает распределённость, отказоустойчивость, исполнение в режиме мягкого реального времени, метапрограммирование с макросами и полиморфизмом, реализованным через протоколы. Использует Erlang/OTP для работы с деревьями процессов.
Был разработан внутри компании Google. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон. Официально язык был представлен в ноябре 2009 года.
Язык Go разрабатывался как язык системного программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языку Си.
При разработке уделялось особое внимание обеспечению высокоэффективной компиляции. Программы на Go компилируются в объектный код (хотя доступен и интерпретатор) и не требуют для исполнения виртуальной машины.
Ceylon (2011) — объектно-ориентированный язык программирования высокого уровня со строгой статической типизацией и комплект средств разработки, разрабатываемые компанией Red Hat. Язык основан на Java, а программы написанные на Ceylon могут быть запущены на виртуальных машинах Java и JavaScript.
Перед проектом стоит задача избавления разработчиков от проблем языка Java:
1.улучшение структурированных данных и пользовательских интерфейсов,
2.модульность версии языка,
3.поддержка функций первого и более высокого порядков,
4.избавление от неуклюжего метапрограммирования.
Ceylon наследует большую часть синтаксиса Java.
Д.з. - языки программирования, возникшие за последние 10 лет (про распространенность ничего сказано не было)
2008 год
Objeck — объектно-ориентированный язык с некоторыми функциональными элементами (функции высшего порядка).
Прототип языка был создан для исследования процесса трансляции команд стека в команды регистра и затем в машинные коды. По этому прототипу была создана виртуальная машина с простым ассемблером. Со временем ассемблер был заменен на гораздо более сложный объектно-ориентированный фронт-энд, и проект был переименован в Objeck.
В настоящее время язык считается стабильным, и его развитие фокусируется на дальнейшем упрощении программирования. Язык не проходил стандартизацию, и авторская реализация остается единственной. В нее входят компилятор (в байт-код), виртуальная машина со сборщиком мусора и динамическим компилятором и отладчик с интерфейсом командной строки.
Все типы данных, за исключением функций высшего порядка, считаются объектами.
Д.з. - языки программирования, возникшие за последние 10 лет (про распространенность ничего сказано не было)
2008 год
Objeck — объектно-ориентированный язык с некоторыми функциональными элементами (функции высшего порядка).
Прототип языка был создан для исследования процесса трансляции команд стека в команды регистра и затем в машинные коды. По этому прототипу была создана виртуальная машина с простым ассемблером. Со временем ассемблер был заменен на гораздо более сложный объектно-ориентированный фронт-энд, и проект был переименован в Objeck.
В настоящее время язык считается стабильным, и его развитие фокусируется на дальнейшем упрощении программирования. Язык не проходил стандартизацию, и авторская реализация остается единственной. В нее входят компилятор (в байт-код), виртуальная машина со сборщиком мусора и динамическим компилятором и отладчик с интерфейсом командной строки.
Все типы данных, за исключением функций высшего порядка, считаются объектами.