The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новая версия языка Nim 0.19.0

28.09.2018 01:10

Доступен релиз языка системного программирования Nim 0.19.0. Язык использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL). Код проекта поставляется под лицензией MIT.

В новой версии представлено два нарушающих совместимость изменения в обработке строк и последовательностей. Вместо значения "nil" строки и последовательности теперь по умолчанию принимают значения "" и @[]. Доступ к нулевому символу, сигнализирующему об окончании строки, отныне не является корректной операцией и приводит к выводу ошибки. Для выборочного включения экспериментальных возможностей предложена pragma experimental и опции командной строки (одного общего переключателя для активации всех экспериментальных функций теперь нет). Кроме самого языка также доступен связанный с ним пакетный менеджер Nimble 0.9.0, в котором пересмотрен процесс создания гибридных пакетов.

  1. Главная ссылка к новости (https://nim-lang.org/blog/2018...)
  2. OpenNews: Новая версия языка программирования Nim 0.18.0
  3. OpenNews: Новая версия языка программирования Nim 0.17.0
  4. OpenNews: Релиз языка программирования Go 1.11
  5. OpenNews: Выпуск языка программирования Dart 2.0
  6. OpenNews: Увидел свет язык программирования Julia 1.0
Автор новости: opqx
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49355-nim
Ключевые слова: nim
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (35) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ыы (?), 10:45, 28/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Фраза "Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript."
    несколько дика...

    компиляция- это когда с высокоуровневого на низкоуровневый или машинный код.

    а с высокоуровневого на высокоуровневый- это должно называться как-то иначе.

     
     
  • 2.3, Аноним (3), 10:55, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Как насчет: "Исходный код на языке Nim транслируется в представление на C, C++ или JavaScript"?
     
     
  • 3.5, ыы (?), 11:01, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • –16 +/
    плохо.
    Трансляция, компиляция, интерпретация- все это подразумевает изменение уровня языка.

    Для изложения того же самого на таком же уровне но на ином языке - следует использовать "переводится" или на иноземный манер "портируется" например "код на языке Ява переводится на язык Бэйсик" или "код на языке Лисп портируется на Го"

     
     
  • 4.8, Аноним (8), 11:23, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А как насчёт термина "двоичная компиляция"? Если считаешь, что глупость, плюнь в лицо МЦСТ.
     
     
  • 5.14, ыы (?), 13:33, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Наследники советского канцеляризма еще и не такое выдумают...

     
     
  • 6.32, Аноним (32), 11:30, 29/09/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сколько тебе годков, вьюноша, чтобы рассуждать о «советском канцеляризме»?
     
  • 4.38, Мимоход (?), 17:49, 02/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Трансляция и интерпретация точно не подразумевают. Да и компиляция не обязательно.
     
  • 2.4, Аноним (4), 10:58, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Называется Transpiling
     
     
  • 3.6, ыы (?), 11:03, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    О. есть таки такое слово...
     
  • 2.12, Аноним (12), 12:11, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > компиляция- это когда с высокоуровневого на низкоуровневый или машинный код.
    > а с высокоуровневого на высокоуровневый- это должно называться как-то иначе.

    Ну давай ты будешь тогда называть это не компиляцией, а канпеляцией. Ну чтоб различать. Ведь всем очень важно (важнее базовых физиологических потребностей!) различать, кто куда переводится. И тут выскочишь ты на белом коне и предложишь новое слово: канпеляция.

     
  • 2.19, Урри (?), 17:17, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В отчественной печати для этого принят термин "трансляция".
    https://ru.wikipedia.org/wiki/Транслятор

    И я немного удивлен общим уровнем образованности в таких элементарнейших вещах в комментариях.

     
     
  • 3.29, Jh (?), 08:41, 29/09/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    образованные тут не ходят
     
     
  • 4.33, Аноним (33), 13:05, 29/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > образованные тут не ходят

    Самокритично конечно, но попрошу говорить за себя.


     
  • 3.34, Аноним (33), 13:10, 29/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > И я немного удивлен общим уровнем образованности в таких элементарнейших вещах в комментариях.

    И правда, ведь всем образованным людям известно, что образование можно получить только на Великом и Могучем!

     
     
  • 4.39, Тот_Самый_Анонимус (?), 07:41, 05/10/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Если для тебя великий и могучий чужой, то чего ты тут делаешь?
     
     
  • 5.40, Аноним (33), 14:16, 05/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Если для тебя великий и могучий чужой,

    Да-да, образование можно получать только на "рідної мови"! Иначе ведь не патриотично!
    Да и самообразование на буржуйском только для буржуев (нормальные люди буржуйский не учуть)!
    > то чего ты тут делаешь?

    Ловлю лулзы с таких как ты, прогуливавших логику.
    Ты ж на "чужие" ресурсы не ходишь, да и на буржуйском небось ничего не читаешь?


     
     
  • 6.41, Тот_Самый_Анонимус (?), 16:35, 05/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Да-да, образование можно получать только на "рідної мови"! Иначе ведь не патриотично!
    > Да и самообразование на буржуйском только для буржуев (нормальные люди буржуйский не учуть)!

    Сам придумал — сам опроверг. Молодец, рисуй звёздочку.

    > Ловлю лулзы с таких как ты, прогуливавших логику.
    > Ты ж на "чужие" ресурсы не ходишь, да и на буржуйском небось ничего не читаешь?

    Второй раз один приём. Ты все свои фантазии в ранг фактов возводишь, иннословный лулзолов?

     
     
  • 7.42, Аноним (33), 21:37, 05/10/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Если для тебя великий и могучий чужой, то чего ты тут делаешь?
    > Сам придумал — сам опроверг. Молодец, рисуй звёздочку.
    >> Если для тебя великий и могучий чужой, то чего ты тут делаешь?
    > Второй раз один приём. Ты все свои фантазии в ранг фактов возводишь,

    Экий ты самокритичный!

     
  • 2.25, Илья (??), 20:55, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > как-то иначе.

    Трансляция?

     
  • 2.36, tosh (?), 14:11, 30/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    "транспилируется" - тебе полегчало?
     

  • 1.2, Аноним (8), 10:54, 28/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Регистр написания символов в идентификаторах не учитывается.

    Сколько это недоразумение можно повторять из новости в новость? Это не соответствует действительности. Сам не поленился и проверил в v 0.18. Вывод: различается и для ключевых слов, и для переменных пользователя.

     
     
  • 2.13, Аноним (13), 13:26, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Вывод: различается и для ключевых слов, и для переменных пользователя.

    Там всё более хитро. Различается только регистр первого символа в идентификаторе, а остальные нет. А подчёркивания вообще игнорируются.


    https://nim-lang.org/docs/manual.html

    Two identifiers are considered equal if the following algorithm returns true:

    proc sameIdentifier(a, b: string): bool =
      a[0] == b[0] and
        a.replace("_", "").toLowerAscii == b.replace("_", "").toLowerAscii

    That means only the first letters are compared in a case sensitive manner. Other letters are compared case insensitively within the ASCII range and underscores are ignored.https://nim-lang.org/docs/manual.html

     
     
  • 3.18, Annoynymous (ok), 17:15, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я хочу такой травы тоже, которую курили разработчики этого языка.
     
     
  • 4.23, Аноним84701 (ok), 17:38, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Я хочу такой травы тоже, которую курили разработчики этого языка.

    Ну это вообще-то попытка угодить "и вашим и нашим", т.е. любителям "fooBar" и "foo_bar".
    Там еще без разницы:
    foo_bar(x,y)
    fooBar(x,y)
    x.foo_bar(y)
    x.fooBar(y)

    Но есть более "зачетные" вещи ;)
    > Strong spaces
    > A experimental feature, currently only available through a source code filter, is strong spaces. The relative spacing
    > between operators and operands overrides their standard precedence, like adding parenthesis would
    .
    >

     

  • 1.10, Аноним (10), 11:37, 28/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    расходимся, нет webasm, не взлетит!
     
     
  • 2.11, омномномним (?), 11:54, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    да вроде есть
    один из примеров: https://www.spiria.com/en/blog/web-applications/webassembly-nim
     

  • 1.15, Аноним (15), 15:14, 28/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Главный вопрос: "Зачем???".
     
     
  • 2.16, типа аноним (?), 15:40, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ответить то - несложно. Си превратился в маркенг: кто кого фишками заалит игнорируя надёжность и/или производительность. А разросшийся стандарт С++ - (и без доп.библиотек ) уже "монстр".

    Но... «зачем» так?!....................

     
     
  • 3.20, Урри (?), 17:18, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Си ни во что не превратился - каким был, таким остался.

    А вы путаете С++ и С. Стыдно.

     
     
  • 4.21, типа аноним (?), 17:29, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Враньё. Ничего не путаю. (И по п.1.тоже - враньё).
     
  • 3.22, типа аноним (?), 17:31, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    FIXED+Дополнил мысль:
    Ответить то - несложно. Си[++] превратился в маркетинг: кто кого фишками завалит... - игнорируя надёжность и/или производительность.
    А разросшийся стандарт С++ - (и без доп.библиотек ) уже "монстр".
    Как компиляторы так и сами библиотеки - такое ощущение что, финансирутся производителями оборудования/ОС - чтобы всё сильней тормозить / всучивать новое, и АНБ - чтобы всё время были новые дыры (в т.ч.и под предлогом поддержки 10-100-500 архитектур).

    Это просто отвратительно, что за столько десятилетий - даже крупнейшие OSC компиляторы
    - дырявейший и глючнейший шлак, который к тому же чтобы собрать нужно подключить и задействовать ещё 10-100-500 такого же "добра"...
    А, rolling-release?... Сейчас для надёжности кодогенерации получатся лучше взять любой древний (и пусть заглюченный)проприетар компилятор времён дораспространенияя сети и частых обновлений(они же маркетинговая привязка к производителю - для покупки лицензии пользователями... т.е.баги - запланированны на вечно) - давно остановшейся в развитии - и просто наблюдая учитывать его баги, по крайне мере при его релизе бетатест заведомо куда интенсивней проводился чем у любых OSC(и позжих не-OSC), да и ведь к нему точно в обновлении не будет нового внепланново... ВДРУГ (и что будет видно - вовсе не обязатено сразу при обновлении). Таже проблема даже с ассемблерами.
    Сейчас нету ни одного гарантированного безбагового компилятора, даже ассемблеры, т.е.код которого был бы быстро проверяем. Чтобы быть уверенно в отсутствии подлога свинью нужно писать ...в кодах! Но, это не продуктивно и само по себе сверхрисково.
    Достали. Меня давно жутко достали баги криворуких авторов компиляторов, когда ты бывает недели тратишь в поисках бага, тем более когда в чужом говнокоде давно написанном(а, не с нуля - поэтапно), а это оказывается компилятор - "ой извините[, в новой версии - вот так]"...

    Но, по языку этому - правильней спросить: «зачем» же так?!...

     
  • 2.28, Пользователь Nima (?), 23:19, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    У Nim-а есть свою плюси, например  AST макросы на уровне лиспа. Среди компилируемых и строго типизированных языков это редкость
     
     
  • 3.35, типа аноним (?), 13:48, 29/09/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Никто про полное отсутвие плюсов и не говорил же. Они всегда есть - в ч.н.кому то.
    Вопрос тут скорей о устраиваемости их - всем или хотя бы большинству, хотя бы просто многим.

    Любой Си поддержиет макросы, в том числе косвенно - через template и даже перегрузку операторов.
    Ассемблеры ещё более изощрённые в макросах.
    Но, AST макросы совсем уж какая то дичь. Тут то на обычные СИ макросы часто гонят когда они напсианны кем то иным, да и самому налажать легко - а, уже ещё сильней расширять их сферу применения...

     

  • 1.17, Pilat (ok), 16:45, 28/09/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >По аналогии с Python в Nim в качестве разделителей блоков применяются отступы.

    Ну и правильно. Сделали бы как надо, никто бы о Nёm и не говорил.

     
     
  • 2.24, типа аноним (?), 17:56, 28/09/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Несмотря на большую лаконичность, к сожалению, отступы это ещё одна "палка которая периодически стреляет в ногу". Вообще же отступы и лаконичность из-за них - хоть и самый заметный, но совсем не самый большой плюс у Python, в сравнении с Сями. Самый главный там - проще синтаксис. Тем более нету кучи версий компилятора со своими уникальными [недокументированными] конкурентными фишками... отсутствующими или работающими иначе у каждого другого. Да и стандарт языка как я не настолко туманен что, даже хочешь char будет знаковым, нет? Ну, дело твоё... (и ведь делали, маркетингово). И т.д. Да даже помню была непредопределанна последовательнсоть вычисления в выражении... Это и правда издёвка, "стандарт", а не стандарт! В итоге каждый реально всегда сидел в реальном стандарте - производителя компилятора, причём понятно версие неконстантном.

    Ну, да пока проще...  (Си[++] когда то тоже был синтаксически очень лаконичен, "прогресс" тут как тут).

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру