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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 966—957 | 956—947 | 946—937 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 531


№ 956   18-10-2006 02:14 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 955« (12)
___________________________

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


Безболезненно, говорите? Многое зависит от того, на каком уровне Вы строите этот интерфейс (языковом, внеязыковом). Очевидно, что если язык не поддерживает интерфейсы (например, ассемблеры), то Вы можете его пытаться имитировать со всеми вытекающими.

Интерфейс сам по себе имеет побочные эффекты. Выделение описательной части из реализации не такое безболезненное, как может показаться: интерфейс может неявно тянуть за собой нюансы реализации. К тому же если интерфейс понимать как чисто декларативную часть, где собраны представления структур данных и функционала, то декларативность обычно выражается в бессистемном наборе сущностей безотносительно их семантики применения. Т.е. последовательность (синхронность/асинхронность для параллельного выполнения) вызова функций/методов обычно не регламентируется. Наконец, в интерфейсе редко отражаются ограничения на конкретную сущность: валидация входных и выходных параметров, инвариантность состояний.

Если учесть, что состояние программной системы может определяться не только значениями всех переменных/полей, но, например, и внешними данными, хранящимися в некотором файле (БД), то любое их модифицирование есть изменение состояния системы с возможностью изменения ее поведения. Эти вещи (инвариантность состояний) вообще в интерфейсах не отражаются и потом не контролируются.


№ 955   17-10-2006 21:40 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 953« (Варяжский Гость)
___________________________
Далеко не всегда нужно (можно) разделять интерфейс и реализацию. При программировании бывает полезно работать даже не с АТД, а со слоями абстракций, реализованными, например, на базе конечных автоматов (реализация абстракции в виде другой абстракции, математической с возможностями формального анализа и синтеза).

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


№ 954   17-10-2006 07:57 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 951« (AVC)
___________________________
Думаю, Ваши абстракции не сильно отличаются от чисто функциональных и, как правило, они имеют вид


x:=f(x,...)


То есть, где-то в подсознании все равно сидит алгебраическая модель. Вот если намеренно отойти от неё подальше, абстракции не покажутся такими уж красивыми.


№ 953   17-10-2006 06:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 951« (AVC)
___________________________

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

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

Программированием (в т.ч. и настоящим) все-таки можно заниматься, не вполне представляя себе математические основы своего ремесла; возможно, за счет того, что в учебниках изложены хорошие, универсальные "паттерны".
Программирование - это не обязательно решение задачи математическими средствами. Тот же Ершов достаточно неплохо выделил три вида программирования. Оно может выливаться в конструирование, где математику, скрытую под ногами, знать и не нужно.

Поэтому я так и "встрепенулся", когда info21 помянул теорию множеств (мол, чем грамотнее человек, тем чаще он пользуется теорией множеств (т.к. она является фундаментом чуть ли не всех наших абстракций) и Бурбаки.
Кстати, о теории множеств. Вы смотрели когда-нибудь на язык SETL, созданный в 1970 г.? На программирование IMHO полезно смотреть сквозь призму основных строительных элементов - языков. Я бы выделил такие, "ортогональные", неординарные и наиболее значимые: ассемблер, Forth, Oberon, Smalltalk, Lisp, Prolog, SETL.


№ 952   17-10-2006 04:27 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 951« (AVC)

Наверное, все это выглядит довольно смешно.
Но, все же, помогите (довольно глупому) программисту понять, каким же именно делом он занимется!


Был бы здесь ASU он бы сечас Вам ответил чего-нибудь эдакое...


№ 951   17-10-2006 02:52 Ответить на это сообщение Ответить на это сообщение с цитированием
Спасибо за ответы!
Вопрос может показаться уж слишком абстрактным (наверное, так и есть), но он меня почему-то изрядно беспокоит.
(Прямо как Гондурас в анекдоте. :) )
Возможно, потому что он каким-то образом затрагивает основы (моего) программистского самосознания.
Влияет на представление о том, чем же я все-таки занимаюсь столько лет.

Мне всегда казалось, что все довольно просто.
Мы (программисты) в той или иной степени моделируем мир на манер математиков.
Те тоже сначала строят математическую модель явления, а затем с ее помощью находят решение какой-либо актуальной задачи.
Мы тоже сначала моделируем, выражаем эти модели в виде АТД, затем с помощью этих АТД находим нужное решение -- алгоритм.
(Ну, не просто же мы битами манипулируем.)
Как мне кажется, близкая точка зрения изложена в учебнике Ахо, Ульмана и Хопкрофта "Структуры данных и алгоритмы".

И было в моем представлении все довольно стройно и гармонично.
Но после чтения (хотя и по диагонали) книги Мейера об объектно-ориентированном конструировании программных систем, мне пришлось продумать свои мысли на один шаг дальше.
Если АТД -- это математическая модель, то, наверное, и обращаться с ним (АТД) надо соответственно: определить множество, задать операции, определить аксиомы.
Поэтому я так и "встрепенулся", когда info21 помянул теорию множеств (мол, чем грамотнее человек, тем чаще он пользуется теорией множеств (т.к. она является фундаментом чуть ли не всех наших абстракций) и Бурбаки.
Ясно, что аксиомы (свойства АТД) задаются в математической (аппликативной) манере.
Но тут-то я и осознал, что как правило не пользуюсь чисто функциональными (аппликативными) спецификациями.
(Эх, да что греха таить, совсем ими не пользуюсь.)
Тут-то и парадокс.
Я обожаю находить хорошие (как мне кажется, конечно) абстракции и строить из них программы.
Но теперь я стал сомневаться в сознательности того, что я делаю (раз я не определяю всякий раз аксиомы для своих АТД).

Возникают разные предположения.
1) Программированием (в т.ч. и настоящим) все-таки можно заниматься, не вполне представляя себе математические основы своего ремесла; возможно, за счет того, что в учебниках изложены хорошие, универсальные "паттерны".
2) Существует какой-то иной, помимо математики, способ вводить работоспособные абстракции.
3) На самом деле я никогда не пользовался АТД, а просто разделял интерфейс и реализацию. (Только опять же, как я это делал?)
4) И т.д.

Наверное, все это выглядит довольно смешно.
Но, все же, помогите (довольно глупому) программисту понять, каким же именно делом он занимется!
 AVC


№ 950   16-10-2006 23:39 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 949« (Илья Ермаков)
___________________________
В смысле направления. Теория-то есть уже. И не одна.Вопрос, как её представить программисту.


№ 949   16-10-2006 15:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 948« (12)
___________________________
В смысле?


№ 948   16-10-2006 13:53 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 945« Илья Е.
___________________________
Илья, Вам не кажется, что Вы попытались сказать об обратном
переводе?


№ 947   16-10-2006 03:57 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 941« (AVC)
___________________________
>>>У того же Мейера: пока чистая спецификация - АТД, как только хоть капелька реализации - уже класс.
Пожалуй тут есть аналогия: АТД - теория множеств, объекты - алгебра (точнее исчисление). Отсюда и отсутствие операций над АТД.


<<<... | 966—957 | 956—947 | 946—937 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 531


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

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

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

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

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

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