OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 17 Ноябрь, 2019 14:03

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Понедельник, 19 Октябрь, 2009 23:54 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Первое, чего читаешь про новый язык - синтаксис.
Прекрасно, почитал "Сообщение о языке...". Увидел определения нетерминалов - совсем хорошо (хотя придраться можно) :wink:
Смотрю примеры, типа таких:
Код:
TYPE
   Model = POINTER TO ABSTRACT RECORD (Containers.Model)
      (m: Model) NewWriter (old: TextModels.Writer): TextModels.Writer, NEW, ABSTRACT;
      ..........
   END;

НЕ СТЫКУЕТСЯ с приведенными синтаксическми диаграммами
Вопрос: чего я не прочитал еще :?:

P.S. Вот еще... Про "почти прямое" отражение синтаксических конструкций в код - слышал (в смысле, читал) неоднократно.
Я тоже хочу знать это отражение. Где прочитать :?:
Или хотя бы, как дизасм-то делать :?:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 06:02 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2932
Откуда: г. Ярославль
Galkov писал(а):
НЕ СТЫКУЕТСЯ с приведенными синтаксическми диаграммами
Это описание интерфейса модуля; в приложении D есть оговорка, что интерфейс не определяется языком.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 20:08 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4525
Откуда: Россия, Орёл
И строится текст интерфейса автоматически.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 22:04 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Чего-то я не пойму, о чем Вы говорите.
На "первом" этапе мне пофиг, кто там чего формирует, в каком формате, и с какой степенью автоматизации.

Я просто читаю раздел <Синтаксис>, и начинаю принимать (в уме) текстовый входной поток как Автомат, в соответствии с прочитаными формальными правилами.
Так вот, мой внутренний "автомат" выдает Syntax error

Прошу прощения, но причем здесь тогда за рыбу деньги :shock:
Тут: либо я совсем тупой (против чего буду категорически возражать), либо не там прочитал синтаксис, либо там не все написано.
Либо я еще каким-ни-то макаром ошибаюсь. Но по любому, "syntax error" - полностью отключает понимание происходящего
Тут хорошо бы просто пальцем взять, и указать бы на ошибку...

А вот уже потом (после исправления "синтаксического анализатора") возникнет вопрос - что сия запись означает.
Опять же, прошу прощения, но слово "интерфейс" - есть слабое утешение. Меня интересует бинарное представление того, что получится после алокации памяти под наследника записи, в которой содержатся, пока совершенно непонятные, иероглифы: (X:TypeName)MethodName(ArgList):ResultType - в качестве поля этой записи.
Просто "интерфейс" - расплывчатое понятие в бинарном представлении, по разному его строить можно... Какие-то способы мне даже и известны
А вот после прочтения документации на ББ, у меня пока только какие-то догадки, не более.
Типа как изучение иностранного методом "погружения": никто тебе ничего не переводит, сам догадываешься по смыслу...
Неправильно это.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Октябрь, 2009 22:56 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2932
Откуда: г. Ярославль
Вы привели в качестве примера часть интерфейса модуля TextModels. Этот интерфейс создаётся автоматически и является элементом документирования модуля. Соглашения по документированию описаны в разделе "Документирование".

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2009 00:14 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Иван Кузьмицкий писал(а):
Вы привели в качестве примера часть интерфейса модуля TextModels. Этот интерфейс создаётся автоматически и является элементом документирования модуля. Соглашения по документированию описаны в разделе "Документирование".

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2009 09:06 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2932
Откуда: г. Ярославль
Info21 писал(а):
Только надо явно сказать, что сгенерированный интерфейс не является текстом на языке Компонентный Паскаль, хотя и похож.


Вот цитата с первой же страницы документа "Соглашения по документированию", всё явно указано:

Цитата:
Каждое описание модуля начинается с объявления модуля. Нотация Component Pascal для описания модулей используется для показа всех экспортируемых элементов модуля, и только для этого. Модуль начинается с ключевого слова DEFINITION вместо MODULE, метки экспорта опускаются (за исключением метки "только для чтения"), так же как и убираются тела процедур и тело модуля. Методы переносятся в соответствующие объявления записей без ключевого слова PROCEDURE.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2009 09:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Иван Кузьмицкий писал(а):
Вот цитата с первой же страницы документа "Соглашения по документированию", всё явно указано:
Я имел в виду упомянуть тут, на форуме.

