LINUX.ORG.RU

Nim lang

 ,


0

4

Народ, кто-нибудь балуется Nim-ом? Надо популяризировать язык, скоро уже 1-я версия выйдет. А то что все про Rust :-)

Я тут just for fun, решил реализовать упражнения из «Functional programming in Scala» на Nim-е: https://github.com/vegansk/nimtests/tree/master/fpinnim. Язык пока справляется, хотя баг репорты бывают и пишутся. Надеюсь, в дальнейшем это перерастет в написание функциональной версии stdlib-а для него. А язык ох как хорош. Тут тебе и отсутствие требования наличия vm, в отличии от Scala, и нормального размера бинарники, в отличии от Haskell, и для JS бэкэнд пишется. И ffi не только с сями, но и с плюсами. В общем компилируемый, мультипарадигменный, опциональный GC, имеет effect system, macroprogramming, etc. А в devel сейчас еще и кроссплатформенное скриптование на нем добавили.


Просто любопытно: зачем скала в тегах?

Насчёт популяризации - ну так и расскажи подробнее какие преимущества язык даёт кроме перечисления фич и очевидных вещей.

DarkEld3r ★★★★★ ()

опциональный GC

Это почти что неправда. Нет, он действительно отключается, но без него можно будет написать лишь hello world. А с GC он никому не нужен.

mix_mix ★★★★★ ()
Ответ на: комментарий от DarkEld3r

Ну тебе ведь хотелось бы, чтобы раст был более популярным?

И я даже знаю, зачем мне бы этого хотелось! А Nim зачем?

tailgunner ★★★★★ ()
Ответ на: комментарий от DarkEld3r

Не-не-не. Во-первых, мои причины желать взлета Rust не в том, что он мне понравился, а в том, что мне нужен Си, спроектированный компетентными людьми в этом веке; во-вторых, ТС пока не не сказал, зачем нужен Nim (с Rust понятно - системное программирование и, возможно, серверные приложения в будущем).

tailgunner ★★★★★ ()

Надо популяризировать язык

Зачем в мире где есть Go и Rust нужен Nim?

то то и оно - не нужен

umren ★★★★★ ()

Тут тебе и отсутствие требования наличия vm

Отсутствие мегатонн библиотек в maven-репозиториях тоже в наличии.

anonymous ()
Ответ на: комментарий от tailgunner

Си, спроектированный компетентными людьми в этом веке

Не уверен, что это можно считать объективным фактом.

DarkEld3r ★★★★★ ()

в отличии от

в отличие от.

kep ()
Ответ на: комментарий от DarkEld3r

Си, спроектированный компетентными людьми в этом веке

Не уверен, что это можно считать объективным фактом.

Ну, в отношении Rust - это 3 факта.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

Ну, в отношении Rust - это 3 факта.

Третий - это про людей? Меня, разумеется, интересовал факт относительно «компетентности».

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

И да, я (тоже) думаю, что Nim «не нужен».

DarkEld3r ★★★★★ ()
Ответ на: комментарий от mix_mix

Ну я бы не сказал, что компилируемые в натив языки с GC не нужны. Очень даже нужны. А что касается использования без GC, то да, его библиотеки не все попользуешь, но интеграция с C/плюсами достаточно простая и с использованием c2nim полуавтоматизированная. Так что можно что-то и прокруче HW написать, но с более приятным синтаксисом и высокоуровневыми плюшками

vega ()
Ответ на: комментарий от DarkEld3r

Третий - это про людей?

Про век.

Меня, разумеется, интересовал факт относительно «компетентности».

А компетентность Хоара, Уолтона, Матсакиса разве не очевидна? Немного настораживает, правда, что ни у одного из них нет бороды.

tailgunner ★★★★★ ()

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

iu0v1 ()
Ответ на: комментарий от DarkEld3r

Одна из фич, за которую я зацепился - это кодогенерация для разных бекендов. Сейчас это C/C++, активно пилится JavaScript, а с Emscripten, это работает давно. Ему еще бы JVM - есть такая мечта. Например в моем текущем проекте используется typescript на клиенте + C++ для специализированной прокси + Scala на сервере. И если бы был единый язык и частично единые библиотеки на всех 3-х сторонах, жить бы было проще.

vega ()
Последнее исправление: vega (всего исправлений: 1)
Ответ на: комментарий от iu0v1

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

Можно пример? И, нужно помнить, что язык еще не дошел до 1-й версии. А что в rust творилось при стабилизации?

vega ()
Ответ на: комментарий от umren

Вот как раз Go с его interface{} и дальнейшими кастами - очень безопасный язык, просто реинкарнация void* :-)

vega ()
Последнее исправление: vega (всего исправлений: 1)
Ответ на: комментарий от Deleted

приятное отличие нима - тот же синтаксис.

Отличие от чего?

Ну и я не думаю, что скобковость/отступовость так уж сильно важно для языка, относительно остальных фич.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от tailgunner

А компетентность Хоара, Уолтона, Матсакиса разве не очевидна?

Ладно, я спорю больше из принципа. Но вообще «громкие имена», как по мне, ещё ничего не гарантируют. Ты ведь не любишь Go? А его тоже не неизвестно кто делал.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от DarkEld3r

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

vega ()
Ответ на: комментарий от vega

кодогенерация для разных бекендов

Честно говоря, не уверен, что это так уж хорошо. Если язык использует llvm, то Emscripten он получает нахаляву. Зачем тогда отдельно JavaScript?

Ну и больше смущают разные платформы типа JVM. Ведь если на эти сильно завяжешься, то уже с платформы никуда не денешься. И получается, что пишешь не столько на языке, сколько на JVM. Вон скала на .net замахивалась, а в итоге поддержка сдохла. Подозреваю, что оно никому не нужно оказалось.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от vega

Ага, нужно все в одну строку писать, по хардкору :-)

А Nim это принципиально не разрешает? Или всё-таки есть какой-то «принудительный разделитель»?

DarkEld3r ★★★★★ ()
Ответ на: комментарий от vega

Кстати, одна из немногих вещей, которая понравилась в Go - gofmt.

Да, это очень удобно. Но, принципе, доступно и в других языках. Даже для С++ есть, пусть и не из коробки.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от DarkEld3r

Но вообще «громкие имена», как по мне, ещё ничего не гарантируют

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

Ты ведь не любишь Go? А его тоже не неизвестно кто делал.

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

tailgunner ★★★★★ ()
Ответ на: комментарий от vega

Ага, нужно все в одну строку писать, по хардкору

А тебя от этого удерживает только бьющий по рукам компилятор? Тогда пиши только на сабже и пидоне, и не смей больше ни к чему прикасаться (во имя бобра!).

anonymous ()
Ответ на: комментарий от vega

Можно пример?

http://nim-lang.org/docs/manual.html#syntax-strong-spaces

1 + 3 * 4 is still parsed as 1 + (3 * 4), but 1+3 * 4 is parsed as (1+3) * 4

#матьродименяобратно

И, нужно помнить, что язык еще не дошел до 1-й версии. А что в rust творилось при стабилизации?

Та по сути мне то этот язык ничего и не должен, если пилят так - значит кому-то нужно. А за растом не следил, потому не знаю.

iu0v1 ()
Ответ на: комментарий от tailgunner

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

Ну ты не читал разве объяснений Пайка почему Го такое го? Даю вольный пересказ: «Студиозы, устраивающиеся в гуголь, вообще не шарят ни в чем сложнее похапе, но утилизировать этих макак надо, ведь более лучших нет. Поэтому мы запилили такой вот пролетарский язычок - очень тупой, но достаточно эффективный.» Впрочем, не уверен, что эти старперы могут лучше.

anonymous ()
Ответ на: комментарий от iu0v1

матьродименяобратно

Ну и чё ты испугался? Задание приоритетов не скобками, а пробелами порвало шаблон? Хотя язык говно, это да.

anonymous ()
Ответ на: комментарий от anonymous

Задание приоритетов не скобками, а пробелами порвало шаблон?

По твоему это удобно? Легко ведь ошибку допустить и потом не сразу заметить.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от anonymous

порвало шаблон?

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

iu0v1 ()
Ответ на: комментарий от iu0v1

1 + 3 * 4 is still parsed as 1 + (3 * 4), but 1+3 * 4 is parsed as (1+3) * 4

Там же: «if the experimental parser directive #!strongSpaces is used.» То есть, хочешь такого, пиши директиву

vega ()
Последнее исправление: vega (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну ты не читал разве объяснений Пайка почему Го такое го? Даю вольный пересказ: «Студиозы, устраивающиеся в гуголь, вообще не шарят ни в чем сложнее похапе, но утилизировать этих макак надо, ведь более лучших нет. Поэтому мы запилили такой вот пролетарский язычок - очень тупой, но достаточно эффективный.»

Я не читал, но, ИМХО, это дешевая отмазка. Дженерики есть в Java, которая в гугле используется - как-то трудно поверить, что у гугла есть два пула прогеров - для Java и для Go.

tailgunner ★★★★★ ()
Ответ на: комментарий от vega

Да. И к тому же никто не заставляет меня юзать не только фичу, но и сам язык.

Тут я только к собственному мироощущению апеллирую. Считаю что даже если в рамках эксперимента могут в кодовую базу класть нечто подобное - то у руля не все в здравии.

iu0v1 ()
Ответ на: комментарий от DarkEld3r

Это удобно, но рвёт шаблон, поэтому фича сомнительная. Хотя в таком языке почему бы и нет, раз уж и так повсюду значимые пробелы.

anonymous ()
Ответ на: комментарий от vega

То есть, хочешь такого, пиши директиву

Просто любопытно: в языке есть возможность «без спросу» распространить эту директиву? Ну в смысле, как-то экспортировать так, чтобы не пришлось в каждом модуле явно прописывать?

DarkEld3r ★★★★★ ()
Ответ на: комментарий от anonymous

А тебя от этого удерживает только бьющий по рукам компилятор? Тогда пиши только на сабже и пидоне, и не смей больше ни к чему прикасаться (во имя бобра!).

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

vega ()
Ответ на: комментарий от anonymous

Это удобно

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

DarkEld3r ★★★★★ ()
Ответ на: комментарий от anonymous

А тебя от этого удерживает только бьющий по рукам компилятор?

Это ты так все статически типизированные языки щас обосрал?

anonymous ()
Ответ на: комментарий от DarkEld3r

Нет, локально хочешь strong spaces, напиши и получай.

vega ()
Ответ на: комментарий от vega

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

А Nim точно по рукам бьёт? Точка с запятой ведь есть. Или я чего-то не понимаю?

DarkEld3r ★★★★★ ()
Ответ на: комментарий от vega

Есть:

Ну тогда я не понимаю к чему было «нужно все в одну строку писать, по хардкору». В ниме ведь это легко возможно.

DarkEld3r ★★★★★ ()
Ответ на: комментарий от tailgunner

Дженерики есть в Java

Про дженерики была отмазка, что они хотели и хотят, но их не устраивают современные реализации. Это прикольно, ведь пока суть да дело, будет написано дохера кода с void. Может это что-то ритуальное? Хотят шаг за шагом повторить священный путь жабки.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.