Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Romiras

Страницы: [1]
1
Общий раздел / Числа в Обероне
« : Ноябрь 23, 2014, 01:46:30 pm »
Смотрю в отчёт Оберона 07 ревизии 10.3.2014

integer = digit {digit} | digit {hexDigit} "H".
real = digit {digit} "." {digit} [ScaleFactor].
ScaleFactor = ("E" | “D”) ["+" | "-"] digit {digit}.
number = integer | real.
...
expression = SimpleExpression [relation SimpleExpression].
relation = "=" | "#" | "<" | "<=" | ">" | ">=" | IN | IS.
SimpleExpression = ["+" | "-"] term {AddOperator term}.
AddOperator = "+" | "-" | OR.
term = factor {MulOperator factor}.
MulOperator = "*" | "/" | DIV | MOD | "&".
factor = number | string | NIL | TRUE | FALSE |
 set | designator [ActualParameters] | "(" expression ")" | "~" factor.

Правильно ли я понимаю, что отрицательные числа в Обероне не включены в определение number?
Обратите внимание на SimpleExpression. То есть знак минус рассматривается не как часть отрицательного числа, а как математическая операция над неотрицательным числом?!

2
Общий раздел / Компилятор Coco/R онлайн
« : Ноябрь 19, 2014, 01:32:59 pm »
Намедни, в ходе экспериментов с компилятором Coco/R, подумал:
каким образом можно дать на веб-сайте возможность динамически создавать компилятор на основе грамматики ATG при помощи Coco/R и тут же экспериментировать с входными данными?

Я представляю такую цепочку действий:

  • На входе, в текстовом поле: грамматика ATG

COMPILER Spreadsheet
(* Grammar for a very simple spreadsheet *)

IGNORE CHR(9) .. CHR(13)
IGNORE CASE

COMMENTS FROM "(*" TO "*)"

CHARACTERS
  letter     = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" .
  digit      = "0123456789" .

TOKENS
  identifier = letter .
  number     = digit { digit} .

PRODUCTIONS
  Spreadsheet = { Command } "QUIT" .
  Command     = [ Expression ]
                ("UP" | "DOWN" | "LEFT" | "RIGHT" | "HOME" | "GOTO" Cell |
                "ENTER" ) .
  Expression  = [ "+" | "-" ] Term { "+" Term | "-" Term } .
  Term        = Factor { "*" Factor | "/" Factor | "%" Factor } .
  Factor      = number | Cell | "(" Expression ")" .
  Cell        = identifier number .

END Spreadsheet.
    [/li]
  • Кнопка "Создать компилятор".
    При нажатии на сервер отправляется запрос с телом грамматики. Сервер запускает Coco/R, проверяет на наличие ошибок
    и возвращает ответ:
    a) позиции ошибок для исправления, если таковые имеются
    b) созданные Scanner(.Mod) + Parser(.Mod), если ошибок нет
  • При получении результатов с сервера:

    a) Ошибки в грамматике помечаются.
    b) Компилятор собирается прямо в браузере при помощи OberonJS. Сообщение об успешности сборки и готовности к работе.
  • Следующий этап заключается в экспериментах над входом для свежего компилятора в режиме онлайн.

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

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

3
Общий раздел / А тем временем...
« : Октябрь 03, 2014, 09:31:21 am »
В соседнем форуме началось с обсуждения дополнительного модуля: Feature #9: adding module Characters , а закончилось пересмотром сообщения об языке КП.

4
Недавно в OpenNet пробегала новость, нелишним будет напомнить о ней:

Цитата: opennet.ru
Агентство по перспективным оборонным научно-исследовательским разработкам США (DARPA) анонсировало введение в строй сайта, на котором в одном месте собрана информация о созданном при участии DARPA открытом коде, а также профинансированных Министерством обороны США открытых проектах. Всего в каталоге представлено более 60 проектов, большинство из которых связаны с визуализацией и анализом данных. Код почти всех проектов размещён на GitHub под лицензиями Apache или BSD.

http://www.darpa.mil/OpenCatalog/index.html

5
Общий раздел / На тему низкого качества ПО
« : Ноябрь 15, 2013, 05:48:44 pm »
Наткнулся на любопытную статью: Качество встраиваемого ПО или погром всё-таки случился.

Цитировать
«это позорный образец проектирования и разработки ПО»

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

Цитировать
Соблюдение отраслевого стандарта кодирования (для автомобильной промышленности такой есть, даже целое семейство, совокупно называемое MISRA) характеризуется выявленным числом его нарушений – их набралось 80 тысяч (в Toyota принят свой внутренний стандарт, который заимствует из MISRA всего 11 правил, при минимально требованных во время написания кода 93-х). По ходу дела было выявлено, что в такой сложной системе полностью отсутствует учёт сбоев и ошибок.
Мне думается, это связано с тем, что над разработкой встроенного ПО работают по большей части инженеры-электронщики, у которых нет достаточной квалификации и также культуры программирования.

