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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 1256—1247 | 1246—1237 | 1236—1227 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 502


№ 1246   21-12-2006 11:12 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1245« (Alexey Veselovsky)
___________________________
Это не только в программировании.  В математическом описании сложных систем прослеживается та же тенденция. Видимо это определяется возможностями мозга - не удается одновременно оперировать и сложной проблемой и сложным инструментом.


№ 1245   21-12-2006 07:07 Ответить на это сообщение Ответить на это сообщение с цитированием
У меня не столь много опыта в программировании, но я заметил что чем сложнее(объемней, больше) задача, тем проще и меньше должен быть инструмент(язык) для решения её при неизменной квалификации программиста пытающегося решить эту задачу.

Быть может я ошибаюсь, но пока мои наблюдения именно таковы.


№ 1244   21-12-2006 05:55 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1242« (Иван Левашев)
___________________________

"... I don't believe in that sort of miracle. Big problems need big solutions!"

За одну эту чушь, высказанную публично по большому поводу, где, надо думать, все должно было быть давно и хорошенько обдумано, -- за одно это бессмысленное утверждение Ишбиа можно всерьез не принимать.


№ 1243   17-12-2006 17:37 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1242« (Иван Левашев)
___________________________
Ну, тема про Обероны появилась несколько раньше визита Вирта. В разделе "Школа Оберона" есть архив первой темы (большая свалка всего и вся на четыре с гаком тысячи постов). Начата 10.12.2002, так что Оберону здесь уже больше четырёх лет :)

А что касается Ады - надо полагать, про неё давно есть специализированные и известные сайты.


№ 1242   17-12-2006 11:09 Ответить на это сообщение Ответить на это сообщение с цитированием
Может быть, не в тему.
Я пропустил момент, когда здесь появилась тема про Оберон.
У меня только один вопрос : почему Оберон?
Почему не Ада? Стандарт Ады 2005 со дня на день станет стандартом ISO, а здесь, к моему удивлению обсуждают Оберон, и про Аду ни слухом ни духом.
Вообще есть у меня некоторые домыслы, почему так получилось. Никак после посещения Вирта такие темы? Когда он к нам в Нск приезжал, он, помню, и про Паскаль, и про Модулу, и Оберон много чего сказал. Особенно помню, как сожалел, что в Паскале использовал синтаксис

if условие then
  оператор


допускающий неоднозначности вместо

if условие then
  операторы
end if



И в Модуле, и в Обероне, и в других эта ошибка была исправлена.
Вскользь упоминал и другие языки-потомки Паскаля.
Но ни слова об Аде.

Я даже могу предположить, почему. Вирт считает, что язык не должен быть большим. Приведу цитату из Википедии :
http://en.wikipedia.org/wiki/Oberon-1
As this is an intent whose success cannot be easily quantified, there remains some disagreement that Oberon has achieved its intended goals in this respect. One objection to its strategy of language design simplification was expressed by Jean Ichbiah, the architect of Ada when Wirth criticized Ada for being too big; he responded "There are times when Wirth believes in small solutions for big problems. I don't believe in that sort of miracle. Big problems need big solutions!" Oberon developers have even felt that Oberon went too far in this respect -- Oberon-2 returned the 'FOR' statement to that version of the language.

Сравнение Паскаля с Адой я видел :
http://www.mysunrise.ch/users/gdm/pascada.htm
Оба языка с тех пор эволюционировали (в виде FreePascal 2.x и Delphi 2006), так что не все претензии к Паскалю верны полной степени.
С Обероном сравнивать не доводилось, но у меня сильное чувство, что после Ады 2005 едва ли какой язык стоит внимания в той же степени.



№ 1241   14-12-2006 00:49 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1239« (Илья Ермаков)

Примеры есть, все есть, полная документация вот только дописана, все будет на днях :-)

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


№ 1240   13-12-2006 13:18 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1238« (Mirage)
___________________________

Ответ на »сообщение 1234« (Илья Ермаков)
___________________________

А насколько это все портабельно? Т.е. в смысле переноса на Linux, MaxOS и т.д.?

Среда модифицирована на нескольких уровнях.
А) портируемые примитивы синхронизации (критические секции, семафоры, локальные хранилища потока, атомарные операции в стиле POSIX) - модуль Synch с абстракными типами + модуль HostSynch, инсталлирующий конкретную реализацию. Как обычно в Блэкбоксе, можно подменить реализацию во время выполнения.
На базе Synch выполнена потокобезопасная модификация ключевых модулей BlackBox Framework (не слишком радикальная, например, работа с GUI должна выполняться либо в главном потоке программы, либо после специальной блокировки главного потока, однако все глобальные данные всех модулей защищены от повторного вхождения нескольких потоков).
Synch и потокобезопасный Framework войдут в основную ветку среды, в Service Pack 4. Таким образом, можно будет разрабатывать потокобезопасные модули, которые будут работать на обоих ядрах - и обычном BlackBox, и Active BlackBox, и других многопоточных ядрах, буде таковые появятся.
Б) Ядро Kernel переписано для поддержки многопоточности (потоки названы задачами, Tasks, потому что изначально в АББ предполагались высокуровневые абстракции в стиле Ады, задачи + рандеву). В него введено API, позволяющие порождать задачи и контролировать их выполнение. Переделаны диспетчер памяти (при этом большая часть NEW может выполняется в неблокирующем режиме, параллельно несколькими потоками), сборщик мусора (сборка мусора блокирует все потоки, как и в .NET, тут другого способа пока не придумано...), обработка трепов для многих потоков и т.п. Введена поддержка слабых указателей, как в .NET (Weak Pointers). Введена поддержка нового, экспериментального механизма, названного автоматической агрегацией деталей.
В) На базе нового ядра сделан модуль Ao, включивший высокоуровневые абстракции - активные процедуры и активные объекты в стиле Active Oberon. Из оригинального, кроме активных процедур, возможность "сборки мусора" для более ненужных активных объектов, которые получают стоп-сигнал и могут корректно завершить свои активности.
Пункты Б и В - это отдельная версия рантайма, Active BlackBox, сохранивщая 100%-обратную совместимость. Будет развиваться параллельно с основной веткой среды. Лицензия - Freeware.


№ 1239   13-12-2006 12:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1237« (Сергей Губанов)
___________________________
Примеры есть, все есть, полная документация вот только дописана, все будет на днях :-)
Вот bounded buffers из документации:

MODULE ObxAoBufferLint;

IMPORT Ao;

TYPE
Item* = LONGINT;
Buffer* = POINTER TO RECORD
tag: Ao.MONITOR; (* Поле типа Ao.MONITOR делает
объект монитором *)

h, n: INTEGER;
data: POINTER TO ARRAY OF Item
END;

PROCEDURE NewBuffer* (size: INTEGER): Buffer;
VAR b: Buffer;
BEGIN
NEW(b); NEW(b.data, size);
RETURN b
END NewBuffer;

PROCEDURE (b: Buffer) Get* (OUT x: Item), NEW;
BEGIN Ao.UPDATE;
WHILE ~ (b.n # 0) DO Ao.AWAIT END; (* буфер непуст *)
x := b.data[b.h];
b.h := (b.h + 1) MOD LEN(b.data);
DEC(b.n)
END Get;

PROCEDURE (b: Buffer) Put* (x: LONGINT), NEW;
BEGIN Ao.UPDATE;
WHILE ~ (b.n # LEN(b.data)) DO Ao.AWAIT END; (* буфер неполон *)
b.data[(b.h+b.n) MOD LEN(b.data)] := x;
INC(b.n)
END Put;

END ObxAoBufferLint.


UPDATE - это EXCLUSIVE, после которого пересчитываются AWAIT-ы. Пришлось ввести такое разделение, т.к. библиотека не может знать, менялось ли в эксклюзивной процедуре состояние объекта или нет, а пересчитывать для всех процедур - например, для Get-ов, - бессмыссленно и накладно.
Семафоры вообще на высоком уровне не используются, они на нижнем уровне, на них AWAIT-ы и другая синхронизация реализованы. EXCLUSIVE реализован на критических секциях.
В целом задача сверхэффективности не ставилась, т.к. без введения в язык смоделировать очень быстро эти абстрации невозможно. Ставилась цель показать, как среда может расширяться за счет рантайма, без модификации языка, дать применимый на практике инструмент и опробовать некоторые новые идеи. В случае успеха это может быть вынесено на уровень псевдомодуля компилятора, опять же, без изменения основного множества языка Component Pascal.


№ 1238   13-12-2006 11:10 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1234« (Илья Ермаков)
___________________________

А насколько это все портабельно? Т.е. в смысле переноса на Linux, MaxOS и т.д.?


№ 1237   13-12-2006 09:40 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1236« (Илья Ермаков)

Если интересно, посчитал точно - 91 инструкция в процедуре Semaphor.WAIT, 68 инструкций - в Semaphore.POST, хотя, естественно, в идеальном случае, когда не нужно ждать, а просто забрать единицу со счетчика, на WAIT пройдет около 20 инструкций.
Блокировка монитора в .NET - это все равно, что простой вход в критическую секцию Win32, там тоже около 5-6 инструкций...


Что-то я ничего не понял. Можно Вас поросить в качестве примера написать аналог Bounded Buffer http://bluebottle.ethz.ch/languagereport/node8.html#SECTION00086000000000000000
с использованием Вашей библиотеки.


<<<... | 1256—1247 | 1246—1237 | 1236—1227 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 502


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

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

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

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

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

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