LINUX.ORG.RU

Вышла новая версия языка Nim 0.17.2

 , ,


3

4

7 сентября вышла новая версия языка программирования Nim 0.17.2.
Nim - это язык системного программирования, который ориентирован на производительность, мобильность и выразительность.

В этой версии был сделан упор на стабильность компилятора, и были исправлены важные баги. Следовательно, очень рекомендуется обновиться. А новой функцией в этом выпуске является поддержка файлов .nimble-link. Это было сделано для поддержки последней версии Nimble с функцией «develop».

Этот выпуск также включает в себя новую версию пакетного менеджера Nimble 0.8.8 который обновился 3 сентября. Где тоже было исправлено множество багов. Но стоит отметить что это достаточно крупное обновление с большим количеством новых функций. С которыми можно ознакомиться по ссылке
https://github.com/nim-lang/nimble/blob/master/changelog.markdown#088---03092017
Из наиболее важных это:

  • Реализована команда разработки develop
  • Реализована задача по умолчанию test для пакетов которые не определяют ее
  • Снижение потребления памяти если пакет содержит много файлов

А 6 сентября появилась новая документация к Nim на DevDocs
http://devdocs.io/nim/

>>> Version 0.17.2 released



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

На ЛОРе, может, каждый второй всё своё свободное время переписывает структуры данных. И делает это не для себя, а для общества, поэтому структуры должны быть максимально общими. К счастью, я решаю другие задачи.

Нет, на ЛОРе каждый второй пользовал алгоритмы и структуры данных, отличные от дефолтного мапа и вектора и написанные для общества. Это иногда бывает нужно, если задача сложнее эхо-сервера на стероидах.

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

Больше кода-больше ошибок, дольше разработка, сложнее поддержка, тестирование и отладка.

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

Таких мудацких аргументов при сравнении любого языка с любым другим языком можно придумать множество, как в одну, так и в другую сторону. В общем случае годность языка зависит от решаемой задачи. Я иногда даже на php пишу, брат жив.

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

Ущербен он только для ущербных.

Неущербен он только для:

  • людей, не знающих ничего другого;
  • людей, не писавших на нём ничего, кроме хеллоуворлдов;
  • людей, исповедующих copypaste-driven programming.
Esper ()
Ответ на: комментарий от opqx

В том то и дело что никто не знает про такой язык. Три статьи на весь рунет. По этому и пишу новость. Пусть знают, ругают, критикуют, ненавидят, любят, завидуют :)

В чём ценность данного языка? Написать свой приниципиально не новый язык можно за пару месяцев. У тебя есть хоть один пример, который показывает чем nim лучше других языков?

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

чем nim лучше других языков?

Риторический вопрос. Это я думаю дело вкуса.

Мне нравиться что он:

  • быстрый
  • компактный (мало буков писать)
  • гибкий (макросы и т.д.)

Думаю пример можно тут глянуть.
https://dou.ua/lenta/articles/nim/
https://habrahabr.ru/post/258119/

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

Срьёзно?

Чувак, ты упорот в хлам. Показываю на цитате:

людей, не знающих ничего другого;

Чувак, не стоит так за всех. Например, под «другим» можно ли подразумевать например, ваяние на верилоге прошивок для FPGA?

Я знаю С в достаточной мере чтобы писать на нём, но и верилог как живой смотрит на тебя из окна моего vim.

людей, не писавших на нём ничего, кроме хеллоуворлдов;

Чувак, ты, мягко говоря, peace, door, ball. Ибо почему-то начиная от ядра, кончая серверами я вижу код на С. И не вижу кода на nim. Ядро на nim можно увидеть? Или ядро это у нас теперь хеловорлд?

Точно так же я пишу модули для своих устройств и почему-то не на nim. Прямо и не знаю даже почему...

людей, исповедующих copypaste-driven programming.

Чувак, ты идиот. Точка. Тут обсуждать даже и нечего. Ибо на хрен copypaste, если есть библиотеки?

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

Да на фиг!

Посмотрел. Поплакал... Поржал...

В общем, кому надо что-то полезное пилить, те на С сидят. Ну а... остальным... Да, в принципе, не особо важно что там остальным. Хоть на nim, хоть на фортране... Один чёрт толка не будет.

