LINUX.ORG.RU

Nim 0.10.2  — статически типизированный, императивный язык программирования.

 ,


0

4

Nim (ранее Nimrod) — статически типизированный, императивный язык программирования.
В этом релизе произошла смена названия языка с Nimrod на Nim. Эта версия ломает обратную совместимость с прошлыми версиями, для поиска и обновления проекта предоставлена специальная утилита — nimfix.
Одна из целей Nim это реализация эффективного компилятора: на последних сравнениях скорости, можно увидеть, что код на Nim такой же быстрый как код на C или C++.
Последние введения, как asyncdispatch модуль, позволяет написать эффективные веб-приложения используя неблокирующий код. Также Nim имеет встроенные пул тредов для легковесных потоков с использованием `spawn`.
Удалены непопулярные префиксы для типов — «T» и «P».
Обновлены форум, сайт, и генератор документации.
Важные изменения, которые ломают обратную совместимость

  • комментарии больше не часть AST.
  • рекурсивные кортежи запрещены, вместо этого предлагается использовать object
  • новые ключевые слова — defer, func
  • using нужно включать явно с помощью прагмы {.experimental.}
  • ключевые слова except, finally объявлены устаревшими. Вместо них нужно использовать defer и try.
  • поля в кортежах сейчас игнорируются для сравнения.

Некоторые изменения в языке

  • новая конкурентная модель (lock секции, lock уровни и guards поля)
  • parallel оператор
  • deepCopy
  • встроенный procCall может использоваться для вызова методов родителя
  • прагма {.experimental.} которая добавляет нововведения для модуля, или можно включить это глобально с передачей аргумента --experimental


В компиляторе

  • поддержка смешанного Objective C / C++ / C генерации, модули которые используют importCpp или importObjc компилируются в Objective C или C++, остальные модули компилируются в C.
  • parallel оператор, для fork/join модели выполнения
  • lock и guard прагмы для безопасной конкурентной работы
  • больше методов, которые доступны во время компиляции


В библиотеках

  • fenv модуль для контроля выполнения операций с чисел с плавающей точкой и контроля за исключениями — переполнение, деление на ноль
  • asyncnet добавлена поддержка SSL
  • добавлена osproc.kill

>>> Подробности

anonymous

Проверено: Shaman007 ()

В этом релизе произошла смена названия языка с Nimrod на Nim.

http://www.urbandictionary.com/define.php?term=nimrod

Orginally from the Biblical Nimrod, a mighty hunter, it has come to mean socially inadequade.
«Oh he's a real Nimrod, he steals the dried snot from under the science teachers desk.»

http://www.urbandictionary.com/define.php?term=Nim

A strong minded, golden hearted, one in a million individual. He doesn't realize the importance and value he has one peoples lives especially the ones closest to him. If you are fortunate to meet a Nim, count your blessings as he is a true treasure.
«Nim, such a top bloke.»

AP ★★★★★ ()
Последнее исправление: AP (всего исправлений: 1)

Очередная смесь бульдога с носорогом транслирующая код в С.

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Но все-таки очень интересная. А остальные не назовешь?

loz ★★★★★ ()
Ответ на: комментарий от Napilnik

чувак я не понимаю почему тебя до сих пор не забанили за тупость.

anonymous ()
Ответ на: комментарий от loz

Но все-таки очень интересная.

Чем же? В списке языков из которых потырен синтаксис модула, дельфи, оберон, питон и плюсы. Перл забыли указать - краткость, это по перловски. Какой бы фанат этих языков не увидел синтаксис, сразу ужаснётся: что-же это с ним нехорошее сделали.

А остальные не назовешь?

Пролистай лоровские новости за этот год, там были. Г, Д, питонообразные, жабообразные, лиспообразные и ещё что-то.

Napilnik ★★★★★ ()
Последнее исправление: Napilnik (всего исправлений: 1)
Ответ на: комментарий от Napilnik

списке языков из которых потырен синтаксис

Не синтаксис, а идеи.

Чем же?

