Пётр Кушнир писал(а):
Ярослав Романченко писал(а):
Пётр Кушнир писал(а):
Позорище
Помнится мне, это позорище тут активно обсуждалось и в целом воспринималось публикой достаточно положительно.
Сначала они перетащили себе сишные типы, теперь сишные элементы организации блоков (от секции var можно вообще отказаться теперь), а дальше что?
Да, позорище именно Delphi способ
Надо было делать как в Ada и Modula-3
(
Пётр Кушнир писал(а):
В любом случае, прошу вашего обоснования необходимости добавить в язык (...) очередной способ запутать код (объявление по месту, локальные переменные, вот ето всё).
См. ниже про NULL
)
Comdiv писал(а):
Wlad писал(а):
И есть локальные (промежуточные, временные) переменные В ЭТИХ блоках кода. С временем жизни только внутри этих блоков. ЗАЧЕМ мне их тащить в раздел объявления переменных под заголовок процедуры/функции?
Суть локального кода слишком незначительна для вынесения в отдельную функцию? Есть код в opensource для ознакомления?
"Нет проблем"...
Из исходных кодов Modula-3 ( уже было публиковал здесь на форуме, но в плане индекса цикла FOR) :
caltech-parser\cit_util\src\SIsuffix.m3
Код:
FOR i := FIRST(List) TO LAST(List) DO
VAR
x : BOOLEAN;
BEGIN
x := tbl.put(List[i].char, List[i]);
<* ASSERT NOT x *>
END
END
m3-libs\bitvector\test\src\TestBitVector.m3
Код:
FOR i := 0 TO Max - 1 BY 7 DO
FOR j := 1 TO 6 DO
VAR set := bv2.set(i+j); BEGIN <* ASSERT NOT set *> END
END
END;
А ещё позволяет избавиться от NULL : переменная сразу же инициализирована "полезным значением"
Пётр Кушнир писал(а):
Wlad писал(а):
Мэтром задекларирован принцип структурности и минималистичности.
А - что на практике?
В двух ветках по ЕСЛИ у меня есть блоки кода. И есть локальные (промежуточные, временные) переменные В ЭТИХ блоках кода.
Это же обман, у блоков кода нет никаких переменных, в блоках кода лежит код. А переменные как аналог регистров лежат заранее, по памяти раскладываются заранее и инициализируются в прелюдии заранее. Обман и позорище состоит в том что на самом деле переменные всегда возникают перед процедурой. Даже те, что вы "объявили" в конце.
Про реализацию: возможно, используется техника фреймов(?) , как для вложенных процедур. М.б. просто стек.
С оптимизирующим компилятором -- у локальной переменной есть большие шансы оказаться в регистре минуя RAM.
== == ==
Валерий Лаптев писал(а):
Тут же еще и способности американцев (в отличие от европейцев) к продвижению товаров...
Кто бы знал про ТурбоПаскаль, пока в Америке не образовалась фирма Борланд?
Это ж каким надо быть пройдохой (хоть и европейского происхождения),
чтобы ПОД БУДУЩИЕ прибыли уговорить журнал Byte дать рекламу на развороте!?
Бизнес таланты "саксофониста" ( в том числе "сдать друзей за 30 секунд, иначе ты опоздал", см. историю TopSpeed) неоспоримы.
Но сильно бледнеют перед успехами Apple примерно того же периода.
Детей в школах "Объединённых государств Америки" ( см. историю компромиса при создании ООН: УССP и БССР как отцы-основатели c формулировкой "за заслуги в ВОВ" ) учили Pascal на их технике.