OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 11 Декабрь, 2019 13:42

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Изменения в PureBuilder
СообщениеДобавлено: Суббота, 22 Октябрь, 2011 17:29 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
В PureBuilder изменился механизм локализации. Он стал максимально гибким.

Кроме того, появилась возможность иметь несколько открытых документов (проектов, модулей, процедур и т.д.) в соответствующих вкладках и перетаскивать эти вкладки в отдельные окна в MS Windows - такая же возможность есть в современных браузерах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Пятница, 11 Ноябрь, 2011 22:25 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Специально для циклов модифицирована скобка операторного блока (она используется вместо операторных скобок):

Вложение:
Алгоритм Эвклида в PureBuilder.png
Алгоритм Эвклида в PureBuilder.png [ 2.18 КБ | Просмотров: 8410 ]


Прежде для циклов использовалась обычная скобка операторного блока:

Вложение:
Скобка.png
Скобка.png [ 485 байт | Просмотров: 8408 ]


Новая скобка демонстрирует регулярную передачу управления заголовку цикла.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Пятница, 11 Ноябрь, 2011 22:48 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Сергей Прохоренко писал(а):
В PureBuilder изменился механизм локализации. Он стал максимально гибким.

Вот кстати, мы тоже над этим думаем. ИМХО строки не должны быть просто строками как массивы символов. Со строками обязательно должны быть связано несколько атрибутов. И один из обязательных атрибутов - кодировка.
Таким образом, строки - это ВСЕГДА отдельный библиотечный модуль среды, а не часть языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Суббота, 12 Ноябрь, 2011 10:03 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Да, тоже считаю правильным вести псевдонимику.
А что за уникальная случайная строка?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Суббота, 12 Ноябрь, 2011 12:51 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Владислав Жаринов писал(а):
...А что за уникальная случайная строка?


Например, русское написание идентификатора складскойЗапасНаНачалоНедели, английское написание идентификатора warehouseStockOnTheWeekend, а внутреннее программное представление, созданное на основе генератора случайных чисел, - jGFT5h56fldh. Пока программа разрабатывается и отлаживается, доступны все внешние представления идентификатора с указанием на язык. После окончательной компиляции в исполнимом коде остается только внутреннее программное представление jGFT5h56fldh. "Плюсов" много:
  • Совместимость с другими программными платформами
  • Низкая вероятность конфликта имен
  • При программировании и отладке нет ограничений на длину идентификаторов и на кодировку
  • Если случайно не использовался обсфуркатор, то какая-никакая защита от взлома
  • Ничьи национальные чувства не задеваются
  • Переименование идентификаторов просто реализуется

Если сгенерировалось внутреннее программное представление, которое уже имеется, то процесс повторяется. Чтобы это не происходило часто, и чтобы уменьшить вероятность конфликта имен, должны генерироваться истинно случайные (на основе измерения дрожания "мыши" или сигнального шума), а не псевдослучайные числа (вычисления по повторяющемуся алгоритму).


Последний раз редактировалось Сергей Прохоренко Воскресенье, 13 Ноябрь, 2011 09:29, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Воскресенье, 13 Ноябрь, 2011 00:14 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4358
Откуда: Россия, Орёл
Разборка вынесена из ветки. viewtopic.php?f=70&t=3670 (для сохранения материала)

Тов. Madzi предлагается переработать своё сообщение так, чтобы оно не вызывало негативной реакции. Тов. Прохоренко --- избегать в дальнейшем перехода на личности в ответ на такой же возможный переход. Сидели бы вы оба в одном помещении, никто бы не заметил. Но вот у форумов такая особенность, что слова каждый интерпретирует по своему.

Все возражения --- в ЛС, или в административную ветку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 14 Ноябрь, 2011 09:06 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Сергей Прохоренко писал(а):
Владислав Жаринов писал(а):
...А что за уникальная случайная строка?

...
После окончательной компиляции в исполнимом коде остается только внутреннее программное представление jGFT5h56fldh.
...
Ну, в общем, надо понимать так, что человекочитаемое представление, ессно, содержит только "знаковые" (в терминах создателя техноязыка) имена - т.е. на естественных языках. А это ВПП есть где? В машкоде вроде как адреса везде подставлены... а исхтекст тоже человеку читать надо...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 14 Ноябрь, 2011 17:47 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Владислав Жаринов писал(а):
Сергей Прохоренко писал(а):
Владислав Жаринов писал(а):
...А что за уникальная случайная строка?