anonymous ()
Ответ на: Срьёзно? от anonymous

Re: Срьёзно?

Я знаю С в достаточной мере чтобы писать на нём, но и верилог как живой

Т.е. ничего другого ты таки не знаешь. Зато с надутыми щечками рассказывешь, что тот же сишный прероцессор — отличнейшее решение, а вовсе не костыль из семидесятых. Ну а че - нормальные инклюды ж для для слабаков, пространства имен не нужны ни разу, гигиена в макросах или не дай Бит, действительно мощные макросы – тоже для неосиляторов.

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

Проблема большинства подобных языков в том что они решают в лучшем случае полторы проблемы и за счёт этого выглядят недоделанными.

Заглянул на https://play.nim-lang.org/, скопипастил такой код

type Animal = ref object of RootObj
  name: string
  age: int
var a = Animal(name: "Sparky", age: 10)
a = nil
echo a.name
echo 't'
получаю такой вывод компилятора
Hint: used config file '/nim/config/nim.cfg' [Conf]
Hint: system [Processing]
Hint: in [Processing]
Hint: gcc -c  -w  -I/nim/lib -o /usercode/nimcache/in.o /usercode/nimcache/in.c [Exec]
Hint: gcc -c  -w  -I/nim/lib -o /usercode/nimcache/stdlib_system.o /usercode/nimcache/stdlib_system.c [Exec]
Hint:  [Link]
Hint: operation successful (10989 lines compiled; 1.169 sec total; 17.938MiB peakmem; Debug Build) [SuccessX]
Traceback (most recent call last)
in.nim(6)                in
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Как я понимаю язык защищает от работы с nil. Хорошо, немного поправлю код
type Animal = ref object of RootObj
  name: string
  age: int
var a = Animal(name: "Sparky", age: 10)
a = nil
if a != nil:
    a = nil
    echo a.name
echo 't'
Почему теперь заработало?

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

Как я понимаю язык защищает от работы с nil

SIGSEGV как «защита» - не очень :)

Почему теперь заработало?

a = nil
if a != nil:
    a = nil
    echo a.name
echo 't'

А с чего бы ему не работать, если ветка if вообще не выполняется?

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

что за наркоман это придумывал.

ref object of

пахнет коболом. аж три идентификатора. и видно кто-то ниасилил разницу между object и class, либо обкурился турбопаскалом.

age: int
var a = Animal(name: «Sparky», age: 10)

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

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

А с чего бы ему не работать, если ветка if вообще не выполняется?

Там на сайте есть разделение на два(окошка?). Я скопипастил сюда вывод Compile Log. Может быть я крайне наивен, если думаю что туда должны выводится ошибки компиляции, а не выполнения? Имхо ей место в Program Result

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

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

Первый единственный недостаток - что есть куча сайтов которые любят съедать пробелы в начале строк. Второй единственный недостаток - могут быть проблемы со вставкой в не ide. Третий единственный недостаток - если в код просочатся и пробелы и табы

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

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

Сколько раз говорено, не брать в рот гугловские какашки (go, ангулары, гондроиды).

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

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

type Animal = ref object of RootObj
  name: string
  age: int
var a = Animal(name: "Sparky", age: 10)
a = nil
echo 't'
if a != nil:
    var t = 0
else:
    a = nil
    echo a.name
echo 't'

Compile Log

Hint: used config file '/nim/config/nim.cfg' [Conf]
Hint: system [Processing]
Hint: in [Processing]
in.nim(8, 9) Hint: 't' is declared but not used [XDeclaredButNotUsed]
Hint: gcc -c  -w  -I/nim/lib -o /usercode/nimcache/in.o /usercode/nimcache/in.c [Exec]
Hint: gcc -c  -w  -I/nim/lib -o /usercode/nimcache/stdlib_system.o /usercode/nimcache/stdlib_system.c [Exec]
Hint:  [Link]
Hint: operation successful (10994 lines compiled; 1.342 sec total; 17.938MiB peakmem; Debug Build) [SuccessX]
Traceback (most recent call last)
in.nim(11)               in
SIGSEGV: Illegal storage access. (Attempt to read from nil?)
Program Result
t
Я бесконечно наивен, ибо оказалось что в Compile Log выводится всё что угодно, включая стек вызова при падении

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

