URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 112184
[ Назад ]

Исходное сообщение
"Новая версия языка программирования Nim 0.17.2"

Отправлено opennews , 08-Сен-17 22:52 
Состоялся (https://nim-lang.org/blog/2017/09/07/version-0172-released.h... релиз языка системного программирования Nim 0.17.2 (https://nim-lang.org), нацеленного обеспечение  высокой производительности, переносимости и выразительности кода. Язык использует (https://ru.wikipedia.org/wiki/Nim) статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Код проекта поставляется (https://github.com/nim-lang/Nim) под лицензией MIT. Кроме того, доступен релиз пакетного менеджера nimble 0.8.8 (https://github.com/nim-lang/nimble/blob/master), применяемого для распространения модулей на языке Nim, а также запущен новый раздел документации (http://devdocs.io/nim/).

Исходный код на языке Nim  компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора.
По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Регистр написания символов в идентификаторах не учитывается. Поддерживаются средства метапрограммирования (https://ru.wikipedia.org/wiki/%D0%9C%D0%... и возможности для создания  предметно-ориентированных языков (DSL).


В новой версии устранена важная ошибка в сборщике мусора, приводящая к крахам процессов. Из новых возможностей отмечается  поддержка файлов ".nimble-link", реализованных для обеспечения работы новой команды пакетного менеджера "nimble develop", позволяющей связать существующую копию пакета с заданной установочной директорией без необходимости переустановки пакета после каждого изменения.


URL: https://nim-lang.org/blog/2017/09/07/version-0172-released.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=47160


Содержание

Сообщения в этом обсуждении
"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 08-Сен-17 22:52 
Наверно Платов из Xored проспонсировал

"Новая версия языка программирования Nim 0.17.2"
Отправлено Онаним , 09-Сен-17 02:38 
Интересно, он в дурку еще не попал? Его раздутое самомнение и так было на грани разумного. А недавно его прилюдно носом макнули в его же продукты жизнедеятельности.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Омномним , 09-Сен-17 15:28 
> Интересно, он в дурку еще не попал? Его раздутое самомнение

Так не раздувайте ещё сильнее. Забудьте про него.


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 18:27 
> Наверно Платов из Xored проспонсировал

Ага. "Полное обеспечение ... жителя Германии". $250 ему там как раз на медстраховку и 20 булок хлеба хватит.


"Новая версия языка программирования Nim 0.17.2"
Отправлено Степаныч , 09-Сен-17 23:10 
https://ebanoe.it/2017/08/30/xored-platov-vs-adamovsky/

"Новая версия языка программирования Nim 0.17.2"
Отправлено A.Stahl , 08-Сен-17 23:37 
Мало того, что язык нелеп (создан с оглядкой на Pascal, C++, Python и Lisp), так ещё и "код на языке Nim компилируется в представление на C, C++ или JavaScript", но при этом "нацеленного обеспечение высокой производительности, переносимости и выразительности кода" и что же мы получаем: "производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора".
Паровоз Стефенсона почти вечный двигатель, если не учитывать закон сохранения энергии.
П-ф-ф-ф-ф.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним84701 , 09-Сен-17 00:12 
> но при этом "нацеленного обеспечение высокой производительности, переносимости и выразительности кода" и что же мы получаем:
> "производительности близкой к Си, если не учитывать затраты на выполнение сборщика  мусора".

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

Вообще-то в сабже других проблем хватает (в т.ч. из-за излишнего "замеса"/"заимствований"), но вот как раз делать все ручками никто не запрещает: "-d:useMalloc" для использования сишного дефолтного аллокатора и "--gc:none" для полного отключения сборщика. Соответсвующие типы там есть:
https://nim-lang.org/docs/manual.html#types-reference-and-po...
> Nim distinguishes between traced and untraced references. Untraced references are also called pointers.
> Traced references point to objects of a garbage collected heap, untraced references point to manually
> allocated objects or to objects somewhere else in memory.

...
> Traced references are declared with the ref keyword, untraced references are declared with the ptr

..
> To allocate a new traced object, the built-in procedure new has to be used.
> To deal with untraced memory, the procedures alloc, dealloc and realloc can be used.

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


"Новая версия языка программирования Nim 0.17.2"
Отправлено seyko , 09-Сен-17 00:38 
Язык вырос как ответвление от FreePascal. Со временем стал довольно сложным. Читать получившийся на выходе код С-программы тоже непросто. В этом отношении vala гораздо приятнее. А в остальном нормально. Сборку мусора можно не использовать или приостановить на время. Генерация javascript и c++ тоже можно считать дополнительным преимуществом. Были пробы с генерацией на выходе кода FreePascal. В отличии от go-lang и d-lang исходники компилятора давно на нём самом.

Нелепый язык - это дело непривычки. Скорость выполнения - лучше чем у java. Скорость компиляции -- гораздо быстрее c++ при использовании для компиляции tcc. Переносимость вообще максимальная.

PS: пробовал как-то d-lang v1 под управлением linux 2.4  -- проблемы с потоками не позволили.  Далась эта встроенная многопоточность в современных языках. Даже clib без её поддержки гораздо проще и быстрее.


"Новая версия языка программирования Nim 0.17.2"
Отправлено leap42 , 09-Сен-17 04:57 
> В отличии от go-lang и d-lang исходники компилятора давно на нём самом.

с версии 1.5 go написан на go (актуальная версия - 1.9)


"Новая версия языка программирования Nim 0.17.2"
Отправлено pi , 09-Сен-17 11:31 
исходники компилятора
компилятора
---------с версии 1.5 go написан на go
Чукча не палится

"Новая версия языка программирования Nim 0.17.2"
Отправлено leap42 , 09-Сен-17 12:10 
если вы не успеваете, повторю ещё раз: компилятор языка go написан на языке go, так понятнее?

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 09:40 
>Сборку мусора можно не использовать или приостановить на время. В отличии от go-lang и d-lang исходники компилятора давно на нём самом.

D уже давно написан на D кстати. В плане генерации кода D в разы мощнее. На нем можно в Дишном синтаксисе писать Сишные либы вообще без сборщика мусора если надо. А если нужен GC, то там тоже куча техник есть как его использование минимизировать.

Еще важный момент. На Nim невозможно написать код который будет работать быстрее кода на чистом Си, а на Ди можно в режиме betterC за счет оптимизации разных хвостовых рекурсий и тп. Вряд ли там прирост будет выше пары процентов, но все же.


"Новая версия языка программирования Nim 0.17.2"
Отправлено КО , 09-Сен-17 12:15 
>На Nim невозможно написать код который будет работать быстрее кода на чистом Си

Попадались мне адепты одного языка, которым даже удавалось писать на нем программы, которые работали быстрее, чем программы работающие на ассемблере. Но до сих пор "меня терзают смутные сомнения" ... :)


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 16:29 
> а на Ди можно в режиме betterC за счет оптимизации разных хвостовых рекурсий и тп.
> betterC
> хвостовых рекурсий

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


"Новая версия языка программирования Nim 0.17.2"
Отправлено data man , 09-Сен-17 22:23 
> D уже давно написан на D кстати.

Это неправда! Пруф: https://github.com/dlang/dmd/tree/master/src/ddmd/backend
Кроме того, для компиляции используются closed-source компилятор dmc и, опять же, closed-source C-библиотеки, которые неизвестно как оптимизированы.
Из-за этого, может ли D называться opensource-проектом? :)


