Оберон-клуб «ВЄДАsoft»
https://zx.oberon.org/forum/

Переменные "по месту" и автоматическое приведение типа
https://zx.oberon.org/forum/viewtopic.php?f=86&t=207
Страница 3 из 4

Автор:  vlad [ 30 мар 2018, 22:32 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

Сергей Оборотов писал(а):
geniepro писал(а):
в обероне вообще нет вложенных процедур
Since procedures may be declared as local objects too, procedure declarations may be nested.


Вся путаница из-за того, что вложенные процедуры в обероне не могут быть замыканиями. Это такие недо-процедуры, которые сбивают с толку: с одной стороны синтаксис как бы подразумевает замыкание (поскольку есть доступ к внешим переменным), с другой стороны семантика запрещает с этой функцией делать что-либо полезное (передать вниз, вернуть наверх), можно только вызвать. Отсюда и вся палитра мнений от "их нет" от просветленных функциональщиков, до "конечно они есть" от оберонщиков с EBNF.

Автор:  Comdiv [ 31 мар 2018, 00:25 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

vlad писал(а):
семантика запрещает с этой функцией делать что-либо полезное ... можно только вызвать.
...
просветленных функциональщиков
угар

Автор:  Comdiv [ 31 мар 2018, 00:35 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

geniepro писал(а):
Замыканиями могут быть не только функции. Вот в смоллтоке нет функций, но есть сообщения

Дело было совсем не об этом. Но раз уж Вы затронули эту тему, то не подскажите, чем являются "сообщения", "методы" и подобные им понятия по сути?

Автор:  Сергей Оборотов [ 31 мар 2018, 08:21 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

Comdiv писал(а):
vlad писал(а):
семантика запрещает с этой функцией делать что-либо полезное ... можно только вызвать.
...
просветленных функциональщиков
угар
Мощно порезали.

Автор:  geniepro [ 31 мар 2018, 19:33 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

vlad писал(а):
Сергей Оборотов писал(а):
geniepro писал(а):
в обероне вообще нет вложенных процедур
Since procedures may be declared as local objects too, procedure declarations may be nested.

Вся путаница из-за того, что вложенные процедуры в обероне не могут быть замыканиями. Это такие недо-процедуры, которые сбивают с толку: с одной стороны синтаксис как бы подразумевает замыкание (поскольку есть доступ к внешим переменным), с другой стороны семантика запрещает с этой функцией делать что-либо полезное (передать вниз, вернуть наверх), можно только вызвать. Отсюда и вся палитра мнений от "их нет" от просветленных функциональщиков, до "конечно они есть" от оберонщиков с EBNF.

Да нет, мне как-то попадалось, что в оберонах нет вложенных процедур, но полистал сейчас описания разных оберонов -- вроде они есть. Странно...

ЗЫ. Наверное, я спутал обероны с зонноном -- там до сих пор вложенные процедуры не реализованы, хотя в описании вроде имеются...

PPS. Кстати, в статье On Programming Styles Вирт пишет:
Niklaus Wirth, 24.3.2008 писал(а):
In summary, the new rule of good style is: Avoid nesting of procedures and use global variables sparingly! Of course this is no dogma, and rules allow for justified exceptions.

Автор:  geniepro [ 01 апр 2018, 00:42 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

Comdiv писал(а):
geniepro писал(а):
Замыканиями могут быть не только функции. Вот в смоллтоке нет функций, но есть сообщения

Дело было совсем не об этом. Но раз уж Вы затронули эту тему, то не подскажите, чем являются "сообщения", "методы" и подобные им понятия по сути?

Зависит от набора базовых концепций. В смоллтоке, где всё есть объект, сообщение будет объектом.
В языке же где всё -- функция, это же самое сообщение уже будет функцией.

Автор:  Сергей Оборотов [ 01 апр 2018, 16:49 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

geniepro писал(а):
PPS. Кстати, в статье On Programming Styles Вирт пишет:
Niklaus Wirth, 24.3.2008 писал(а):
Of course this is no dogma, and rules allow for justified exceptions.
Тертый калач уже.

Автор:  geniepro [ 01 апр 2018, 19:50 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

Сергей Оборотов писал(а):
geniepro писал(а):
PPS. Кстати, в статье On Programming Styles Вирт пишет:
Niklaus Wirth, 24.3.2008 писал(а):
Of course this is no dogma, and rules allow for justified exceptions.
Тертый калач уже.

У меня в голове отложилось, что Вирт, наконец-то, начал учитывать опыт сишников последних десятилетий, вот я и решил, что он избавился от вложенных процедур. Он же довольно смело выбрасывал малополезные фишки из Оберона. А тут вдруг взял да оставил, нелогично как-то... Вложенные модули убрал, мог бы и вложенные процедуры убрать, хуже не было бы...

Автор:  S.Atan [ 03 апр 2018, 22:04 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

Блин, во вы тут дебаты дебачите... :shock: :D :D :D

На сколько я знаю, Вальдемарыч преследовал несколько целей в языке.
Но две - самые важные.
1: Язык должен быть семантически близко похожим на разговорный
2: Не должно быть неоднозначностей.

Понятное дело, что человек кодировал не для себя в большинстве, а для студентов. А семантически близкий к разговорному легче донести до аудитории...

Код: "OBERON"
  1. ПРОЦЕДУРА Сумма():ЦЕЛОЕ;
  2. ПЕРЕМЕННЫЕ
  3. r: ЦЕЛОЕ;
  4. НАЧАЛО
  5. r := 0;
  6. ОТ i:=0 ДО 10 ПОВТОР
  7. НАЧАЛО
  8. r := r + i;
  9. КОНЕЦ ПОВТОР;
  10. РЕЗУЛЬТАТ r;
  11. КОНЕЦ Сумма;


Ну вот если в одну строку то:
Код: "OBERON"
  1. ПРОЦЕДУРА Сумма():ЦЕЛОЕ; ПЕРЕМЕННЫЕ r: ЦЕЛОЕ; НАЧАЛО r := 0; ОТ i:=0 ДО 10 ПОВТОР НАЧАЛО r := r + i; КОНЕЦ ПОВТОР; РЕЗУЛЬТАТ r; КОНЕЦ Сумма;


Вот согласитесь, даже некоторые ту@бни-школьники и те поймут с грехом пополам что происходит!
Поэтому нет в Виртовских языках нужных и не нужных конструкций.
У сишников и мышление то даже не машинное, а чисто механическо-интуитивное, то есть программирование для них - это система и набор команд-символов и писать надо на машинном языке, когда как у паскалистов - интуитивно-логическое, то есть писать что ты хочешь от машины на семантически человеческом языке...

Ну с неоднозначностями понятно...
Кстати, Вирт и доказал, что процессорная техника развививается не в сторону оптимизаций, а в сторону наращивания мощьностей, поэтому линейный поиск в его последних компиляторах работает быстрее (или так же) бинарного (нонсес однако), от этого он не особо мудрит с конструкциями языка, да и мудрить то нечего пока не будут менять архитектуру процессоров...

Автор:  geniepro [ 04 апр 2018, 06:35 ]
Заголовок сообщения:  Re: Переменные "по месту" и автоматическое приведение типа

S.Atan писал(а):
1: Язык должен быть семантически близко похожим на разговорный

Языки, близкие к разговорному -- Кобол и SQL (из числа самых успешных). Оберон на них как-то не особо смахивает. Ада-83 куда больше соответствует этому требованию, чем Оберон.

S.Atan писал(а):
Кстати, Вирт и доказал, что процессорная техника развививается не в сторону оптимизаций, а в сторону наращивания мощьностей, поэтому линейный поиск в его последних компиляторах работает быстрее (или так же) бинарного (нонсес однако), от этого он не особо мудрит с конструкциями языка, да и мудрить то нечего пока не будут менять архитектуру процессоров...

Действительно нонсенс. Линейный поиск в списке у него работает не быстрее бинарного, а просто достаточно быстро на малых количествах элементов, что бы не заморачиваться бинарным поиском в словаре.
Это, кстати, показатель недостаточной продвинутости языка -- из-за отсутствия параметрического полиморфизма приходится на каждый тип данных делать свой тип списка или словаря, свой поиск и т.д.
Даже в той же Аде 83 года были родовые пакеты, родовые процедуры и функции -- там не надо было заморачиваться с этими постоянными самодельными реализациями поисков, можно просто использовать библиотечные средства.
У Оберона крайне устаревшая система типов (про синтаксис уже молчу)...

Страница 3 из 4 Часовой пояс: UTC + 2 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/