The OpenNET Project / Index page

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

Для Nim 3.0 развивается новый компиляторный бэкенд на основе формата NIF

06.04.2025 18:29

В процессе разработки версии 3.0 языка программирования Nim ведётся работа над обновлённым компилятором, использующим промежуточный формат NIF (Nim Intermediate Format). В новом компиляторе будет решено несколько технических задач, среди которых улучшение инкрементальной компиляции и упрощение управления зависимостями между модулями. Дата релиза Nim 3.0 пока не определена.

Согласно спецификации NIF, опубликованной в репозитории проекта, новый формат позволяет хранить код в виде абстрактного синтаксического дерева (AST), разделяя пространства имён для встроенных конструкций и пользовательских имён. Это обеспечивает гибкость при добавлении новых ключевых слов и упрощает интеграцию с инструментами разработки.

Компилятор Nim 3.0 будет разделён на несколько этапов:

  • Nifler - преобразование исходного кода Nim в NIF с учётом конфигурационных файлов.
  • Nimony - семантический анализ, включая проверку типов и разрешение макросов.
  • Hexer - оптимизация кода, включая инлайнинг итераторов и поддержку управления памятью (ARC/ORC).
  • NIFC - генерация кода для C/C++ с учётом особенностей целевой платформы.

Основные улучшения включают:

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

В спецификации также отмечается, что NIF сохраняет информацию о позициях элементов кода (номера строк и столбцов), что упрощает отладку и интеграцию с IDE.

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

  1. Главная ссылка к новости (https://github.com/nim-lang/ni...)
  2. OpenNews: Релиз языка программирования Nim 2.0
  3. OpenNews: В openSUSE обеспечена полная поддержка языка программирования Nim
Автор новости: Аноним
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63031-nim
Ключевые слова: nim
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (104) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 18:42, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора

    В nim к слову их несколько. Включая arc/orc счётчики ссылок, которые работают даже на обычных микроконтроллерах без rtos.
    Если gc не нужен, его можно и вовсе отключить. Стандартная библиотека от него не зависит.

     
     
  • 2.6, Карлос Сношайтилис (ok), 19:16, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    К сборщикам мусора принято относить компоненты языка, что делают stop the world. Иначе С, С++ и Rust тоже языки с GC, т.к. имеют (или могут иметь) счётчики ссылок.
     
     
  • 3.9, Аноним (9), 19:42, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > компоненты языка

    Может быть всё таки компоненты рантайма?

    > К сборщикам мусора принято относить stop the world

    Это где так принято?

     
     
  • 4.18, Аноним (18), 20:31, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В ябловском свифте, то ли ушлыми маркетолухами, то ли самими фанатами ябла Рас... большой текст свёрнут, показать
     
     
  • 5.75, n00by (ok), 11:43, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > До этого, почему-то считалось:
    > https://homes.cs.washington.edu/~bodik/ucb/cs164/sp12/lectures/22-garbage%;20collection-sp12.pdf
    > https://www.researchgate.net/publication/2534368_A_Pure_Reference_Counting_Gar

    Первая ссылка - 2012-й год. Задолго до этого подсчёт ссылок считался "управлением жизни объекта" https://learn.microsoft.com/en-us/windows/win32/com/rules-for-managing-referen (смотреть следует дату не публикации, а реализации COM - это прошлый век). Плюс, это учебный курс, где сравнение различных подходов полезно (и при подсчёте ссылок остаётся в прямом смысле мусор, если ссылки циклические, и не предпринимать мер).

    По второй ссылке что, если в двух словах? Впрочем, оно опять не "до", а "после".

     
  • 3.16, Аноним (16), 20:22, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    счетчик ссылок и есть алгоритм сбора мусора..
     
     
  • 4.73, n00by (ok), 11:30, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это алгоритм автоматического управления памятью, как и сборка мусора.
     
  • 3.19, Аноним (18), 20:39, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > К сборщикам мусора принято относить компоненты языка, что делают stop the world.

    В (C)Python, перле, луа тоже нет "stop the world". Внезапно, да?

    > Иначе С, С++ и Rust тоже языки с GC, т.к. имеют (или могут иметь) счётчики ссылок.

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

     
     
  • 4.32, Аноним (16), 23:05, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В Питоне есть GC и stop the world тоже
     
     
  • 5.34, Аноним (18), 23:35, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > В Питоне есть GC и stop the world тоже

    В питоне - основным идет "счетчик ссылок".
    Плюс опциональный (отключаемый) GC для сборки циклических зависимостей - без него никаких "stop the world" (ну, типа - потому что на самом деле затык будет еще и в стандартной библиотеке аллокатора, т.е. тут даже с ручным malloc-free можно вполне "нарваться").
    Прям как в сабже (ARC и ORC).

     
  • 3.22, Нуину (?), 21:09, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Иначе С, С++ и Rust тоже языки с GC, т.к. имеют (или могут иметь) счётчики ссылок.

    Там счетчики ссылок работают детерминирванно: четко сказано когда будет вызван "деструктор", если счетчик ссылок станет 0. В питоне, например, он вообще может быть не вызван.

     
     
  • 4.41, Аноним (41), 07:05, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты не можешь знать, что вот именно в этом месте счетчик станет нулевым
     
     
  • 5.49, Аноним (-), 08:30, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Ты не можешь знать, что вот именно в этом месте счетчик станет нулевым

    Тем не менее, неотключаемый GC - это очень четкая граница водораздела, отделяющая НеСистемных от системных. Контроль над происходящим В ДЕТАЛЯХ - это и есть системное программирование. А если вы все это не хотите - апликухи пишите, используя прослойки "от богов" которые за вас и разберутся как вон то внутрях работало.

     
     
  • 6.76, n00by (ok), 11:56, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как можно проконтролировать отсутствие фрагментации кучи при вызовах malloc() и free()?
     
     
  • 7.87, 12yoexpert (ok), 14:20, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://habr.com/ru/companies/otus/articles/889020/
     
     
  • 8.99, n00by (ok), 16:16, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Надо взять за правило не ходить по ссылкам без пояснений Сорцы glibc и без них... текст свёрнут, показать
     
     
  • 9.114, 12yoexpert (ok), 17:19, 07/04/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 9.115, 12yoexpert (ok), 17:20, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    странно, что ты сам не сходил и не почитал те сорцы, а побежал на опеннете вопро... текст свёрнут, показать
     
  • 7.94, Аноним (94), 15:26, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Как можно проконтролировать отсутствие фрагментации кучи при вызовах malloc() и free()?

    Не делая эти вызовы, например! В си как системном ЯП так можно. То-есть я сам решаю какая аллокация памяти будет в моей программе. Для фирмвар вполне нормально "static memory allocation" практиковать. Когда все заранее раздали статичкски - и тогда не только нет непредсказуемых лагов, да и закончиться память - не может. Такого понятия просто нет.

    Остаются конечно еще рекурсии и VLA всякие, но сие при нужде опять же обязательно не делается. И при нужде гасится на уровне анализатора или ключей компилера вообще.

     

  • 1.5, Аноним (5), 19:15, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем нужны языки высокого уровня, компилирующиеся в другие языки высокого уровня?
    Разрабам этой штуки не даётся компиляция в IR llvm/gcc?
     
     
  • 2.8, 12yoexpert (ok), 19:39, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    1) попиши на нём и узнаешь, зачем
    2) автор языка так не хочет. у него есть какие-то аргументы, но всем на них закономерно пофиг
     
     
  • 3.90, Аноним (90), 15:09, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "Попишите чтобы понять нафиг поделка вообще нужна" и "какие-то аргументы" - такой себе маркетинг.
     
     
  • 4.113, 12yoexpert (ok), 17:18, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    а это не раст, чтобы тебе что-то продавать
     
  • 2.46, Андрей (??), 08:11, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Дешевле получить более высокоуровневые фишки с интеграцией широко распространённых и кроссплатформенных языков/инструментов. Фактически, если это всё ручками писать/переписывать(алгоритмы преобразования кода, оптимизации), то автоматически закладываешь 10+ лет отставания, всё это время отставая одновременно и по скорости внедрения новых возможностей, так и по скорости работы кода. Плюс бонусом транспилируя в Си/плюсы можно сверхлегко получить интероперабельность с ними, вместе со всеми библиотеками на нём.
     
  • 2.65, Аноним (65), 10:17, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    У llvm есть фатальные недостатки, тут обсуждали https://www.linux.org.ru/forum/development/17699718
     
     
  • 3.82, Аноним (-), 13:24, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Читал тот тред.
    Аргументов "чем плох llvm" так и не увидел.
    Куча безосновательных "а давайте все транслировать в сишку, а потом компилять".
     
  • 2.77, n00by (ok), 12:01, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Потому что Си и создавался, что бы в него "компилировали" другой язык высокого уровня - "препроцессор языка Си". Следующим широкоизвестным ЯВУ, "компилирующимся" в Си был Cfront Страуструпа.
     
     
  • 3.100, Аноним (-), 16:19, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Потому что Си и создавался, что бы в него "компилировали" другой язык высокого уровня

    Не перевирай.

    >Следующим широкоизвестным ЯВУ, "компилирующимся" в Си был Cfront Страуструпа.

    Самый первый "компилятор языка C++" был ООП надстройкой над компилятором Си. Причина банальная, Страуструп не умел писать компиляторы. Чтобы писать компилятор надо знать архитектуру компьютера, машинные коды, ассемблер. А Страуструп знал только высокоуровневые языки.

     
     
  • 4.103, n00by (ok), 16:34, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>Потому что Си и создавался, что бы в него "компилировали" другой язык высокого уровня
    > Не перевирай.

    5.1.1.1 Program structure

    1 ... After preprocessing, a preprocessing translation unit is called a translation unit.

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

    >>Следующим широкоизвестным ЯВУ, "компилирующимся" в Си был Cfront Страуструпа.
    > Самый первый "компилятор языка C++" был ООП надстройкой над компилятором Си.

    Он был "препроцессором", как и обсуждаемый транслятор из новости.

    > Причина
    > банальная, Страуструп не умел писать компиляторы. Чтобы писать компилятор надо знать
    > архитектуру компьютера, машинные коды, ассемблер. А Страуструп знал только высокоуровневые
    > языки.

    Какая чушь.

     
     
  • 5.107, Аноним (107), 16:47, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Причина банальная, Страуструп не умел писать компиляторы.
    > Какая чушь.

    Интересно, а что бы на это сказал сам Страуструп?
    Вдруг что-то вроде
    "C plus plus has been evolving from day one because it's design Choice back in about
    1979
    because I realized that there was no way I could build a perfect language from scratch
    I didn't have the resources I didn't have the knowledge and the world changes all along"
    ?

    Из недавнего интервью
    youtu.be/eLLi0nWMUMs?t=208

     
  • 2.95, Аноним (95), 15:57, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Любой компилятор первым делом делает лексический парсинг в AST. Они просто стандартизировали этот этап, чтобы можно было обработать AST любыми внешними инструментами. До IR тут еще даже не подошли.
     

  • 1.7, 12yoexpert (ok), 19:38, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    не решает главную проблему языка: отсутствие отладчика. автору предлагали реализовать клиент к gcc, безуспешно
     
     
  • 2.11, Аноним (9), 19:50, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Забей на отладчик, выводи всё в консоль.
     
     
  • 3.14, Аноним (14), 20:21, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    640 KB и printf хватит всем.
     
     
  • 4.21, Аноним (21), 21:04, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В Боинге тоже так думали. Пока не перестали так думать.
     
     
  • 5.50, Аноним (-), 08:32, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > В Боинге тоже так думали. Пока не перестали так думать.

    Так и представляю себе - прогер прицепил дебагер, степает программу... боинг застывает в воздухе, ждет пока программер отстепает код бортового компьютера :). Вот была бы красота, если б это еще и катило. Жаль что законы физики хрен убедишь...

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

     
     
  • 6.83, Аноним (-), 13:32, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Боинг большой)
    Там есть много систем и далеко не все должны фурычить в риалтайме.
    Например сортир или мультемедийная система.

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

     
     
  • 7.102, Аноним (-), 16:33, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А таки довольно многие - должны Простите но реальный мир не будет ждать пока вы... большой текст свёрнут, показать
     
  • 2.23, Аноним (23), 21:09, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    К GDB может?
     
     
  • 3.30, 12yoexpert (ok), 22:46, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    нет, ему предлагали реализовать компиляцию через уже существующие компиляторы, например, gcc (хотя автор работает в амазон, так что, думаю, если и будет делать, то через llvm, чисто всем назло. так же, как он свои книги продаёт)

    автор настаивал на какой-то нелепой фигне, уже не помню. типа, мол, зачем, если можно выплюнуть C/C++, obj-c или java и компилять или запускать чем хочешь. а то, что в gdb при отладке помойка, - это почему-то его не волнует

     
  • 2.27, Аноним (27), 22:00, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Этот шаг, в первую очередь, направлен на улучшение инструментария языка программирования (на что неоднократно ныли неосиляторы без плагина под их любимую IDE). Каким местом вы читали новость?
     
     
  • 3.29, 12yoexpert (ok), 22:44, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    при чём тут направление шага и чтение новости, если описанное не решает главную задачу - отсутствие отладчика?
     
     
  • 4.43, Аноним (27), 07:08, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При том, что для нового бэкенда можно будет улучшить состояние отладчика, как и lsp и т.д.

    Можете почитать ветку форума: https://forum.nim-lang.org/t/12693

     
     
  • 5.59, 12yoexpert (ok), 09:44, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > However, I expect in practice we'll just use NIFC-to-LLVM instead of NIFC-to-C and get the typical debugging experience of all the other compiled languages.

    таки я был прав, чел завендорлочит всё на llvm

     
  • 2.91, Аноним (90), 15:11, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > отсутствие отладчика. автору предлагали реализовать клиент к gcc, безуспешно

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

     

  • 1.13, Аноним (14), 20:21, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > если не учитывать затраты на выполнение сборщика мусора

    А если учитывать?

     
     
  • 2.42, Аноним (41), 07:06, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, давай лучше не учитывать. Выгодно сравнивать скорость, когда память не особождается
     

  • 1.25, Аноним (25), 21:19, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Они что собираются программировать на этом языке одну систему на все платформы?
    Или "фактический код мы запишем за Вас"
     
  • 1.26, Нуину (?), 21:34, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Насколько хорошо подходит промежуточное представление, чтобы генерировать из него высокоуровневый Си код? Он же высокоуровневый в итоге?

     
  • 1.31, 12yoexpert (ok), 22:51, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    интересно, насколько описанное в mastering nim после этого превратится в тыкву, там немаленькая часть книги касается именно пайплайна компиляции. язык и так страдает от полного отсутствия высокоуровневой документации, по сути есть только форум и дока на api
     
  • 1.33, Vorobej (?), 23:29, 06/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Язык системного программирования, компилирующий в язык системного программирования... а JavaScript и без того высокоуровневый. Да еще макросы, всё усложняющие. И графики своей нет, как есть у Питона. Печально, но это провал (
     
     
  • 2.35, Нуину (?), 23:48, 06/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > а JavaScript и без того высокоуровневый

    Возможность сложить строки с числами и оператор тройного равенства - это сколько по шкале высокоуровневости?

     
     
  • 3.37, 12yoexpert (ok), 02:36, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    по сравнению с perl 6 это практически asm
     
  • 3.105, Аноним (-), 16:36, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> а JavaScript и без того высокоуровневый
    > Возможность сложить строки с числами и оператор тройного равенства - это сколько
    > по шкале высокоуровневости?

    Да не сильно много. Склыдывать строки вообще что попало умеет по сути.

     
     
  • 4.108, Аноним (107), 16:52, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Возможность сложить строки с числами и оператор тройного равенства - это сколько  по шкале высокоуровневости?
    > Да не сильно много. Склыдывать строки вообще что попало умеет по сути.

    Это до момента
    console.log(NaN === NaN); // Output: false
    console.log(+0 === -0); // Output: true

    или (!+[]+[]+![]).length === 9

    Вообще там куча приколов, чего только banana стоит.

     
     
  • 5.112, 12yoexpert (ok), 17:16, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > console.log(NaN === NaN); // Output: false
    > console.log(+0 === -0); // Output: true

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

     
  • 2.36, Аноним (36), 01:27, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это какая графика есть у питона? Биндинги к С/С++?
     
     
  • 3.39, Аноним (39), 04:49, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Во во, тоже удивляюсь. Иногда хочется гуй на питоне сделать, думаю, мож появилось чего, иду гуглить, а там все тот же список биндингов к кутям и прочий пайгейм с тсл/тк. Грустно, вот как раз на питоне самое то графику делать, а всякое высокопроизводительное уже в нативе.
     
     
  • 4.48, Аноним (-), 08:27, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Во во, тоже удивляюсь. Иногда хочется гуй на питоне сделать, думаю, мож появилось
    > чего, иду гуглить, а там все тот же список биндингов к кутям и прочий пайгейм с тсл/тк.

    Вон там RenPy есть. Но лучше б он биндингами к годоту был, и то менее позорно было бы... :)

     
     
  • 5.97, Аноним (97), 16:08, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > RenPy

    Там под капотом тот же PyGame.

     
  • 3.96, Аноним (97), 16:07, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Гражданин вероятно имеет в виду питонобиндинги к Tcl/Tk.
     
  • 2.92, Аноним (90), 15:12, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Это какая такая своя графика у питона? Только не говори что tkinter, который, во-первых, не своя, во-вторых графикой-то не назовёшь.
     

  • 1.38, Аноним (38), 04:00, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Пытался писать что-то на нём А так как я начинающий программист, то использую м... большой текст свёрнут, показать
     
     
  • 2.78, n00by (ok), 12:18, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Очень ценный опыт. Насколько понимаю, такой синтаксис сделали намеренно, что бы "научить начинающих хорошему". В итоге люди уходят из-за траты времени на выравнивание. Оно, конечно, важно, но ещё важнее, что бы программа работала, так? Остаются "эстеты".
     

  • 1.40, Аноним (39), 04:51, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Только честно, есть крутые проекты, использующие этот ним(как и какой нибудь д)?
     
     
  • 2.44, Аноним (-), 07:37, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/search?q=language%3ANim&type=repositories&s=&o=desc

    Не всё крутое, но посмотреть есть что.

     
  • 2.45, Аноним (27), 07:45, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    https://github.com/niv/neverwinter.nim
     

  • 1.47, Аноним (-), 08:26, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Язык Nim ориентирован на решение задач системного программирования,
    > использует статическую типизацию и создан с оглядкой на такие языки, как Python, Ada и Modula

    Ориентирован на задачи системного программирования - поэтому ориентировался на то что для системнщины меньше всего подходит и используется. Оок!

     
  • 1.51, Аноним (51), 08:36, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Согласно спецификации NIF, опубликованной в репозитории проекта, новый формат позволяет хранить код
    > в виде абстрактного синтаксического дерева (AST)

    И все это - вообще зачем? Слава объектников не давала покоя, но поскольку это транспилер то объектные файлы не вырисовывались?

     
     
  • 2.56, cheburnator9000 (ok), 09:32, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Там у разработчиков языка и основных авторов популярных библиотек страстная любовь поанонировать на кодогенерацию. Вот пример https://github.com/ba0f3/telebot.nim/tree/master полностью обмазанная возможностями AST. Пока программисты на других ЯП что-то там вручную собирают библиотеку для телеги для json для network и т.д, эти просто описали все API. Такое дебажить очень сложно, да собственно толкового дебага в Nim никогда не было.
     
     
  • 3.79, n00by (ok), 12:39, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Но почему оно требует отладки? Сама идея "генерировать код по описанию" возникла, что бы избежать ошибок при кодировании. То есть при этом либо как-то доказывается корректность, либо генерируются тесты.
     
     
  • 4.85, cheburnator9000 (ok), 13:51, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Но почему оно требует отладки? Сама идея "генерировать код по описанию" возникла,
    > что бы избежать ошибок при кодировании. То есть при этом либо
    > как-то доказывается корректность, либо генерируются тесты.

    Оно не требует. Моя программа бота для телеги когда я пробовал пару лет назад написать - требовала. И вместо отладки там когоденерированная лапша, которая накладывается поверх транспилированной лапши самого ЯП Nim. Ровно такой же проблемой страдает Vala один в один.

    Я лично жду Carbon, но там в разработчиках сплошное LGBT (запрещенная в россии организация (лол)). Ждать еще будем минимум лет 10 если оно не рипнится быстрее.

    Лучше всего дебаг реализован здесь https://plugins.jetbrains.com/plugin/15128-nim но судя по всему разработчик там один да и плагин забросили печально.

     
     
  • 5.88, Аноним (-), 14:37, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я бы не сильно ждал Во-первых это замена для плюсов Carbon is fundamentally a... большой текст свёрнут, показать
     

  • 1.54, cheburnator9000 (ok), 09:25, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Блд. А для Дебага хоть что-то было сделать? Ну хоть что-то?? Там ведь реально дебажить нельзя толком проект. Все через дикие позорные костыли.
     
  • 1.55, Аноним (55), 09:25, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Реалии таковы, что без реальной поддержки со стороны IT гигантов, всё это нафиг никому не нужно! И да, это означает что Rust уже победил все эти zig, vlang и т.д.

    ПС: хотя, тут выше кто-то писал, что автор работает в Амазоне, так что посмотрим, может со временем будут его использовать как Гугл использует Go для решения своих бизнес задач. Хотя опять же, зачем если уже есть Rust!?

     
     
  • 2.57, Аноним (57), 09:33, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Rust уже победил

    Огласите все критерии победы, пожалуйста, я записываю.

     
     
  • 3.61, kravich (ok), 09:54, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Критерии победы Rust заключаются в том, что ты приготовился записывать критерии победы Rust, а не критерии победы Nim или Zig
     
  • 3.62, Аноним (55), 09:55, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я уже огласил самый важный критерий для современного IT (всё остальное вторично!):
    >>> реальной поддержки со стороны IT гигантов <<<
     
     
  • 4.68, Аноним (57), 10:47, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Критерий не засчитан. Непонятно самое главное - над кем/чем объявлена воображаемая "победа". Гиганты тоже могут ошибаться (особенно учитывая кто ими сейчас управляет). Несколько смущает и культура "современной" разработки.
     
  • 4.71, Аноним (57), 11:06, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Можно ли считать, что активная фаза военных действий уже пройдена? Или планируются дополнительные наступательные операции для объявления окончательной победы?
     
     
  • 5.84, Аноним (-), 13:37, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Можно ли считать, что активная фаза военных действий уже пройдена?

    Нет конечно! Все только начинается.
    Пока намечен плацдарм в ядре, планируется высадка и захват территории.
    Сопротивление подавили, хоть и не без потерь.

    > Или планируются дополнительные наступательные операции для объявления окончательной победы?

    Естественно.
    В этом может помочь правительство, недовольное бекдорами от ЖинТиянов.
    Т.е бекдоры должны быть только от родимых Джонов и Смиттов.

     
     
  • 6.89, Аноним (57), 14:58, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Можно ли считать, что активная фаза военных действий уже пройдена?
    > Нет конечно! Все только начинается.
    > Пока намечен плацдарм в ядре, планируется высадка и захват территории.
    > Сопротивление подавили, хоть и не без потерь.

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

    >> Или планируются дополнительные наступательные операции для объявления окончательной победы?
    > Естественно.
    > В этом может помочь правительство, недовольное бекдорами от ЖинТиянов.
    > Т.е бекдоры должны быть только от родимых Джонов и Смиттов.

    Джоны и Смитты - надеюсь, современные вайб-кодеры, модной ориентации?

     
     
  • 7.104, Аноним (107), 16:34, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не слишком она уж организована Да и диверсий мы не делаем Так иногда пуканчики... большой текст свёрнут, показать
     
  • 3.69, Аноним (69), 10:53, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Критерии победы, он один: язык и компилятор должен быть rust.
     
  • 3.70, Аноним (-), 11:01, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если выпустили кукую нибудь программу на rust, то обязательно в самом заголовке будет упоминание Rust в отличие от других языков.
    Более того правительство США призывает отказаться от небезопасных языков.
     
     
  • 4.72, Аноним (57), 11:16, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Правильно ли я понимаю, что правительство США выразит глубокую озабоченность, если кто-то осмелится использовать "небезопасный" язык?
     
     
  • 5.81, n00by (ok), 12:41, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не выразит - оно сменилось.
     
  • 2.93, Аноним (90), 15:20, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Реалии таковы, что без реальной поддержки со стороны IT гигантов

    Поддержка IT гигантов нахрен никому не сдалась, тем более что поддерживают они только сами себя. Нужна поддержка сообщества, а сообщество мусор всякий подбирать не будет. Поэтому, например, взлетает rust и даже zig, за которым гигантов нет (нет, мозилла даже близко не гигант) но которые хорошо решает свои задачи. И не взлетает swift, за которым стоит аппле, но который нахрен никому не сдался. А nim так вообще никаких задач не решает и является игрушкой автора.

     
     
  • 3.109, Аноним (55), 16:58, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Нужна поддержка сообщества <<<

    Корпорациям пофиг на какое-то соообщество фриканов; они бабки пилят с обычных пользователей!

    >>> Поэтому, например, взлетает rust ... за которым гигантов нет.<<<

    Ага, Майкрософт и Гугл и вообще правительство США смотрят на вас c явным недоумением!

    >>> swift, который нахрен никому не сдался <<<

    Ага, идите и расскажите эти сказки разработчикам которые пилят софт под яблочную экосистему и зарабатывают бабки на тех самых обычных пользователей, коих большинство!

    >>> А nim так вообще никаких задач не решает и является игрушкой автора. <<<

    Ну хоть в чём то мы с вами сошлись:) а весь весь мой посыл был именно об этом!)

     
     
  • 4.118, Аноним (90), 18:53, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Ага, Майкрософт и Гугл и вообще правительство США смотрят на вас c явным недоумением!

    Так это не поддержка, это просто использование. Язык взлетел без ms и гугла, и когда он взлетел его стали использовать.

     
  • 3.117, Аноним (-), 18:22, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    И что ты сделаешь без поддержки ядра дровами от IT гигантов Достанешь 8800 GT и... большой текст свёрнут, показать
     
     
  • 4.119, Аноним (90), 18:58, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > И что ты сделаешь без поддержки ядра дровами от IT гигантов?
    > Достанешь 8800 GT из кладовки)?

    Так мы не про дрова, а про языки.

    > Гиганты уже рассмотрели преимущества того что работает и собрались в раст фоундейшн.

    Которое что сделало? Запретило логотип и название использовать? Экосистема это переиспользуемый код в виде крейтов, код пишет сообщество, а фаундейшн к нему отношения вообще никакого не имеет.

    > Гугл так вообще пару миллионов строк кода написал в андроид.

    Да хоть миллиардов - это код под его личные нужды который нигде более не переиспользуется, считай что его и нету. Код - это crates.io. Сходи и посмотри сколько там кода корпорашек.

     

  • 1.60, Аноним (60), 09:52, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Они уже и на ELF покушаются?
     
  • 1.63, Аноним (63), 09:55, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > формат NIF (Nim Intermediate Format)

    Где-то повернулась на другой бок Беседка с её .nif (NetImmerse File Format) и продолжила спать)

     
     
  • 2.74, Аноним (74), 11:35, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Щас бы ещё на миллионы трёхбуквенных расширений оглядываться.
     

  • 1.66, Аноним (66), 10:45, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То есть он умеет JavaScript в исполняемый файл переводить?
     
  • 1.80, Аноним (80), 12:41, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    ЯП, энфорсящий пробелы, идёт сразу ффтопку.
     
     
  • 2.86, 12yoexpert (ok), 14:15, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    язык позволяет писать со скобочками. он позволяет делать с синтаксисом практически что угодно
     
     
  • 3.98, Аноним (97), 16:13, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > позволяет писать со скобочками

    Но наличие табов в исходнике — это сразу ошибка этапа компиляции.

     
     
  • 4.111, 12yoexpert (ok), 17:10, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    я к тому, что ты можешь поменять синтаксис как хочешь, хоть на расте пиши. язык не форсит ни пробелы, ни табы
     

  • 1.101, Аноним (97), 16:28, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Забавно, что столько реплик уже настрочено, но по ссылке в новости никто из комментаторов, судя по всему, не ходил.

    Не поленился, и докладываю: раньше nim компилировался в сишечку, теперь же он будет компилироваться в лишп (а точнее кастомный диалект оного).

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

    Занавес.

     
     
  • 2.106, Аноним (106), 16:41, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Современный SICP использует JavaScript.
     
  • 2.110, 12yoexpert (ok), 17:10, 07/04/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Не поленился, и докладываю: раньше nim компилировался в сишечку, теперь же он будет компилироваться в лишп (а точнее кастомный диалект оного).

    похоже, ты понятия не имеешь, как там устроен процесс сборки

     

  • 1.116, Аноним (116), 17:58, 07/04/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    NIF NIF, а будет? NAF NAF NUFF NUFF?
     

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



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

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