Конференция "Прочее" » Анонимные методы в будущем Тибуроне
 
  • MBo © (15.08.08 10:44) [0]
    Не понимаю, для чего в язык вводится новая конструкция
    TSimpleProc = reference to procedure(x: Integer);
    http://blogs.codegear.com/andreanolanusse/2008/07/17/tiburon-anonymous-methods/
    Разве нельзя в данном случае было обойтись старыми добрыми процедурными типами TSimpleProc = procedure(x: Integer);  ?
    Или я не вижу чего-то глубинного?
  • Anatoly Podgoretsky © (15.08.08 10:55) [1]
    > MBo  (15.08.2008 10:44:00)  [0]

    Популисткая мера.
    Последствия могут быть плохими, а по Паркинсону будут.
  • Игорь Шевченко © (15.08.08 10:59) [2]
    "Всякий овощ приносит пользу, будучи употреблен надлежащим образом в надлежащее время".

    Наверняка найдется такой код, где применение таких конструкций будет вполне оправдано. Другое дело, что народ будет использовать фичу ради фичи, превращая код в нечто абсолютно нечитаемой и несопровождаемое. Зато "типа круто".
    Впрочем, с хелперами и с дженериками все с точностью то же самое - идея неплохая, а извраты воспаленного мозга при использовании эту идею дискредитируют.
  • Alex Konshin © (15.08.08 11:07) [3]
    Всё уже украдено до нас (c) Операция Ы.

    Это было давно в Algol 68.

    Вообще-то если они при этом уберут старый синтаксис (TSimpleProc = procedure(x: Integer);), то будет явно более однозначный синксис. Сейчас синтаксис неоднозначный или, по крайней мере, не очевиден. Например,
    попробуй понять такое с ходу:

    type TSimpleProc = function : Object;
    var pp : TSimpleProc;
    ...
    if pp=nil then
    ...

    Вот и пойми, что тут имелось в виду и как же именно записать то, что действительно хочешь (для шибко много знающих замечу, что об операторах @ и Address() я в курсе).

    Короче, если они поменяют синтаксис в сторону функционального языка типа Algol 68, то будет намного лучше. Всё-таки теперешний синтаксис Pascal местами просто уродлив и выглядит анахронизмом.
  • Polevi © (15.08.08 11:10) [4]
    анонимные методы сами по себе хороши.. замыкания и все такое..
    а вот смысл в reference to procedure я тоже чтото не уловил
  • jack128_ (15.08.08 11:17) [5]

    > Или я не вижу чего-то глубинного?


    скорее всего компилер так устроен, ему нужно явное указание

    Func(10) - это вызов ссылки на анонимную или обычную функцию...
  • Ega23 © (15.08.08 11:19) [6]

    > Вот и пойми, что тут имелось в виду и как же именно записать
    > то, что действительно хочешь (для шибко много знающих замечу,
    >  что об операторах @ и Address() я в курсе).


    Да, хороший пример.
    Но, насколько я понимаю, в данной ситуации нельзя таким образом именно адрес метода (не результат) проверять. Надо через Assigned. Тогда понятно будет:
    if Assigned(pp) then
     if pp=nil then ...

  • Alex Konshin © (15.08.08 11:23) [7]
    > Ega23 ©   (15.08.08 11:19) [6]
    > > Вот и пойми, что тут имелось в виду и как же именно записать
    > > то, что действительно хочешь (для шибко много знающих
    > замечу,>  что об операторах @ и Address() я в курсе).Да,
    >  хороший пример. Но, насколько я понимаю, в данной ситуации
    > нельзя таким образом именно адрес метода (не результат)
    > проверять. Надо через Assigned. Тогда понятно будет:

    Тогда я тебя попрошу написать пример для ссылки на ссылку на функцию, выдающую объект. Вот на старом Algol 68 это было очевидно. На C/C++ не так очевидно, но можно. А вот на Pascal... без бутылки точно не разберёшь.
  • Рамиль © (15.08.08 11:27) [8]

    > Alex Konshin ©   (15.08.08 11:23) [7]

    Интуитивно понятный код - это когда интуитивно понятно, это - код. © bash.org.ru
  • jack128_ (15.08.08 11:34) [9]

    > Тогда я тебя попрошу написать пример для ссылки на ссылку
    > на функцию, выдающую объект.


    @(Pointer(@PP)) ?? :-)  

    Только не понятно, как ввод reference to решит эту проблему??
  • Ega23 © (15.08.08 11:35) [10]

    > пример для ссылки на ссылку на функцию, выдающую объект.


    :) Ты сначала приведи нормальные (не академический) пример, где без этого действительно никак не обойтись: ссылки на ссылку на функцию ,возвращающую чего-то-там.
  • Alex Konshin © (15.08.08 11:41) [11]
    > Ega23 ©   (15.08.08 11:35) [10]
    > > пример для ссылки на ссылку на функцию, выдающую объект.
    > :) Ты сначала приведи нормальные (не академический) пример,
    >  где без этого действительно никак не обойтись: ссылки на
    > ссылку на функцию ,возвращающую чего-то-там.

    Элементарно. Это может понадобится, если у тебя есть несколько векторов функций и по ним нужно как-то перемещаться. Вот как раз-таки из-за того, что в Pascal это совершенно нечитаемо, такой код редко встретишь. На C/C++ таких примеров - завались. А на Algol 68 это были вообще задачки для начинающих студентов.
  • Ega23 © (15.08.08 11:47) [12]

    > Вот как раз-таки из-за того, что в Pascal это совершенно
    > нечитаемо, такой код редко встретишь.


    Дело не в том, что это "читаемо - не читаемо". По мне, так весь С как-то не очень читаемый. Дело-то не в этом.
    Мне просто архитектурно как-то сложно себе представить, нафига иметь указатель на указатель на что-то. Почему не просто указатель на что-то?
  • Alex Konshin © (15.08.08 11:49) [13]
    Вот, кстати, пример вектора функций - VMT. А указатель на него - это указатель на класс. Правда в VMT типы функций разные.
  • Игорь Шевченко © (15.08.08 11:50) [14]

    > По мне, так весь С как-то не очень читаемый


    Сам ты не очень читаемый :) Нормальный язык, код, грамотно на нем написанный, читается без проблем. А нечитаемо на любом языке можно написать, даже на русском.
  • Alex Konshin © (15.08.08 11:51) [15]
    Вот, например, захочется тебе интерпретатор Forth или Lisp реализовать на Pascal, а там сплошные указатели многоэтажные...
  • Alex Konshin © (15.08.08 11:57) [16]
    К слову, одно из последних нововведений в Delphi мне не очень нравится именно по той же причине - появление неоднозначностей. Сейчас можно не указывать ^ для разыменования указателей на запись. Вот именно то, что можно и так, и эдак, мне не нравится.
  • Ega23 © (15.08.08 12:01) [17]

    > Сам ты не очень читаемый :) Нормальный язык, код, грамотно
    > на нем написанный, читается без проблем. А нечитаемо на
    > любом языке можно написать, даже на русском.


    Это всё субъективно.
    Да и редко встретишь грамотно написанный и читабельный код от чистого сишного кодера. Всегда просматривается подспудное желание записать одной строкой то, что можно написать в пять строк...  :)
  • ketmar © (15.08.08 12:02) [18]
    >[12] Ega23 © (2008-08-15 11:47:00)
    >По мне, так весь С как-то не очень читаемый

    дело привычки.

    ---
    Do what thou wilt shall be the whole of the Law.
  • Ega23 © (15.08.08 12:07) [19]

    > дело привычки.


    Вполне вероятно.
 
Конференция "Прочее" » Анонимные методы в будущем Тибуроне
Есть новые Нет новых   [134442   +10][b:0][p:0.001]