LINUX.ORG.RU

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

 , nimrod


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 ()
Последнее исправление: CYB3R (всего исправлений: 5)

Ответ на: комментарий от A-234

let это присвоение, with - scope visibility. Как вам такая мысль в голову пришла?

Проходи мимо. Let как раз и задает scope в языках, где нет нормальных блоков.

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

Але, ламер, threaded code - это как раз таки интерпретация.

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

А с чего вы взяли что мои * и + умножают и складывают?

а хоть танцуют? какая разница? вы смотрите на определение этих ваших * и + и узнаёте, что конкретно они делают.

Для плюсов достаточно ссылок. Память ведь статическая.

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

В биосах, по-вашему, malloc'и не работают?

понятия не имею. но в промышленных микроконтроллерах я ОС (и соответственно, возможности использовать маллок) пока не видел ни разу. хотя знаю, ОС для мк существуют.

pointers in lisp

а причём тут ф-щина? по ссылке вполне себе императивщина

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

глянул: императивные указатели, к которым применён подход парадигмы логического программирования (как в прологе), функционального программирования здесь не заметил, может вы мне расскажете где оно тут?

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

Если они там танцуют то как вы сможете предсказать, глядя на шаблон, во что он скомпилируется? Вам для этого на реализацию смотреть нужно а не на шаблон. ЧТД.

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

Поверить на слово? Я не религиозен, извините. А ваш опыт, по крайней мере сейчас, говорит о низкой квалификации.

понятия не имею

А я имею, о чем вам уже рассказал. malloc - функция libc, если программа только одна то никаких sbrk не требуется, достаточно вычислить объем доступной памяти и все. Зачем тут ОС? Вам теории операционных систем не хватает.

A-234 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.