5 свежих языков программирования

Официально они еще даже не появились.
 

Причин для создания нового языка программирования может быть множество: банальная скука, желание изменить традиционный подход, доработать существующий язык, предложить свой личный взгляд на Â«Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ÐµÂ» программирование. Однако до Ð²ÐµÑ€ÑˆÐ¸Ð½ и Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ популярности добираются лишь Ñ‚е, что реально упрощают жизнь программиста и ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ð²Ð°ÑŽÑ‚ его производительность с Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ синтаксиса или прилагаемых инструментов. Так, например, Go Ð¸Ð»Ð¸ Rust не Ð¿Ñ€Ð¾ÑÑ‚о предложили разработчикам удобный язык, они создали экосистему, в ÐºÐ¾Ñ‚орой хочется работать. Именно поэтому их Ñ€ÐµÐ¹Ñ‚инги так стремительно растут.

Перед вами 5 ÑÐ¾Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ð¾ новых языков программирования. У Ð½Ð¸Ñ… пока нет таких мощных покровителей, как Google или Mozilla, но Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð½Ð¾ есть душа, способная в Ð¿ÐµÑ€ÑÐ¿ÐµÐºÑ‚иве привлечь и Ð¸Ñ…, и Ð²Ð°Ñ.

 

Stanza

L. B. Stanza â€” язык, вот уже несколько лет разрабатываемый в ÑÑ‚енах Беркли. На Ñ‚екущий момент свежая версия â€” 0.11.8.

Что хорошего: удобный синтаксис, схожий с Python или Java. Компиляция непосредственно в Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ код, что делает язык чрезвычайно производительным. Динамическая типизация и Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»Ð¸Ð·Ð¼. Гибкая архитектура, предполагающая мультметоды и Ð¿ÐµÑ€ÐµÐ³Ñ€ÑƒÐ·ÐºÐ¸ функций, обеспечивающие всю мощь функционального программирования.

Пример:

defn lazy-flatten (x) :
  generate :
     defn loop (x) :
        match(x) :
           (x:List) : do(loop, x)
           (x) : yield(x)
     loop(x)

val first-4 = take-n(4, lazy-flatten(`(a b (c (d e f (g) (h)) (i j)))))
println(first-4)

Nim

Nimrod, предшественник Nim, появился на ÑÐ²ÐµÑ‚ еще в Ð´Ð°Ð»ÐµÐºÐ¾Ð¼ 2004 Ð³Ð¾Ð´Ñƒ, компилятор в 2008, а Ð¿ÐµÑ€Ð²Ð°Ñ официальная версия до ÑÐ¸Ñ… пор не Ð·Ð°Ð¿ÑƒÑ‰ÐµÐ½Ð°. В ÑÐ½Ð²Ð°Ñ€Ðµ этого года объявилась лишь ревизия 0.16.

Что хорошего: многие идеи Nim унаследованы от Python: чистый синтаксис, удобство, статическая типизация, собственная сборка мусора и ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ памятью. Кроме того, здесь можно определять вручную операторы, использовать макросы и ÑÐ¾Ð±Ð¸Ñ€Ð°Ñ‚ÑŒ приложения в Ð°Ð²Ñ‚ономные двоичные файлы без привязок.

Пример:

# Compute average line length
var
 sum = 0
 count = 0

for line in stdin.lines:
 sum += line.len
 count += 1

echo(«Average line length: «,
    if count > 0: sum / count else: 0)

Crystal

Ruby-подобный язык Crystal придется по Ð´ÑƒÑˆÐµ опытным рубистам, ведь им Ð¿Ñ€Ð°ÐºÑ‚ически не Ð¿Ñ€Ð¸Ð´ÐµÑ‚ся тратить время на Â«Ð²ÐºÐ°Ñ‚ывание». Язык активно развивается последние 3 Ð³Ð¾Ð´Ð°, актуальная версия- 0.11.

Что хорошего: статическая типизация без указания типов переменных или аргументов метода. Привязка Си-кода с Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ биндингов. Оценка времени компиляции и Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ кода. Компиляция прямо в Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ язык. А ÐµÑ‰Ðµ русская версия официального сайта.

Пример:

# A very basic HTTP server
require «http/server»

server = HTTP::Server.new(8080) do |context|
 context.response.content_type = «text/plain»
 context.response.print «Hello world, got #{context.request.path}!»
end

puts «Listening on http://127.0.0.1:8080»
server.listen

Nit

Еще один наследник Python, разрабатываемый для обеспечения удобства взаимодействия с ÐºÐ¾Ð´Ð°Ð¼Ð¸ на C/C++, Java и Objective-C. Самая свежая версия â€” 0.8.

Что хорошего: принцип KISS (keep it simple, stupid). Статическая типизация. Адаптация под разработку мобильных приложений: помимо подключения кодов на Ð¿Ð¾Ð¿ÑƒÐ»ÑÑ€Ð½Ñ‹Ñ… языках, это возможность компилировать код для платформы Android.

Пример:

module fibonacci

redef class Int
# Calculate the self-th element of the fibonacci sequence.
fun fibonacci: Int
do
if self < 2 then return self
return (self-2).fibonacci + (self-1).fibonacci
end
end

Pony

Еще один набирающий популярность язык, не Ð¾Ð±Ñ€ÐµÑ‚ший пока официальное рождение, направленный на Ð±Ñ‹ÑÑ‚рое написание кода без мыслей о Ð½Ð¸Ð·ÐºÐ¾ÑƒÑ€Ð¾Ð²Ð½ÐµÐ²Ð¾Ð¹ составляющей. Последняя версия â€” 0.14.

Что хорошего: типобезопасность Ð¸, как одно из ÑÐ»ÐµÐ´ÑÑ‚вий, беспроблемная работа с Ð¿Ð°Ð¼ÑÑ‚ью. Отсутствие дедлоков из-за отсутствия любых операций с Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ°Ð¼Ð¸. Исключения обрабатываются на ÑÐµÐ¼Ð°Ð½Ñ‚ическом уровне, что еще больше увеличивает безопасность выходного кода. AOT-компилятор. Возможность работы напрямую с Ð¡Ð¸-кодом.

Пример:

actor Doer
 be do1(n: U32) =>
   None

actor Main
 new create(env: Env) =>
   let a = Doer.create()
   let n: U32 = 5
   a.do1(n)