Но цитата еще лучше, конечно.
Надёжней всегда цитата :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2009 10:13 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Вообще всё не правильно. Я имею в виду ответы. О чём спрашивали-то?
Galkov писал(а):
НЕ СТЫКУЕТСЯ с приведенными синтаксическми диаграммами
Вопрос: чего я не прочитал еще :?:
Что конкретно не стыкуется с какими конкретно диаграммами? А то с таким же успехом можно было дать ссылку на документацию и сказать, что там что-то "не стыкуется" : ).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2009 10:46 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Хм... Понял так, что ключевым словом здесь является "...не является текстом на языке Компонентный Паскаль, хотя и похож"

Это трудно понять, читая нечто. Ну, скажем, в DesignIdeas.pdf вижу такое:
Цитата:
Пример 4. Абстрактный разъем между ядром и загрузчиком модулей в BlackBox
Код:
MODULE Kernel;
  ...
  TYPE
    LoaderHook = POINTER TO ABSTRACT RECORD (Kernel.Hook)
      res: INTEGER;
      importing, imported, object: ARRAY 256 OF CHAR;
      (h: LoaderHook) ThisMod (IN name: ARRAY OF SHORTCHAR):Kernel.Module, NEW, ABSTRACT
    END;
  PROCEDURE SetLoaderHook (h: LoaderHook);
  ...
END Kernel;
Модуль StdLoader инкапсулирует конкретную реализацию загрузчика и инсталлирует ее в ядро через разъем с интерфейсом LoaderHook. Ядро ничего не знает о конкретной реализации загрузчика
Ну спрашивается, каким таким третьим глазом я должен понять, что это НЕ КОМПОНЕНТНЫЙ ПАСКАЛЬ, хотя и очень похож :shock:


Valery Solovey писал(а):
Что конкретно не стыкуется с какими конкретно диаграммами?
Абсолютно конкретно, смотрю в среде BlackBox "Приложение B: Синтаксис Компонентного Паскаля" документа "Сообщение о языке Компонентный Паскаль"
И вижу, что res: INTEGER; - является нетерминалом FieldList, importing, imported, object: ARRAY 256 OF CHAR; - тоже таковым является.
А следующее (h: LoaderHook) ThisMod(и т.д.) - я и назвал словом НЕ СТЫКУЕТСЯ. Нет, блин, такой буквы в этом слове
А у Вас, стыкуется :?:


Последний раз редактировалось Galkov Воскресенье, 01 Ноябрь, 2009 19:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 21 Октябрь, 2009 10:54 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2932
Откуда: г. Ярославль
Видимо, как говорится, "вкралась досадная опечатка" :) Вместо "MODULE Kernel" должно быть "DEFINITION Kernel".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Октябрь, 2009 06:58 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 530
Откуда: Москва
Ни в одном описании не нашел рекомендаций по использованию атрибута LIMITED у записей. Что он означает – понятно. Но может ли кто-нибудь четко сформулировать, в каких случаях разработчик модуля должен использовать этот атрибут?

В процессе поиска еще раз прошелся по ссылкам на сайты с Обероном. Ужас. Почти все мертвое. Все бурные обсуждения в прошлом. Разгром полный, прямо Сталинград какой-то. То, что еще живо, покрывается паутиной от старости.
Печально все это.
На сайте разработчиков BlackBox http://www.oberon.ch основной тезис:
Microsoft .NET ist die Basis


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Октябрь, 2009 10:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Peter Almazov писал(а):
Ни в одном описании не нашел рекомендаций по использованию атрибута LIMITED у записей. Что он означает – понятно. Но может ли кто-нибудь четко сформулировать, в каких случаях разработчик модуля должен использовать этот атрибут?
Использовать атрибут LIMITED рекомендуется во всех случаях когда при создании объектов этого типа необходима специальная инициализация его полей. Специальная инициализация полей осуществляется специальной процедурой-конструктором которая экспортируется или не экспортируется (в зависимости от преследуемой цели) экспортирующим этот тип модулем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Октябрь, 2009 16:05 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Peter Almazov писал(а):
прошелся по ссылкам на сайты с Обероном.
А че тут обсуждать.
Обсуждать нужно решения. Типо школьное обучение и т.п.
Блэкбокс на линуксе.
Так и обсуждаем, очень даже активно :)

Альтернативные Обероны действительно теряют нишу -- так что ж тут удивительного. Нормальная консолидация с конкуренцией.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Октябрь, 2009 16:36 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Peter Almazov писал(а):
в каких случаях разработчик модуля должен использовать этот атрибут?
Как сказал Сергей Губанов, использование атрибута носит рекомендательный характер. Необходимость использования задаётся семантикой, которую разработчики языка - понятное дело - не знают.

