Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение  Обсуждение из раздела Школа ОБЕРОНА
№ 5856 29-10-2007 06:43 |  |
Ответ на »сообщение 5855« (Дядя .СЭМ)
___________________________
... вручить ему цикл обобщающий LOOP. Это - смело. С удовольствием посмотрю эти "игры разума".
Вы лучше книжку Дейкстры почитали бы, чтобы не путаться, кто что обобщает.
№ 5855 29-10-2007 00:53 |  |
Ответ на »сообщение 5852« (info21)
___________________________
>>>Я не знал, вьюноша Вы или старый дед. Теперь знаю 8)
И опять вынужден с вами не согласиться. Оба предположения мимо.:)
>>>"Есть" только один цикл -- дейкстровский WHILE с несколькими ветками.
Прошу читать мое »сообщение 5851« в редакции:
... как не крути в языке Оберон реализация как минимум двух циклов является избыточной...
>>>Из Оберона-07 LOOP исключен, а WHILE "доращен" до полноценного дейкстровского.
Смело. Не скрою смело - учитывая что произойдет если "среднестатистического программиста" оставить наедине с LOOP...EXIT, вручить ему цикл обобщающий LOOP. Это - смело. С удовольствием посмотрю эти "игры разума".
И предвосхищая ваш ответ хочу спросить - не переоценили количество людей обладающих пластикой и строгостью ума Дейкстры? Сочетание качеств помоему уникальное.
№ 5854 28-10-2007 23:24 |  |
Ответ на »сообщение 5837« (Стэн)
___________________________
Учитывая сколько споров было по поводу вариантов этих циклов, то очевидно как-то не очень хорошо они решают эту задачу... Точнее особенности, которые необходимо учитывать при решении этой задачи.
Да нет же. Это отражает доступность темы диспутантам 8)
В науке подобных примеров полно.
№ 5853 28-10-2007 23:00 |  |
Ответ на »сообщение 5850« (AVC)
___________________________
Почему только в Хаскеле?
А разве шаблоны в Си++ или "утиная" типизация в Питоне не так же работают?
Не смешите мои тапочки. Вы срьезно сравниваете динамическую типизпцию питона со статической хаскеля и приходите к выводу что это "одно и то же" ? или "так же работает" ?
А шаблоны в си++ вообще из разряда ночных кошмаров.
Пользователям STL потом реабилитацию у психолога проходить надо :))
№ 5852 28-10-2007 22:47 |  |
Ответ на »сообщение 5851« (Дядя .СЭМ)
___________________________
Это как я понял ссылка на «Заметки по структурному программированию» Дейкстры, мол - «Учите матчасть вьюноша!..»
Не совсем. На книжку "Дисциплина программирования".
Я не знал, вьюноша Вы или старый дед. Теперь знаю 8)
Насчет матчасти Вы поняли правильно, но неправильно среагировали. Впрочем, у Вас-то время есть еще.
"Есть" только один цикл -- дейкстровский WHILE с несколькими ветками.
Все остальное -- либо варианты/обертки/частные случае.
Либо -- как LOOP -- средство оптимизации.
Из Оберона-07 LOOP исключен, а WHILE "доращен" до полноценного дейкстровского.
№ 5851 28-10-2007 17:25 |  |
Ответ на »сообщение 5819« (info21)
___________________________
Ясно, что задача не формализуема. В этом вся и сложность.
И че ломиться в открытую дверь?
Мир в котором мы существуем вообще весьма трудно формализуем, Для того что-бы хоть как-то с этим справиться и существуют неформальные методы. Эвристики на пример. Что касается двери — извините, двери то я как раз и не приметил. :)
>>>Нет, не кажется. Вы, что ли, Дейкстру не читали? Это насчет циклов. Так почитайте
Это как я понял ссылка на «Заметки по структурному программированию» Дейкстры, мол - «Учите матчасть вьюноша!..»
Прекрасно что «матчасть» вы здесь увидели, огорчительно что не заметили некоторых несоответствий.
Почитаем Дейкстру — согласно сформулированной им дисциплины структурного программирования мы должны ограничится только двумя видами повторений — while и repeat, а все остальные выражать через композицию, у Вирта в Обероне три оператора цикла - while, repeat и loop. Реализация цикла loop по Дейкстре является избыточной.
Ладно, зайдем с другой стороны — вернемся к нашим языческим корням и устроим «пляски с бубном». Существует «магический» цикл loop при написании в нужном месте которого «волшебного» слова exit можно реализовать любой цикл. С этих позиций в Обероне избыточными являются while и repeat.
Приводя все выше сказанное к единому знаменателю можно сказать: как не крути в языке Оберон реализация как минимум одного из циклов является избыточной, и это в языке писавшемся под лозунгом «Вперед к минимализму!».
По моему мнению это связано с тем что Вирт при создании Оберона стремился в первую очередь к ясности текста написанного на языке, во вторую - следованию дисциплине структурного программирования, и только в третью очередь к компактности языка. Я хотел-бы подчеркнуть - минимализм в третью очередь, а не в первую ( »сообщение 5784«). Компактные языки были и до Оберона, но в них не было ни ясности, ни последовательного следования принципам структурного программирования необходимых Вирту. Так что в оценке места минимализма в Обероне мы с вами расходимся.
№ 5850 28-10-2007 15:15 |  |
В хаскеле так и сделано. Определяете для любого типа операции больше и меньше в классе Ord - и пожалуйста. Любая функция сортировки начинает их принимать в качестве параметров и сортировать, причем со строгой типизацией. При этом никакого наследования как в ООП делать не надо. То есть тип может быть любой вообще. Лишь бы соответствующие операции имел описанные.
Почему только в Хаскеле?
А разве шаблоны в Си++ или "утиная" типизация в Питоне не так же работают?
№ 5849 28-10-2007 13:09 |  |
Ответ на »сообщение 5825« (Антон Григорьев)
___________________________
А вот реализуйте такой класс, который может отсортировать массив элементов любого типа, для которых определены операции "больше" и "меньше", не заставляя программиста писать дополнительные callback-функции или наследники для каждого из этих типов, и тогда я тоже скажу, что вполне можно и без обобщений обойтись.
В хаскеле так и сделано. Определяете для любого типа операции больше и меньше в классе Ord - и пожалуйста. Любая функция сортировки начинает их принимать в качестве параметров и сортировать, причем со строгой типизацией. При этом никакого наследования как в ООП делать не надо. То есть тип может быть любой вообще. Лишь бы соответствующие операции имел описанные.
№ 5848 28-10-2007 12:58 |  |
Ответ на »сообщение 5844« (noname)
___________________________
Ответ на »сообщение 5838« (Илья Ермаков)
___________________________
Например добавим а Оберон константы для массивов и записей. Какие характеристики это ухудшит?
Десятки раз говорилось - все урезания типизации Оберона по сравнению с Модулой вызваны в первую очередь компонентностью. Вы готовы выдать простые правила для импорта составных констант при динамическом связывании, правила их расширения и т.п.? Поэтому оптимумом оказалось исключить и использовать VAR + инициализацию.
Попробуйте, например, реализовать для Ады с её роскошной типизацией динамическую загрузку пакетов. Скорее всего, либо разобьёте лоб, либо придётся урезать язык. Потому что неприспособлен для компонентности.
№ 5847 28-10-2007 12:34 |  |
Ответ на »сообщение 5841« (Сергей Перовский)
___________________________
>>>Эта область, в которой невозможно улучшить однин критерий не ухудшив другой называется множеством Паретто :)
Если верить Г.С.Альтшуллеру, именно из этого технического противоречия и рождается изобретательская задача.
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|