-
-
> MBo (15.08.2008 10:44:00) [0]
Популисткая мера. Последствия могут быть плохими, а по Паркинсону будут.
-
"Всякий овощ приносит пользу, будучи употреблен надлежащим образом в надлежащее время".
Наверняка найдется такой код, где применение таких конструкций будет вполне оправдано. Другое дело, что народ будет использовать фичу ради фичи, превращая код в нечто абсолютно нечитаемой и несопровождаемое. Зато "типа круто". Впрочем, с хелперами и с дженериками все с точностью то же самое - идея неплохая, а извраты воспаленного мозга при использовании эту идею дискредитируют.
-
Всё уже украдено до нас (c) Операция Ы.
Это было давно в Algol 68.
Вообще-то если они при этом уберут старый синтаксис (TSimpleProc = procedure(x: Integer);), то будет явно более однозначный синксис. Сейчас синтаксис неоднозначный или, по крайней мере, не очевиден. Например, попробуй понять такое с ходу:
type TSimpleProc = function : Object; var pp : TSimpleProc; ... if pp=nil then ...
Вот и пойми, что тут имелось в виду и как же именно записать то, что действительно хочешь (для шибко много знающих замечу, что об операторах @ и Address() я в курсе).
Короче, если они поменяют синтаксис в сторону функционального языка типа Algol 68, то будет намного лучше. Всё-таки теперешний синтаксис Pascal местами просто уродлив и выглядит анахронизмом.
-
анонимные методы сами по себе хороши.. замыкания и все такое.. а вот смысл в reference to procedure я тоже чтото не уловил
-
> Или я не вижу чего-то глубинного?
скорее всего компилер так устроен, ему нужно явное указание
Func(10) - это вызов ссылки на анонимную или обычную функцию...
-
> Вот и пойми, что тут имелось в виду и как же именно записать > то, что действительно хочешь (для шибко много знающих замечу, > что об операторах @ и Address() я в курсе).
Да, хороший пример. Но, насколько я понимаю, в данной ситуации нельзя таким образом именно адрес метода (не результат) проверять. Надо через Assigned. Тогда понятно будет: if Assigned(pp) then
if pp=nil then ...
-
> Ega23 © (15.08.08 11:19) [6] > > Вот и пойми, что тут имелось в виду и как же именно записать > > то, что действительно хочешь (для шибко много знающих > замечу,> что об операторах @ и Address() я в курсе).Да, > хороший пример. Но, насколько я понимаю, в данной ситуации > нельзя таким образом именно адрес метода (не результат) > проверять. Надо через Assigned. Тогда понятно будет:
Тогда я тебя попрошу написать пример для ссылки на ссылку на функцию, выдающую объект. Вот на старом Algol 68 это было очевидно. На C/C++ не так очевидно, но можно. А вот на Pascal... без бутылки точно не разберёшь.
-
> Alex Konshin © (15.08.08 11:23) [7]
Интуитивно понятный код - это когда интуитивно понятно, это - код. © bash.org.ru
-
> Тогда я тебя попрошу написать пример для ссылки на ссылку > на функцию, выдающую объект.
@(Pointer(@PP)) ?? :-)
Только не понятно, как ввод reference to решит эту проблему??
-
> пример для ссылки на ссылку на функцию, выдающую объект.
:) Ты сначала приведи нормальные (не академический) пример, где без этого действительно никак не обойтись: ссылки на ссылку на функцию ,возвращающую чего-то-там.
-
> Ega23 © (15.08.08 11:35) [10] > > пример для ссылки на ссылку на функцию, выдающую объект. > :) Ты сначала приведи нормальные (не академический) пример, > где без этого действительно никак не обойтись: ссылки на > ссылку на функцию ,возвращающую чего-то-там.
Элементарно. Это может понадобится, если у тебя есть несколько векторов функций и по ним нужно как-то перемещаться. Вот как раз-таки из-за того, что в Pascal это совершенно нечитаемо, такой код редко встретишь. На C/C++ таких примеров - завались. А на Algol 68 это были вообще задачки для начинающих студентов.
-
> Вот как раз-таки из-за того, что в Pascal это совершенно > нечитаемо, такой код редко встретишь.
Дело не в том, что это "читаемо - не читаемо". По мне, так весь С как-то не очень читаемый. Дело-то не в этом. Мне просто архитектурно как-то сложно себе представить, нафига иметь указатель на указатель на что-то. Почему не просто указатель на что-то?
-
Вот, кстати, пример вектора функций - VMT. А указатель на него - это указатель на класс. Правда в VMT типы функций разные.
-
> По мне, так весь С как-то не очень читаемый
Сам ты не очень читаемый :) Нормальный язык, код, грамотно на нем написанный, читается без проблем. А нечитаемо на любом языке можно написать, даже на русском.
-
Вот, например, захочется тебе интерпретатор Forth или Lisp реализовать на Pascal, а там сплошные указатели многоэтажные...
-
К слову, одно из последних нововведений в Delphi мне не очень нравится именно по той же причине - появление неоднозначностей. Сейчас можно не указывать ^ для разыменования указателей на запись. Вот именно то, что можно и так, и эдак, мне не нравится.
-
> Сам ты не очень читаемый :) Нормальный язык, код, грамотно > на нем написанный, читается без проблем. А нечитаемо на > любом языке можно написать, даже на русском.
Это всё субъективно. Да и редко встретишь грамотно написанный и читабельный код от чистого сишного кодера. Всегда просматривается подспудное желание записать одной строкой то, что можно написать в пять строк... :)
-
>[12] Ega23 © (2008-08-15 11:47:00) >По мне, так весь С как-то не очень читаемый дело привычки.
--- Do what thou wilt shall be the whole of the Law.
-
> дело привычки.
Вполне вероятно.
|