Автор Тема: Неименованные функции в обероне  (Прочитано 8938 раз)

DIzer

  • Гость
Неименованные функции в обероне
« : Январь 23, 2012, 04:52:22 am »
Коль скоро в предыдущем топике все согласились с тем, что INC DEC -избыточны в определении языка , и даже был  предложен способ регуляризации подпрограмм такого рода. Почему бы не обсудить здесь возможность "занять"  опустевшее место  :) - скажем, возможностью введения неименованных функций (по типу DELPHI) - это вполне может выглядеть так:

TYPE
MyProc= REFERENCE TO PROCEDURE(VAR i:INTEGER; j:INTEGER:=1);
VAR MyINC:MyProc; k:INTEGER;
BEGIN
......
MyINC:=PROCEDURE (VAR i:INTEGER; j:INTEGER:=1) BEGIN i:=i+j  END;
MyINC(k,4); MyINC(k);
......
также можно обеспечить  поддержку замыканий (сохранение  ссылок на локальное окружение  используемое в неименованных функциях - благо мусоросборник есть в наличии)

« Последнее редактирование: Январь 23, 2012, 04:54:31 am от DIzer »

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #1 : Январь 23, 2012, 08:09:54 am »
Замыкания - это тот случай, когда синтаксис имеет значение. Многословные замыкания не нужны, точнее они почти бесполезны.
"но сейчас, чтобы компенсировать растущую мощность компьютеров, программисты используют фреймворки"

DIzer

  • Гость
Re: Неименованные функции в обероне
« Ответ #2 : Январь 23, 2012, 09:15:43 am »
Замыкания - это тот случай, когда синтаксис имеет значение. Многословные замыкания не нужны, точнее они почти бесполезны.
Это если относится  к ним  как синтаксическому сахару (аналог  INC  += ......). Впрочем, в моей пратике не было нужды ни в лямбдах, ни в замыканиях (хотя в делфях они с 2008)- с другой стороны, я не занимался серьезно компонентостроительством - чисто бизнес логика внедряемая в готовые фреймворки.... Так что весь вопрос в том, насколько такого рода конструкция РЕАЛЬНО востребована в приложениях области использования ЯВУ- ;)  И видется мне, что от детального анализа области предполагаемого  эффективного использования  не уйти.

[from valexey: поправил кодировку]
« Последнее редактирование: Январь 23, 2012, 10:41:54 am от valexey »

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #3 : Январь 23, 2012, 12:36:14 pm »
Так что весь вопрос в том, насколько такого рода конструкция РЕАЛЬНО востребована в приложениях области использования ЯВУ- ;)
Если они есть, то мне с ними удобнее...
to iterate is human, to recurse, divine

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

Vartovyj

  • Full Member
  • ***
  • Сообщений: 197
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #4 : Январь 23, 2012, 12:53:12 pm »
>REFERENCE TO PROCEDURE
Можно ли обойтись без подобных конструкций?

DIzer

  • Гость
Re: Неименованные функции в обероне
« Ответ #5 : Январь 23, 2012, 01:01:37 pm »
>REFERENCE TO PROCEDURE
Можно ли обойтись без подобных конструкций?
А за чем? - название АБСОЛЮТНО ТОЧНО передает смысл того , что будет создано по этому шаблону- равно как POINTER TO

valexey

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1990
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #6 : Январь 27, 2012, 08:12:10 am »
Замыкания - это тот случай, когда синтаксис имеет значение. Многословные замыкания не нужны, точнее они почти бесполезны.
Это если относится  к ним  как синтаксическому сахару (аналог  INC  += ......). Впрочем, в моей пратике не было нужды ни в лямбдах, ни в замыканиях (хотя в делфях они с 2008)- с
В делфях замыкания и "неименованные функции" сделаны весьма неудачно. Поэтому безымянными функциями там никто особо и не пользуется.

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

DIzer

  • Гость
Re: Неименованные функции в обероне
« Ответ #7 : Январь 27, 2012, 09:51:00 am »

В делфях замыкания и "неименованные функции" сделаны весьма неудачно. Поэтому безымянными функциями там никто особо и не пользуется.

Я лямбдами пользуюсь довольно активно в тех языках где они удобно сделаны и в тех случаях когда это уместно по задаче. В случае громоздкого синтаксиса лямбды (и порсто безымянные функции) никто использовать не будет.
Там они сделаны в соответствии с  принципами построения ЯП (Паскаля). Из этого правилен ли вывод - лямбды, замыкания...   не более чем синтаксический сахар в языках где программа имеет жесткую секционную структуру (разделы обьявлений -констант, переменных, типов)?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #8 : Январь 27, 2012, 10:23:58 am »
да любые языковые конструкции являются лишь синтаксическим сахаром для машинных команд
to iterate is human, to recurse, divine

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

DIzer

  • Гость
Re: Неименованные функции в обероне
« Ответ #9 : Январь 27, 2012, 10:43:26 am »
да любые языковые конструкции являются лишь синтаксическим сахаром для машинных команд
Это банально - но я  говорю о другом - любой ЯВУ задает  некоторое множество фундаментальных концепций с помощью которых моделируются решаемые задачи. В этой связи реформулирую вопрос- правильно ли то, что  введение понятий "лямбда, карринг, замыкание"-в ЯП с жестко -фиксированной секционной организацией  существенно НЕ облегчает процесс решения ТИПИЧНЫХ (лежащих в области наиболее эффективного использования) для ЯП задач?

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #10 : Январь 27, 2012, 12:25:54 pm »
Ну, жили ведь полвека без лямбд и замыканий -- и не тужили.
А сейчас мода и всё такое -- время покажет, будем ли мы через полвека удивляться языкам без лямбд или нет...
to iterate is human, to recurse, divine

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

trurl

  • Full Member
  • ***
  • Сообщений: 133
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #11 : Январь 27, 2012, 06:45:41 pm »
да любые языковые конструкции являются лишь синтаксическим сахаром для машинных команд
Вы слишком расширительно употребляете понятие "синтаксический сахар".

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #12 : Январь 30, 2012, 05:32:29 am »
да любые языковые конструкции являются лишь синтаксическим сахаром для машинных команд
Вы слишком расширительно употребляете понятие "синтаксический сахар".
Не, ну а что, ведь жили же с ЭНИАКом, который программировался перемычками, не тужили.
А потом как начали выдумывать -- автокоды всякие, фортраны, коболы, лиспы...
Сахар...
to iterate is human, to recurse, divine

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

Valery Solovey

  • Hero Member
  • *****
  • Сообщений: 509
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #13 : Январь 30, 2012, 01:16:45 pm »
Как я понимаю "сахар": это детали, которые не увеличивают мощность инструмента в той парадигме, для которой оный инструмент предназначен.

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Неименованные функции в обероне
« Ответ #14 : Январь 31, 2012, 05:11:25 am »
Как я понимаю "сахар": это детали, которые не увеличивают мощность инструмента в той парадигме, для которой оный инструмент предназначен.
Ну да, нет ничего более мощного, чем машинный код...

"Сахар" делает более удобным (приятным) решение задач.
to iterate is human, to recurse, divine

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