Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение  Обсуждение из раздела Школа ОБЕРОНА
№ 5706 21-10-2007 12:29 |  |
Ответ на »сообщение 5704« (Jack Of Shadows)
___________________________
Ответ на »сообщение 5690« (Илья Ермаков)
___________________________
Это настолько типовые схемы циклов, что знающий их человек не забудет.
Ага, ну просто как free после new. Знающий человек ведь точно не забудет, правильно ?
В который раз уже встречаю этого мифического "знающего человека" на ветках по оберону. Просто снежный человек какой то :))
Я смеюсь :-) Уровень нормально обученного 11-классника.
Сравнение с free, которое Вы любите, некорректно. Ибо определить, когда объект больше недоступен, машина может, а вот выразить в коде то, что Вы думаете - нет. И не надо опять пропагандировать ФП - то, что я думаю, разрабатывая, к примеру, рантайм или диспетчер памяти, ФП мне выразить слабо поможет. Скорее помешает.
№ 5705 21-10-2007 12:15 |  |
Ответ на »сообщение 5704« (Jack Of Shadows)
___________________________
Прикол, я думал тег код подсветит exit - Это ведь служебное слово дельфи. А оказалось что подсветка кода не delphikingdom тоже в бедных родственниках ходит.
Вот откуда боязнь break происходит :))
№ 5704 21-10-2007 12:11 |  |
Ответ на »сообщение 5690« (Илья Ермаков)
___________________________
Это настолько типовые схемы циклов, что знающий их человек не забудет.
Ага, ну просто как free после new. Знающий человек ведь точно не забудет, правильно ?
В который раз уже встречаю этого мифического "знающего человека" на ветках по оберону. Просто снежный человек какой то :))
А вот забыть или незаметить, где в каждом "неповторимо сымпровизированном" цикле стоит break и когда он выполняется - проще простого.
В бедном обероне, в котором для выделения служебных слов используются ПРОПИСНЫЕ быквы вместо цвета и жирности фонта, это конечно проблема. Могут и не заметить.
А вот в любой нормальной IDE в которой
exit;
Выглядит вот так вот, трудно не заметить.
Кстати для дельфи есть такой навесной плагин как CodeRush. Так вот там все выходы из цикла, функций и процедур, то есть все exit, return, Abort итд, помечаются красивой красной стрелкой. Не заметить которую надо очень постараться :))
Вот вам грамотное решение этой роблемы, вместо того чтобы убирать из языка весьма полезные конструкции.
Но каждый ведь идет своим путем, правильно ?
№ 5703 21-10-2007 11:45 |  |
Ответ на »сообщение 5661« (pepper)
___________________________
Илья, ты серьезно предпочел бы "лечь под нож" компьютера, запрограммированного врачом (пусть даже на обероне), чем профессиональным программистом?
Если на обероне - то нет. А если на языке описания полостных операций, то да.
Вот негипотетический пример. CAD система TFlex представляет собой систему построения параметрических моделей - для простоты параметрических чертежей. Конструктор описывает зависимости элементов конструкции на двух специализированных языках: языке геометрических построений и языке алгебраических формул. С теми и другими он прекрасно знаком и никакого программиста ему не требуется. В некоторых редких случаях, эта декларативная система работает недостаточно быстро и требуется писать императивные вставки. Тогда зовут программиста (в частности меня) и объясняют, что вот эту последовательность действий нужно автоматизировать. Но и тут проявляется не преимущество профессионального программиста над специалистом в прикладной области, а только более высокая эффективность императивной программы.
№ 5702 21-10-2007 11:01 |  |
Ответ на »сообщение 5700« (Стэн)
___________________________
Ответ на »сообщение 5695« (Илья Ермаков)
Ошибаетесь, нет у меня замкнутого круга. У меня есть опыт участия в реальных проектах, где мне приходилось разбираться в чужом коде, написанном в шестистраничном стиле, и я знаю, что значит искать в нем ошибки... Приходится код переписывать строчка за строчкой, чтобы найти ошибки...
Слабо я понимаю Ваш ход мыслей. Например, ну никак не вижу связи между использованием того или иного вида циклов и количеством старниц в их теле :-) Это в любом случае плохо, но BREAK от этого никак не спасает. А иногда даже провоцирует (как в приведённом Вами примере из Активного Оберона).
№ 5701 21-10-2007 10:24 |  |
Ответ на »сообщение 5661« (pepper)
___________________________
Я бы однозначно предпоче врача.
№ 5700 21-10-2007 09:52 |  |
Ответ на »сообщение 5695« (Илья Ермаков)
___________________________
>>> А в обсуждаемых примерах не было ни side-effects, ни передачи параметров по ссылкам.
Мы же здесь рассматриваем вопрос в общем, а не частный пример... А в общем они быть могут, в этом то все и дело...
>>> ...большинство циклов с ними становятся похожи один на другой...
Похожи. И я полностью с этим согласен. Только вот читать шестистраничный код одной функции, где все циклы похожи как близнецы братья, и где понять, что же в этом коде происходит, можно только помня состояния переменных - крайне затруднительно...
>>> В Вашем сознании, прошу прощения, замкнутый круг - пока не попробуете, не видите преимуществ, а не видите, потому что не пробовали :-)
Ошибаетесь, нет у меня замкнутого круга. У меня есть опыт участия в реальных проектах, где мне приходилось разбираться в чужом коде, написанном в шестистраничном стиле, и я знаю, что значит искать в нем ошибки... Приходится код переписывать строчка за строчкой, чтобы найти ошибки...
>>> И предлагаете всем заняться изобретательством велосипедов на основе занимательного комбинаторного конструктора FOR-BREAK.
Ничего подобного я не предлагаю, а просто показываю, что на практике разница далеко не так однозначна, как это следует из теории...
А после знакомства с функциональными языками, я бы предложил всем перейти на них... ;-) Только там реализации компиляторов должны иметь очень мощные внутренние оптимизаторы кода, а иначе результат буде еще хуже чем на императивных языках...
№ 5699 21-10-2007 09:45 |  |
Ответ на »сообщение 5698« (Стэн)
___________________________
Ответ на »сообщение 5693« (Илья Ермаков)
___________________________
Какая разница, что искать - место с BREAK или некорректную логику присваивание условной переменной?
При этом Вы сослались на удобства понимания и чтения, ну вот я их и продемонстрировал...
Вот и я о том - чем продемонстрировали? Как раз циклом с BREAK. Потому что LOOP в Обероне - это и есть while(true) { ... break .. }, со всеми недостатками. Но Оберон хотя бы запрещает while (условие ) break или for break, заставляя программиста сразу выбрать - то ли используем окончание по условию или полному проходу счётчика, то ли прерываем сами и только изнутри.
№ 5698 21-10-2007 09:35 |  |
Ответ на »сообщение 5693« (Илья Ермаков)
___________________________
>>> Тогда я тем более не понял, к чему Ваш пример. Привели пример огромного, труднопонятного цикла, в котором используется "специализированный вид цикла (LOOP) и конструкция управления потоком команд (EXIT)" :-)
Ну, Вы же сами написали:
>>> Вот Вам и разница в мотивах. ... Меня волнует, как будет выглядеть чтение и понимание этого цикла.
Я привел пример цикла на замечательном языке Оберон, который по моему мнению ни читать, ни понимать нормально невозможно... Конечно, если над этим текстом помедитировать несколько часов, то все встанет на свои места, но это несерьезно...
Меня тоже волнует чтение и понимание программного кода, но он не художественная литература, и его чтение не самоцель. Конечно, его можно причесать, вынести части в отдельные функции, но вопрос, который я Вам задал »сообщение 5682«, и от которого Вы ушли, звучал так:
Какая разница, что искать - место с BREAK или некорректную логику присваивание условной переменной?
При этом Вы сослались на удобства понимания и чтения, ну вот я их и продемонстрировал...
№ 5697 21-10-2007 09:17 |  |
Ответ на »сообщение 5694« (Стэн)
___________________________
Ответ на »сообщение 5689« (Geniepro)
___________________________
Хороший ответ и ничего не попорчено... :-)
Что ж Вы голову морочили с //- - я думал, у Вас там что-то ещё делается внутри цикла :-)
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|