Nemerle – вопросы дизайна
От: Чистяков Владислав Юрьевич Российская Империя www.nemerle.org
Дата: 20.09.11 03:11
Оценка: 885 (14) +1
Статья:
Nemerle – вопросы дизайна
Автор(ы): Чистяков Владислав Юрьевич
Дата: 20.02.2012
Те, кто начинает изучать язык программирования Nemerle после C#, зачастую задаются вопросом, почему при общей похожести языков в Nemerle введены те или иные синтаксические отличия. Эта статься посвящена описанию отличий и объяснению причин их возникновения.


Авторы:
Чистяков Владислав Юрьевич

Аннотация:
Те, кто начинает изучать язык программирования Nemerle после C#, зачастую задаются вопросом, почему при общей похожести языков в Nemerle введены те или иные синтаксические отличия. Эта статься посвящена описанию отличий и объяснению причин их возникновения.

17.07.13 20:05: Перенесено из 'Nemerle'
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Nemerle – вопросы дизайна
От: _nn_ www.nemerleweb.com
Дата: 20.09.11 08:11
Оценка:
Здравствуйте, Чистяков Владислав Юрьевич, Вы писали:

ЧВЮ>Статья:

ЧВЮ>Nemerle – вопросы дизайна
Автор(ы): Чистяков Владислав Юрьевич
Дата: 20.02.2012
Те, кто начинает изучать язык программирования Nemerle после C#, зачастую задаются вопросом, почему при общей похожести языков в Nemerle введены те или иные синтаксические отличия. Эта статься посвящена описанию отличий и объяснению причин их возникновения.


ЧВЮ>Авторы:

ЧВЮ> Чистяков Владислав Юрьевич

ЧВЮ>Аннотация:

ЧВЮ>Те, кто начинает изучать язык программирования Nemerle после C#, зачастую задаются вопросом, почему при общей похожести языков в Nemerle введены те или иные синтаксические отличия. Эта статься посвящена описанию отличий и объяснению причин их возникновения.


Насчет скобочек, было бы хорошо добавить ссылку: http://en.csharp-online.net/ECMA-334%3A_9.2.3_Grammar_ambiguities
Меньше вопросов будет.

В многомерных массивах было бы хорошо подчеркнуть о необходимости ".": array.[2][[42, 1], [33, 2]]

Опечатка в таблице :

var ary = new[,] { { 42, 1 }, { 33, 2 } };


def ary = array.[2][[42]];


Console.WriteLine(ary[0, 0]);


def ary = array.[2][[42, 1], [33, 2]];

Про списки стоило бы сделать отдельный заголовок.
Это ведь не массивы.
Да и поддержка у них в Nemerle 1.0 получше чем у массивов: Операция ::, Pattern Matching, List comprehension ну и т.п.


Насчет присваивания, стоит подчеркнуть, что это позволяет избежать неоднозначности и сложных выражений типа:
int a = 1;
if (a++ == --a) {}

int a = 0, b = 0, c = 0;
while ( (a = b = ++b + c) == ++a) { }

И классика :
int a = 0;
a = a++ + ++a;
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Nemerle – вопросы дизайна
От: para  
Дата: 20.09.11 12:57
Оценка:
Здравствуйте, Чистяков Владислав Юрьевич, Вы писали:

var ary = new int[] { 42 };
def ary = array[1]; //42
Re: Nemerle – вопросы дизайна
От: Othello  
Дата: 21.09.11 12:47
Оценка:
В Список синтаксических расхождений -> Объявление локальных переменных и параметров

// с использованием вывода типов
var x = 42;
var str;


в самом начале нужно наверное строку написать. Иначе тип не из чего выводить.

// с использованием вывода типов
var x = 42;
var str = "nemerle";


ну и для всех 3х столбцов.
... << RSDN@Home 1.2.0 alpha 4 rev. 1270>>
Re: Nemerle – вопросы дизайна
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.09.11 16:54
Оценка:
Исправил ошибки указанные в сообщениях.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Nemerle – вопросы дизайна
От: _nn_ www.nemerleweb.com
Дата: 02.10.11 14:30
Оценка: +1
Здравствуйте, Чистяков Владислав Юрьевич, Вы писали:


  • В таблице "Объявление локальных переменных и параметров" в колонке C# лишняя пустая строка.
    Трудно сравнивать.


  • x, y, x : int // недопустимо!
    Должно быть видимо, два раза х не должно быть допустимо вообще
    x, y, z : int.


  • В таблице "Приведение типов" тоже хорошо бы подровнять Nemerle и C#.


  • В Nemerle нельзя не указывать "| _ =>" в match выражении.
    Это хорошо бы подчеркнуть.
    В отличии от C# есть проверка на полноту сопоставления.


  • Не указано , что в Nemerle локальные изменяемые переменные автоматически инициализируются, даже если не писать.
    class A
    {
      static void Main() { int x; System.Console.WriteLine(x); } // Error
    }

    module A
    { 
      Main() : void { mutable x : int; System.Console.WriteLine(x); } // OK
    }
  • http://rsdn.nemerleweb.com
    http://nemerleweb.com
    Re[2]: Nemerle – вопросы дизайна
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 03.10.11 18:55
    Оценка:
    Здравствуйте, _nn_, Вы писали:

    __>
  • ...

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

    Я же писал статью о дизайнерских решения которые вызывают вопросы.

    Все что ты описал можно внести в страничку сравнения с C#, ссылка на которую приведена в конце статьи.
  • Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.