...
После окончательной компиляции в исполнимом коде остается только внутреннее программное представление jGFT5h56fldh.
...
Ну, в общем, надо понимать так, что человекочитаемое представление, ессно, содержит только "знаковые" (в терминах создателя техноязыка) имена - т.е. на естественных языках. А это ВПП есть где? В машкоде вроде как адреса везде подставлены... а исхтекст тоже человеку читать надо...


При трансляции в байт-код остается внутреннее представление идентификаторов. Если помните, Валерий Лаптев предполагал использовать динамическую кодогенерацию в семантическом редакторе.

Кроме того, внутреннее представление нужно как ключевое поле в таблице с написаниями идентификаторов на разных языках.


Последний раз редактировалось Сергей Прохоренко Понедельник, 14 Ноябрь, 2011 18:04, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 14 Ноябрь, 2011 17:51 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9163
Откуда: Россия, Орёл
Насколько я понял Сергея Прохоренко, идея интересная - если исходник бинарен, то автоматический перевод за счёт прикладываемого словаря - интересная идея.
Я тоже думал как-то над этим. Чтобы можно было просматривать и вводить исходник в одном лексиконе, а потом другой человек мог переключать лексикон в соответствии со словарём идентификаторов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 14 Ноябрь, 2011 18:18 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Ага. Где-то так я и понимал: случайная строка есть индекс словарной статьи в БД редактора, организованной по такому типу. И если редактор "умеет" читать бинарный исходник, то может там находить случайные строки и вызывать по их значениям словарные статьи. Конечно, если значения актуальны... ;) Так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 14 Ноябрь, 2011 18:43 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Владислав Жаринов писал(а):
Ага. Где-то так я и понимал: случайная строка есть индекс словарной статьи в БД редактора, организованной по такому типу. И если редактор "умеет" читать бинарный исходник, то может там находить случайные строки и вызывать по их значениям словарные статьи. Конечно, если значения актуальны... ;) Так?


Совершенно верно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 14 Ноябрь, 2011 21:42 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Илья Ермаков писал(а):
Насколько я понял Сергея Прохоренко, идея интересная - если исходник бинарен, то автоматический перевод за счёт прикладываемого словаря - интересная идея.
Я тоже думал как-то над этим. Чтобы можно было просматривать и вводить исходник в одном лексиконе, а потом другой человек мог переключать лексикон в соответствии со словарём идентификаторов.

В нашем редакторе мы уже реализовали общую семантику для нашего языка, Додиеза и Оберона. Да еще сделали русскую-английскую лексику для всех трех языков. Студень может одной кнопкой переключиться в синтаксис Додиеза или Оберона (в рамках выделенного ядра, естественно; выделение ядра продолжается).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2011 09:02 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Ого! Вы уже идёте прямо в русле неоклассики применительно к прогязыкам... :)

Кстати, для такого использования идентификаторов, надо думать, нужен формат исходника, поддерживающий нечто вроде RTTI (т.е. записи о величинах такого вида, как обсуждалось в этом пункте)? Вы предполагаете какой-то конкретный формат?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменения в PureBuilder
СообщениеДобавлено: Понедельник, 21 Ноябрь, 2011 22:18 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Владислав Жаринов писал(а):
Ого! Вы уже идёте прямо в русле неоклассики применительно к прогязыкам... :)

Кстати, для такого использования идентификаторов, надо думать, нужен формат исходника, поддерживающий нечто вроде RTTI (т.е. записи о величинах такого вида, как обсуждалось в этом пункте)? Вы предполагаете какой-то конкретный формат?

Почти в точности!
Пока не заморачиваемся эффективностью, реализовали чистый интерпретатор.
Пацан сейчас серьезно размышляет над понятием "тип".
В процессе предыдущей реализации у него получилось, что одной кнопочкой можно переключать ся с семантики значений на семантику ссылок. Но сейчас остановились, так как любые попытки обобщения приводят к лиспу... :))
Если посмотреть чуть глубже, то - к смешанным вычислениям Ершова


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ООП
СообщениеДобавлено: Понедельник, 20 Февраль, 2012 14:58 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
В PureBuilder добавлен новый раздел "ООП"


Цитата:
ООП


Полиморфизм

В PureBuilder полиморфизм обеспечивается следующим образом. Для каждого метода в таблице методов класса программист указывает псевдоним, по которому вызывается этот метод. Разные методы разных классов, обладающие похожим действием, могут иметь общий (одинаковый) псевдоним. Метод не может быть вызван непосредственно по своему имени, а только по псевдониму. Всякий раз при использовании псевдонима будет вызываться тот из методов с общим псевдонимом, который содержится в классе объекта, к полям которого применяется псевдоним. По умолчанию псевдоним создается автоматически на основе имени метода и может быть отредактирован программистом разом во всей программе (рефакторинг).


Классы

Классы (типы объектов) в PureBuilder принадлежат тому или иному модулю. Класс изображается в виде таблицы полей, таблицы методов и таблицы родительских интерфейсов. Программист добавляет в таблицы класса поля, методы и родительские интерфейсы, принадлежащие данному модулю или другим модулям и специфицированные именем модуля. Поля и методы объявляются в модуле независимо от классов, которые могут их содержать.



Непосредственное добавление полей и псевдонимов методов

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



Копирование полей и псевдонимов методов из родительских классов

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


Никакие изменения (добавление, удаление, отключение, включение) в родительских классах (в отличие от связанных интерфейсов) не наследуются автоматически в классах-потомках.


Тем не менее, программист может явным образом передать изменения, уже произошедшие в родительских (в том числе, библиотечных) классах, в классы-потомки. Если поле или псевдоним метода в родительском классе были удалены, отключены или включены (а в дочернем классе они находятся в противоположном состоянии), то такие поля и псевдонимы методов выделяются соответствующим образом в дочернем классе без автоматического удаления, отключения или включения. Если поле или псевдоним метода были добавлены в родительский класс, то они автоматически добавляются в дочерний класс в отключенном состоянии и выделяются как добавленные, и программист может их включить. Для доступа с целью внесения изменений ко всем классам-потомкам данного класса (во всех поколениях) используется дерево зависимостей объектов программы. Классы-потомки, в которых программист может принять или отклонить унаследованные изменения, автоматически выделяются.


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



Постоянное связывание с родительскими интерфейсами (композиция или агрегирование)

Если программист добавил один или несколько классов (например, библиотечных) в таблицу родительских интерфейсов, то впоследствии программист не сможет удалять, отключать или включать унаследованные от этого интерфейса поля и псевдонимы методов. Но эти поля и псевдонимы методов могут быть удалены, отключены или включены в тех классах, куда они будут скопированы.


Для решения проблемы «хрупкости базового класса» классы, от которых образуются объекты, не могут быть добавлены в таблицу родительских интерфейсов, а от классов, добавленных в таблицу родительских интерфейсов, нельзя непосредственно создавать объекты (экземпляры классов, переменные). Исключение составляют библиотечные классы, на которые оба этих ограничения не распространяются. Интерфейсы и библиотечные классы соответствующим образом выделяются по отношению к другим классам.



Устранение дублирования полей и псевдонимов методов

Если имеются дублирующие одинаковые поля и псевдонимы методов, полученные от разных родительских классов, содержащиеся в связанных родительских интерфейсах или добавленные непосредственно (без копирования полей и псевдонимов методов какого-то класса), то они автоматически выделяются как ошибочные. Программист должен отключить или удалить дублирующие поля и псевдонимы методов.



Сравнение классов

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



Проверки целостности классов

PureBuilder осуществляет проверки во время конструирования программы или компиляции: (1) объявлены ли в новом классе все необходимые поля, обрабатываемые при вызове всех его псевдонимов методов (выдача ошибки "нет поля или лишний псевдоним метода"); (2) есть ли в новом классе поля, не обрабатываемые ни одним из его псевдонимов методов, кроме конструктора (выдача ошибки "нет псевдонима метода или лишнее поле")?



Создание объектов (экземпляров классов)

Объекты (экземпляры классов) в куче (динамической памяти) создаются с помощью оператора new, а объекты в стеке (статической памяти) создаются путем объявления в соответствующей таблице – как и переменные базовых типов.



Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

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


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

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


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

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