У записи могут быть поля, которые недоступны извне модуля, но сам тип при этом экспортируется. Классический Оберон позволяет в данной точке программы объявлять переменные любого типа, который здесь доступен. А также, в классическом Обероне, если тип данных предполагает размещение переменной в куче, и доступен в данной точке программы, то имеется возможность воспользоваться оператором NEW(). При этом, если тип был экспортирован из другого модуля, возникает проблема с недоступными полями записи: с одной стороны, для правильного использования объекта необходимы правильные значения скрытых переменных, с другой - в силу следствия модульности задать их не получится, и рано или поздно произойдёт ошибка времени выполнения. Чтобы ошибка не происходила, необходимо переменную указанного типа размещать не самому, а пользоваться для этого процедурами модуля, откуда экспортируется тип. Поскольку процедура и тип находятся в одном модуле, то все поля записи открыты для чтения и записи и проблема не возникает.

В большинстве случаев дисциплинированный программист обошёлся бы и без LIMITED, но последний избавляет от редких ошибок и не даёт ошибиться новичкам.

Примерно то же самое сказал и Сергей Губанов, но я посчитал, что стоит развить идею и не дать понять неправильно : ).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Октябрь, 2009 19:30 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9155
Откуда: Россия, Орёл
В силу того, что чаще всего идёт экспорт ABSTRACT-типа с сокрытием конкретной реализации, LIMITED используется нечасто. Но используется... Иногда как раз в тех случаях, когда на ABSTRACT и реализацию рубить смысла нет (внутренний какой-то модуль; реализация гарантированно одна, и т.п.)
Кроме того, можно тип сообщений объявить как LIMITED - и тем самым гарантировать, что его в системе рассылает только один модуль.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 30 Октябрь, 2009 20:29 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Valery Solovey писал(а):
Примерно то же самое сказал и Сергей Губанов, но я посчитал, что стоит развить идею и не дать понять неправильно : ).
И правильно. Вопрос важный, а дважды по-разному понятней.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 31 Октябрь, 2009 00:09 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Ну с понятностью, тут точно - проблемы будут :wink:
Вот читаю в соседнем топике про "курс программирования для старшеклассников на основе Блэкбокса"
Мне кажется, что если школьник прочитает "Учебник по BlackBox" (Tut-Tot.odc), то ему не только ББ, а и вообще программирование противно будет.

Так, на вскидку:
Цитата:
Для моделирования разделения между пространствами устройства отображения и документа, где пространство документа сформировано перманентными отображениями, нам нужна абстракция устройства отображения

И все в таком стиле... Не считая несогласлованности падежей и склонений
Конечно же, школьник каждый день использует терминологию абстракция/перманентный/персистентный и т.п..
Это просто его любимые слова, наверное.
Простые вещи говорятся вроде, но даже просто прочтение - требует некого напряжения.

Нельзя же так.
Если конечно иметь в виду общеупотребимость хоть в каком-то смысле.
Простые вещи должны и объясняться просто, а не "экспорт ABSTRACT-типа с сокрытием конкретной реализации"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 31 Октябрь, 2009 00:20 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9155
Откуда: Россия, Орёл
Тут проблема в том, что вакуум сейчас в плане нормального курса ООП. На базе КП.

По поводу алгоритмов и структур данных есть куда людей отправить (особенно когда сейчас книжки выйдут).

Не к чему отправить человека, незнакомого с ООП, или знакомого с ним через... (как в школе в учебниках - "как круты объекты, а ещё есть классы, кликните мышкой по кнопке и пишите обработчик..."); или знакомого чисто в стиле Буча (ООП С++-ового типа, не-компонентное, с упором на наследование вместо композиции).

Впрочем, тех из последней категории, у кого с английским проблем нет, можно теперь отправлять вот сюда, к дисеру Шиперского:
viewtopic.php?f=60&t=1966


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 31 Октябрь, 2009 00:50 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Илья, не о том говорите.
Посылать можно, и подозревать в неправильном предварительном обучение, тоже - можно.
Зависит от цели.
Если эта цель - непрерывно гордиться принадлежностью к некому сокровенному знанию, тогда - без проблем
А если это некая миссионерская цель, так тогда и вас тоже пошлют неведающие. И останутся неведающими.

Да, писать просто - это ТРУДНО. Особенно, для людей на самом деле постоянно использующих профессиональный слэнг.
Но, НАДО (с поправкой на конечную цель). А в этом плане, еще и конь не валялся, как мне кажется

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 32 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB