LINUX.ORG.RU

Вышел nim 0.14.0

 , ,


1

5

Спустя почти полгода после прошлого релиза вышла новая версия языка программирования nim 0.14.0.

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

Основными особенностями языка являются:

  • выразительность: язык обладает кратким синтаксисом, а также мощными средствами обобщенного программирования;
  • элегантность: синтаксис языка достаточно гибок, не нужно менять стиль при метапрограммировании;
  • эффективность: компилятор nim генерирует код на Си, сравнимый по качеству с написанным вручную; при компиляции в машинный код исполняеемый файл будет содержать только то, что действительно нужно; оригинальный сборщик мусора пригоден для работы в системах мягкого реального времени, а в случае необходимости его можно отключить.

По мнению разработчиков, данный язык программирования хорошо подходит для разработки:

  • переносимых приложений,
  • игр,
  • встраиваемых систем и программ микроконтроллеров,
  • системных библиотек,
  • систем криптографии.

Основные изменения в новой версии nim:

  • исправлено более 260 ошибок, многие из которых связаны с работой сборщика мусора, также исправлены недостатки, связанные с установкой пакетов исходного кода nim;
  • внесены изменения в компилятор и ядро языка, нарушена обратная совместимость;
  • стандартная библиотека также претерпела изменения;
  • вместе с новым релизом языка nim обновился и его пакетный менеджер nimble.

Стоит также заметить, что в отличие от других языков, появившихся в последнее время, nim не является проектом какой-либо корпорации, а разрабатывается независимым сообществом на народные деньги. Кампания по сбору средств идет довольно успешно, но проекту не помешает и ваша помощь. Каждый доллар, евро, фунт или рубль приближает релиз версии 1.0.0!

Сайт проекта

Кампания по сбору средств на bountysource

>>> Список изменений

anonymous

Проверено: Falcon-peregrinus ()
Последнее исправление: Psych218 (всего исправлений: 5)

Ответ на: комментарий от makoven

Стандартные либы

Ему не нужны стандартные либы. А если и понадобятся, будет писать что-то в духе:

proc unsafeScanf(f: File, s: cstring)
  {.varargs,
    importc: "fscanf",
    header: "<stdio.h>".}
Esper
()
Ответ на: комментарий от shkolnick-kun

дай пруфца на сравнение плотности закорючек в коде

Мне влом, я тебе итак скажу. В nim'е их таки поменьше, но там они трешовей.

Хочешь подробностей - можешь, например, здесь посчитать.

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

Philosophy: freedom vs. discipline

Золотые слова! /me ушел перечитывать Кропоткина.

shkolnick-kun ★★★★★
()

В общем надо посмотреть на что он способен. Попробовать поиграться с ним и SDL. Может быть я найду ему место у себя :)

deterok ★★★★★
()

Если бы были биндинги нормальные для культей, то можно было бы рассматривать его как замену PyQt для быстрого прототипирования приложений без необходимости переписывать потом код на C++. А так даже не знаю куда его применить. Есть Go - язык более примитивный, но с огромными финансовыми вливаниями, поэтому для Nim'a нужна какая-то уникальная ниша, иначе повторит судьбу D.

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

А зачем они в прошивке микроволновки

Это смотря кто будет писать. В любом случае, в растовском core хватает удобных вещей. А в nim без gc даже фичи языка не факт, что все работать будут.

Esper
()

интересно, подойдет ли он для программирования микроконтроллеров (напр.как замена убогого языка Ардуино)

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

И что там в этом core? Работа с базовыми типами вроде u8? Ну так если генерируется код на Си, надо полагать, что подобные вещи обеспечиваются средствами Си, разве что проверки на переполнения нужно генерировать...

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

LOL, в нимовском core тоже хватает удобных вещей.

4 файла, ~1800 LoC, половина из которых - объявления. Действительно LOL.

tailgunner ★★★★★
()

Nim удобный язык с приятным синтаксисом. Можно, например, школьников приучать к статической типизации.

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

Go - язык более примитивный

Это какое-то ну уж слишком толерантное высказывание. Особенно в сравнении с compile-time гибкостью Nim, к которой даже D известный своим СTFE, близко не стоял. Я бы сказал, что программирование на Go, это даже не «программирование со связанными руками» (как в жабе например), а с «оторванными нахрен руками».

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

И что там в этом core?

Сахар для работы с ошибками, форматирование, итераторы, работа с памятью, работа со строками.

Работа с базовыми типами вроде u8? Ну так если генерируется код на Си, надо полагать, что подобные вещи обеспечиваются средствами Си

Да и работу с базовыми типами в libc по разнообразию и удобству rust core заруливает:

use std::f64::consts;
let angle = 180.0_f64;
let abs_difference = (angle.to_radians() - consts::PI).abs();

Слабо так в Си на stdlib?

И да, это всё, конечно, не сложно сделать ручками, но речь об удобстве.

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

в нимовском core

LOL, нимовский core - никаким боком не аналог растовского core. Растовский core - это отдельная библиотека, которая заработает без внешних зависимостей и аллокатора. А нимовский core даже без gc вменяемо не заработает. Хоть бы матчасть подучил и не позорился.

Esper
()
Ответ на: комментарий от shkolnick-kun

ПО для микроволновки пишется на FORTH. Да и где ты видел микроволновку хотя бы без wi-fi, колобок?

anonymous
()

Уже давно появились специальные версии базовых библиотек без GC, например для использования на микроконтроллерах или написания динамических библиотек. Единственная проблема языка сейчас - мало денег на развитие.

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

Микроволновка без wi-fi вообще не нуждается в прошивке. Пара механических крутилок и магнетрон

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

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

