Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  09:18[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 5666—5657 | 5656—5647 | 5646—5637 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 61


№ 5656   20-10-2007 18:59 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5654« (AVC)
___________________________
>>> Казалось бы, запрети любое иное использование, и дело с концом. Но он не запрещает...
>>> А вот сейчас в голову пришла мысль, что Вирт, возможно, сознательно проводит такую политику: он проектирует язык так, чтобы отклонения от правил были обнаружимы (например, в КП попытка изменить управляющую переменную в теле цикла FOR обнаруживается с помощью DevAnalyzer.Analyze), но не запрещает окончательно.
Это хорошая гипотеза, осталось только разобраться с мотивами. Конкретный цикл FOR - в чем глубокий смысл возможности изменить упровляющую переменную в нутри этого цикла, даже, если это элементарно обнаруживается?


№ 5655   20-10-2007 18:50 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5653« (Стэн)
___________________________
>>>Что не так в этом цикле?

Переменная i не меняется?
 AVC


№ 5654   20-10-2007 18:43 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5653« (Стэн)
___________________________

>>>В теории все просто, так как там нет side-effect'ов, а вот на практике они появляются...

Давайте попробуем "разобраться" с побочными эффектами.
Меня тоже удивляет, почему Вирт проектирует языки так, что побочных эффектов можно избежать, дает рекомендации, как это сделать, но не делает последнего шага -- не запрещает их на корню (к чему, например, призывает уважаемый Geniepro).
Например, он рекомендует использовать для цикла FOR только локальную переменную, не допускать ее изменения в теле цикла, а по окончании цикла -- считать ее значение неопределенным.
(Кстати, при таком подходе управляющая переменная совсем не обязана быть локальной в цикле, вполне достаточно объявить ее как обычную локальную переменную. Так что в Аде и Модуле-3 используется, думается, более прямолинейный и грубый подход.)
Казалось бы, запрети любое иное использование, и дело с концом. Но он не запрещает...
А вот сейчас в голову пришла мысль, что Вирт, возможно, сознательно проводит такую политику: он проектирует язык так, чтобы отклонения от правил были обнаружимы (например, в КП попытка изменить управляющую переменную в теле цикла FOR обнаруживается с помощью DevAnalyzer.Analyze), но не запрещает окончательно.
Та же политика, что и в отношении loop-holes. Использовать их не запрещается, но это использование легко обнаруживается по использованию псевдомодуля SYSTEM.
 AVC


№ 5653   20-10-2007 18:14 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5648« (AVC)
___________________________
>>> IMHO, вполне можно обосновать преимущество (как минимум, при прочих равных) WHILE перед FOR ... BREAK.
>>> По крайней мере со времен книги "Структурное программирование" принято считать (или я здесь ошибаюсь?), что цикл строится/обосновывается с помощью метода математической индукции (отсюда и выделение инварианта).
Это очень интересный оборот "при прочих равных"... Его бы стоило раскрыть более подробно.
Что касается построения/обоснования - один пример я уже приводил. В теории все просто, так как там нет side-effect'ов, а вот на практике они появляются... А вот одна из самых распространенных ошибок с WHILE-циклами, которая вообще не характерна для FOR.

WHILE i < len DO
  Process(i);
END;


Что не так в этом цикле?


№ 5652   20-10-2007 18:01 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5650« (Сергей Перовский)
___________________________

Ответ на »сообщение 5649« (AVC)
___________________________
>>>Мне кажется, что понимание (как минимум) основ управления должно быть общей частью (хотя бы технического) образования, и уж никак не является особой компетенцией программистов, тем паче -- кодеров, высокомерно отстукивающих на клавиатуре программный код по чужим спецификациям.
Об том и звук...
Но выпускники вузов не могут ответить даже как называется наука об общих принципах управления :(
Ни специалисты в программировании, ни специалисты "в поездах".


(AVC тянет руку) Кибернетика, да? :)
 AVC


№ 5651   20-10-2007 17:59 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5646« (AVC)
___________________________
>>> Вроде как программисты -- головастые ребята, а медики или физики проявляют в своей области не больше интеллекта, чем пассажиры метро в вагоне (ведь такие аналогии пошли в ход для красного словца).
Может быть, я просто Вас недопонял, но я про физиков и медиков ничего подобного не говорил...
Точно также как и про головастых ребят...
А говорил я о том, что в каждой области есть свои специалисты - в метростроении, автомобилестроении, в строении зданий, точно также как и в производстве медицинского оборудования... И что самое интересное во всем этом, инженерам не нужно знать все тонкости постановки диагноза пищевого отравления испорченным мясом, либо самолично обладать навыками экстремального вождения в условиях обледенения дорожного покрытия, чтобы производить хорошие машины и оборудование...
И если Вы перечитаете сообщение »сообщение 5634«
>>> Речь о том, чтобы системы для врачей программировали люди с медицинским образованием, которые получили программисткую подготовку и занимаются профессионально, но не программированием вообще, а программированием в медицине.
то увидите, что Илья в программировании предлагает делать все наоборот - способность ставить диагноз - основное умение, а знание о том, что такое группы Ассура отодвинуть на второй план по принципу - "хорошо, если, но если нет, то и так сойдет"...


№ 5650   20-10-2007 17:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5649« (AVC)
___________________________
Мне кажется, что понимание (как минимум) основ управления должно быть общей частью (хотя бы технического) образования, и уж никак не является особой компетенцией программистов, тем паче -- кодеров, высокомерно отстукивающих на клавиатуре программный код по чужим спецификациям.
Об том и звук...
Но выпускники вузов не могут ответить даже как называется наука об общих принципах управления :(
Ни специалисты в программировании, ни специалисты "в поездах".


№ 5649   20-10-2007 17:50 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5647« (Сергей Перовский)
___________________________

Ответ на »сообщение 5646« (AVC)
___________________________
>>>И какой достойный вывод?
>>>Что сначала надо разбираться в управлении, потом в программировании, и только потом -- "в поездах"?

Насчет второго и третьего места я настаивать не буду :)
Меня больше всего заботит, что системы управления делают люди в управлении не разбирающиеся. Знание объекта управления и инструмента программирования на этом фоне бесполезны.


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


№ 5648   20-10-2007 17:41 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5639« (Стэн)
___________________________

Ответ на »сообщение 5620« (Илья Ермаков)
___________________________
>>> Или Вы хотите иметь предохранитель от дурости? Так это уже мало относится к вопросу правильных и неправильных циклов.
О, это прямым образом относится к правильным и неправильным циклам... Не так давно был разговор про FOREACH, и в том числе и Вы говорили, что это плохо, потому, как там все неявно, и итератор может работать непредсказуемо, и выдавать совсем не то, и это не увидишь простым просмотром кода...
Вот в приведенным примере явности не на много больше:
WHILE (i < len) & Condition(i) DO ... END;

В принципе, обнаружение побочных эффектов в функциях дело нехитрое, причем в языке ничего менять не надо.
Так что ничто не мешает, если прижмет, запретить использование в конкретном проекте побочные эффекты в функциях.
Здесь принципиальная разница с ситуацией, скажем, в Си/Си++, где многие проблемы нельзя отследить по причине плохо спроектированного языка.

А теперь докажите мне, что FOREACH хуже WHILE в общем случае для области применения. Формально не докажите, остается статистически показывать, что в одном случае ошибок меньше, чем в другом. Однако я сомневаюсь, что у Вас есть такая статистика. Тоже самое и FOR ... BREAK. Ну не сможете мне формально доказать, что FOR ... BREAK - плохо, а WHILE это хорошо в языках с side-effect'ами. Остается только статистически. У Вас есть статистика?

IMHO, вполне можно обосновать преимущество (как минимум, при прочих равных) WHILE перед FOR ... BREAK.
По крайней мере со времен книги "Структурное программирование" принято считать (или я здесь ошибаюсь?), что цикл строится/обосновывается с помощью метода математической индукции (отсюда и выделение инварианта).
Логическое объединение инварианта цикла и условия его завершения должно давать искомый результат.
В случае с WHILE как минимум условие завершения цикла явно обозначено, в отличие от FOR...BREAK.
Кроме того, WHILE завершается в точке, где выполняется инвариант, а BREAK -- в произвольном месте.
 AVC


№ 5647   20-10-2007 17:40 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5646« (AVC)
___________________________
И какой достойный вывод?
Что сначала надо разбираться в управлении, потом в программировании, и только потом -- "в поездах"?

Насчет второго и третьего места я настаивать не буду :)
Меня больше всего заботит, что системы управления делают люди в управлении не разбирающиеся. Знание объекта управления и инструмента программирования на этом фоне бесполезны.


<<<... | 5666—5657 | 5656—5647 | 5646—5637 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 61


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования