Оберон-технология: особенности и перспективы |
Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение.
Всего в теме 6256 сообщений
Добавить свое сообщение
Отслеживать это обсуждение  Обсуждение из раздела Школа ОБЕРОНА
№ 1366 28-12-2006 03:25 |  |
Ответ на »сообщение 1361« (Jean)
___________________________
Хотите обсудить тему сложности? Давайте.
Про 30 страниц описания языка (Оберона, конечно) помолчим. А то и обсуждать будет нечего :)
Учитывая отсутствие стандартной библиотеки (которая могла бы входить в описание языка, как у всех нормальных языков) обсуждать действительно нечего.
"маленькой" табличкой и всего 25 вариантами задания атрибутов private, public и protected:
Про это я уже говорил - обучению не мешает. А выразить точнее мысль позволяет.
№ 1365 28-12-2006 03:22 |  |
Ответ на »сообщение 1353« (pepper)
___________________________
Первое что приходит в голову (при том, что ни на жабе ни на шарпе я сейчас не пишу):
- механизм исключений
- делегаты (мелочь, а приятно)
- дженерики
- элементы функционального программирования (в новом шарпе)
- перегрузка функций и операторов (шарп)
- еще я думаю можно много чего накопать по мелочам
Что ты подразумаеваешь под "усложнением языка" я не очень понял. Очень простые языки (если сравнивать с каким-нибудь C++).
ИМХО, из всего этого внимания заслуживают только дженерики (появившиеся в этих языках далеко не сразу).
Что касается механизма исключений, его можно реализовать и вне языка (за счет рантайма), пользуясь рефлексивностью Оберона, причем это более эффективное решение.
Насчет делегатов. В Обероне существуют процедурные переменные.
Что касается перегрузки операторов, вопрос в том, хорошо это или плохо.
В Oberon-X (и следовательно в Native Oberon) есть перегрузка операторов (есть также версии Оберона с поддержкой шаблонов и исключений).
По Си++ному опыту могу сказать, что это иногда приводит к труднонаходимым ошибкам.
Какие именно элементы функционального программирования в шарпе кажутся Вам жизненно важыми?
Я не сравнивал эти языки с Си++. Я сравнивал их с Обероном. :)
№ 1364 28-12-2006 03:20 |  |
Ответ на »сообщение 1359« (Илья Ермаков)
___________________________
Ответ на »сообщение 1351« (pepper)
BlackBox состоит из нескольких тысяч модулей.
Я насчитал только порядка 700 (.odc), но не важно, все равно достаточно много.
Никаких проблем не возникает. Правда, есть еще градация верхнего уровня - модули разделены по подсистемам. Первое слово в имени модуля указывает на подсистему (папку), в которой он живет. StdCmds, DevCompiler, TextViews...
Такая градация, как я понимаю, инициатива конкретно BlackBox и его компилятор как-то поддерживает это? Очень показательно. А если мне нужно более глубокое раздление на подсистемы?
№ 1363 28-12-2006 03:20 |  |
Ответ на »сообщение 1360« (pepper)
___________________________
Ответ на »сообщение 1357« (Илья Ермаков)
___________________________
Ответ на »сообщение 1331« (pepper)
___________________________
Давайте не путать. Smalltalk - интерпретируемый язык, правда, со сложным механизмом JIT-предкомпиляции, но не 100%. Java, в целом, тоже. Выполнить такие штуки на нативном компиляторе жабы было бы невозможно.
Тем хуже для компилирующей среды. Т.е., выгружать модули в джаве/C# просто не надо. Почему это рассматривается как недостаток?
Покажите мне аналог BlackBox под .NET. Я там увидел только классическую среду, работающую по принципу "пишем в Студии, компилируем, запускаем как отдельное приложение, возвращаемся в Студию, исправляем, компилируем, перезапускаем" и т.п.
Напишите на Шарпе модель составных документов BlackBox - открыли документ, для всех внедренных графических объектов подгрузились реализующие модули, динамически связались с пользовательским интерфейсом. И чтобы их можно было после этого выгрузить.
№ 1362 28-12-2006 03:17 |  |
Ответ на »сообщение 1358« (pepper)
___________________________
Если вас интересует пример массовый продукт на Обероне, то есть и такие. Например, в этом году вышла мультимедиа-энциклопедия на нашем движке, сделанном на BlackBox. Никакого дерьма вроде HTML, Java, Flash и т.п. - только интерактивные составные документы BlackBox. Поэтому работает крайне быстро.
http://djone.ru.
Java, реализованная на Обероне - вещь обыденная. OS JBed, JIT-компилятор для Borland JBuilder, написанный по заказу Borland на BlackBox, Excelsior Java ( http://excelsior-usa.com), ну и т.п.
№ 1361 28-12-2006 03:16 |  |
Хотите обсудить тему сложности? Давайте.
Про 30 страниц описания языка (Оберона, конечно) помолчим. А то и обсуждать будет нечего :)
Другой пример. Ява язык простой :) Правила доступа регулируются вот такой "маленькой" табличкой и всего 25 вариантами задания атрибутов private, public и protected:
Атрибут: private, public, protected, private protected, Нет атрибута;
1) Этот же класс: да, да, да, да, да;
2) Подкласс в этом же пакете: нет, да, да, да, да;
3) Независимый класс в этом же пакете: нет, да, да, нет, да;
4) Подкласс в другом пакете: нет, да, да, да, нет;
5) Независимый класс в другом пакете: нет, да, нет, нет, нет;
А вот решение той же проблемы в Оберонах.
Атрибут: Атрибут *, Атрибут -, Нет атрибута
1) Этот же модуль: полный доступ, полный доступ, полный доступ;
2) Другой модуль: полный доступ, только для чтения, нет доступа;
В чем будем мерять сложность?
№ 1360 28-12-2006 03:11 |  |
Ответ на »сообщение 1357« (Илья Ермаков)
___________________________
Ответ на »сообщение 1331« (pepper)
___________________________
Давайте не путать. Smalltalk - интерпретируемый язык, правда, со сложным механизмом JIT-предкомпиляции, но не 100%. Java, в целом, тоже. Выполнить такие штуки на нативном компиляторе жабы было бы невозможно.
Тем хуже для компилирующей среды. Т.е., выгружать модули в джаве/C# просто не надо. Почему это рассматривается как недостаток?
№ 1359 28-12-2006 03:09 |  |
Ответ на »сообщение 1351« (pepper)
___________________________
Ответ на »сообщение 1348« (Jean)
___________________________
Я Вам завидую. Вы пишете проекты, где может быть больше миллиарда различных модулей. Наверно, у Вас масштабные задачи.
Всего лишь несколько тысяч файлов. Пространства имен рулят.
BlackBox состоит из нескольких тысяч модулей. Никаких проблем не возникает. Правда, есть еще градация верхнего уровня - модули разделены по подсистемам. Первое слово в имени модуля указывает на подсистему (папку), в которой он живет. StdCmds, DevCompiler, TextViews...
№ 1358 28-12-2006 03:06 |  |
Ответ на »сообщение 1354« (Jean)
___________________________
>>>Всего лишь несколько тысяч файлов. Пространства
>>>имен рулят
Хотите верьте, хотите нет, но проекты на Оберонах рулят не хуже и без этой примочки.
Где они, эти проекты? На sf.net всего несколько (!) проектов (компиляторы и что-то типа test suit). Все остальное спрятано и, видимо, доступно только избранным.
№ 1357 28-12-2006 03:04 |  |
Ответ на »сообщение 1331« (pepper)
___________________________
Ответ на »сообщение 1329« (Илья Ермаков)
___________________________
Ответ на »сообщение 1325« ()
___________________________
Откомпилировали, тут же загрузили, интегрировали в среду, потестировали, выгрузили, исправили, загрузили снова.
Посмотри на IDEA (IDE для жабы такая). Я не представляю как сделать то, что она вытворяет, без той динамики, о которой ты говоришь. Как именно она это делает - никогда не копал, так как не надо было. А еще есть Smalltalk (который был до всяких оберонов), который тоже ориентирован на такой подход к разработке.
P.S. Почему то, что ты описал, невозможно без явной выгрузки модулей, я так и не понял.
Давайте не путать. Smalltalk - интерпретируемый язык, правда, со сложным механизмом JIT-предкомпиляции, но не 100%. Java, в целом, тоже. Выполнить такие штуки на нативном компиляторе жабы было бы невозможно.
Причем тут явная выгрузка - при том, что если я не могу выгрузить модуль (в компилирующей среде, подчеркну еше раз), который тестирую, то как я загружу его новую версию после исправлений и перекомпиляции? Правильный ответ - никак. Перезапустить приложение.
Добавить свое сообщение
Отслеживать это обсуждение 
Дополнительная навигация: |
|