JavaScript fwdays conf: Node.js, Performance, Tests, Nuxt.js, DevTools, GraphQL | March 14
×Закрыть

Nim: совершенный язык программирования

Наткнулся на одну любопытную статейку на «библиотеке программиста» про сабж (Nim тобишь)...

В общем, в место тысячи слов ©: proglib.io/p/nim-best-programming-language/
dou.ua/lenta/articles/nim

Интересны мнения доучан по этому поводу)

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Примерно неделя (точнее 8 дней) как вышел полноценный релиз Nim (1.0).
Кто смотрел пробовал, делитесь впечатлениями. :-)

Очередной прикольно выглядящий язык с мощным метапрограммированием, который на первый взгляд мог бы быть годным, если бы не несколько фатальных недостатков.

* Язык с GC, пытающийся потеснить C и кресты, сразу идет в баню.
* Оок, GC отключаемый, прошлое резковатое суждение вроде бы можно отставить. Если б не потеря стандартной библиотеки.
* Фиг с ним, я хочу попрогать под какой-нибудь копеешный мелкоконтроллер, отключaю GC, забиваю на nimble-пакеты и пишу свою стандартную библиотеку. В итоге получаем хорошо известную войну стандартов в худших традициях D.
* Другой сценарий — ударила мне, например, в голову моча накидать весь non—UI кросс-платформенно, для облегчения портирования между iOS, Android, Mac, Win, Linux. Казалось бы, nim идеальный вариант. Охладите трахание и закатайте губищи обратно. Подружить нимовский concurrency и memory management с платформенным — тот еще квест. Конечно, теоретически все решаемо, но мне лично нафиг не уперлось чинить компилятор и рантайм, забыв об основной задаче.

Вот, нате вам крик разочарования от бывшего адепта Nim: gradha.github.io/...​ye-nim-and-good-luck.html

Итого: хорошая попытка, D, Rust и Nim, но ниша системного языка с человеческим метапрограммированием все еще пустует.

А що з Раст-ом не так?

Я же написал, «системного языка с человеческим метапрограммированием» ;) Раст о гарантиях безопасности памяти, этого маловато для конкуренции крестам.

В Расте уже можно модифицировать процесс компиляции используя сам язык? Как в CL, D, Nim, отчасти в крестах (очень болезненным и черезанальным методом)?

Только не говорите мне, что это не нужно. Ненужно писать километры однотипного кода.

Тоже не знаю чем не угодил Rust. Но спасибо Вам это пока чуть ли не единственный комментарий по делу в этой ветке.

Вот, нате вам крик разочарования от бывшего адепта Nim

Там автор пишет, что дизайн GC не предусматривает многопоточности, печаль-беда.

не предусматривает многопоточности

Он такого не писал.

Вот две его цитаты:

Cross-language threading sucks big time. You can thread in Nim. And you can thread in Objective-C. But if you try to cross the streams... total protonic reversal, meaning your software crashes...
Nim is designed to use soft realtime GC on thread local heaps. This means that a thread cannot touch the memory of another thread...

Отсюда следует, что Nim не потокобезопасный со стороны границы «платформа-nim runtime», и что он не заточен под разделяемую между потоками память при использовании GC. Это резко сужает его область применимости в нишах, где царствуют кресты. Или, как минимум, затрудняет. Теоретически никто не мешает отчертить «грязную зону» без GC для разделяемой памяти, через которую будут общаться модули с GC. (теоретически, т.к. не понятно, во что такое взаимодействие выльется в реальности). Но говорить, что он не предусматривает многопоточности — это явный перебор :)

PS. Мнение блоггера двух-с-половиной летней давности, сам же я не смотрел на Nim больше года. Есть небольшая вероятность, что сейчас все не так печально.

PPS. Компиляция через Си в режиме «standalone», без всяких зависимостей от POSIX и libc, таки впечатляет. Попробую на досуге накатать что-нить под ESP8266, чтобы оценить его применимость в embedded.

Работа есть? Нет? На*** это туда!

Nim фигня. Лучше crystal — crystal-lang.org

Вы кажется ссылкой ошиблись, правильная ссылка вот эта: golang.org

Вы настолько привыкли копипастить в своем го, что уже даже не смотрите, что вставляете и куда. Вот правильная ссылка: sbcl.org

Crystal фигня — у него нет нативной реализации под винду))
(возможность установить его через «Bash on Ubuntu» в Windows 10 — не катит, ибо 1) у меня семерка и 2) это не нативная реализация)

з.ы. а вообще да, Crystal тоже интересный язык)

эликсир тоже рубиподобный..

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

Эмм, насколько я понял, кристал все-же компилируемый язык, поэтому за производительность стоит говорить только тщательно померяв
Зы. Валялкин как-то слишком быстро переобулсо па ходу... мож он какой инсайд знает?)))))

поэтому за производительность стоит говорить только тщательно померяв

я имел ввиду отсутствие родного инсталлятора под винду (в виде exe/msi файла). А так хз — может и через баш в 10-й винде будет норм. Когда (как-нибудь, может до до Нового Года) установлю себе десятку — посмотрю попробую кристал на винде из-под баша — может нативный инсталлятор в виде экзешника там действительно не нужен.

Зы. Валялкин как-то слишком быстро переобулсо па ходу... мож он какой инсайд знает?)))))

может быть) может разрабы Crystal’a ему за пиар заплатили)))

Nim

тут или название менять, или быть в готовности, что IBM засудить может
www.ibm.com/...​aix.install/nim_intro.htm

тут или название менять, или быть в готовности, что IBM засудить может

так пусть вернут ему старое название (Nimrod). :)

Скорее наследники Чарльза Бутона засудят ;-)

проблема не в GO, проблема в упоротости некоторых гоферов))
а так — язык как язык, для своей области вполне себе ничего

Он не может быть идеальным хотябы потому, что это не Haskell.

Ух ты здесь есть еще ценители Haskell

C#, Java, Python и JavaScript уже давно изобретены.
Придумывать новый язык и новый синтаксис — не особо благодарная и нужная работа. Куда полезнее — расширять синтаксис существующих языков, а также разрабатывать новые платформы и библиотеки под них.

Ну... с такими разговорами питона бы не было

питон страше джавы,джаваскрипта, а до-диеза — лет на 10

Куда полезнее — расширять синтаксис существующих языков,

Куда полезнее урезать и выбрасывать ненужное из синтаксиса языков.

В теории. На деле, для мейнстримных «не Ваших» языков, в силе тот же вопрос — «как?».

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

PS. Разрабатывать новые платформы под языки — то вообще шедеврально))

Странный вопрос. Nim тоже ведь вам не принадлежит. Как вы его собираетесь развивать? А насчет других языков — у них у всех есть свои сообщества, пользовательские группы, комитеты и т.д. Или вы может быть хотите со своего ноута коммитить прямо master-бранч любимого языка? Про платформы — почитайте, что такое Unity, Xamarin, .NET Core, думаю вопросы сразу отпадут.

Странный вопрос. Nim тоже ведь вам не принадлежит. Как вы его собираетесь развивать?

Почитайте, что такое метапрограммирование, вычисления на этапе компиляции, DSL. Может быть поймете, что одними языками надо владеть, чтобы их модифицировать под предметную область, а другими — нет.

А насчет других языков — у них у всех есть свои сообщества, пользовательские группы, комитеты и т.д.

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

Unity, Xamarin, .NET Core

Это не платформы «под языки», как Вы изволили выразиться в исходном сообщении. Дотнету строго фиолетово, какие высокоуровневые языки на нем исполняются после трансляции в MSIL. Он и по задумке был управляемой платформой, на которую навешиваются произвольные языки, и C# нарос на нем постольку-поскольку (более конкретно, стараниями Хейлсберга). Даже JVM, изначально «платформа под язык», давно уже таковой не является.

Впрочем, если мы говорим о V8, Spidermonkey или Ноде, тогда Ваше высказывание имеет смысловую нагрузку отличную от нулевой.

Похоже, что Вы наткнулись на копипасту или рерайт старой статьи из ДОУ:
dou.ua/lenta/articles/nim
s.dou.ua/storage-files/nims.png

да, похоже на то)

интересно, в Nim’e и его сообществе за эти два года с момента написания оригинальной статьи что-то изменилось? может уже ту игру, о которой упоминается в статье, выпустили — было бы интересно глянуть.

Это GUI-фреймворк, github.com/...​g/nim/graphs/contributors — в сам язык активней коммитят)

Да, просто автор упомянутой статьи активнее коммитит в nimx, и этот же nimx использовался в каком-то «игровом проекте».

А еще вышла книга от одного из главных контрибьюторов языка: www.manning.com/books/nim-in-action

Подписаться на комментарии