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
Дата: 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: 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[2]: Nemerle – вопросы дизайна
    От: VladD2 Российская Империя www.nemerle.org
    Дата: 03.10.11 18:55
    Оценка:
    Здравствуйте, _nn_, Вы писали:

    __>
  • ...

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

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

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