Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.16;
Скачать: CL | DM;

Вниз

BlackBox и Оберон   Найти похожие ветки 

 
StriderMan ©   (2007-07-24 17:11) [0]

наткнулся вот на такую статейку.

http://stfw.ru/page.php?id=5112

Собственно наибольший интерес вызвал Оберон и BlackBox. Кто знаком с этими языками, просьба высказаться.


 
wicked ©   (2007-07-24 20:10) [1]

статью в топку - наивное, ничем не подкрепленное бла-бла, похожее на лай собаки на караван

а насчет знакомых с языком и средой - поищи контакты юзера Ермак - он как раз этим занимается


 
TUser ©   (2007-07-24 20:18) [2]

При всем уважении к Вирту, Си жив. И у си есть мощьный аргумент - переносимость, то есть существуют компиляторы, понимающие похожие (очень) диалекты этого языка для разных платформ.


 
Думкин ©   (2007-07-24 20:26) [3]

> StriderMan ©   (24.07.07 17:11)  

Тут на Ермака выходить надо. Язык нормальный.

Компонентный Паскаль — усовершенствованная версия языка Оберон-2, разработанная компанией Oberon microsystems. Компания Oberon microsystems благодарит Х.?Мёссенбёка и Н.?Вирта за дружеское разре?шение использовать их Сообщение о языке Оберон-2 в качестве основы данного документа.

Компонентный Паскаль — язык общего назначения в традиции языков Паскаль, Модула-2 и Оберон. Его самые важные черты — блочная структура, модульность, раздельная компиляция, статическая типизация переменных [static typing] и строгий контроль типов (в том числе через границы модулей), расширенное переопределение типов [type extension] вместе с методами, динамическая загрузка модулей, а также автоматический сбор мусора.


Из хелпа по Блекбокс. Про то что на Модуле серьезные вещи писали - писать?


 
Думкин ©   (2007-07-24 20:31) [4]

BlackBox

Компания Oberon microsystems разрабатывала компонентную библиотеку BlackBox Component Framework начиная с 1992 г. (сначала библиотека называлась Oberon/F). Эта библиотека написана на Компонентном Паскале и упрощает разработку компонент графического пользовательского интерфейса. Она поставляется с несколькими компонентами, включая текстовый редактор, систему визуального проектирования, средство доступа к базам данных SQL, интегрированную среду разработки, а также систему поддержки выполнения программ на Компонентном Паскале. Весь пакет представляет собой развитый, но весьма нетребовательный к системным ресурсам инструмент быстрой разработки компонентных приложений, названный BlackBox Component Builder. Он нетребователен к системным ресурсам, т.к. полностью построен из модулей Компонентного Паскаля — включая ядро со сборщиком мусора, а также самого компилятора языка Компонентный Паскаль. Это — иллюстрация как мощи концепции компонентного программного обеспечения вообще, так и адекватности языка Компонентный Паскаль в частности.

Недавно диапазон приложений системы BlackBox Component Builder был значительно расширен за счет среды кросс-программирования Denia, которая является компонентной, расширающей BlackBox. Denia позволяет выполнять кросс-программирование на Компонентном Паскале для новой операционной системы реального времени Portos, которая тоже полностью реализована на Компонентном Паскале. Portos предназначен для встроенных систем и приложений с жесткими требованиям реального времени [hard real-time requirements], например, в робототехнике и промышленной автоматизации.


 
Interior   (2007-07-24 20:41) [5]

Интересно.
А компонентный Паскаль чем от просто Паскаля отличается?


 
Думкин ©   (2007-07-24 20:47) [6]

Исключенные средства

• Типы-диапазоны
Используйте один из стандартных целых типов.

• Перечислительные типы
Используйте вместо них целые константы.

• Произвольные диапазоны для массивов
Массивы теперь всегда определены над целым диапазоном 0..max-1.

Пример
A = ARRAY 16 OF INTEGER (* разрешены индексы из диапазона 0..15 *)

• Нет общих множеств
Тип SET теперь означает набор целых чисел, который может включать элементы 0..31.

• Нет явного оператора DISPOSE
Неиспользуемая более память автоматически собирается сборщиком мусора. Вместо DISPOSE, просто присвойте переменной значение NIL.

• Нет вариантных записей
Используйте (расширенное) переопределение записей.

• Нет упакованных структур
Используйте типы SHORTCHAR или BYTE для значений, умещающихся в байт.

• Нет GOTO

• Нет стандартных функций PRED и SUCC
Используйте DEC и INC для целых значений.

• Нет встроенных средств ввода/вывода
Нет файловых типов. Ввод/вывод обеспечивается библиотечными процедурами.


 
Думкин ©   (2007-07-24 20:48) [7]

Измененные средства

• Стандартная процедура ENTIER вместо ROUND

• Синтаксис для констант типа REAL
3.0E+4, но не 3.0e+4

• Синтаксис для объявлений указательных типов
P = POINTER TO R
вместо
P = ^R

• Синтаксис для оператора CASE
"|" вместо ";" в качестве разделителя случаев.
Предложение ELSE.

Пример
CASE i * 3 - 1 OF
  0: StdLog.String("нуль")
| 1..9: StdLog.String("от единицы до девяти")
| 10, 20: StdLog.String("десять или двадцать")
ELSE StdLog.String("что-то еще")
END

• Имя процедуры должно быть повторено

Пример
PROCEDURE DrawDot (x, y: INTEGER);
BEGIN
END DrawDot;

• Большие и малые буквы различаются

Пример "proc" не то же самое, что "Proc".

• Синтаксис литерных цепочек
Литерные цепочки-константы заключаются между " или между ". В одной цепочке не может быть одновременно одиночных и двойных кавычек. Литерные цепочки-константы единичной длины могут присваиваться литерным (character) переменным.

Пример
"That"s great" "Write "hello world" to the screen"
ch := "x"
ch := "x"

• Комментарии
Комментарии заключаются между (* и *) и могут быть вложены.

• Скобки для множеств
Константы-множества задаются между { и } вместо [ и ].

Пример {0..2, 4, j..2 * k}

• Синтаксис функций
Используйте ключевое слово PROCEDURE также и для функций вместо FUNCTION.
Процедуры, возвращающие значение, всегда должны иметь (возможно пустой) список параметров в своих объявлениях и в вызовах.
Результат функции возвращается явно оператором RETURN, вместо присваивания имени функции.

Пример

PROCEDURE Fun (): INTEGER;
BEGIN
 RETURN 5
END Fun;

 вместо

FUNCTION Fun: INTEGER;
BEGIN
 Fun := 5
END;

n := Fun()   вместо   n := Fun

• Объявления
Последовательность объявлений теперь
{ ConstDecl | TypeDecl | VarDecl} {ProcDecl | ForwardDecl}
вместо
[ConstDecl] [TypeDecl] [VarDecl] {ProcDecl}.

Упреждающие (Forward) объявления необходимы, если процедура используется до ее определения.

Пример
PROCEDURE ^ Proc;
вместо
PROCEDURE Proc; FORWARD;

• Процедурные типы
Процедуры могут быть не только переданы в качестве параметров, но и присваиваться переменным процедурных типов.

Пример
TYPE P = PROCEDURE (x, y: INTEGER);
VAR v: P;
v := DrawDot; (* присваивание *)
v(3, 5); (* вызов DrawDot(3, 5) *)

• Явные END вместо составных операторов
BEGIN может появляться только перед последовательностью операторов, но не внутри ее. IF, WHILE, и LOOP всегдад заканчиваются ключевым словом END.

• Оператор WITH
Оператор WITH является локальной охраной типа, он не подразумевает наличие скрытой переменной и не открывает новый диапазон видимости для переменных.
См. детали в описании языка.

• ELSIF
Операторы IF могут иметь несколько ветвей.

Пример
IF name = "top" THEN
 StdLog.Int(0)
ELSIF name = "bottom" THEN
 StdLog.Int(1)
ELSIF name = " charm" THEN
 StdLog.Int(2)
ELSIF name = "beauty" THEN
 StdLog.Int(3)
ELSE
 StdLog.String("strange")
END