Интересный у тебя критерий кривости.

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

Нашел в туториале двойное равно. Дальше не читал.

Правильная это паскалевская новтация где присваивание :=

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

Или let foo = 1. Это нотация для здоровых людей, которые не прогуливали в школе математику и привыкли писать так.

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

Увы, увы. Я когда-то думал, что Деннис Ритчи по своей дурости выбрал знак равенства для обозначения операции присваивания. Потом, спустя годы мне пришлось случайно взглянуть на старый код написанный на Фортране. И, о чудо, я увидел тот же знак равенства применяемый для операции присваивания. Я конечно не знаю историю развития языков программирования. Но мне кажется, что всё это придумали сотрудники компании IBM. Фортран, вроде является детищем компании IBM. А Деннис Ричти просто следовал американской традиции.

Мне кажется, нотация применяемая в европейской традиции — «Алгол/Паскаль», не нарушает правил обозначения математических знаков. Недаром алгол переводится как «алгоритмический язык». И жаль, что теперь Алгол мёртв, а Паскаль живёт в основном в «академических кругах».

anonymous
()

СИобразный ЯП генерирующий код на СИ? Неужели в стандартном СИ так плохо что для программирования нужны такие трюки;)

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

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

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

и всякие костыли тут уже помочь не могут.

Почему это? Можно ведь генерировать по нескольку простыней ужасного кода на каждый случай применения отсутствующих в СИ конструкций. Ну хотят люди писать высокоуровневые конструкции на ассемблере - разве можно им это запретить:)

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

Это не так. Вам было бы тоже очевидно, если бы Вы разбирались в данном вопросе.

frost_ii ★★★★★
()

IMHO гибрид бейсика, паскаля и С. Может, ещё чего напихали.

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

Уже давно появились специальные версии базовых библиотек без GC

А можно пруфцов?

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

и всякие костыли тут уже помочь не могут.

Почему это? Можно ведь генерировать по нескольку простыней ужасного кода на каждый случай применения отсутствующих в СИ конструкций. Ну хотят люди писать высокоуровневые конструкции на ассемблере - разве можно им это запретить:)
Napilnik

Это только если ты тупой как напильник. А пацаны взяли и слепили свой язык. Теперь они используют абстракции уровня который голому С и не снился, и им не нужно костылить все обёртки вручную. А ещё компилер может это всё сЪоптимизировать что мама не горюй, а твои простыни говнокода оотольются в либы, которые уже всио - бери как есть...

А в чём подвох то?! Чего ты завёлся? Таких езыков - куча. Тот же Vala ... С другой стороны народ работает на прикруткой генерации напрямую в LLVM ...

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

Меня после «Statements are grouped by indentation» вообще стошнило!
matumba

Да всё Ок, просто ты беременный :-)

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

Я когда-то думал, что Деннис Ритчи по своей дурости выбрал знак равенства для обозначения операции присваивания

А что им мешало просто взять и просто использовать другой синтаксис?

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

Statements are grouped by indentation

Я вижу тут только одну проблему: нельзя скопировать код в другое место и сделать автоотступ.

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

А что им мешало просто взять и просто использовать другой синтаксис?

Наверно американская традиция.

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

А в чём подвох то?! Чего ты завёлся?

Это, вытри платочком лоб и выжми памперсы - все тут спокойны кроме тебя. Всем пофиг, писать на нём почти никто не собирается.

Napilnik ★★★★★
()

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

Давно уже не нужно.

не является проектом какой-либо корпорации

А на кой хрен ему тогда дружественная к проприетарщикам лицензия MIT?

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

А на кой хрен ему тогда дружественная к проприетарщикам лицензия MIT?

Йа-йа бэйби заметил таки!

З.Ы.
А императивные языки нужны, ибо ООП языки дают лишний, избыточный функционал.

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

Хороший язык. Сразу отсеивает всяких злоупотребителей табов.

rupert ★★★★★
()

От Нима несет Паскалем за версту. Все, кто ностальгирует по Паскалю - налетай!

rupert ★★★★★
()

nim не является проектом какой-либо корпорации, а разрабатывается независимым сообществом на народные деньги

Вот и причина, почему не взлетит никогда

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

Вот и причина, почему не взлетит никогда

Примета
Если анальные раб корпорации начинают каркать, это к добру.

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

А императивные языки нужны, ибо ООП языки дают лишний, избыточный функционал.

ООП языки относятся к классу императивных, так-то. Любой язык программирования, описывающий последовательность действий является императивным.

anonymous
()

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

anonymous
()

Когда только услышал про него, сильно заинтересовался (господи, это же питон ниже уровнем, просто 10 из 10). Хотел даже оставить на изучение в лучшее время (когда такое настанет, они уже нормально релизнуться). Однако сейчас кажется, что он не выстрелит. Идея отличная, синтаксис тоже, да и в целом представляет то что мне надо и нравится, но использовать только для персональных проектов да и с никаким сообществом - гиблое дело. Пожалуй подумаю о ГО, он уже выстрелил, плюс там есть штуки которых мне не хватает в питоне.

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

Какая в этом говне «идея»? Как тут уже описали, даже итерация по объекту не упирается то ли в вызов items, то ли в pairs. «А давайте запилим Java/C#/D с питоновским синтаксисом», в этом что ли идея?

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

ну да, примерно эта идея. Ну и ещё пара моментов.

Как тут уже описали

релиз будет - там посмотрим, а пока есть дела поважнее

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

ну да, примерно эта идея.

В таком случае у меня отличная идея для нового языка.

#define begin {

#define end }

#define var(name, type) type name;

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