Представлен релиз языка системного программирования Nim 2.2.6. Обновление вышло спустя шесть месяцев после релиза версии 2.2.4 и включает 141 коммит с исправлениями ошибок и улучшениями производительности. Nim – статически типизированный компилируемый язык программирования с синтаксисом, вдохновлённым Python, и возможностями метапрограммирования на уровне Lisp. Язык компилируется в C, C++ и JavaScript, обеспечивая производительность на уровне C при выразительности высокоуровневых языков. Код проекта поставляется под лицензией MIT...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64173
> и возможностями метапрограммирования на уровне Lisp
> Язык компилируется в C, C++ и JavaScript,Нужно перестать стесняться и сказать вслух очевидное: нужен Common Lisp, компилируемый в представление на любом мейнстримном языке.
>...Common Lisp, компилируемый в представление на любом мейнстримном языке.Был такой. ECL, но после самоотвода jjgarcia скатился в унылое.
До этого gcl, ccl и др.
> нужен Common Lisp,У него заморожен стандарт. Как же без обновлений? На что выделять деньхи?
А что, если создавать новые библиотеки? ... Да ну на! Лучше синтаксис каждые 3 недели ломать!
Common Lisp слишком переусложнен и переполнен всяческой абракатаброй.Но вот Scheme - это то, что надо. Простой, понятный, элегантный, продуманный, интуитивно понятный. Первоклашки в схему въезжают буквально за 15 минут, а коммон лисп осиливают долго, да еще и постоянно потом путаются.
Спасибо не надо, ваши не осилившие паскаль первоклашки потом вкатываются в ойти через пейтон и уже вовсю пишут калькуляторы на 30ГБ ОЗУ.
>ваши не осилившие паскаль первоклашкиПаскаль не надо осиливать, паскаль надо закапывать. Если уж и брать компилируемые языки, то хотя-бы современные SML, Go, Ocaml, другие подставить по вкусу.
паскаль нужен не для программирования, а для освоения концепций. см. столярова.
а в одном рядоу go с ocaml, конечно, странно выглядят.
>Но вот Scheme - это то, что надо.Scheme - это стандарт на бумаге, его не заюзаешь. Юзайте реализацию Guile.
> нужен Common LispНе нужен, большая часть программ в сборщике мусора не нуждается.
Julia?
>Нужно перестать стесняться и сказать вслух очевидное: нужен Common Lisp, компилируемый в представление на любом мейнстримном языке.На сцену приглашается Lovesan Лоровскый.
Будучи программистом с опытом более 15 лет и комфортной зарплатой, я ничего не понял из описания. Слишком сложно, а значит, не выстрелит.
Вот если бы ты не программы там всякие 15 лет писал, а каждый раз придумывал почему убогий с/с++/c#/жаба/<ещёчегонибудь> не подходит под высокий полёт твоей мысли, вот тогда бы ты всё понял.
> Вот если бы ты не программы там всякие 15 лет писал, а каждый раз придумывал
> почему убогий с/с++/c#/жаба/<ещёчегонибудь> не подходит под высокий полёт
> твоей мысли, вот тогда бы ты всё понял.Да еще синтаксис - очень разный может быть. И в этом смысле никогда не знаешь что получишь на вход. Это конечно по своему забавно - но только не в случае если код поддерживать придется.
Это ок.Тут люди с опытом по 30 лет на С, не могут понять, зачем нужен раст. Уже их ошибки на уровне ЦПУ хотят решать, а им невдомек.
> Тут люди с опытом по 30 лет на С, не могут понять, зачем нужен раст. Уже их
> ошибки на уровне ЦПУ хотят решать, а им невдомек.Ну так отлично. Вернуть хрустикам их любимую мантру про апгрейд железа, покоцать гранты и отправить на мороз, ибо майнтенансу вдолгую софт на этом брейнфаке не подлежит.
Выбор корпораций решать си-ошибки на уровне ЦПУ является признанием того, что раст не нужен. Иначе зачем бы им решать си-ошибки на уровне ЦПУ, вместо изучения раста их сотрудниками.
> Выбор корпораций решать си-ошибки на уровне ЦПУ является признанием того, что раст не нужен.Решать в рантайме то, что должно решаться на этапе компиляции?
> Иначе зачем бы им решать си-ошибки на уровне ЦПУ, вместо изучения раста их сотрудниками
Потому, что очень много написано на С, и, в ближайшем будущем, от этого не избавится.
Полюс, есть люди, которые годами, годами... наступают на одни и те же грабли и ни в какую не хотят это прекращать. Главное, когда программа со сломанным синтаксисом не компилируется, тут даже их понимания хватает. А то, что в программе куча неоднозначностей, память течет, а там вообще за границы лезут, это нормально, просто писать не умеете, читайте стандарт. Помешательство просто...
> Тут люди с опытом по 30 лет на С, не могут понять, зачем нужен раст. Уже
> их ошибки на уровне ЦПУ хотят решать, а им невдомек.Не беспокойтесь, мы с удовольствием предложим адептам Rust выбросить их старый хлам, точно так же как это делают сейчас они. Ибо долг платежом красен :)
Они думают, что вечно будут молодыми. Ага. Я тоже в свое время ржал над теми, кто сидит на третьих пентиумах, а сейчас сам завис на "коре дуба" из-за: а) привычка; б) тянет всё что мне надо.
это новость про патч-релиз. вопросы по изложению к автору новости
А что, разве питон может компилироваться в js или wasm? Или может в Си код, сопоставимый с нативным? Работать на микроконтроллерах без такого сжирания ресурсов, тоже близком к Си?
Нет.
> А что, разве питон может компилироваться в js или wasm? Или может
> в Си код, сопоставимый с нативным? Работать на микроконтроллерах без такого
> сжирания ресурсов, тоже близком к Си?
> Нет.Ну, есть транспайлер py2many, но заставить его работать на скрипте, большем чем hello_world.py, мне не удалось.
Язык на пробелах не нужен
Правильно. Нужно писать без пробелов, в одну строку желательно.
Для человека структурирование через отступы — естественный приём. Так пишут списки, планы, вложенные элементы.Конечно, можно так:
if (x > 0) {
printf("Positive\n");
} else {
printf("Non-positive\n");
}Но я человек, и мне удобнее так:
if x > 0:
echo "Positive"
else:
echo "Non-positive"Языки с отступами формируют повышенную дисциплина кодирования. Программист не может "сломать стиль" случайными пробелами и код различных авторов в проекте выглядит более единообразно. Кроме того, меньше конфликтов при совместной разработке (например, при слиянии веток в Git).
При вставке кода могут появиться трудно уловимые ошибки, которые будут проходить синтаксическую проверку.
Ну, если вставлять в MS Word, то, пожаоуй, да 🙂↕️
В Nim с его чувствительным компилятором это вряд ли возможно. Для написания программ на языке Nim нужна высокая культура кодинга и чутьё при применении типов.
>Конечно, можно так:Не можно, а нужно. Вместо скобочек можно end использовать, но это дело вкуса.
>Но я человек, и мне удобнее так:Если вы не заметили, то отступы уже давным давно проставляются автоматически. Вот вам в качестве примера: https://try.ocamlpro.com/ вводим какой-то код, например
let a = [
Нажимаем Enter и у нас автоматически появляется отступ. При этом, основное отличие данного подхода в том, что если вы в уже существующий код добавите
let a = [
[ (* < добавили новую скобку *)
1
]То он автоматически приведётся к нужному виду
let a = [
[
1
]>Языки с отступами формируют повышенную дисциплина кодирования.
Языки с отступами свидетельствуют о узости кругозора, и незнании о такой простейшей вещи, как автоформатирование.
>Программист не может "сломать стиль" случайными пробеламиНу так положите файл с настройками в репозиторий. Зато, при управлении проблемами программист будет регулярно отхватывать проблем, от того, что лишние пробелы к коду приклеились. Программировать без IDE будет мучением, а копирование кода в случайные места приведёт к потере пробелов и полной поломки кода.
> Конечно, можно так:
> if (x > 0) {
> printf("Positive\n");
> } else {
> printf("Non-positive\n");
> }это для детей, вообще то надо так:
printf( x>0 ? "Positive\n" : "Non-positive\n");
Более того, вместо x может быть и "функция" объявленная здесь же, в массив, и мало ли что.
А выше предлагают ВМЕСТО сокращения портянок исходников, те же портянки разукрасить пробелами, что бы хотя бы издали было красиво. :)Кстати, это на исходниках с маленькими ветвлениями и вложенностями синтаксис из пробелов выглядит лаконично и красиво, а на большом исходнике сломаеш глаза.
Промолчу что исходник на Питоне текстовым файлом можно считать весьма условно, ибо ни один текстовый редактор, не знающий о форматировании Питона, и не дорисовывающий вспомогательные линии, маркеры, и т.п. для его редактирования не годен.
> теперь компилятор корректно применяет перемещениеТам нет компилятора. Там транспайлер. У них была и до сих пор есть возможность перейти на LLVM для полной поддержки сборки и дебага, вместо костылей.
>У них была и до сих пор есть возможность перейти на LLVM для полной поддержки сборки и дебага, вместо костылей.Что за бред ты несёшь?
В профессиональной литературе и документации сам Nim называют именно компилятором, а не транспилятором.Причина в том, что конечный результат — исполняемый бинарный код. Наличие промежуточного языка (C) лишь часть внутреннего процесса компиляции и архитектурно Nim ближе к традиционным компиляторам, чем к чистым транспиляторам вроде TypeScript→JS.
так а в чём разница? Компилятор - из исходного кода в машинный код, транслятор - из исходного на одном языке в исходный на другом. А транспилятор - из исходного кода в?
...в самодостаточный читабельный текст программы на другом ЯП, очевидно же.Цель компилятора Nim таки давать на выходе бинарник.
По вашей логике clang - это компилятор, или же транслятор? Поскольку сборка, изначально, происходит в другой язык - IR LLVM.
> так а в чём разница? Компилятор - из исходного кода в машинный код, транслятор - из исходного на одном языке в исходный на другом. А транспилятор - из исходного кода в?И компилятор, и транспилятор -- трансляторы. Компилятор: исходный код -> машкод/байткод; транспилятор: исходный код на языке A -> исходный код на языке B.
По моему мнению, Nim таки ближе к транспилятору, хотя назовите как хотите, на суть происходящего не влияет. ;)
Ты просто прицепился к словам. Сами они называют это компилятором, а использование промежуточного Си преподносят как фичу.
clang, получается, тоже транслятор?
>детерминированное управление памятью с поддержкой нескольких стратегий (ARC/ORC, refc, маркировка-и-подметание)И получение граблей на ровном месте
>Оптимизация move-семантики для полей объектовНо всё же, у них там ещё и сборщик мусора зачем-то нужен
>Устранена фундаментальная проблема в сборщике мусора при обработке циклических структур данныхВидимо слишком простым язык получился, перед крестами стыдно.
>Исправлена утечка сокетов в asyncnet при ошибках согласования TLS-соединения:Ошибка в сетевых соединениях исправлена в языке, не в библиотеке, а в языке. Особенно приятно будет во всяких дебианах, ждать ещё года два.
>Устранён эффект «утечки» отключения предупреждений за пределы pragma-блоков:Похоже, они действительно решили догнать кресты по сложности.
Чем это лучше хруста?
Чем это лучше хруста?