• BY вместо только DOWNTO в FOR
Циклы FOR могут использовать любое константное значение в качестве приращения (положительного или отрицательного).

Пример
FOR i := 15 TO 0 BY -1 DO StdLog.Int(i, 0) END

• Булевы выражения используют "сокращенное" вычисление
Вычисление булева выражения прекращается, как только его результат определен.

Пример
Следующее выражение не вызывает ошибки при выполнении, когда p = NIL:
IF (p # NIL) & (p.name = "quark") THEN

• Константные выражения
В объявлениях констант допустимы не только буквальные константы, но и константные выражения.

Пример
 CONST
  zero = ORD("0");
  one = zero + 1;

• Разные операции
# используется вместо <> для проверки на неравенство.
& используется вместо AND для логической конъюнкции.
~ используется вместо NOT для логического отрицания.

• Явное преобразование к меньшему типу с помощью SHORT
Включение типов для числовых типов позволяет присваивать значения меньшего типа переменной большего типа. Присваивание в обратном направлении должно использовать стандартную процедуру SHORT.

Пример
int := shortint;
shortint := SHORT(int)


 
Думкин ©   (2007-07-24 20:50) [8]

Новые средства

• Шестнадцатеричные числа и литеры

Пример
100H (* десятичное 256 *)
0DX (* возврат каретки *)

• Дополнительные числовые типы
Добавлены типы LONGINT, SHORTINT, BYTE, SHORTREAL.

• Симметрическая разность множеств
Множества могут вычитаться.

• Новые стандартные процедуры
Добавлены новые стандартные процедуры INC, DEC, INCL, EXCL, SIZE, ASH, HALT, ASSERT, LEN, LSH, MAX, MIN, BITS, CAP, ENTIER, LONG и SHORT.

• LOOP с EXIT
Имеется новый оператор цикла с явным операторов выхода. См. детали в сообщении о языке.

• ARRAY OF CHAR могут сравниваться
Литертные массивы могут сравниваться с помощью операций =, #, <, >, <= и >=.

• Открытые массивы, многомерные массивы
Можно определять массивы, не указывая их размера, возможно, с несколькими измерениями.

Пример
VAR a: POINTER TO ARRAY OF CHAR;
NEW(a, 16)

PROCEDURE ScalarProduct (a, b: ARRAY OF REAL; VAR c: ARRAY OF REAL);

TYPE Matrix = ARRAY OF ARRAY OF REAL;
PROCEDURE VectorProduct (a, b: ARRAY OF REAL; VAR c: Matrix);

• Разыменование указателей не обязательно
Операция разыменования ^ может быть опущена.

Пример
root.next.value := 5
вместо
root^.next^.value := 5

• Модули
Модули суть единицы компиляции, упрятывания информации, а также загрузки. Упрятывание информации -- одна из главных черт объектно-ориентированного программирования. Возможны разные уровни упрятывания информации: полное упрятывание, экспорт только для чтения/реализации, полный экспорт.
См. детали в сообщении о языке.

• Расширенное переопределение типов
Типы записей (указательные типы) могут переопределяться, обеспечивая таким образом полиморфизм. Полиморфизм -- одно из главных средств объектно-ориентированного программирования.

• Методы
Процедуры могут быть связаны с типами записей (указательными типами), таким образом обеспечивая позднее связывание [late binding]. Позднее связывание является одним из главных средств объектно-ориентированного программирования. Такие процедуры еще называются методами.

• Операция с цепочками
Литерная цепочка, содержащаяся в литерном массиве, может быть выбрана посредством селектора $.

• Атрибуты записей
По умолчанию записи не могут быть переопределены, но могут быть помечены как EXTENSIBLE, ABSTRACT или LIMITED.

• Атрибуты методов
Методы не могут быть переопределены по умолчанию, но могут быть помечены как EXTENSIBLE, ABSTRACT или EMTPY. Вновь вводимые методы должны быть помечены как NEW.


 
ferr ©   (2007-07-24 20:57) [9]

Ой, я прям не знаю.. Что-то это мышиную возню напоминает.

В паскале, я всегда хотел увидеть обобщённые типы, неважно как реализованные, и в дополнении к этому библиотечку по аналогии с STL. Как жить без этого, я представить не могу..


 
tesseract ©   (2007-07-24 21:04) [10]

Прелестей много, но вот как без упакованных записей  с блоками памяти и специфическим оборудованием работать? Можно, но ведь какие потери производительности.


 
wicked ©   (2007-07-24 21:07) [11]


> Прелестей много, но вот как без упакованных записей  с блоками
> памяти и специфическим оборудованием работать? Можно, но
> ведь какие потери производительности.
>

сказано ж "используйте BYTE"

хотя очень любопытно мне - вот статейка та рассказывает, как modula/oberon используются в оборонной промышленности...
хотелось бы примеры увидеть, если их есть, конечно... хоть на одно вранье автора статьи меньше будет


 
Думкин ©   (2007-07-24 21:15) [12]


> wicked ©   (24.07.07 21:07) [11]

Если широко, то к Ермаку. Ссылки сейчас найти не могу. Дам это:

Успех Модулы-2 был наиболее значителен в задачах с высокими требованиями на надежность, таких как системы управления движением. <Например, практически все бортовое программное обеспечение на запускаемых в настоящее время российских спутниках связи пишется на Модуле-2 с помощью кросс-среды разработки приложений, описанной А.А.Колташевым в докладе на конференции JMLC"2003; см. Modular Programming Languages. Lecture Notes in Computer Science (LNCS 2789), Springer-Verlag, 2003, cc. 98-101>


 
Однокамушкин   (2007-07-24 22:06) [13]


> wicked ©   (24.07.07 21:07) [11]

http://www.uni-vologda.ac.ru/oberon/index.html
http://www.oberon2005.ru/
http://www.inr.ac.ru/~info21/
http://oberoncore.ru/


 
DiamondShark ©   (2007-07-24 23:40) [14]


> Прелестей много, но вот как без упакованных записей  с блоками
> памяти и специфическим оборудованием работать?

Дык, исходники Оберон Систем и БлюБоттл (это ОС такие) доступны...

А зачем при работе с оборудованием записи?


 
DiamondShark ©   (2007-07-24 23:54) [15]


> Исключенные средства

Вот это у меня всегда бурю негодования вызывало.


> • Типы-диапазоны

И лишились:
- полезной информации для возможной оптимизации
- контроля значений


> • Перечислительные типы

то же, что для диапазонов.
+ идеологический прокол: перечислимые типы -- это не именованные целочисленные константы, а именно что перечислимые сущности


> • Произвольные диапазоны для массивов

У массивов не было диапазонов. У массивов был тип индекса.
В сочетании с типами-диапазонами и перечислимыми типами это была очень интересная и стройная концепция.


> • Нет общих множеств
> Тип SET теперь означает набор целых чисел, который может
> включать элементы 0..31.

Множества просто жалко.
А теперь SET -- это изврат, вызваный к жизни тем, что в языке отсутствуют битовые операции над целыми.


> • Нет GOTO

Это религия.


> • Нет стандартных функций PRED и SUCC
> Используйте DEC и INC для целых значений.

Что совой об пень, что пнём по сове.
Если уж на то пошло, то DEC и INC -- тоже фтопку. Есть же операция "+".


 
icWasya ©   (2007-07-25 09:37) [16]

а для любителей поспорить - сюда http://www.delphikingdom.com/asp/talktopic.asp?ID=368


 
tesseract ©   (2007-07-25 11:25) [17]


> сказано ж "используйте BYTE"


А размер может быть три байта, и довольно нередко. Придёться Shl/Shr всё перемешивать и размешивать.


 
Mystic ©   (2007-07-25 12:30) [18]

> В паскале, я всегда хотел увидеть обобщённые типы, неважно
> как реализованные, и в дополнении к этому библиотечку по
> аналогии с STL. Как жить без этого, я представить не могу.


Тебя спасет Ada?


 
StriderMan ©   (2007-07-25 12:52) [19]

Поставил вчера блэкбокс, при нем отличный русский мануал/тюториал. Но сама IDE очень убогая, если ее вообще можно IDE назвать, скорее SDK. Прям таки спартанская - дальше некуда.
"Фишку" языка пока не уловил, но эксперименты продолжу


 
tesseract ©   (2007-07-25 14:48) [20]


> "Фишку" языка пока не уловил, но эксперименты продолжу


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


 
tesseract ©   (2007-07-25 14:49) [21]


> "Фишку" языка пока не уловил, но эксперименты продолжу


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


 
Однокамушкин   (2007-07-25 14:50) [22]


> tesseract ©   (25.07.07 14:48) [20]
> Фишка - язык функциональный, легче для программирования.

Это с каких пор Оберон функциональным стал?!!!!


 
ferr ©   (2007-07-25 15:05) [23]

?!!!!!!!


 
StriderMan ©   (2007-07-25 15:36) [24]

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


 
Ермак ©   (2007-08-19 00:09) [25]

"Ермака помяни, он и появится" :-) Давно не бывал на этом форуме, в силу того, что так сложилось, что с Дельфи уже давно не работаю.