что есть куча сайтов которые любят съедать пробелы в начале строк.

И заменять разные комбинации :(;):*( 8) ):o :{ и т.д. на смайлики. Так что спорный аргумент.

Третий единственный недостаток - если в код просочатся и пробелы и табы

Из FAQ

Tabs vs Spaces
This is a non-issue in Nim, as only spaces are accepted as an
indentation character --- a syntax error will be thrown if the
compiler detects tabs being used for indentation

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

Как итог nim если и лучше vala, то очень не на много.

Субъективно, конечно.

vala:

int main ()
{
  print ("Hello World\n");
  return 0;
}
nim:
echo "Hello World"
У Nim меньше буков, для меня это важно, я ведь ленивый. И vala что-то мне не нравиться.

Хотя это все на любителя.

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

Разве что они встречаются реже

Те же IM «с удовольствием» такого навставляют :)
Ну и код со съеденными пробелами по-любому читается заметно хуже, поэтому на практике получается, что или сам ресурс вообще «не в тему» или же автор не осилил код-теги/pastebin и ценность его творения, скорее всего, сомнительна.

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

Ну и код со съеденными пробелами по-любому читается заметно хуже

К примеру в go в комплекте идёт программа форматирующая код. Правда он ломается от плохого форматирования не намного хуже чем python

или сам ресурс вообще «не в тему» или же автор не осилил код-теги/pastebin и ценность его творения, скорее всего, сомнительна.

это да

NextGenenration ()
Ответ на: Срьёзно? от anonymous

Например, под «другим» можно ли подразумевать например, ваяние на верилоге прошивок для FPGA?

Нет.

почему-то начиная от ядра, кончая серверами я вижу код на С.

Я говорил, что Си - говно, а не что у него есть лучшие альтернативы в его нише.

Ибо на хрен copypaste, если есть библиотеки?

Не всё есть в библиотеках. Да и сишные библиотеки - это отдельная песня. Все эти вечные сношения с void* и касты - очень современно, ога.

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

ЛОЛШТО?!?

Например, под «другим» можно ли подразумевать например, ваяние на верилоге прошивок для FPGA?

Нет.

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

Впрочем, на хрен я распинаюсь-то? Sapienti sat, остальные лесом.

Я говорил, что Си - говно, а не что у него есть лучшие альтернативы в его нише.

Простите, а кому какая разница что там говорит безграмотный говнокодер? С офигенен. С развивается, новые стандарты и рассматриваются и принимаются, в gcc внестандартные вещи появляются для моего удобства. С позволяет решать задачи вполне экономичным образом. У Вас проблемы с С-кодом? Читайте буквари, чукча. У Вас проблемы с безопасностью С-кода? Опять же читайте, чукча, буквари. И да, откройте уже для себя тот же splint в части безопасности С-кода и бросьте под... калывать.

Не всё есть в библиотеках. Да и сишные библиотеки - это отдельная песня. Все эти вечные сношения с void* и касты - очень современно, ога.

Не понял. Т.е., Вы не в состоянии написать свои библиотеки для своей предметной области (не знаю что именно Вы там говнокодите и боюсь даже спрашивать)? Или Вы считаете что язык программирования обязан Вам предоставлять библиотеки на все случаи Вашей, поверьте мне, бесперспективной жизни? Ну так это не так. Часть вещей можно найти в сторонних библиотеках. А вот часть вещей нужно написать для своих задач самостоятельно. Сюрприз, как я понимаю? И при чём здесь копипаста в таком случае? Потому что Вы свои привычки говнокодера транспонируете на других? Вон из профессии в таком случае.

Что значит «современно» или «не современно»? Я бы Вас например, уволил к херам собачьим в течении 15 минут. Ибо Вам важнее не решение задачи в практической плоскости, а какое-то онанирование над программным кодом. На практике же либо код работает, либо нет. Всё остальное есть ложь, 3.14здёж и наглейшая провокация.

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

Я тоже ленивый.

У Nim меньше буков, для меня это важно, я ведь ленивый.

Подсказываю. В vim и gvim есть такое расширение как snipmate. Букв ну оооочень мало требует на этапе редактирования кода. Зачем нуно придумывать новый язык, если вполне возможно просто ограничиться расширением редактора?

Пользуйся, не благодари.

anonymous ()