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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 5756—5747 | 5746—5737 | 5736—5727 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 52


№ 5746   22-10-2007 04:34 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5741« (Руслан Богатырев)
___________________________

>>>И еще такой нюанс: а есть ли вообще ASSERT в классическом Обероне? :)

Судя по описанию, нет. Также как и экспорта только для чтения.
ASSERT отсутствует также и в недавней электронной книге "Programming in Oberon" (2004).
Видимо, в теле Sqrt надо было писать что-то вроде

IF (x < 0.0) THEN HALT END;


Но я бы не стал отказываться ни от ASSERT, ни от экспорта read-only.
Оберон во многом построен на утверждениях: разыменование указателя предполагает утверждение о том, что указатель не нулевой; приведение типа записи предполагает type-guard; и т.д.
ASSERT -- явное выражение программистского инварианта.
 AVC


№ 5745   22-10-2007 02:52 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5735« (Руслан Богатырев)
___________________________

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

Как-то странно всё это...
Как можно отличить требование, маскирующееся под рекомендацию, от просто рекомендации?
И как сам Вирт объясняет то, что его рекомендации на самом деле -- требования? Может это всего лишь Ваш домысел?


№ 5744   22-10-2007 01:43 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5707« (pepper)
___________________________
>>>Не бывает таких врачей.

Во время бума вокруг экпертных систем в 70-80-е чуть ли не в каждой статье упоминался MYCIN. Эта система была разработана хорошим медиком, умеющим программировать.
В те годы было выпущено множество абсолютно бесполезных ЭС, авторы которых, будучи программистами, разбирались в предметной области куда хуже, чем Шортлифф в медицине.


№ 5743   21-10-2007 18:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Хочу вставить свои пять копеек в дискуссию о циклах.
Тут сталкиваются, на мой взгляд, синтаксический и симантический подход к программированию.
Если рассматривать программирование, как раздел математики, то можно необращать вниманиея на такие мелочи, как повторение кода или дополнительные проверки. Соблюдение строгих правил дает возможность формального анализа и, соответственно высокой надежности.
Если же подходить с точки зрения эффективности и, как ни странно, соответствия смыслу, получаются странные выводы.
Оператор цикла очень часто используется для поиска. Но после поиска всегда стоит проверка "нашли/ненашли". И в алгоритме поиска она всегда есть. И именно эта конструкция провоцирует создание "конструкции с двумя выходами".
Может для этого варианта нужно было создать отдельную конструкцию в структурном программировании? Описать эдакий цикл For-Else :)



№ 5742   21-10-2007 17:52 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5725« (Руслан Богатырев)
___________________________
Похоже, у нас несколько разные представления о том, что такое спецификация.
Да, это так. Наиболее общее определение я нашел в Википедии:
Специфика?ция — (от англ. Specification) инженерный термин, обозначающий набор требований и параметров, которым удовлетворяет некоторая сущность.
Ни в одном определении не оговаривается, что спецификация должна быть составлена на формально-строгом языке, а значит пригодна для интепретации как человеком, так и компьютером .
Для меня этим и отличается спецификация от программы, что первая требует человеческого вмешательства для доформализации, а вторая может непосредственно интерпритироваться компьютером. Все спецификации, которые я видел, были написаны на естественном языке с привлечением неформализованного графического представления.
Как только мы создали для некоторой прикладной области формальный язык, так мы превратили специалиста в специалиста-программиста, которому не нужен посредник для общения с компьютером. До этих пор потребуется спецификация, как посредник между специалистом и программистом. И будет она постоянным источником разночтений и вариантов толкований.


№ 5741   21-10-2007 17:28 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5738« (AVC)
___________________________

Неужели компилятор не отличит аргумент процедуры от других переменных? :)
Из приведенного утверждения можно тем не менее вычленить require (x > 0).


Рассмотрите еще такой случай. Контроль предусловий программист возложил на специальную процедуру-функцию IsCorrect, которая принимает в качестве своих параметров параметры Sqrt, а возвращает значение TRUE или FALSE.

ASSERT(IsCorrect(x));

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

И еще такой нюанс: а есть ли вообще ASSERT в классическом Обероне? :)


№ 5740   21-10-2007 17:16 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5739« (Руслан Богатырев)
___________________________

Но это разные инварианты!

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


№ 5739   21-10-2007 17:13 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5738« (AVC)
___________________________

Из приведенного утверждения можно тем не менее вычленить require (x > 0).

Но это разные инварианты!


№ 5738   21-10-2007 17:12 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5737« (Руслан Богатырев)
___________________________

ASSERT ((x > 0) AND done);

Эта done вылезет (благодаря "находчивости" компилятора) в интерфейс, где на нее внешний программист будет смотреть как баран на новые ворота.


Уже думал.
Неужели компилятор не отличит аргумент процедуры от других переменных? :)
Из приведенного утверждения можно тем не менее вычленить require (x > 0).

Теперь точно до завтра! :)
 AVC


№ 5737   21-10-2007 17:06 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 5736« (AVC)
___________________________

Никаких необычных ASSERT-ов не надо: ASSERT пусть будет самый обычный. :)

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

ASSERT ((x > 0) AND done);



Эта done вылезет (благодаря "находчивости" компилятора) в интерфейс, где на нее внешний программист будет смотреть как баран на новые ворота.


<<<... | 5756—5747 | 5746—5737 | 5736—5727 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 52


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

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

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

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

Перейти на конкретную страницу по номеру
  
Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

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