Автор Тема: Оберон в образовании.  (Прочитано 103319 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #60 : Февраль 24, 2011, 04:36:25 pm »
Проблему, на мой взгляд, можно решить введя в язык следующие правила:
1. Внутри функции глобальные (по отношению к ней) переменные доступны только для чтения.
2. Параметры, передаваемые в функцию по ссылке, доступны внутри функции только для чтения.
3. Внутри функции запрещено использовать вызов процедур.

И хватит благостной говорильни о вреде побочного эффекта  :)
Это же Хаскелл!  ;D
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #61 : Февраль 24, 2011, 04:37:53 pm »
Что есть функция или процедура? Это есть кусок кода который что-то делает. У этого куска кода есть вход и выход. Все. Таким образом нужно явно указать что этому куску подаем на вход, и что будем принимать на выходе. Именно явно, а не как сейчас.
Не могу с этим согласиться. В Оберонах (ведь тема о них?) единицей инкапсуляции является модуль. Изнутри процедуры видны все глобальные переменные. Если обязать программистов явно указывать все первичные (на входе процедуры) и вторичные (на выходе процедуры) данные, то они (программисты) "повесятся" прокачивать через параметры все эти объёмы информации.

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #62 : Февраль 24, 2011, 04:40:01 pm »
Не проще ли просто стремится к тому, чтобы процедуры/функции не изменяли что-то глобальное?
Если процедура не меняет ничего глобального (в том числе -- и ввод/вывод), то толку от неё нет, только процессорное время зря тратит. Зачем она нужна?

В смысле? Она может сделать 2 + 2 и вернуть результат :) Или вы к тому, что все есть функция и нечего придумывать лишние сущности?

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #63 : Февраль 24, 2011, 04:40:26 pm »
"void", "не void" - забудьте про C. В нём процедуры отсутствуют как класс. Поэтому там никто не решится избавить функции от побочного эффекта.
Отсутствует слово Procedure? но там и Function отстутствует,  разве нет?
Процедура и функция отличаются прежде всего использованием. Вызов процедуры - это оператор, а вызов функции - операнд.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #64 : Февраль 24, 2011, 04:41:54 pm »
Причем очень суровый такой Haskell -- без монад, лямбд и прочих радостей. Т.e. даже логи пописать в таких функцихя не получится. Ужоз!
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #65 : Февраль 24, 2011, 04:44:35 pm »
Что есть функция или процедура? Это есть кусок кода который что-то делает. У этого куска кода есть вход и выход. Все. Таким образом нужно явно указать что этому куску подаем на вход, и что будем принимать на выходе. Именно явно, а не как сейчас.
Не могу с этим согласиться. В Оберонах (ведь тема о них?) единицей инкапсуляции является модуль. Изнутри процедуры видны все глобальные переменные. Если обязать программистов явно указывать все первичные (на входе процедуры) и вторичные (на выходе процедуры) данные, то они (программисты) "повесятся" прокачивать через параметры все эти объёмы информации.
Не повесятся. Просто в своем мегамодуле (в котором они используют эти самые процедуры) они сделают частичную конкретезацию наиболее часто встречающихся комбинаций и всё. Будет в общем то даже ещё проще чем сейчас :-)
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #66 : Февраль 24, 2011, 04:46:23 pm »
А кстати, функция это тоже единица инкапсуляции даже в Обероне. Только ещё более мелкая.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #67 : Февраль 24, 2011, 04:48:27 pm »
... абсолютно непрактично переделывать 20 функций в процедуры как только самая "нижняя" функция превратится в процедуру.
"Нижняя" функция не должна превращаться в процедуру, так как это может вызвать побочный эффект. И вообще, прежде чем начинать писать 19 "верхних" функций нужно определиться, что я хочу: вычислить выражение или выполнить обработку данных.

PS: Обсуждение оживилось. Не успеваю отвечать.  :)

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #68 : Февраль 24, 2011, 04:50:08 pm »
Что есть функция или процедура? Это есть кусок кода который что-то делает. У этого куска кода есть вход и выход. Все. Таким образом нужно явно указать что этому куску подаем на вход, и что будем принимать на выходе. Именно явно, а не как сейчас.
Не могу с этим согласиться. В Оберонах (ведь тема о них?) единицей инкапсуляции является модуль. Изнутри процедуры видны все глобальные переменные. Если обязать программистов явно указывать все первичные (на входе процедуры) и вторичные (на выходе процедуры) данные, то они (программисты) "повесятся" прокачивать через параметры все эти объёмы информации.

Да не. Это сначала только страшно кажется :) Вся эта куча зависимостей от глобальных переменных разбивается на кучки и инкапсулируется. Так что объемы прокачиваемой информации будут скрыты и все будут счастливы :)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #69 : Февраль 24, 2011, 04:50:52 pm »
Если процедура не меняет ничего глобального (в том числе -- и ввод/вывод), то толку от неё нет, только процессорное время зря тратит. Зачем она нужна?
Ну, я бы не был столь категоричен. Но согласен, что если процедура изменила что-то глобальное, то это абсолютно нормально.

DIzer

  • Гость
Re:Оберон в образовании.
« Ответ #70 : Февраль 24, 2011, 04:53:38 pm »
Хм. А быть может подойти к дело более общо?....

Так это разве общо? Вы пытаетесь определить общее понятие с позиции  конкретного ЯП. По сути пытаетесь обьяснить не паяльное явление, с позиции паяльника... у меня лично нет оснований утверждать, что мир это большая и сложная схема...Да такая точка зрения распространена... Но в этой системе отсчета оберону практически нет места в системе образования...если ВСЕ понятия определять с помощью ЯП то лучше честно - программистов учить на си, с++ , физиков - фортрану.... Только и в это системе отсчета есть сбои- вспомните г-на Чернова - его таки лишили курса... не смотря на то, что он честный и квалифицированный паяльник... и его поддержал Макс- фразу из его выступления  вы вставили в чат...

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #71 : Февраль 24, 2011, 04:56:17 pm »
А кстати, функция это тоже единица инкапсуляции даже в Обероне. Только ещё более мелкая.
Да, согласен. Я хотел подчеркнуть, что процедура видит все объявления модуля, в котором она объявлена.

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #72 : Февраль 24, 2011, 04:59:16 pm »
Хм. А быть может подойти к дело более общо?....

Так это разве общо? Вы пытаетесь определить общее понятие с позиции  конкретного ЯП. По сути пытаетесь обьяснить не паяльное явление, с позиции паяльника... у меня лично нет оснований утверждать, что мир это большая и сложная схема...Да такая точка зрения распространена... Но в этой системе отсчета оберону практически нет места в системе образования...если ВСЕ понятия определять с помощью ЯП то лучше честно - программистов учить на си, с++ , физиков - фортрану.... Только и в это системе отсчета есть сбои- вспомните г-на Чернова - его таки лишили курса... не смотря на то, что он честный и квалифицированный паяльник... и его поддержал Макс- фразу из его выступления  вы вставили в чат...
Ничего не понял. С т.з. какого языка я что-то там рассматриваю? У меня вообще псевдокод :-)
Каждый кусок кода зависит от чего-то. Идея ровно в том, чтобы это что-то было явно описано в спецификации. реализации и точке использования.

Чтобы не повеситься от повторения одного и того же, предлагаю использовать механизм частичной конкретизации. Вот и всё.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #73 : Февраль 24, 2011, 05:03:17 pm »
... абсолютно непрактично переделывать 20 функций в процедуры как только самая "нижняя" функция превратится в процедуру.
"Нижняя" функция не должна превращаться в процедуру, так как это может вызвать побочный эффект. И вообще, прежде чем начинать писать 19 "верхних" функций нужно определиться, что я хочу: вычислить выражение или выполнить обработку данных.

Ну что вы в самом деле :) Ну вот захотите вы какой-нибудь логгинг в этой функции добавить... В общем да - такой хаскель, только вручную ;)

igor

  • Sr. Member
  • ****
  • Сообщений: 438
    • Просмотр профиля
Re:Оберон в образовании.
« Ответ #74 : Февраль 24, 2011, 05:11:35 pm »
Ну что вы в самом деле :) Ну вот захотите вы какой-нибудь логгинг в этой функции добавить...
В этом случае я напишу процедуру, в которой сначала будет вызов функции, а далее ниже по тексту этот самый логгинг  ;) Мухи не должны быть вперемежку с котлетами  :)