Совсем вкратце про КП/ББ.
Идеология здесь особенная - это не среда разработки, а интегрированная среда разработки и выполнения. Кто знает Smalltalk, LISP-среды, те поймут. Но здесь 100% компиляция в машинный код. Среда выглядит спартански, но это не среда, а мета-среда, из которой можно вылепить нужный инструмент ("сама себе макроязык"). К примеру, текст - это не просто текст, а составной документ, который может внедрять в себя произвольное дерево графических интерактивных объектов (как пример - такая штука: http://oberoncore.ru/index.php?option=com_content&task=view&id=96&Itemid=29). А сам Framework ориентирован на разработку таких графических объектов-контейнеров. Если нужны рюшки - то с этим сложно, только выход на WInApi (хотя есть готовые библиотеки у нас на оберон-коре, которые позволяют кое-что приукрасить, типа круглых окон). Зато легко с содержательной графикой, документоориентированной. К примеру, поддержка глобального undo-redo для сложных составных документов без спец. усилий - и т.п.

Язык - из серии компонентно-ориентированных, коих ещё Ява и Шарп.
С Явой в чём-то похожи (например, очень легко сделать двустороннее соответствие конструкций - у Esmertec, Inc. (esmertec.com, компания, отпочковавшаяся от ОберонМикросистемс) есть реализации, в которых в одном адресном пространстве с общим сборщиком шуруют классы Ява и модули Компонентного Паскаля.
Однако Ява не особо удачна для системного программирования, тут КП даст большую фору - и по многим причинам. Например, модуль и тип данных - это ортогональные абстракции, и смешивание их в одном понятии класса порождает большую путаницу. МНого казалось бы мелочей, но они делают возможным интересные архитектурные приёмы, которые на Яве невозможны в принципе. И, наконец, - за счёт иной системы типов (и объектных - в виде расширяемых записей) значительно падает нагрузка на динамику и сборщик мусора (попробуйте в Яве поработать с объектными сообщениями - это значит, что вам всё время надо жрать память...). Про архитектурные особенности см. здесь: http://oberoncore.ru/index.php?option=com_content&task=blogcategory&id=16&Itemid=22 .
Так же очень интересна небольшая книжка К. Пфистера "Компонентное ПО", хоть и давняя, но актуальная, со сравнением разных компонентных моделей:
http://oberoncore.ru/index.php?option=com_content&task=blogcategory&id=14&Itemid=10 .

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

В общем, со всеми вопросами можно к нам на форум: forum.oberoncore.ru .
Засим исчезаю, зашёл случайно, Яндекс привёл :-)

P.S. Дабы перед уходом дать почву для жарких дебатов и мордобою :-), даю ссылочку http://rbogatyrev.livejournal.com/2007/05/28/ , где, кроме всяких других интересностей, есть информация о проекте "Отечественной перспективной ОС"...

С наилучшими пожеланиями к участникам
некогда первого для меня программистского форума,
Илья Ермаков.


 
-Ермак   (2007-08-19 00:10) [26]

"Ермака помяни, он и появится" :-) Давно не бывал на этом форуме, в силу того, что так сложилось, что с Дельфи уже давно не работаю.

Совсем вкратце про КП/ББ.
Идеология здесь особенная - это не среда разработки, а интегрированная среда разработки и выполнения. Кто знает Smalltalk, LISP-среды, те поймут. Но здесь 100% компиляция в машинный код. Среда выглядит спартански, но это не среда, а мета-среда, из которой можно вылепить нужный инструмент ("сама себе макроязык"). К примеру, текст - это не просто текст, а составной документ, который может внедрять в себя произвольное дерево графических интерактивных объектов (как пример - такая штука: http://oberoncore.ru/index.php?option=com_content&task=view&id=96&Itemid=29). А сам Framework ориентирован на разработку таких графических объектов-контейнеров. Если нужны рюшки - то с этим сложно, только выход на WInApi (хотя есть готовые библиотеки у нас на оберон-коре, которые позволяют кое-что приукрасить, типа круглых окон). Зато легко с содержательной графикой, документоориентированной. К примеру, поддержка глобального undo-redo для сложных составных документов без спец. усилий - и т.п.

Язык - из серии компонентно-ориентированных, коих ещё Ява и Шарп.
С Явой в чём-то похожи (например, очень легко сделать двустороннее соответствие конструкций - у Esmertec, Inc. (esmertec.com, компания, отпочковавшаяся от ОберонМикросистемс) есть реализации, в которых в одном адресном пространстве с общим сборщиком шуруют классы Ява и модули Компонентного Паскаля.
Однако Ява не особо удачна для системного программирования, тут КП даст большую фору - и по многим причинам. Например, модуль и тип данных - это ортогональные абстракции, и смешивание их в одном понятии класса порождает большую путаницу. МНого казалось бы мелочей, но они делают возможным интересные архитектурные приёмы, которые на Яве невозможны в принципе. И, наконец, - за счёт иной системы типов (и объектных - в виде расширяемых записей) значительно падает нагрузка на динамику и сборщик мусора (попробуйте в Яве поработать с объектными сообщениями - это значит, что вам всё время надо жрать память...). Про архитектурные особенности см. здесь: http://oberoncore.ru/index.php?option=com_content&task=blogcategory&id=16&Itemid=22 .
Так же очень интересна небольшая книжка К. Пфистера "Компонентное ПО", хоть и давняя, но актуальная, со сравнением разных компонентных моделей:
http://oberoncore.ru/index.php?option=com_content&task=blogcategory&id=14&Itemid=10 .

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

В общем, со всеми вопросами можно к нам на форум: forum.oberoncore.ru .
Засим исчезаю, зашёл случайно, Яндекс привёл :-)

P.S. Дабы перед уходом дать почву для жарких дебатов и мордобою :-), даю ссылочку http://rbogatyrev.livejournal.com/2007/05/28/ , где, кроме всяких других интересностей, есть информация о проекте "Отечественной перспективной ОС"...

С наилучшими пожеланиями к участникам
некогда первого для меня программистского форума,
Илья Ермаков.


 
-Ермак   (2007-08-19 00:10) [27]

Пардон за дубль.... Думал, форум не признал и не добавил...


 
axis_of_evil ©   (2007-08-19 00:22) [28]

StriderMan ©   (25.07.07 12:52) [19]
можно еще и с Bluebottle OS побаловаться :>
// книжка по Inside с исходниками прилагается


 
noname_   (2007-08-19 10:51) [29]

2 ferr [9]

Oberon-2 с генериками и другими плюшками
http://sourceforge.net/projects/ooc
бинарники есть в репозиториях Ubuntu, Debian/unstable


 
Ермак ©   (2007-08-19 20:50) [30]

Да, а вот це к вопросу о серьёзных применениях в реал-тайме и т.п.
http://wiki.oberoncore.ru/index.php/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F


 
Ермак ©   (2007-08-19 20:50) [31]

Да, а вот це к вопросу о серьёзных применениях в реал-тайме и т.п.
http://wiki.oberoncore.ru/index.php/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F


 
matt ©   (2007-08-19 22:26) [32]


> Ермак ©   (19.08.07 20:50) [31]


Подскажете литературу о сабже?


 
Ермак ©   (2007-08-22 01:50) [33]