Из того что я пока знаю - система типов, возможность ручного управления памятью, компиляция в натив, макросы. Если есть другие языки с такими возможностями - я бы посмотрел. Самое близкое что я знаю - окамл. Но он позиционируется как функциональный, когда ним - универсальный.

Г, Д, питонообразные

Насчет D интересно, написан ли его компилятор на нем самом и умеет ли в ручное управление памятью. Г - если про го, то он явно не тянет на те возможности которые заявлены в ниме.

loz ★★★★★ ()
Ответ на: комментарий от Napilnik

А, ну и вобще там что-то интересное у них есть с проверкой корректности параллельных вычислений, я еще не изучал, но сейчас мне это кажется крутой штукой.

loz ★★★★★ ()
Ответ на: комментарий от Napilnik

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

Я, пожалуй, процитирую одну известную здесь личность: «Я осознаю, что существуют безмозглые пидоры, у которых в список значимых критериев может входить, к примеру, синтаксис языка. Hу так накласть мне на них. Меня интересуют объективные критерии, а не цацки всякие.»

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

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

loz ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Я осознаю, что существуют безмозглые пидоры, у которых в список значимых критериев может входить, к примеру, синтаксис языка. Hу так накласть мне на них. Меня интересуют объективные критерии, а не цацки всякие

огокак анерх но ласип икссур-оп?

odii ()
Ответ на: комментарий от hateyoufeel

А теперь включаем секундомер и проверяем объективность человека с ружжьём.

Napilnik ★★★★★ ()
Ответ на: комментарий от loz

Синтаксис все же влияет на удобство использования языка, со временем это конечно дело привычки.

Цитата была к тому, что один не совсем вменяемый участник треда поставил в один ряд языки с весьма различающейся семантикой на том основании, что у них синтаксис похож.

Я кстати надеюсь что тот кого ты цитировал лиспер, потому что основные аргументы против лиспа все еще связаны с отсутствием синтаксиса.

Как ты угадал? :D Это VSL.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Цитата была к тому, что один не совсем вменяемый участник треда поставил в один ряд языки с весьма различающейся семантикой на том основании, что у них синтаксис похож.

Чёрт, это я на самом деле читать не умею. Ну или текст, написанный напильником, весьма сложен для понимания.

hateyoufeel ★★★★★ ()

низкоуровневая функциональщина это... странно. какую нишу он может занять?

devnullopers ()

неплохо у них там в туториале. чтобы не тянуть либы, они курл просто вызывают.

anonymous ()
Ответ на: комментарий от devnullopers

какую нишу он может занять?

Никакой. Мертв до рождения.

tailgunner ★★★★★ ()
Ответ на: комментарий от hateyoufeel

А теперь прочитай вики на сайте проекта и проверь ещё раз свою вменяемость и всё остальное.

anonymous ()
Ответ на: комментарий от devnullopers

функциональщина

wat?

статически типизированный, императивный язык программирования
императивный
императивный

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Как ты угадал?

Так если смотреть только на существенные стороны языка лисп будет на первом месте.

loz ★★★★★ ()
Ответ на: комментарий от loz

какую нишу он может занять?

Никакой. Мертв до рождения.

Еще один туда же.

Куда «туда же»? Но в любом случае, расскажи нам о нише, которую займет Nim.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Но в любом случае, расскажи нам о нише, которую займет Nim.

Я типа не пророк, но может занять нишу системного программирования, прикладного программирования, программирования игр в конце концов. Примерно куда целят D и Rust.

loz ★★★★★ ()
Ответ на: комментарий от loz

Синтаксис все же влияет на удобство использования

а что такое, собственно, синтаксис?

for(i <- 0 until 10)
где until на самом деле вызов метода из числа 0, это синтаксис?
а перегруженные под каждый чих операторы?
а тонны библиотек (в т.ч. нативных)?

devnullopers ()
Ответ на: комментарий от devnullopers

где until на самом деле вызов метода из числа 0, это синтаксис?

Синтаксис, по-моему совершенно неочевидный.

а перегруженные под каждый чих операторы?

Синтаксис их вызова от этого не меняется.

а тонны библиотек (в т.ч. нативных)?

Библиотеки как к синтаксису относятся?

loz ★★★★★ ()
Ответ на: комментарий от devnullopers

но ведь одно другому не мешает?

А что такое собственно функциональный язык?

loz ★★★★★ ()
Ответ на: комментарий от loz

какую нишу он может занять?

Никакой. Мертв до рождения.

Еще один туда же.

Куда «туда же»? Но в любом случае, расскажи нам о нише, которую займет Nim.

Я типа не пророк

Неважно, кто ты. Куда «туда же»?

может занять нишу системного программирования, прикладного программирования, программирования игр в конце концов.

И что заставило тебя подумать, будто Nim это может?

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Неважно, кто ты. Куда «туда же»?

Мне показалось что ты оценил язык по «низкоуровневая функциональщина».

И что заставило тебя подумать, будто Nim это может?

То, для чего делается этот язык собственно.

loz ★★★★★ ()
Ответ на: комментарий от loz

где until на самом деле вызов метода из числа 0, это синтаксис?

Синтаксис, по-моему совершенно неочевидный.

любое выражение вида

a method b
равносильно
a.method(b)
что тут неочевидного?

Библиотеки как к синтаксису относятся?

поскольку + или until - это методы из стандартной библиотеки, конструкции типа этих

"string" * 3
i <- 1 to 10
встречаются настолько часто, что могут считаться синтаксисом (а операторы так вообще всегда считались, независимо от их перегруженности)

devnullopers ()
Ответ на: комментарий от devnullopers

что тут неочевидного?

Ну я такое впервые вижу, например. Ты уже привык наверное.

loz ★★★★★ ()
Ответ на: комментарий от loz

что заставило тебя подумать, будто Nim это может?

То, для чего делается этот язык собственно.

То, что язык делается для цели X, не значит, что он займет хоть какую-то нишу // К.О.

tailgunner ★★★★★ ()
Ответ на: комментарий от devnullopers

низкоуровневая функциональщина это... странно

Это не функциональщина. Низкоуровневая функциональщина это ATS.

buddhist ★★★★★ ()

Зачем оно нужно? С++ хватит всем.

kas501 ★★★ ()
Ответ на: комментарий от tailgunner

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

И это не так уж и плохо. Есть огромное множество языков, которые на стали очередными «убийцами X», но все равно используются и развиваются.

Другое дело, что сабж хоть и выглядит вкусно, чем-то усиленно отталкивает от себя.

buddhist ★★★★★ ()
Последнее исправление: buddhist (всего исправлений: 1)
Ответ на: комментарий от buddhist

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

Ну да, ТНБ бросает монетку и выносит вердикт.

Другое дело, что сабж хоть и выглядит вкусно, чем-то усиленно отталкивает от себя.

Наверное, трупным запахом.

tailgunner ★★★★★ ()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от buddhist

определяется удачливостью
никак не связанных с дизайном

этой такой тонкий намек на php?

devnullopers ()
Ответ на: комментарий от buddhist

не стали очередными «убийцами X»

А мне кажется, что популярные языки в последние лет 20 практически не отмирают. Подвигаются в сторону под натиском новичков, но уходить со сцены в туман небытия не спешат. Суммарное количество языков в активном использовании растет, растет фрагментация. Как-то так.

Manhunt ★★★★★ ()
Последнее исправление: Manhunt (всего исправлений: 1)

Где он используется? Вакансии есть?

f1xmAn ★★★★★ ()
Ответ на: комментарий от tailgunner

может занять нишу
будто Nim это может
может
может

K.O.

loz ★★★★★ ()
Ответ на: комментарий от devnullopers

Тебе не нужен, мне нужен. Проблемс?

loz ★★★★★ ()

Вроде бы много лет назад nimrod обсуждали на ЛОРе. А сейчас по тегам ничего не находится. Потёрли?

Vinni_Pooh ★★★★ ()

сам язык прикольный, но мало либ, и качество кода многих из тех, что я видел, очень не огонь

actionless ★★★★★ ()
Последнее исправление: actionless (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.