"Новая версия языка программирования Nim 0.17.2"
Отправлено JL2001 , 09-Сен-17 23:31 
>> D уже давно написан на D кстати.
> Это неправда! Пруф: https://github.com/dlang/dmd/tree/master/src/ddmd/backend
> Кроме того, для компиляции используются closed-source компилятор dmc и, опять же, closed-source
> C-библиотеки, которые неизвестно как оптимизированы.
> Из-за этого, может ли D называться opensource-проектом? :)

gdc, ldc - изучайте матчасть


"Новая версия языка программирования Nim 0.17.2"
Отправлено data man , 09-Сен-17 23:57 
>gdc, ldc - изучайте матчасть

Они тоже написаны не на D, так что сами изучайте. :)


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 14:11 
Разве не все ранее проприетарные компоненты D стали под Boost License?

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 21:53 
> В отличии от go-lang и d-lang исходники компилятора давно на нём самом.

Так пишете, словно это не недостаток.


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 00:05 
Минусующие потрудятся объяснить? Или непереносимость уже стала премуществом?

"Новая версия языка программирования Nim 0.17.2"
Отправлено freehck , 09-Сен-17 17:25 
Пост, где написано что-то обидное, перепечатана новость и вкорочена шутка ни к селу, ни к городу.
О, да это же A.Stahl в треде! :)

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 00:02 
Я уверен, что имелась ввиду производительность труда при работе с языком.

"Новая версия языка программирования Nim 0.17.2"
Отправлено НяшМяш , 09-Сен-17 00:12 
Это точно не про Nim, синтаксис которого базируется на отступах.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 00:25 
А я вот попробовал этот язык 6 месяцев назад и не жалею. Получил такуй производительность какую хотел (сгенерированный ассемблер такой как надо) в правильных руках работает. Код отлично читается.


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 03:17 
В правильных руках язык ассемблера такое вам покажет, что вы, скорее всего, и не видели.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 09:49 
> в Nim в качестве разделителей блоков применяются отступы

на этом знакомство с языком можно закончить


"Новая версия языка программирования Nim 0.17.2"
Отправлено водила , 09-Сен-17 11:06 
Чем отступы то неугодили? Nim прекрасен тем что похож и такой-же простой как питон, а скорость стремится к Си. Отступы - отличное решение, особенно если таб ставить не 2 символа, а 8. Скобочки - оверхед и пережиток, т.к любой _читабельный_ код пишется иерархически, а не в одну строку, для непонятно чем мотивированной экономит места.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 13:21 
> Скобочки - оверхед и пережиток

Скобочки явно обозначают начало и конец блока. Explicit is better than implicit.


"Новая версия языка программирования Nim 0.17.2"
Отправлено ffirefox , 09-Сен-17 21:23 
Там можно и скобочки, если захочешь.



"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 16:57 
> Чем отступы то неугодили?

Это же стандартный шаблон опеннета - оно мешает копипастерам копипастить^W^W делиться мудростью и заимствовать творческие идеи!
Ведь все знают, что поддержка движками бложиков или форумов тегов для кода редка и сыровата (17 лет всего), а без нее просто съедаются лишние пробелы! А вот то, что вообще почти любой движок нафарширует безтеговый код всякими смайликами и прочим, заменяя разные комбинации двоеточий, скобок и цифр - враки и фантазии чистой воды!
Ну и опять же, все знають, что далеко не каждый, даже дюже навороченный, редактор поддерживает нормальный режим пробелов - а вдруг придется писать код в блокноте? Как тогда? Вот то-то же!



"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 10-Сен-17 14:18 
вы все врети тоже такой себе шаблон

"Новая версия языка программирования Nim 0.17.2"
Отправлено Анонимный Аналитик , 10-Сен-17 16:52 
> вы все врети тоже такой себе шаблон

По теме что-то будет? Или своей головы и знаний нема, без шаблона никак?



"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 11:49 
Пардон за безграмотность, но не подскажет ли кто, что такое "выразительность кода" и как её определить?
(Википедию смотрел, но определения не нашёл).

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 14:12 
Это когда ты самовыражаешься в создании троллейбуса из буханки хлеба, вместо использования языка, предназначенного для конкретной задачи. Вот такая ниша у Nim - быть выразительным.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Mandms , 09-Сен-17 15:22 
Нигде нету определений опубликованных.
Я тоже пока не публиковал.

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

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

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

Плотность - отношение

Строковая площадь - количество строк и колонок кода при записи его в наиболее читабельном виде. В отличие от чистого LOC позволяет проводить честное сравнение

---
В общем это сфера работы проектировщика ЯП особенно ЯП ВУ

При чрезмерном увеличении сем.плотности с какого-то момента падает читабельность
При увеличении подробности кода, спецификативности -- читабельность снова падает но уже резко
падает семантическая плотность из-за колич-ва введенных "мусорных" keyword-ов и синтаксического overhead'а

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



"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 22:55 
Спасибо.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 10-Сен-17 14:16 
Выразительность кода - это субъективное понятие

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 14:41 
>Регистр написания символов в идентификаторах не учитывается.

Для языка, который позиционируется как ЯП системного программирования, это совершенно не допустимо. Это перечёркивает все его преимущества.
Вероятно, подойдёт любителям Паскаля, они же привыкли к case insensetive.


"Новая версия языка программирования Nim 0.17.2"
Отправлено ffirefox , 09-Сен-17 21:42 
Хм... большинство ассемблеров не чувствительны к регистру.



"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 09-Сен-17 23:37 
> Хм... большинство ассемблеров не чувствительны к регистру.

Гхы. Это же стандартный шаблон опеннетных недотроллей: отступы, регистрочувствительность.
https://www.opennet.ru/opennews/art.shtml?num=46611
>>> И это ставит на нём жирный крест.
>> На регистронечувствительном языке, который ещё после это претендует называться языком системного программирования.
> Многие диалекты асма тоже не чувствительны к регистру.
> Я конечно понимаю, эксперту опеннета по системному программированию необязательно знать такие тонкости, но что уважаемый эксперт сказать то хотел?

Возможно, местный эксперт еще отпишется, что асм - это не системный ЯП или не ЯП вообще )

А вот действительно, имхо, неудачное решение как нечувствительность к "_" – никто не упоминает.


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 17:01 
Никто ядра, ну кроме некоторых особо yпоротых Menuet'чиков, и даже микроядра не пишет на ассемблерах. Почему же тогда Керниган и Ричи решили, что Сишечка должна быть регистрочувствительной?

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 17:40 
> Никто ядра, ну кроме некоторых особо yпоротых Menuet'чиков, и даже микроядра не пишет на ассемблерах.

И что? Ассемблеры перестали быть системными?
Кстати, причем тут новомодные минет-осы и не менее новомодные диалекты асмов? Гугли историю создания сишечки, PDP-11, MACRO-11, удивляйся, просвещайся.
Подсказка: регистр в том же MACRO был только один.

> Почему же тогда Керниган и Ричи решили, что Сишечка должна быть регистрочувствительной?

А в огороде бузина, да?


"Новая версия языка программирования Nim 0.17.2"
Отправлено Anonim , 09-Сен-17 23:31 
Видимо не все встречали код, написанный в идиотом в совершенно не логичных регистрах. Хотя, может вы находите удовольствие, используя регистры наугад :-)

"Новая версия языка программирования Nim 0.17.2"
Отправлено ffirefox , 10-Сен-17 02:03 
Да как-то об этом уже давно не думается. Сейчас практически любой проект (команда) начинается с соглашения о стиле кодирования. Кстати, у Nim он тоже есть. Другое дело, когда тянешь себе чужие наработки, то частенько в тексте они выглядят  инородным телом именно из-за разных представлений о "красоте". В этом смысле в Nim очень удобны и нечувствительность к регистру и игнорирование подчёркиваний.

У меня вообще сложилось такое ощущение, что автор хочет сделать Nim комфортным для программистов с любыми привычками. Это и плюс, и минус т.к. может оказаться, что читать чужой будет совсем непросто. Хотя, вот в Go сделали автоматический форматинг и нет проблем: "безобразно, но единообразно" понятно всем. Может и в Nim такое завезут с возможностью форматить в любой стиль.


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 10-Сен-17 00:31 
Что-то Вы господа всесмотрите на какие-то отступы, а я лично вот переживаю завот это уточнение:

> новой версии устранена важная ошибка в сборщике мусора, приводящая к крахам процессов

То есть собрался значит такой великий программист утереть нос всем этим Питонистам, Сиплюсистам, ДжаваХипстерам и ... обос#лся в первый же цикл сборки мусора ...


"Новая версия языка программирования Nim 0.17.2"
Отправлено ffirefox , 10-Сен-17 02:08 
На версию языка посмотрите. А потом ещё пройдитесь по ошибкам LLVM.
Перефразирую Глеба Жеглова: Качество языка определяют не ошибки в реализации компилятора, а в возможности (в том числе своевременно) их исправлять.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 10-Сен-17 02:36 
> То есть собрался значит такой великий программист утереть нос всем этим Питонистам,
> Сиплюсистам, ДжаваХипстерам и ... обос#лся в первый же цикл сборки мусора
> ...

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


type
    Foo = ref object
        s: seq[Bar]
    Bar = ref object
        f: Foo

proc test() =
    var f = Foo.new()
    for i in 0 .. 5:
        f.s = @[]
        for j in 0 .. 5:
            var b = Bar.new()
            b.f = f
            f.s.add(b)

test()


Циклические ссылки особой извращенности. И судя по фиксу, виновата излишняя оптимизация:
https://github.com/nim-lang/Nim/commit/88b65ea957b286bf7225c...
Интересно, анонимный знаток поймет, в чем ошибка ...



"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 10-Сен-17 22:58 
Фу, пакость какая.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 21:15 
Ну так и говорите язык для написания "Hello, world...",
а в случае извращенных ссылок идите в проверенный годами
язык.

В целом может скорректировать таргетинг языка. Сказать,
что он например для обучения. Хотя чем плох для обучения
JavaScript или Python или Java?

В целом я вот не пойму зачем сегодня вообще языки писать.
Может подскажет уважаемый аноним всезнайка, что в нем такого
решающего и отличающего от других? В чем килл фича? Низкие проценты
по кредиту^W стоимости выполнения функций или что?


"Новая версия языка программирования Nim 0.17.2"
Отправлено Анонимный Аналитек , 11-Сен-17 21:46 
> Ну так и говорите язык для написания "Hello, world...",

Не, не буду так говорить.

> Хотя чем плох для обучения
> JavaScript или Python или Java?
> JavaScript или Python

У меня аж хипстодетектор сгорел (

> В целом я вот не пойму зачем сегодня вообще языки писать.

Автор пишет в первую очередь джаст фор фан. Видимо, забыл спросить анона с опеннета, что и зачем ему лучше делать.

> Может подскажет уважаемый аноним всезнайка,

Ну что вы, право слово - до вас мне еще очень далеко. Знание, что, как и зачем нужно правильно скорректировать, писать, делать или не делать всем остальным - все еще не доступно мне, увы! (


"Новая версия языка программирования Nim 0.17.2"
Отправлено Анонимм , 10-Сен-17 11:59 
А что на нем пишут? Или что-то уже написали?

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 10-Сен-17 22:59 
Хелловорлды, тысячи их.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 05:40 
Это тот язык, в котором, не смотря на все возможности метапрограммирования, в стандартной библиотеке до сих пор нет типобезопасного printf? Постойте, и не типобезапасного тоже нет? Или это я просто плохо искал? Тогда ткните меня носом, плз.

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 11-Сен-17 06:03 
Не нужен с его отступами. После питона и так тошно.

"Новая версия языка программирования Nim 0.17.2"
Отправлено None , 13-Сен-17 01:57 
Зачем нужны скобки, если всё равно надо делать отступ

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 12-Сен-17 03:38 
Кто-нибудь может пояснить, зачем нужно все это барахло, если есть няшный Golang с отменной кросскомпиляцией и шикарной многопоточностью, которая создается одним взмахом руки???????

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 12-Сен-17 15:24 
По кросс-компиляции Nim однозначно победит - он будет работать на любой платформе, для которой есть Си компилятор, а, как ты понимаешь, он есть почти для всех существующих платформ :)

"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 12-Сен-17 19:09 
> По кросс-компиляции Nim однозначно победит - он будет работать на любой платформе,
> для которой есть Си компилятор, а, как ты понимаешь, он есть
> почти для всех существующих платформ :)

Ну и как , сидя под Linux , скомпилировать бинарник для виндовса или MacOS?


"Новая версия языка программирования Nim 0.17.2"
Отправлено Аноним , 12-Сен-17 22:00 
>> По кросс-компиляции Nim однозначно победит - он будет работать на любой платформе,
>> для которой есть Си компилятор, а, как ты понимаешь, он есть
>> почти для всех существующих платформ :)
> Ну и как, сидя под Linux , скомпилировать бинарник для виндовса или MacOS?

Как и обычную сишную прогу - молча.
https://nim-lang.org/docs/nimc.html#cross-compilation


cat anon.nim && nim c --cpu:i386 --clang.exe:mingw32-gcc --clang.linkerexe:mingw32-gcc --os:windows anon.nim && wine ./anon.exe
echo "Hello Opennet"
Hint: used config file
...
Hello Opennet