Все русскоязычные вещи сконцентрированы на OberonCore.ru.
Там же кое-что англоязычное.

По самим технологиям - это англоязычные report-ы, документы, диссертации, публикации за двадцать лет их существования. И за этим лучше на EuroProg.ru - там, кстати, необычайно богатая электронная библиотека классики Computing Science.

А чтобы конкретно повертеть в руках - это в первую очередь Блэкбокс и его переведённая документация.


 
Ермак ©   (2007-08-22 02:00) [34]

Да, очень хорошая книга авторов Гаммы и др. "Паттерны объектно-ориентированного проектирования", вышла в 2001/2 г. в издательстве Питер (кому нужна - могу скинуть в электронном виде, напишите на мыло).
Там примеры на Smalltalk и C++. Так вот, сам BlackBox (это же интегрированная расширяемая среда, да ещё и open-source) можно считать живой иллюстрацией большинства паттернов этой книги - пример того, как эти паттерны позволяют строить целые компонентные системы. Оригинал книги на английском вышел ещё в 1994 г., практически одновременно с началой разработки Блэкбокса, они во многом на опыт этой книги и опирались.

Есть ещё классика - Клеменс Шиперски "Component-oiented programming - beyond OOP" - что-то в этом духе... Клеменс Шиперски - известный автор по вопросам КОП, один из ведущих архитекторов .NET. И он же, до перехода в Microsoft Research - один из ведущих архитекторов Блэкбокса (во многом Блэкбокс можно считать предтечей рантайма .NET, точно так же, как Delphi VCL - предтечей графической части .NET Framewrok, через Андре Хейлсберга).

Увы, книги Шиперского у меня в электронном виде нет, и в сети я её не встречал.

Ну и ряд разделов документации Блэкбокса по стилю и является книгой по КОП.


 
db2admin ©   (2007-08-22 08:05) [35]

Ермак ©   (22.08.07 02:00) [34]

if Язык с автосборкой? then
 ShowMessage("Фхтанг, дубового кофе(Java) с его маразмом за глаза хватает");


 
Ермак ©   (2007-08-22 11:09) [36]

Автосборку можно любить... можно не любить...
Но факт таков, что для компонентных архитектур автоматическое управление памятью (в каком-то виде - сборщик, посдсчёт ссылок и т.п.) просто необходимо.
Когда в системе сотни модулей, написанных в разное время разными людьми, и эти модули свободно обмениваются сложными динамическими структурами из объектов, то никто, кроме диспетчера памяти, не может знать, когда нужно освободить память...
В частности, BlackBox Framework с его поддержкой составных документов, - т.е. произвольных деревьев из вложенных графических объектов, ничего не знающих друг про друга - просто нереально реализовать без автопамяти.

Для "быстрых" системных задач в Оберонах по сравнению с Явой проблема очень сильно смягчается наличием нединамического ООП (т.е. я могу передавать параметром по ссылке расширяемый RECORD (то бишь, объект), размещённый на стеке. Таким образом, к примеру, организовать передачу типизированных сообщений без нагрузки на диспетчер памяти вообще).

Для совсем системных задач, где требуется жёсткая детерминированность освобождения ресурсов, приходится возвращаться к явному освобождению памяти, но вводить дополнительную защиту от "висячих ссылок" - чтобы, буде они возникнут, обращение по ним никогда не попало на другие объекты, а гарантировано дало исключение. А для этого требуется манипулировать уже не простыми указателями, а более сложными описателями - хэндлами, включающими в себя кроме адреса, ещё и доп. информацию...



Страницы: 1 вся ветка

Текущий архив: 2007.09.16;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.033 c
15-1187356480
Nic
2007-08-17 17:14
2007.09.16
Какой цифровик посоветуете?


9-1143755210
netboy
2006-03-31 01:46
2007.09.16
Создание движка игры


6-1169800517
Ш-К
2007-01-26 11:35
2007.09.16
TWebBrowser и ReadyState


2-1187803865
nord489
2007-08-22 21:31
2007.09.16
Переменные


2-1187754215
Vitaliy_____
2007-08-22 07:43
2007.09.16
Доступ к свойству компонента