Доступен (https://nim-lang.org/blog/2018/09/26/version-0190-released.html) релиз языка системного программирования Nim 0.19.0 (https://nim-lang.org). Язык использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Регистр написания символов в идентификаторах не учитывается. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL). Код проекта поставляется (https://github.com/nim-lang/) под лицензией MIT.
В новой версии представлено два нарушающих совместимость изменения в обработке строк и последовательностей. Вместо значения "nil" строки и последовательности теперь по умолчанию принимают значения "" и @[]. Доступ к нулевому символу, сигнализирующему об окончании строки, отныне не является корректной операцией и приводит к выводу ошибки. Для выборочного включения экспериментальных возможностей предложена pragma experimental и опции командной строки (одного общего переключателя для активации всех экспериментальных функций теперь нет). Кроме самого языка также доступен связанный с ним пакетный менеджер Nimble 0.9.0 (https://github.com/nim-lang/nimble/blob/master/changelog.mar...), в котором пересмотрен процесс создания гибридных пакетов.
URL: https://nim-lang.org/blog/2018/09/26/version-0190-released.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=49355
Фраза "Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript."
несколько дика...компиляция- это когда с высокоуровневого на низкоуровневый или машинный код.
а с высокоуровневого на высокоуровневый- это должно называться как-то иначе.
Как насчет: "Исходный код на языке Nim транслируется в представление на C, C++ или JavaScript"?
плохо.
Трансляция, компиляция, интерпретация- все это подразумевает изменение уровня языка.Для изложения того же самого на таком же уровне но на ином языке - следует использовать "переводится" или на иноземный манер "портируется" например "код на языке Ява переводится на язык Бэйсик" или "код на языке Лисп портируется на Го"
А как насчёт термина "двоичная компиляция"? Если считаешь, что глупость, плюнь в лицо МЦСТ.
Наследники советского канцеляризма еще и не такое выдумают...
Сколько тебе годков, вьюноша, чтобы рассуждать о «советском канцеляризме»?
Трансляция и интерпретация точно не подразумевают. Да и компиляция не обязательно.
Называется Transpiling
О. есть таки такое слово...
> компиляция- это когда с высокоуровневого на низкоуровневый или машинный код.
> а с высокоуровневого на высокоуровневый- это должно называться как-то иначе.Ну давай ты будешь тогда называть это не компиляцией, а канпеляцией. Ну чтоб различать. Ведь всем очень важно (важнее базовых физиологических потребностей!) различать, кто куда переводится. И тут выскочишь ты на белом коне и предложишь новое слово: канпеляция.
В отчественной печати для этого принят термин "трансляция".
https://ru.wikipedia.org/wiki/ТрансляторИ я немного удивлен общим уровнем образованности в таких элементарнейших вещах в комментариях.
образованные тут не ходят
> образованные тут не ходятСамокритично конечно, но попрошу говорить за себя.
> И я немного удивлен общим уровнем образованности в таких элементарнейших вещах в комментариях.И правда, ведь всем образованным людям известно, что образование можно получить только на Великом и Могучем!
Если для тебя великий и могучий чужой, то чего ты тут делаешь?
> Если для тебя великий и могучий чужой,Да-да, образование можно получать только на "рідної мови"! Иначе ведь не патриотично!
Да и самообразование на буржуйском только для буржуев (нормальные люди буржуйский не учуть)!
> то чего ты тут делаешь?Ловлю лулзы с таких как ты, прогуливавших логику.
Ты ж на "чужие" ресурсы не ходишь, да и на буржуйском небось ничего не читаешь?
> Да-да, образование можно получать только на "рідної мови"! Иначе ведь не патриотично!
> Да и самообразование на буржуйском только для буржуев (нормальные люди буржуйский не учуть)!Сам придумал — сам опроверг. Молодец, рисуй звёздочку.
> Ловлю лулзы с таких как ты, прогуливавших логику.
> Ты ж на "чужие" ресурсы не ходишь, да и на буржуйском небось ничего не читаешь?Второй раз один приём. Ты все свои фантазии в ранг фактов возводишь, иннословный лулзолов?
>> Если для тебя великий и могучий чужой, то чего ты тут делаешь?
> Сам придумал — сам опроверг. Молодец, рисуй звёздочку.
>> Если для тебя великий и могучий чужой, то чего ты тут делаешь?
> Второй раз один приём. Ты все свои фантазии в ранг фактов возводишь,Экий ты самокритичный!
> как-то иначе.Трансляция?
"транспилируется" - тебе полегчало?
>Регистр написания символов в идентификаторах не учитывается.Сколько это недоразумение можно повторять из новости в новость? Это не соответствует действительности. Сам не поленился и проверил в v 0.18. Вывод: различается и для ключевых слов, и для переменных пользователя.
> Вывод: различается и для ключевых слов, и для переменных пользователя.Там всё более хитро. Различается только регистр первого символа в идентификаторе, а остальные нет. А подчёркивания вообще игнорируются.
https://nim-lang.org/docs/manual.htmlTwo 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("_", "").toLowerAsciiThat 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
Я хочу такой травы тоже, которую курили разработчики этого языка.
> Я хочу такой травы тоже, которую курили разработчики этого языка.Ну это вообще-то попытка угодить "и вашим и нашим", т.е. любителям "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.
>
расходимся, нет webasm, не взлетит!
да вроде есть
один из примеров: https://www.spiria.com/en/blog/web-applications/webassembly-nim
Главный вопрос: "Зачем???".
Ответить то - несложно. Си превратился в маркенг: кто кого фишками заалит игнорируя надёжность и/или производительность. А разросшийся стандарт С++ - (и без доп.библиотек ) уже "монстр".Но... «зачем» так?!....................
Си ни во что не превратился - каким был, таким остался.А вы путаете С++ и С. Стыдно.
Враньё. Ничего не путаю. (И по п.1.тоже - враньё).
FIXED+Дополнил мысль:
Ответить то - несложно. Си[++] превратился в маркетинг: кто кого фишками завалит... - игнорируя надёжность и/или производительность.
А разросшийся стандарт С++ - (и без доп.библиотек ) уже "монстр".
Как компиляторы так и сами библиотеки - такое ощущение что, финансирутся производителями оборудования/ОС - чтобы всё сильней тормозить / всучивать новое, и АНБ - чтобы всё время были новые дыры (в т.ч.и под предлогом поддержки 10-100-500 архитектур).Это просто отвратительно, что за столько десятилетий - даже крупнейшие OSC компиляторы
- дырявейший и глючнейший шлак, который к тому же чтобы собрать нужно подключить и задействовать ещё 10-100-500 такого же "добра"...
А, rolling-release?... Сейчас для надёжности кодогенерации получатся лучше взять любой древний (и пусть заглюченный)проприетар компилятор времён дораспространенияя сети и частых обновлений(они же маркетинговая привязка к производителю - для покупки лицензии пользователями... т.е.баги - запланированны на вечно) - давно остановшейся в развитии - и просто наблюдая учитывать его баги, по крайне мере при его релизе бетатест заведомо куда интенсивней проводился чем у любых OSC(и позжих не-OSC), да и ведь к нему точно в обновлении не будет нового внепланново... ВДРУГ (и что будет видно - вовсе не обязатено сразу при обновлении). Таже проблема даже с ассемблерами.
Сейчас нету ни одного гарантированного безбагового компилятора, даже ассемблеры, т.е.код которого был бы быстро проверяем. Чтобы быть уверенно в отсутствии подлога свинью нужно писать ...в кодах! Но, это не продуктивно и само по себе сверхрисково.
Достали. Меня давно жутко достали баги криворуких авторов компиляторов, когда ты бывает недели тратишь в поисках бага, тем более когда в чужом говнокоде давно написанном(а, не с нуля - поэтапно), а это оказывается компилятор - "ой извините[, в новой версии - вот так]"...Но, по языку этому - правильней спросить: «зачем» же так?!...
У Nim-а есть свою плюси, например AST макросы на уровне лиспа. Среди компилируемых и строго типизированных языков это редкость
Никто про полное отсутвие плюсов и не говорил же. Они всегда есть - в ч.н.кому то.
Вопрос тут скорей о устраиваемости их - всем или хотя бы большинству, хотя бы просто многим.Любой Си поддержиет макросы, в том числе косвенно - через template и даже перегрузку операторов.
Ассемблеры ещё более изощрённые в макросах.
Но, AST макросы совсем уж какая то дичь. Тут то на обычные СИ макросы часто гонят когда они напсианны кем то иным, да и самому налажать легко - а, уже ещё сильней расширять их сферу применения...
>По аналогии с Python в Nim в качестве разделителей блоков применяются отступы.Ну и правильно. Сделали бы как надо, никто бы о Nёm и не говорил.
Несмотря на большую лаконичность, к сожалению, отступы это ещё одна "палка которая периодически стреляет в ногу". Вообще же отступы и лаконичность из-за них - хоть и самый заметный, но совсем не самый большой плюс у Python, в сравнении с Сями. Самый главный там - проще синтаксис. Тем более нету кучи версий компилятора со своими уникальными [недокументированными] конкурентными фишками... отсутствующими или работающими иначе у каждого другого. Да и стандарт языка как я не настолко туманен что, даже хочешь char будет знаковым, нет? Ну, дело твоё... (и ведь делали, маркетингово). И т.д. Да даже помню была непредопределанна последовательнсоть вычисления в выражении... Это и правда издёвка, "стандарт", а не стандарт! В итоге каждый реально всегда сидел в реальном стандарте - производителя компилятора, причём понятно версие неконстантном.Ну, да пока проще... (Си[++] когда то тоже был синтаксически очень лаконичен, "прогресс" тут как тут).