Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.039 c
15-1187529515
vac
2007-08-19 17:18
2007.09.16
Вакансия в Киеве Delphi + SQL


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


3-1179423532
Lavrenty
2007-05-17 21:38
2007.09.16
Log, debug или что-то вроде этого?


8-1165527875
devastator
2006-12-08 00:44
2007.09.16
SampleGrabber не работает


11-1169615992
dedo
2007-01-24 08:19
2007.09.16
SmoothDIB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский