Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение  Обсуждение из раздела Школа ОБЕРОНА
№ 6086 18-12-2007 19:50 |  |
Ответ на »сообщение 6083« (Jack Of Shadows)
___________________________
Да и про запуск процедур с интерпретатора тоже че то не все чисто.
Вот прямо так в окоше набили название процедуры с параметрами, нажали Enter и там же увидели результат ?
Как правило, проще: просто щелкнули мышкой по коммандеру (не набирать же команду каждый раз заново, на это только трудолюбивые лисперы способны :) ).
№ 6085 18-12-2007 19:47 |  |
Ответ на »сообщение 6079« (Geniepro)
___________________________
То есть это как так? При запуске любой процедуры тут же грузится модуль, в котором определена эта процедура (модуль должен быть скомпилирован заранее).
Вообще-то, модуль мог быть уже загружен. :)
Конечно, в Обероне единица загрузки модуль (а процедура -- единица выполнения).
Это нисколько не отменяет того факта, что при "экспериментах" с процедурами мы просто редактируем их код и запускаем на выполнение.
Можете считать нажатие пары кнопок на компиляцию и выгрузку модуля (Alt+D, A; можно и по другому: Ctrl+K, а потом при запуске процедуры нажать клавишу Ctrl) просто частью редактирования. :)
В Оберонах нельзя просто взять и выполнить какую-либо процедуру, не оформив для этого модуль с этой процедурой...
Это достоинство или недостаток? :)
Такая возможность в обероновских средах есть.
(Я сейчас конкретно говорю о ББ, где диалоговые средства работают на основе метаинформации.)
Это и правда очень удобно.
С некоторыми ограничениями.
Допустим, Вам понадобилось подправить какую-то процедурку. Вы её исправляете, и что дальше? Правильно, Вы компилируете модуль, в котором находится эта процедура, а затем выгружаете старую копию объектного кода этого модуля и загружаете новый объектный файл. При этом Вы должны выгрузить также и все другие модули, которые импортировали подправленный модуль, с потерей всех данных этого модуля (та самая сессия).
Jack Of Shadows же имеет в виду возможность перезагрузки отдельной процедуры без затрагивания других частей программы и без потерь данных в этом и других модулях... Так, как это есть в Лиспе, например...
Это непринципиальные "ограничения" (возможно, вопреки тому Вашему мнению :) ).
Во-первых, когда я провожу эксперименты с процедурой, я как правило не загружаю модулей, импортирующих модуль, в котором она определена.
Во-вторых, допустим, надо провести эксперименты с процедурой, которую импортируют из других модулей. Это не такая большая проблема. Ведь существует т.н. "динамическая коммутация" (выражение Ильи Ермакова). Клиентский модуль будет вызывать процедуру-интерфейс, а она будет вызывать реальную процедуру по указателю (он устанавливается при загрузке модуля, в котором определена реальная процедура). Когда эксперимент будет завершен, можно будет отказаться от косвенности (если она лишняя).
№ 6084 18-12-2007 19:22 |  |
Ответ на »сообщение 6083« (Jack Of Shadows)
___________________________
А вот Путшузкщ
Тьфу черт, Punto не переключился на Geniepro.
№ 6083 18-12-2007 19:20 |  |
Ответ на »сообщение 6068« (Илья Ермаков)
___________________________
Перезапуск или "убивать" - да шо Вы, как можно!
А вот Путшузкщ тут говорит что перезапускать вам таки приходится. Не всю среду (оберон) а запущенную в нем программу. ПРи этом теряется сессия (состояние) этой программы.
Да и про запуск процедур с интерпретатора тоже че то не все чисто.
Вот прямо так в окоше набили название процедуры с параметрами, нажали Enter и там же увидели результат ?
№ 6082 18-12-2007 19:18 |  |
Ответ на »сообщение 6078« (QR)
___________________________
Интересно, на какой машине производилось сравнение?
AMD 3000
№ 6081 18-12-2007 19:16 |  |
Ответ на »сообщение 6080« (Geniepro)
___________________________
Ну вот, а вешали лапшу про то что "как в лиспе".
Хорошо хоть есть кто то кто знаком с обероном не по рассказам :))
№ 6080 18-12-2007 18:38 |  |
Ответ на »сообщение 6068« (Илья Ермаков)
___________________________
Уж шибко всё похоже на Лиспы и Смоллтоки.
Илья, ну нельзя же так шутить! Я ж чуть под стул не упал! :о))
№ 6079 18-12-2007 18:38 |  |
Ответ на »сообщение 6067« (AVC)
___________________________
1. Основной чертой исследовательского полигона является интерпретатор. Возможность вручную запустить любую функцию и посмотреть результат, не загружая для этого программу.
В Обероне единица исполнения -- это процедура.
Так что в обероновских осях и средах такая возможность есть.
Для этого процедура должна быть экспортирована.
То есть это как так? При запуске любой процедуры тут же грузится модуль, в котором определена эта процедура (модуль должен быть скомпилирован заранее).
В Оберонах нельзя просто взять и выполнить какую-либо процедуру, не оформив для этого модуль с этой процедурой...
2. В лиспе можно запущенную уже программу инспектировать и менять ее свойства, данные, переменные, функции, структуру обьектов. Все на лету, без перезагрузки запущенной программы, без потери работающей сессии.
<...>
Есть такая возможночть в обероне?
Такая возможность в обероновских средах есть.
(Я сейчас конкретно говорю о ББ, где диалоговые средства работают на основе метаинформации.)
Это и правда очень удобно.
С некоторыми ограничениями.
Допустим, Вам понадобилось подправить какую-то процедурку. Вы её исправляете, и что дальше? Правильно, Вы компилируете модуль, в котором находится эта процедура, а затем выгружаете старую копию объектного кода этого модуля и загружаете новый объектный файл. При этом Вы должны выгрузить также и все другие модули, которые импортировали подправленный модуль, с потерей всех данных этого модуля (та самая сессия).
Jack Of Shadows же имеет в виду возможность перезагрузки отдельной процедуры без затрагивания других частей программы и без потерь данных в этом и других модулях... Так, как это есть в Лиспе, например...
№ 6078 18-12-2007 18:34 |  |
Ответ на »сообщение 6077« (AVC)
Во-первых, для согласованности следует заменить в тексте программы whetstone.c
II = 1;
на
II = 800;
Компилировалось с такими опциями:
cl /Ox -DPRINTOUT whetstone.c
Без PRINTOUT-а результат будет еще выше.
Количество LOOPS можно задавать из командной строки, напр.
whetstone.exe 1000.
9.0 это VS 2008, по сравнению с 2005 особой разницы быть не должно.
Интересно, на какой машине производилось сравнение?
___________________________
Ответ на »сообщение 6076« (QR)
___________________________
А компилятор (VS 9.0 -- это VS 2005?), опции компиляции и параметры при запуске экзешника?
Я просто хочу воспроизвести результат.
Пока что первая странность: на моей машине ББ обскакал XDS (815 MIPS против 800)...
№ 6077 18-12-2007 17:39 |  |
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|