6
Общий раздел / Oberon V4 для Linux
« : Октябрь 03, 2013, 11:39:34 am »
Не подскажете откуда можно взять наиболее свежий дистрибутив Oberon V4 для установки в современных версиях Linux?
И нужно ли вручную устанавливать или можно запускать прямо из папки пользователя (по аналогии "portable"-программ для Windows)?

7
Натолкнулся сегодня в интернете очередной раз на упоминание о LLVM и стал ходить вглубь по разным ссылкам. Решил не продолжать тему Oberon07 LLVM frontend, а создать новую.

В связи с тем, что в последнее время появился интерес к использованию различных платформ, отличных от x86, при том, что имеющиеся реализации Оберона в основном для x86, то стоит попробовать кодогенерацию LLVM как путь к новым платформам.

У сородича Оберона - Объектного Паскаля - имеются проекты по кодогенерации для LLVM.

Один из них - Object Pascal compiler for LLVM от бразильского ВУЗа IESB

Среди кода я обнаружил и довольно любопытные PDF документы, хотя и на португальском:
http://llvm-pascal.googlecode.com/svn/trunk/Doc/PPT%20LLVM-Pascal.pdf
http://llvm-pascal.googlecode.com/svn/trunk/Doc/TCC%20LLVM-Pascal.pdf

Наиболее вероятные варианты для реализации кодогенерации LLVM в порядке убывания: Oberon-07, Oberon-2, Component Pascal.

8
Общий раздел / Шифрование с открытым ключом
« : Декабрь 26, 2012, 03:31:30 pm »
Привет,
мне нужна ваша помощь в основах шифрования, поскольку для меня это несколько новая тема. Знаю, что надо читать статьи, но время поджимает.

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

Для этого, как я понимаю, нужно применять технологию шифрования с открытым ключом.
Итак, мой сервер должен зашифровать сообщение и поставить подпись. Имеется открытый ключ сервера второй стороны и известно, что сообщение должно шифроваться с помощью RSA-SHA1.

Поясните какими ключами (открытым, закрытым) и на каком этапе как шифруется и как проверяется подпись.

9
Общий раздел / Wayland - младший брат X11
« : Июнь 27, 2012, 09:31:06 am »
Готовится к выпуску 1-я версия Wayland - легковесного варианта для замены X Window System. Минималистично, что весьма в стиле Вирта.
Цитата: Кристиан Хогсберг
Wayland — новый сервер дисплея, который выполняет только крошечную часть тех функций Х, которые мы фактически используем, когда запускаем композитный рабочий стол. Wayland — это, по сути, буферный менеджер (подобно тому, чем DRI2 является для X.org), обработчик входных данных. Весь рендеринг выполняется на клиентской стороне — так, как сегодня работает OpenGL, а задание режимов и другие аппаратные установки выполняются в ядре. Такой подход позволяет значительно упростить организацию сервера
Марк Шаттлворт обещает перевести Unity на Wayland. С интересом наблюдаю за развитием событий.

10
Ввиду официального ответа по поводу дальнейшего развития BlackBox:
Цитировать
Dear Doug,
 
we hope that BlackBox will run fine on Windows 8 as a "classic" 32-bit application in desktop mode on x86-compatible systems.
 
Besides this we have no plans to provide BlackBox as a Metro-style application or to support ARM-based systems (nor do we have plans to develop a 64-bit version of BlackBox). All of these projects would be very interesting but also very challenging and unfortunately we do not see enough commercial interest in them.
 
Kind regards,
Marc
 


        From: BlackBox [mailto:BLACKBOX@LISTS.OBERON.CH] On Behalf Of Douglas G. Danforth
        Sent: Mittwoch, 21. März 2012 08:27
        To: BLACKBOX@LISTS.OBERON.CH
        Subject: [BLACKBOX] Plans for Windows 8?
       
       
       
        Is Oberon Microsystems  working with Window 8?
        What are the plans for that OS release?
       
        -Doug Danforth
Что вы думаете на этот счёт?
Каковы возможные варианты развития фреймворка BBCB?

Просьба высказываться по существу.

11
В связи с тем, что часто приходится иметь дело с бизнес-логикой, хочу поинтересоваться тем как вы строите  архитектуру программы для того, чтобы было просто приспосабливать программу под частоизменяющиеся требования бизнеса.

В проектах работаю с парадигмой MVC. Проблема состоит в том, что, к сожалению, бизнес-логика размазана по всем трём узлам: она присутствует как в моделях и контроллерах, так и в конечном отображении.
Малейшие изменения в определении бизнес-сущности влекут за собой изменения в трёх узлах:
  • в моделях - логика запросов к БД (есть небольшая абстрактная прослойка над SQL) с зависимостями между моделями
  • в контроллерах - логика обработки входных параметров, подготовка требуемого формата данных и формирование данных
  • в отображении - логика отображения объектов

