Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение Обсуждение из раздела Школа ОБЕРОНА
№ 2536 04-02-2007 16:04 | |
Ответ на »сообщение 2533« (Jack Of Shadows)
___________________________
В хаскеле к таким особым случаям добавлено и декларация функций, и инструмент для него - сопоставление (pattern matching), полностью дублирующий if, но при этом оптимизирующий написание кода. Делающий его более читабельным, более котротким.
Полностью согласен. Мои претензии относятся не к сопоставлению, которое как раз красиво вписывается в общую идеологию, а к наличию if. Это один из примеров, когда разработчики языка боятся поддержать цельность из боязни ущемить чьи-то привычки.
№ 2535 04-02-2007 15:47 | |
Ответ на »сообщение 2533« (Jack Of Shadows)
___________________________
Зато в обероне аж 3 оператора цикла, в то время как в хаскеле ни одного.
Что вы там о чувстве меры говорили? :))
По-моему, не я сравнивал эти операторы... А насчет чувства меры - это исключительно о том, что нельзя впадать в крайности: в Обероне нужны языковые средства для вариативности решений. Что же до Хаскеля - мое сугубо личное мнение: вещь хорошая, но не заслуживающая того избыточного внимания со стороны практиков (не исследователей), которое ей здесь в Королевстве уделяется.
№ 2534 04-02-2007 15:41 | |
Осмелюсь высказать одно наблюдение.
Похоже, в этой ветке гораздо больший интерес привлекает обсуждение различных аспектов программирования (как особой формы интеллектуальной деятельности) сквозь призму Оберонов. Возможно, и стоит двигаться в этом направлении, если техническая, либо исследовательская часть Оберонов малоинтересны или же приводят к переливанию из пустого в порожнее.
Не хочу никого обижать, но бесконечные попытки в этой ветке заставить Оберон-программистов испытывать комплекс неполноценности по поводу забвения Оберонов индустрией - не просто бессмысленны, они просто соответствующим образом характеризуют компетенцию и мотивацию людей, пытающихся наносить такие уколы.
№ 2533 04-02-2007 15:39 | |
Ответ на »сообщение 2530« (AVC)
___________________________
CASE -- средство выбора из абсолютно равноправных альтернатив,
Ошибаетесь. В CASE порядок выбора так же важен как и в if.
Проведите небольшой эксперимент и убедитесь сами. Но это уже мы уходим от темы.
CASE -- важное средство оптимизации для особого случая, но вовсе не так универсален, как IF.
Совершенно верно. Несмотря на то что в языке уже есть единообразный и УНИВЕРСАЛЬНЫЙ инструмент if, в него все таки вводится ДУБЛИРУЮЩИЙ инструмент для особых случаев.
В хаскеле к таким особым случаям добавлено и декларация функций, и инструмент для него - сопоставление (pattern matching), полностью дублирующий if, но при этом оптимизирующий написание кода. Делающий его более читабельным, более котротким.
Сравните:
last [] = error "Empty List"
last [x] = x
last (x:xs) = last xs
и
last x = if empty x then error "Empty List"
else if length x = 1 then x
else last tail x
Ответ на »сообщение 2532« (Руслан Богатырев)
Из всех качеств в человеке она больше всего ценила... чувство меры.
Ну конечно Руслан. В обероне два варианта (if, case), в хаскеле 3 (if, guards, pattern matching)
Сильно хакелистам изменило чувство меры.
Зато в обероне аж 3 оператора цикла, в то время как в хаскеле ни одного.
Что вы там о чувстве меры говорили? :))
№ 2532 04-02-2007 15:27 | |
Ответ на »сообщение 2530« (AVC)
___________________________
Jack, ну Вы же прекрасно понимаете, что if и case реализованы по-разному практически во всех императивных языках.
Ну зачем же Вы так на Джека :) Он по-своему прав: если уж стремиться к минимализму до истощения, то надо в Обероне иметь только IF и LOOP. Никаких там CASE, WHILE, REPEAT, FOR и иже с ними.
Не буду еще раз вслед за Виртом цитировать Эйнштейна. Вспомню только один разговор с моей школьной учительницей, который мне запал в память на долгие годы. Из всех качеств в человеке она больше всего ценила... чувство меры. Спустя много лет я стал понимать всю мудрость ее слов.
№ 2531 04-02-2007 15:19 | |
Ответ на »сообщение 2521« (Geniepro)
___________________________
Программы на Хаскелле подобны хайку - несколько строк, а сколько в них глубинного, потаённого смысла, который может обсуждаться веками...
Занятные аналогии. Только японская поэзия направлена на нравственно-эстетическое начало человека, а не на исполнение приземленных задач грешной действительности. И если "императивный" компьютер читает и выполняет такую "хайку" с глубинным и потаенным смыслом, то можно только посочувствовать тем, кто находится в счастливом неведении относительно того, что же компьютер, озаренный воображением, выдаст в итоге на выходе.
№ 2530 04-02-2007 15:16 | |
Ответ на »сообщение 2528« (Jack Of Shadows)
___________________________
Так как насчет case и if ? :))
Jack, ну Вы же прекрасно понимаете, что if и case реализованы по-разному практически во всех императивных языках.
IF означает последовательный перебор альтернатив, это существенно когда важен порядок, в котором осуществляется выбор (приоритет).
CASE -- средство выбора из абсолютно равноправных альтернатив, к тому для него сравнение возможно только с константами; если константы лежат достаточно плотно, адрес перехода вычисляется на основе созданной компилятором таблицы.
CASE -- важное средство оптимизации для особого случая, но вовсе не так универсален, как IF.
№ 2529 04-02-2007 15:03 | |
Ответ на »сообщение 2526« (Илья Ермаков)
___________________________
А есть другой подход - "чтоб никого не обидеть, включим в язык все варианты". По мне лучше первый :-)
В одной очень поучительной книге, которую можно рекомендовать как настольную книгу любому программисту (чтобы учиться на чужих ошибках и понимать, как не надо делать), а именно, в “The Design and Evolution of C++” (1994, на русск. языке – 2006 г.), написаной Бьерном Страуструпом, есть по этому поводу занятный сюжет.
На первой конференции по C++ в Санта-Фе (1987), как вспоминает Страуструп, “Том Каргилл сорвал аплодисменты, высказав забавное, но не очень реалистичное предложение: каждый, кто предлагает включить в C++ новое средство, должен сказать, какое из старых, равных по сложности новому, следует исключить”. Дальше Страуструп пишет: “Мне такой подход не нравится, но я все же не могу утверждать, что C++ стал бы лучше, не будь в нем множественного наследования, или что C++ образца 1985 г. лучше, чем C++ 1993 г. Веселье продолжил Джим Уолдо. Он продолжил мысль Тома, высказав следующую идею: обязать предлагающих новые средства пожертвовать... свою почку. Это, по мнению Джима, заставит каждого не один раз подумать, прежде чем вносить предложение, причем даже лишенные инстинкта самосохранения не смогут внести более двух предложений.”
№ 2528 04-02-2007 14:45 | |
Ответ на »сообщение 2526« (Илья Ермаков)
___________________________
По поводу второго вопроса: по мне, к примеру, либо if, либо сопоставление с образцом, либо | - но что-то одно...
Совершенно разные задачи. Как их можно связывать при помощи "либо" ?
guards | - это case, то есть отличается от if большим количеством вариантов.
if хорош для inline выражений:
x = 10 + if y > 5 then 10 else 15
Сопоставление это для декларации функций.
Когда равноценных путей слишком много, возникает известная проблема буриданова осла.
Жаль что Вирт не видел этого осла, когда вводил в оберон case, хотя там уже был if :))
В Обероне разработчик вместе с синтаксисом сразу "всасывает" единый стиль,
Так как насчет case и if ? :))
Просто моему глазу показалось, что в языке есть темные закоулки и подводные камни, вызванные тем, что разработчики таки погнались за некоторыми "фичами".
Хаскель изначально создавался как чистый функциональный язык. Чистый не только в этом плане, но и в плане незахламленности фичами.
Я думая вам стоит поглубже познакомиться с этим языком, прежде чем вы сможете делать выводы о том захламлен ли он.
Тем более что интерес к нему у вас вроде бы есть.
№ 2527 04-02-2007 14:23 | |
Ответ на »сообщение 2522« (Jack Of Shadows)
___________________________
>>>А то потом трудно будет спорить с Сергеем Перовским которому не нужен сборщик мусора :))
Так и так трудно будет спорить :)
Если бы я доказывал, что Вам не нужен сборщик мусора, было бы легко.
Представте, что я предлагал бы Вам воспользоваться инструментом, позволяющем в Лиспе не ставить закрывающихся скобок :)
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|