Новые языки программирования за последние 10 лет


#1

Д.з. - языки программирования, возникшие за последние 10 лет (про распространенность ничего сказано не было)

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


ОП лекции 2017-18 гг. - решение домашних заданий
ОП лекции 2017-18 гг. - решение домашних заданий
ОП лекции 2017-18 гг. - решение домашних заданий
#2

Kotlin (Ко́тлин)(2011 год) — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Компилируется также в JavaScript и на другие платформы через инфраструктуру LLVM. Язык назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт. Авторы ставили целью создать язык более лаконичный и типобезопасный, чем Java, и более простой, чем Scala. Следствием упрощения по сравнению со Scala стали также более быстрая компиляция и лучшая поддержка языка в ИСР. Позиционируется разработчиками как объектно-ориентированный язык промышленного уровня, а также как язык, который сможет заменить Java. При этом язык полностью совместим с Java, что позволяет разработчикам постепенно перейти с Java на Kotlin. В частности, в Android язык встраивается с помощью Gradle, что позволяет для существующего Android-приложения внедрять новые функции на Kotlin без переписывания приложения целиком.


#3

Clojure(2007) — современный диалект Лиспа, язык программирования общего назначения с поддержкой разработки в интерактивном режиме, поощряющий функциональное программирование и упрощающий поддержку многопоточности. Clojure работает на платформах JVM и CLR. Clojure отличает философия «код как данные» (Гомоиконность) и развитая система лисп-макросов. Транслятор Clojure свободно распространяется на условиях Eclipse Public License.


#4

Elixir(2012) — функциональный, распределённый язык программирования общего назначения, который работает на виртуальной машине Erlang (BEAM). Построен поверх Erlang, что обеспечивает распределённость, отказоустойчивость, исполнение в режиме мягкого реального времени, метапрограммирование с макросами и полиморфизмом, реализованным через протоколы. Использует Erlang/OTP для работы с деревьями процессов.

Создан Жозе Валимом (José Valim), ранее являвшимся одним из основных разработчиков фреймворка Ruby on Rails и сооснователем компании Plataformatec. Его целью было включить более высокую расширяемость и производительность в Erlang VM, сохраняя совместимость с инструментами и экосистемой Erlang.


#5

Crystal — это объектно-ориентированный язык общего назначения, спроектированный и созданный Ary Borenszweig и Juan Wajnerman. Crystal статически типизирован и имеет Ruby-подобный синтаксис. Первый официальный релиз языка произошел в июне 2014 года. Изначально компилятор языка был написан на Ruby, пока в 2013 году не был переписан на Crystal. Язык находится в активной разработке. Несмотря на схожесть синтаксиса, Crystal намного эффективнее чем Ruby компилируется в машинный код, используя LLVM, жертвуя при этом динамическими аспектами языка. По результатам тестов Crystal показывает схожую с языком С производительность…


#6

Д.з. - языки программирования, возникшие за последние 10 лет.

2014 год Swift — открытый мультипарадигмальный компилируемый язык программирования общего назначения. Создан компанией Apple в первую очередь для разработчиков iOS и macOS. Swift работает с фреймворками Cocoa и Cocoa Touch и совместим с основной кодовой базой Apple, написанной на Objective-C. Swift задумывался как более легкий для чтения и устойчивый к ошибкам программиста язык, нежели предшествовавший ему Objective-C[7]. Программы на Swift компилируются при помощи LLVM, входящей в интегрированную среду разработки Xcode 6 и выше. Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы.


#7

А кто создал Objeck - можно ли какие-то пруфлинки?


#8

http://www.objeck.org/


#9

Надо же! На C++ написан!


#10

Домашнее задание, ЯП 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-файлы для библиотек, поддерживаемые сторонними пользователями, пока не включенные в штатную поставку.


#11

Снова я хочу гиперссылку. Пользуется этим языком кто-то?


#12

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» вследствие значительных изменений в языке.


#13

LOLCODE — эзотерический язык программирования, созданный под влиянием интернет-мема о lolcat’ах.

На официальном сайте находится спецификация этого языка, и, хотя некоторые моменты в ней не описаны, уже существуют несколько работающих интерпретаторов и компиляторов этого языка. LOLCODE является Тьюринг-полным языком, так как возможна реализация интерпретатора Brainfuck на LOLCODE. Пример программы, выводящей “Hello world”: HAI CAN HAS STDIO? VISIBLE "HAI WORLD!" KTHXBYE


#14

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 для работы с деревьями процессов.


#15

Домашнее задание, ЯП Go (часто также Golang).

Был разработан внутри компании Google. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон. Официально язык был представлен в ноябре 2009 года.

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

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


#16

Ceylon (2011) — объектно-ориентированный язык программирования высокого уровня со строгой статической типизацией и комплект средств разработки, разрабатываемые компанией Red Hat. Язык основан на Java, а программы написанные на Ceylon могут быть запущены на виртуальных машинах Java и JavaScript. Перед проектом стоит задача избавления разработчиков от проблем языка Java: 1.улучшение структурированных данных и пользовательских интерфейсов, 2.модульность версии языка, 3.поддержка функций первого и более высокого порядков, 4.избавление от неуклюжего метапрограммирования. Ceylon наследует большую часть синтаксиса Java.


#17

Д.з. - языки программирования, возникшие за последние 10 лет (про распространенность ничего сказано не было)

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


#18

Д.з. - языки программирования, возникшие за последние 10 лет (про распространенность ничего сказано не было)

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