S>>>Какой тут можно сделать объект?
M>>Никакой. Здесь один параметр, который есть уже объект.
M>>Здесь напрашивается другой паттерн рефакторинга — Выделение переменной (Introduce Explaining Variable) M>>здесь
M>>
Конечно нужно, если этого потребует (постановка задачи) и/или (её имплементация).
Но это вовсе не обязательно.
Даже излишне, если это не требуется.
keep it simpler, stupid.
Кроме того, К>
К>взять_взаймы(
К> максимум( -- у кого
К> [человек1, человек2], -- набор, из которого берётся максимальный элемент
// а кто будет оптимизировать здесь вызов подпрограммы? компилятор штоли?
//дюже вумный нужен компилятор.
//Хотя в большинсттве задач рассматриваемой предметной области не сильно такая оптимизация нужна...
// но если нужна, то кранты.
К> compose_f_gx_gy( -- композитный предикат - комбинатор
К> меньше(), -- f - оператор сравнения
К> атрибут(деньги) -- g
//указатель на член - это только в плюсах есть из известных мне языков.
//в C#/Java, ноа которых щас пишу, даже не знаю как это заимплементить.
К> )
К> )
К>)
К>
К>Тем самым мы, во-первых, устраняем повторение имён (деньги) и ссылок (человек1, человек2), а во-вторых, делаем систему масштабируемой: можно обращаться к набору из более (да и менее) чем двух людей.
P>На самом деле академизмом, даже жалким, там и не пахнет. Это больше похоже вот на что:
P>
P>С точки зрения банальной эрудиции, каждый индивид способен абстрагироваться от идей материального индустриализма. Поскольку ратифицировать конвенцию о модернизации идентификационной изменчивости возможно при наличии ресурсообеспеченности, неизбежна ревальвация космогонической санации, а также консолидация психофизиологической формации.
P>Обращаясь к рационально-апоплексическому анализу дисгармонии фазисов современного апогея, мы эфемерно субъективизируемся в радикально – трансцендентном апофеозе и симбиозе. Антроподинамическая тенденция стабилизации мутогенеза находится на стадии нуклеосинтеза, порождая в свою очередь фальсификацию люминистенции реквизита. Электрофорез и диффектоскопия эпиграфики показали наличие плюрализма и плебисцита в хронологии дидактики.
А вот отсюда, если можно, поподробнее Не раскрыта тема социогенетической взаимоинтеграции индивидуумов
К>IF
К> condition_goes_here
К>THEN
К> x;
К> y;
К> z; (* с обязательной ";" в конце каждой инструкции - требование системы контроля версий *)
К>ELSE
К> t;
К> u;
К> v;
К>END; (* и здесь тоже ";" по той же самой причине *)
К>
А пусть даже и так.
Посчитаем синтаксический оверхед по сравнению с аналогичным показанному выше, но теперь уже Си-образным синтаксисом
Здравствуйте, Пацак, Вы писали:
П>Здравствуйте, Cyberax, Вы писали:
C>>Еще можно Перл и Питон вспомнить — с ними C>>по лаконичности рядом вообще ни один Паскаль не валялся.
П>Учитывая "любовь" автора к скобочкам — лучше лисп!
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Кодт, Вы писали:
К>>
К>>IF
К>> condition_goes_here
К>>THEN
К>> x;
К>> y;
К>> z; (* с обязательной ";" в конце каждой инструкции - требование системы контроля версий *)
К>>ELSE
К>> t;
К>> u;
К>> v;
К>>END; (* и здесь тоже ";" по той же самой причине *)
К>>
СГ>А пусть даже и так.
СГ>Посчитаем синтаксический оверхед по сравнению с аналогичным показанному выше, но теперь уже Си-образным синтаксисом СГ>
Здравствуйте, garant, Вы писали:
G>Здравствуй, Кодт.
К>> Смысл заметки в том, что: СИ-ОБРАЗНЫЙ СИНТАКСИС ИСПОЛЬЗУЕТ К>> БОЛЬШЕ ЛЕКСЕМ ЧЕМ ЭТО РЕАЛЬНО НЕОБХОДИМО. Я специально для Вас К>> заглавными буквами написал смысл. Запомните его. А то, К>> понимаете-ли, прочитали сообщение, а смысла так и не поняли.
Я этого не говорил.
G>Ха-ха-ха-ха! (вежливо) G>А над чем смеемся-то?..
Я — над Сергеем Губановым, который утверждает, что Си-образный синтаксис избыточен, но почему-то в качестве примера для подражания приводит громоздкий синтаксис Оберона.
А как ещё можно назвать язык, в котором пишутся BEGIN END PROCEDURE MODULE и прочие здоровенные слова, но при этом соблюдается экономия на спичках:
— признак доступа к имени в модуле выражается плюсиком-минусиком в имени
— разделитель ветвей в свитче — палочкой (а в if — словами THEN, ELSE)
MODULE FigureList; (* tlozza@student.ethz.ch *)TYPE
Figure = OBJECT
name : System.String;
next : Figure; (* Reference to the next figure. *)END Figure;
VAR
FigureList, MyFigure, Iterator : Figure;
BEGIN
NEW(MyFigure); (* Create new figure object/instance. *)
MyFigure.name := "my favorite";
FigureList := MyFigure; (* Attach figure to list. *)
NEW(MyFigure); (* A new figure again. *)
MyFigure.name := "another one";
FigureList.next := MyFigure;
(* Print the name of all figures in the list. *)
Iterator := FigureList;
WHILE Iterator # NIL DO
WRITELN(Iterator.name);
Iterator := Iterator.next;
END;
END FigureList.
Попрошу обратить внимание на следующее:
Figure = OBJECT
name : System.String;
next : Figure; (* Reference to the next figure. *)END Figure;
MODULE List;
TYPE
List = POINTER TO ListDesc;
ListDesc = RECORD
key: ARRAY 64 OF CHAR;
next: List;
END;
VAR root: List;
PROCEDURE Find (key: ARRAY OF CHAR): List;
VAR p: List;
BEGIN
p := root.next;
WHILE (p # NIL) & (p.key < key) DO p := p.next END;
IF (p = NIL) OR (p.key > key) THEN RETURN NIL
ELSE RETURN p
END
END Find;
PROCEDURE Insert (key: ARRAY OF CHAR; unique: BOOLEAN);
VAR p, q: List;
BEGIN
p := root;
WHILE (p.next # NIL) & (p.next.key < key) DO p := p.next END;
IF unique & (p.next # NIL) & (p.next.key = key) THEN HALT (99) END;
NEW (q); COPY (key, q.key); q.next := p.next; p.next := q
END Insert;
PROCEDURE Delete (key: ARRAY OF CHAR);
VAR p: List;
BEGIN
p := root;
WHILE (p.next # NIL) & (p.next.key < key) DO p := p.next END;
IF (p.next # NIL) & (p.next.key = key) THEN
p.next := p.next.next
END
END Delete;
PROCEDURE InitList;
BEGIN NEW (root); root.next := NIL
END InitList;
END List.
Во-первых, видим кучи begin-end'ов (так, только не надо мне сейчас говорить, что это не Оберон-5, а МодулаХ9-бета или Зоннон или... Это-Оберон). Во-вторых видим дикий синтаксис в одну строчку. Нечитаемый. Дебагить его тоже невозможно:
IF (p = NIL) OR (p.key > key) THEN RETURN NIL
ELSE RETURN p
END
Короче. На более-менее реальных примерах Оберон в десятки раз проигрывает в читаемости. Визуального мусора в нем — тонны. И лексем там не меньше, чем в С/С++
Здравствуйте, Кодёнок, Вы писали:
А>>Ты это... убери что-ли "кфмн" из профайла. А>>Даже неудобно как-то читать подобные сообщения от человека со степенью.
Кё>По-моему, среди кандидатов умных людей как раз меньшинство, а не большинство. Знаете же этот маразм, писать научные статьи, публиковаться, а главное читать чужие очень умные банальности, написанные научным языком. Откройте какой-нибудь специфический научный журнал — даже зная предмет читать это напрягает. Разве нормальный человек там останется? Отмазка от армии не в счёт
Полностью согласен! Пусть на меня не обижаються мои друзья учащиеся в аспирантуре, но то что там занимаються зачастую надуманными и не имеющими практического и прочего применения это точно. Зачастую все статьи, научные работы и прочее пишуться только ради самого факта публикации.
Здравствуйте, Yachtsman, Вы писали:
Y>А этот синтаксис не устарел?! Не смотря на то, что ему те же 25?
Нет не устарел.
1) Вот смотрите, заменим все служебные слова на символ "*"
REPEAT x UNTIL b = * x * b
WHILE a DO x END = * a * x *
IF a THEN x END = * a * x *
IF a THEN x ELSE y END = * a * x * y *
IF a THEN x ELSIF b THEN y ELSE z END = * a * x * b * y * z *
CASE n OF a: x | b: y ELSE z END = * n * a * x * b * y * z *
между каждым "пользовательским" идентификатором стоит не более одной звездочки. Меньше одной звездочки поставить нельзя (если конечно не перегружать пробельные символы дополнительным смыслом кроме того что у них и так уже натурально есть). Значит минимум достигнут. Больше одной звездочки — это уже оверхед. Если расписать аналогичные Си-образные конструкции, то там будет куча лишних звездочек.
2) В, принципе, вместо слов IF, END и т.д. можно изобрести совершенно другие слова. Можно изобрести какую угодно другую семантику, но сам, так сказать, синтаксический скелет:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, eao197, Вы писали:
E>>Да и вообще, чего мы мелочимся?
СГ>Увы, 235 процентов — не мелочь.
СГ>Серьмяжный смысл моего сообщения был в том, что теперь я могу ссылаться
на это сообщение, а не голословно говорить, что Си-образный синтаксис использует больше лексем чем нужно.
СГ>Мне даже не важно какой именно перерасход лексем получился. Важно что их больше
Здравствуйте, moudrick, Вы писали:
M>И что же используется в тех местах, где раньше был {begin, end}?
А таких мест больше нет, вот смотрите:
IF ... THEN ... END
IF ... THEN ... ELSE ... END
IF ... THEN ... ELSIF ... ELSE ... END
CASE ... OF ... : ... | ... : ... | (и т.д.) ELSE ... END
WITH ... : ... DO ... |... : ... DO ... | (и т.д.) ELSE ... END
WHILE ... DO ... END
LOOP ... END
REPEAT ... UNTIL ...
Сам по себе блок begin end утрачен за не надобностью — ведь все инструкции теперь явно содержат END.
К>>IF
К>> condition_goes_here
К>>THEN
К>> x;
К>> y;
К>> z; (* с обязательной ";" в конце каждой инструкции - требование системы контроля версий *)
К>>ELSE
К>> t;
К>> u;
К>> v;
К>>END; (* и здесь тоже ";" по той же самой причине *)
СГ>А пусть даже и так.
СГ>Посчитаем синтаксический оверхед по сравнению с аналогичным показанному выше, но теперь уже Си-образным синтаксисом
Здравствуйте, Socrat, Вы писали:
S>Там мы дождемся перевода данного или похожего кода на Оберон?
Не понял, я что ли должен за Вас чего-то переводить? А самим слабо что-ли? Кому это нужно, мне или Вам? Переведите, подсчитайте служебные слова, возьмите калькулятор, разделите два полученных числа друг на друга. Ну?
Здравствуйте, GlebZ, Вы писали:
AF>>Сергей! Не в даваясь в детали дискуссии (всё что можно и что нельзя сказали без меня ), вы никогда не задумывались — почему Джордано Бруно кончил карьеру не так, как Галилей? GZ>Оберон все таки вертится?
Поверьте мне, Оберон вертится вовсе не оттого, что у него, как говорит аффтар,
минимальное количество лексем, что весьма сомнительно, так как легко опровергается в соседних постах.
GZ>С уважением, Gleb.
Здравствуйте, AndreyFedotov, Вы писали:
AF>Сергей! Не в даваясь в детали дискуссии (всё что можно и что нельзя сказали без меня ), вы никогда не задумывались — почему Джордано Бруно кончил карьеру не так, как Галилей?
Тогда не было интернета. Вот если бы все ковбои отметившиеся в этой ветке были бы собраны в одной комнате, то я бы конечно не рискнул войти в эту комнату запереть ее изнутри и сообщить присутсвующим что Си-образный синтаксис оказывается устарел 25 лет назад. А с интернетом, глядишь, по голове не настучат