Что нужно сделать, чтобы сократить количество изменений и свести их к минимуму?

12
Имеется шаблон визитки в виде отдельного файла SVG.
Формат SVG выбран потому, что работа фактически дизайнеро-типографическая. А PDF - потому что созданный документ автоматически скачивается по FTP программой с удалённого компа и там посылается на печать. Но это не суть.

В шаблоне текстовые метки типа "[TEXT]" будут заменены на соответствующие значения из базы данных.

Макет кода генерации наподобие такого:
cards.each do |card|
  svg = replace_tags_in_svg(svg_template, card.tags)
  pdf.generate_page(svg)
  pdf.new_page
end
Какими библиотечными средствами посоветуете создавать визитки в конечном формате PDF?
Сам проект написан на Руби. Я пробовал создавать средствами Prawn::Svg, но эта библиотека выдаёт искривлённый вывод даже на простой вёрстке. Предпочтительно создание единого PDF для всех визиток.

Предложения по использованию других средств также принимаются.

Тема продублирована на ОберонКоре: http://forum.oberoncore.ru/viewtopic.php?f=5&t=3653

13
На мой взгляд, пора разделить форум на разные категории. А то так "философским" и останется.

Я могу выделить примерно следующие категории (требует уточнения):
  • Языки программирования
  • Программная инженерия
  • Программные инструменты
  • Системы и технологии
  • Общий раздел

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

Привожу цитату:
Цитата: Роман М.
Написал прототип компонента для вызова процедур посредством динамической загрузки модулей - в некотором роде аналог привычных многим исполняемых файлов C/C++, у которых есть процедура main с параметрами командной строки argc, argv.

Это своего рода аналог майкрософтовского RunDll32, который умеет вызывать процедуры из библиотек. Для вызова процедур не требуется наличие BlackBox, нужен лишь загрузчик этих модулей. А далее за работу отвечает загруженный компонент, как типичная исполняемая программа.

В исполняемом модуле (например, TestExeModule) мы объявляем для экспорта процедуру main, в которую извне будут передаваться аргументы для программы.

В состав загрузчика входит компонент, скомпонованный в библиотеку bbldr[.dll/.so]. Для его работы необходима подсистема System (подсистема Host уже скомпонована внутри библиотеки) и подсистемы для вызова исполняемого модуля (допустим, TestExeModule), то есть файлы .ocf и .osf.

DEFINITION LibsModLoader ["bbldr"];

   IMPORT Dynamics;

    TYPE
      TLoaderError = POINTER TO RECORD
         n-: INTEGER;
          msg-, par0-, par1-: Dynamics.String
       END;

    PROCEDURE GetLoaderError (OUT e: TLoaderError);
   PROCEDURE InitLoaderError (p: TLoaderError);
  PROCEDURE Run (_module, _proc: Dynamics.String; argc: INTEGER; argv: Dynamics.ArgList);

END LibsModLoader.

Эту библиотеку подгружает вспомогательная программа, которая принимает параметры командной строки и передаёт их исполняемому модулю.

В командной строке запуск производится командой:
    loader_program <Module_Name> <Procedure_Name> [arguments]На данный момент вспомогательная программа написана на Free Pascal (FPC). Планирую написать её на Обероне-2 посредством какого-нибудь из межплатформных компиляторов.
Здесь нужны ваши советы насчёт выбора. Требование: создание исполняемых файлов для платформы x86, OS Windows, Linux. Взять ли XDS или есть варианты лучше?
Текущим ограничением в запуске модулей является поддержка одной платформы x86, ОС Windows (NT/2000/XP) с форматами EXE/DLL и Linux с форматом библиотеки so (открытой поддержки исполняемых ELF пока нет). Считаю, что интеграция КП-модулей в родные ОС важна. Иначе общего признания не добиться.

Я вижу данный инстумент как частичную замену среды BlackBox для динамического запуска модулей.
В итоге хотелось бы иметь компактный и расширяемый framework, подобный .NET, на основе Компонентного Паскаля с набором подсистем универсального назначения, включая работу с БД, сетью и пользовательским интерфейсом (GUI/TUI). Также хотелось бы добиться распространения на разных аппаратных платформах, и, возможно, с упором на встраиваемые системы...

Каковы, на ваш взгляд, перспективы такого средства в Linux? В Windows? Вообще?

Таким образом, одинажды установив её в ОС, получим базовую платформу для запуска программ (как сейчас это делает графическая среда BlackBox Component Builder). Разница в том, что эта платформа может использоваться не только в системах с пользовательским интерфейсом, но и без него. Сказанное насчёт встраиваемых систем - пока сугубо теоретически.

Интересует ваше мнение.

Страницы: [1]