Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 00:14
Оценка:
Попробовал слегка эти языки. Первые заключения:

Похожего очень много: система типов, кавычки, type inference, и т.д. F# кавычки не так активно выделяет, что есть минус.
Синтаксис гораздо приятнее в Nemerle, если знаешь Ruby/C#/Java и не знаешь OCaml.
Поддержка в Visual Studio лучше у F# + есть интерактивный режим: очень большой плюс.
Поскольку F# MicroSoft'овский и по нему уже начали писать 3 книги, вполне может оказаться в результате популярнее Nemerle. С другой стороны, по Lisp есть немало книг, а вот популярности

На данный момент сравнение популярности: f# programming language -- 513.000 хитов, nemerle programming language -- 98.900.
В западной блогосфере вижу упоминания F# намного чаще.

Скорость пока не сравнивал, но F# ей очень гордится.

У кого какие мнения?


Еще один язык, в котором есть type inference и макросы -- Boo, но я думаю с ним подождать до появления поддержки generics. boo programming language -- 1.160.000 хитов. Есть ли по нему какие-нибудь соображения?

30.01.07 18:09: Перенесено модератором из 'Декларативное программирование' — IT
Re: Nemerle vs. F# vs. Boo
От: FR  
Дата: 10.10.06 04:08
Оценка:
Здравствуйте, Alexey Romanov, Вы писали:

AR>Попробовал слегка эти языки. Первые заключения:


Не понятно какие критерии отбора языков, если языки на платформе NET (или с подержкой) выводом типов и макросами (или с развитым метапрограммированием?) то не хватает например dylan'а
Re[2]: Nemerle vs. F# vs. Boo
От: Vermicious Knid  
Дата: 10.10.06 05:16
Оценка:
Здравствуйте, FR, Вы писали:

AR>>Попробовал слегка эти языки. Первые заключения:

FR>Не понятно какие критерии отбора языков, если языки на платформе NET (или с подержкой) выводом типов и макросами (или с развитым метапрограммированием?) то не хватает например dylan'а
Ну и зачем вводить людей в заблуждение? Во-первых с каких это пор Dylan появился на платформе .NET? Во-вторых так как Dylan динамически-типизированный язык вывод типов там неполноценный и является лишь средством оптимизации. Такой "вывод типов" и в JScript.NET есть.
Re[2]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 05:59
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Alexey Romanov, Вы писали:


AR>>Попробовал слегка эти языки. Первые заключения:


FR>Не понятно какие критерии отбора языков, если языки на платформе NET (или с подержкой) выводом типов и макросами (или с развитым метапрограммированием?) то не хватает например dylan'а


Критерии следующие: поддержка макросов или другой формы метапрогаммирования (скажем, различные eval'ы Ruby); работа на CLR или JVM, чтобы не возникло проблем с наличием библиотек; вывод типов или динамический язык (поскольку обе платформы и их библиотеки заточены под статические языки, то скорее первое); возможность комбинировать ФП и ООП. Если можете подсказать другие языки, которые под эти критерии подходят, буду только рад.

У Dylan'а разве есть поддержка .NET? На их сайте об этом ничего найти не могу.
Re[3]: Nemerle vs. F# vs. Boo
От: FR  
Дата: 10.10.06 06:28
Оценка:
Здравствуйте, Vermicious Knid, Вы писали:

VK>Здравствуйте, FR, Вы писали:


AR>>>Попробовал слегка эти языки. Первые заключения:

FR>>Не понятно какие критерии отбора языков, если языки на платформе NET (или с подержкой) выводом типов и макросами (или с развитым метапрограммированием?) то не хватает например dylan'а
VK>Ну и зачем вводить людей в заблуждение? Во-первых с каких это пор Dylan появился на платформе .NET?

Точно меня замкнуло, почему то отложилось в памяти что Open Dylan требует NET, сейчас посмотрел оказывается нативный компилятор.

VK>Во-вторых так как Dylan динамически-типизированный язык вывод типов там неполноценный и является лишь средством оптимизации. Такой "вывод типов" и в JScript.NET есть.


Так в списке же Boo есть, он в этом отношении близок к Dylan.
Re[3]: Nemerle vs. F# vs. Boo
От: FR  
Дата: 10.10.06 06:28
Оценка: +1
Здравствуйте, Alexey Romanov, Вы писали:


AR>Критерии следующие: поддержка макросов или другой формы метапрогаммирования (скажем, различные eval'ы Ruby); работа на CLR или JVM, чтобы не возникло проблем с наличием библиотек;


Ну библиотеки не только для CLR и JVM пишутся, например для питона их очень много, плюс огромная стандартная библиотека.

AR>вывод типов или динамический язык (поскольку обе платформы и их библиотеки заточены под статические языки, то скорее первое); возможность комбинировать ФП и ООП. Если можете подсказать другие языки, которые под эти критерии подходят, буду только рад.


Питон

AR>У Dylan'а разве есть поддержка .NET? На их сайте об этом ничего найти не могу.


С dylan я ошибся реализации под NET нет, но все остальное нужное есть.
Re: Nemerle vs. F# vs. Boo
От: ie Россия http://ziez.blogspot.com/
Дата: 10.10.06 06:35
Оценка: +1
Здравствуйте, Alexey Romanov, Вы писали:

AR>Похожего очень много:


Различей тоже

AR>система типов,


А в чем тут схожесть?

AR>кавычки,


Это что такое? Цитирование?

AR>type inference, и т.д. F# кавычки не так активно выделяет, что есть минус.


AR>Синтаксис гораздо приятнее в Nemerle, если знаешь Ruby/C#/Java и не знаешь OCaml.


+1

AR>Поддержка в Visual Studio лучше у F# + есть интерактивный режим: очень большой плюс.


Ну ничего, наши парни тоже не промах А если серъезно, то и у F# VSIP'а куча недостатков. Так что еще не ясно, у кого появится нормальный VSIP раньше.

AR>Поскольку F# MicroSoft'овский и по нему уже начали писать 3 книги, вполне может оказаться в результате популярнее Nemerle.


Да и бог с ним. Нам ли переживать. А вообще я думаю надо уже засылать Немерлистов да и Влада с Игорем в MS работать, пущай двигают.

AR>С другой стороны, по Lisp есть немало книг, а вот популярности


+1

AR>Скорость пока не сравнивал, но F# ей очень гордится.


JIT работает за вас Хотя код они порой действительно генерят хороший.

AR>У кого какие мнения?


Если мне скажут на работе: на C# больше не пишем, пишем на F# — ни сколько не расстроюсь. Но конечно, Немерл у меня вызывает гораздо больше симпатий.

AR>Еще один язык, в котором есть type inference и макросы -- Boo, но я думаю с ним подождать до появления поддержки generics. boo programming language -- 1.160.000 хитов. Есть ли по нему какие-нибудь соображения?


не знаком с ним.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Превратим окружающую нас среду в воскресенье.
Re[2]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 07:35
Оценка:
Здравствуйте, ie, Вы писали:

ie>Здравствуйте, Alexey Romanov, Вы писали:


AR>>Похожего очень много:


ie>Различей тоже


AR>>система типов,


ie>А в чем тут схожесть?


Есть функциональные типы. Есть варианты. Есть кортежи. Есть литералы списков.

AR>>кавычки,


ie>Это что такое? Цитирование?


Да.

AR>>type inference, и т.д. F# кавычки не так активно выделяет, что есть минус.


AR>>Синтаксис гораздо приятнее в Nemerle, если знаешь Ruby/C#/Java и не знаешь OCaml.


ie>+1


AR>>Поддержка в Visual Studio лучше у F# + есть интерактивный режим: очень большой плюс.


ie>Ну ничего, наши парни тоже не промах А если серъезно, то и у F# VSIP'а куча недостатков. Так что еще не ясно, у кого появится нормальный VSIP раньше.


Ну посмотрим. У меня VSIP Nemerle только-только заработал.

AR>>Поскольку F# MicroSoft'овский и по нему уже начали писать 3 книги, вполне может оказаться в результате популярнее Nemerle.


ie>Да и бог с ним. Нам ли переживать. А вообще я думаю надо уже засылать Немерлистов да и Влада с Игорем в MS работать, пущай двигают.


Поскольку хотелось бы зарабатывать на этом деньги, нужно, чтобы работодатели знали, что это такое

AR>>С другой стороны, по Lisp есть немало книг, а вот популярности


ie>+1


AR>>Скорость пока не сравнивал, но F# ей очень гордится.


ie>JIT работает за вас Хотя код они порой действительно генерят хороший.


AR>>У кого какие мнения?


ie>Если мне скажут на работе: на C# больше не пишем, пишем на F# — ни сколько не расстроюсь. Но конечно, Немерл у меня вызывает гораздо больше симпатий.


AR>>Еще один язык, в котором есть type inference и макросы -- Boo, но я думаю с ним подождать до появления поддержки generics. boo programming language -- 1.160.000 хитов. Есть ли по нему какие-нибудь соображения?


ie> не знаком с ним.
Re[4]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 07:41
Оценка:
Здравствуйте, FR, Вы писали:

VK>>Во-вторых так как Dylan динамически-типизированный язык вывод типов там неполноценный и является лишь средством оптимизации. Такой "вывод типов" и в JScript.NET есть.


FR>Так в списке же Boo есть, он в этом отношении близок к Dylan.


Отнюдь:

"Boo is a statically typed language.

Static typing is about the ability to type check a program for type correctness.

Static typing is about being able to deliver better runtime performance.

Static typing is not about putting the burden of declaring types on the programmer as most mainstream languages do.

The mechanism that frees the programmer from having to babysit the compiler is called type inference.

Type inference means you don't have to worry about declaring types everywhere just to make the compiler happy. Type inference means you can be productive without giving up the safety net of the type system nor sacrificing performance.

Boo's type inference kicks in for newly declared variables and fields, properties, arrays, for statement variables, overriden methods, method return types and generators."

здесь
Re[4]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 07:48
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Alexey Romanov, Вы писали:



AR>>Критерии следующие: поддержка макросов или другой формы метапрогаммирования (скажем, различные eval'ы Ruby); работа на CLR или JVM, чтобы не возникло проблем с наличием библиотек;


FR>Ну библиотеки не только для CLR и JVM пишутся, например для питона их очень много, плюс огромная стандартная библиотека.


В общем да + есть Jython и IronPython.

AR>>вывод типов или динамический язык (поскольку обе платформы и их библиотеки заточены под статические языки, то скорее первое); возможность комбинировать ФП и ООП. Если можете подсказать другие языки, которые под эти критерии подходят, буду только рад.


FR>Питон


Беда в том, что при сравнении питона и руби у меня все время выигрывает руби Что чище: len(s) или s.length? __gt__ или > ?
Re[5]: Nemerle vs. F# vs. Boo
От: FR  
Дата: 10.10.06 07:57
Оценка:
Здравствуйте, Alexey Romanov, Вы писали:


VK>>>Во-вторых так как Dylan динамически-типизированный язык вывод типов там неполноценный и является лишь средством оптимизации. Такой "вывод типов" и в JScript.NET есть.


FR>>Так в списке же Boo есть, он в этом отношении близок к Dylan.


AR>Отнюдь:


В Boo вывод типов очень слабый, спотыкается на несложных примерах. И к тому же Boo может работать в режиме динамической типизации.
Re[5]: Nemerle vs. F# vs. Boo
От: FR  
Дата: 10.10.06 08:11
Оценка:
Здравствуйте, Alexey Romanov, Вы писали:

FR>>Ну библиотеки не только для CLR и JVM пишутся, например для питона их очень много, плюс огромная стандартная библиотека.


AR>В общем да + есть Jython и IronPython.


Есть стандартная библиотека CPython http://docs.python.org/lib/lib.html

AR>>>вывод типов или динамический язык (поскольку обе платформы и их библиотеки заточены под статические языки, то скорее первое); возможность комбинировать ФП и ООП. Если можете подсказать другие языки, которые под эти критерии подходят, буду только рад.


FR>>Питон


AR>Беда в том, что при сравнении питона и руби у меня все время выигрывает руби Что чище: len(s) или s.length? __gt__ или > ?


Фигня, тем более в динамическом языке добавка s.length вполне разрешимый вопрос, реально что у руби лучше это только полноценные блоки кода. Кроме того метопрогаммирование в питоне кажется мощнее, хотя тут могу ошибатся в руби не силен.
Re[6]: Nemerle vs. F# vs. Boo
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.10.06 16:49
Оценка:
Здравствуйте, FR, Вы писали:

FR>В Boo вывод типов очень слабый, спотыкается на несложных примерах. И к тому же Boo может работать в режиме динамической типизации.


Слабость не отсуствие. В Буу он есть. Это главное. А динамическая типизация вот и в Nemerle теперь есть. Это можно рассматривать как дополнительную возможность.

Так что с точки зрения класса языка — я бы все же отнес Буу и Немерле к одному классу статически типизированных компонентных языков.

Однако полностью согласен, что с точки зрения технологичности Буу до Немерла еще расти и расти. Думаю, даже что Буу просто никогда не доростет до нужного уровня. По крайней мере видел я его уже очень адвно, но с тех пор никаких серьезных изменений нет. Его макрсы — это сасвсем не то, что макросы Немерла. Да и вывод типов очень слабый. Единственное приемущество вроде бы он быстрее компилируется.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Nemerle vs. F# vs. Boo
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.10.06 16:49
Оценка: -1
Здравствуйте, Alexey Romanov, Вы писали:

AR>Критерии следующие: поддержка макросов или другой формы метапрогаммирования (скажем, различные eval'ы Ruby); работа на CLR или JVM, чтобы не возникло проблем с наличием библиотек; вывод типов или динамический язык (поскольку обе платформы и их библиотеки заточены под статические языки, то скорее первое); возможность комбинировать ФП и ООП.


По этим критерия Буу тихонько курит в сторонке. ФП у него довольно слабо (по сравнению с Немерлом). А МП просто в зачаточном состоянии (плагины к компилятору оперирующие с АСТ). Буу это попытка сделать статически типизированный Питон. А так как многие положительные черты Питона основываются на его динамической природе, то и результат получается так себе. Плюс в Буу очень немного хайтека. Это скорее добротная работа середнячков. Немерле же точная противоположенность. Это чистеший хайтек. Это же приводит к тому, что в Немерле до сих пор доволно много глюков.

AR>Если можете подсказать другие языки, которые под эти критерии подходят, буду только рад.


Для Явы есть Скала. С точки зрения читоты проектирования она будет даже по круче Немерла, но в ней нет макросов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Nemerle vs. F# vs. Boo
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.10.06 16:49
Оценка:
Здравствуйте, Alexey Romanov, Вы писали:

AR>В общем да + есть Jython и IronPython.


За Jython не скау, а IronPython — это довольно плохая реализация Питона для дотнета. Одни минусы. Динамическая типизация, плохая интеграция с дотнетом, неполноценность...

AR>Беда в том, что при сравнении питона и руби у меня все время выигрывает руби Что чище: len(s) или s.length? __gt__ или > ?


Согласен, мне тоже руби больше нравится при таком сравнении. Но как Немерле здесь смотрится на уровне. Если учесть, что у него есть паттерн-матчинг и полноценная поддержка ФЯ, то вообще Руби с Питоном смотря на его фоне слабовато.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Nemerle vs. F# vs. Boo
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.10.06 16:49
Оценка:
Здравствуйте, Alexey Romanov, Вы писали:

ie>>Это что такое? Цитирование?


AR>Да.


В Буу появилось квази-цитирование? Однако давно я его не глядел.

AR>Ну посмотрим. У меня VSIP Nemerle только-только заработал.


Странно, а у меня он пока не работает.


ЗЫ

Не оверквоть, плиз.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 17:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В Буу появилось квази-цитирование? Однако давно я его не глядел.


Это было из сравнения F# и Nemerle, а не Boo.

AR>>Ну посмотрим. У меня VSIP Nemerle только-только заработал.


VD>Странно, а у меня он пока не работает.


Я имею ввиду, что оно скомпилировалось и дает хоть какой-то Инетллисенс.
Re[7]: Nemerle vs. F# vs. Boo
От: FR  
Дата: 10.10.06 17:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>В Boo вывод типов очень слабый, спотыкается на несложных примерах. И к тому же Boo может работать в режиме динамической типизации.


VD>Слабость не отсуствие. В Буу он есть. Это главное. А динамическая типизация вот и в Nemerle теперь есть. Это можно рассматривать как дополнительную возможность.


В немерле динамическая типизация такая же как вывод типов в Boo
Возмем тот же Dylan, это динамический типизированный язык с возможностью аннотации типов, то есть статическая типизация в нем тоже есть (притом вполне жесткая), по моему это тоже неплохо, во всяком случае лучше чем плохой вывод типов.

VD>Так что с точки зрения класса языка — я бы все же отнес Буу и Немерле к одному классу статически типизированных компонентных языков.


Угу.

VD>Однако полностью согласен, что с точки зрения технологичности Буу до Немерла еще расти и расти. Думаю, даже что Буу просто никогда не доростет до нужного уровня. По крайней мере видел я его уже очень адвно, но с тех пор никаких серьезных изменений нет. Его макрсы — это сасвсем не то, что макросы Немерла. Да и вывод типов очень слабый. Единственное приемущество вроде бы он быстрее компилируется.


Просто язык очень вяло развивается, иначе он мог бы стать и конкурентом для Nemerle.
Re[6]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 17:52
Оценка:
Здравствуйте, VladD2, Вы писали:

AR>>Беда в том, что при сравнении питона и руби у меня все время выигрывает руби Что чище: len(s) или s.length? __gt__ или > ?


VD>Согласен, мне тоже руби больше нравится при таком сравнении. Но как Немерле здесь смотрится на уровне. Если учесть, что у него есть паттерн-матчинг и полноценная поддержка ФЯ, то вообще Руби с Питоном смотря на его фоне слабовато.


Да, паттерн-матчинг -- это есть гуд. И list comprehensions. И то, что язык компилируемый до IL уж точно будет быстрее и Руби и Питона. Теперь осталось поднять волну энтузиазма размером с Руби
Re[4]: Nemerle vs. F# vs. Boo
От: Alexey Romanov  
Дата: 10.10.06 17:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>По этим критерия Буу тихонько курит в сторонке. ФП у него довольно слабо (по сравнению с Немерлом). А МП просто в зачаточном состоянии (плагины к компилятору оперирующие с АСТ). Буу это попытка сделать статически типизированный Питон. А так как многие положительные черты Питона основываются на его динамической природе, то и результат получается так себе. Плюс в Буу очень немного хайтека. Это скорее добротная работа середнячков. Немерле же точная противоположенность. Это чистеший хайтек. Это же приводит к тому, что в Немерле до сих пор доволно много глюков.


Спасибо!

AR>>Если можете подсказать другие языки, которые под эти критерии подходят, буду только рад.


VD>Для Явы есть Скала. С точки зрения читоты проектирования она будет даже по круче Немерла, но в ней нет макросов.


Нужно будет посмотреть и попробовать.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.