Re: Ниша и задачи Nemerle
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 12.08.07 07:51
Оценка: 12 (2) +1
Здравствуйте, NikeByNike, Вы писали:

NBN>1. Какие задачи призван решать Немерл? Какая у него ниша, для каких задач он удобен?


Для всех, для которых пригодны большинство привычных мейнтстримовых языков вроде C++, C#, Java, Delphi плюс ещё что-то.

NBN>2. Для чего не удобен?


Да вроде во всех задачах, где применим C# или Java, Nemerle удобнее. Но есть задачи, в которых его удобство проявляется ещё больше. Например, при написании компиляторов. Да вообще, Nemerle удобен при написании чего-то алгоритмически нетривиального. И уж тем более, Nemerle намного удобнее C++ и особенно С, этого любимца столменовской мафии.

NBN>3. В чём его плюс в стравнении с C#?


А корректно ли сравнивать Nemerle и C#. Некоторые говорят, что Nemerle — это продукт скрещивания C# и ФП. А мне вот кажется, что Nemerle очень близок к Питону, и его уместнее сравнивать с Boo.

Ну конечно же, поддержка фич, традиционных в ФЯ. Вывод типов, из-за чего банально нужно меньше писать (впрочем, IDE поможет в случае с C#), и главное (!) проще читать. Алгебраические типы — даже не знаю, как объяснить, какое они дают преимущество. Надо их поюзать и всё станет понятно. Паттерн-матчинг. Кортежи. Вложенные функции (с замыканиями, ка положено) и лямбды (с человеческим синтаксисом, а не монстроидальным, как анонимные делегаты в С#). Набор типов и функций, привычных в мире ФП: option (aka Maybe в Хаскелле), list (тот, что единственный и неповторимый в Лиспе), Map/Filter/Fold, и много других. Ну и, конечно, макросы, с которыми, однако, надо обращаться очень осторожно (в смысле написания своих, а стандартные можно юзать, сколько влезет).

NBN>4. Какой минус?


Конечно же, отсуствие релиза. Нету нормальной документации (особенно по макросам). Глючная интеграция VS. Долго компилируется (хотя намного быстрее, чем C++ с бустами).

NBN>5. Какие есть более-менее крупные проекты?


Лично я знаю 2: ncc и Интеграция . Вроде РСДН-щики хотели на нём писать новую версию движка. Пока не слышно от них, как обстоят дела.

NBN>6. Есть ли у него глюки или проблемы?


Куча. Языком занимаются не так уж много людей, да и тем, кто занимается, времени как всегда не хватает. Поэтому жутко раздражает куча мелких недочётов. Например, в страндартной библиотеке языка есть классы Set и Map. Они требуют, чтобы их аргументы были IComparable. Но вот в чём проблема: сами они, так же, как и list или option, не являются IComparable, что несколько ограничивает свободу действий. Так же любые варианты не являются IComparable и для них не генерируется методов GetHashCode(), Equals(), @==, @!= (в случае, когда все поля всех опций являются IComparable). В идеале, нужен макрос (что-то вроде AlgebraicType), который всё это генерит, я даже пытался написать его сам. Но, во-первых, столкнулся с недостатком документации по макросам. Во-вторых, т.к. list и многие другие стандартные типы не являются IComparable, от этого макроса толку немного.

Вот ещё одна проблема. Очень удобно в Nemerle пользоваться коллекциями Nemerle, а не System.Collections.Generic. Потому чуть ли не в каждом исходном файле я пишу using Nemerle.Collections. Но иногда нужно вернуть что-то типа IEnumerable. Так вот: в Nemerle.Collections тоже есть свой IEnumerable, который к тому же и Obsolete, так что постоянно приходится писать using SCG = System.Collections.Generic, и SCG.IEnumerable.

В Nemerle не хватает (эту проблему он унаследовал от C#) read-only интерфейсов для коллекций, и некоторых read-only коллекций (например, read-only массив, как в Haskell), хотя это косяк не Nemerle, а .NET Framework, и исправить это теперь не удастся.
... << RSDN@Home 1.2.0 alpha rev. 672>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.