OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 18 Июль, 2019 08:34

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




Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 19, 20, 21, 22, 23, 24, 25 ... 34  След.
Автор Сообщение
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Пятница, 01 Июнь, 2012 23:40 
Аватара пользователя

Зарегистрирован: Воскресенье, 08 Июль, 2007 00:38
Сообщения: 778
Откуда: Москва
Я нашел древний (1994) образец скобки операторного блока в диссертации Jeffrey Nickerson, озаглавленной "Visual Programming". Первоисточник картинки - книга Shooman, Martin, (1983), Software Engineering, New York: McGraw-Hill. Я начал использовать скобку операторного блока на распечатках программ тоже примерно в 1983 году (с закруглениями вместо стрелочек). Интересно, как одна и та же идея независимо приходит в голову разным людям.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Суббота, 02 Июнь, 2012 17:11 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Да, бывает... мне идея ФМ-схем пришла незадолго до того, как познакомился со стандартом IDEF0 (от исключения времени из ВД с дугами передачи и разметкой сигналов). :)
Валерий Лаптев в viewtopic.php?p=72922#p72922 писал(а):
Посмотрел.
Спасибо! Очень интересно!
Особенно статья Скотта Мейерса и Рейса о семантическом графе программы... :)
1989-го года ведь... :) Меня тоже в первую очередь заинтересовала (наряду с "Репрезентацией программ..."). Т.к. всё более правильным кажется схематическое представление на базе схем типов. А схемы потоков управления - только если предполагается делать процедуры крупными... В общем, примерно как Вы предполагаете...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Июнь, 2012 11:42 

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

1. Подтверждается, что человекочитаемые формальные описания д.б. иерархичными. Иначе говоря, сказанное А. Донским здесь: viewtopic.php?p=72552#p72552 следует относить не только ко внутренней структуре программно-строгого описания, но и ко всей формализации. О чём, в сущности, и была вся эта страница... :)
Возможный состав уровней иерархии м.б. найден из определения процесса моделирования/формализации (или его свёртки). Принимая определение на основе Леонтьева-Грековой-Фридланда, как раз имеем необходимость свёртки. Она довольно очевидна из той же Грековой, Акимова, а также из принципов инженерного программирования, и даёт три уровня: качественный ("предметный"), [логико-]математический, информатический.

2. Описания одного уровня также м.б. иерархичными, но уже "блочно" - относясь к различным областям связанных описаний других уровней (обычно соседних). Это хорошо видно на комментированных исхтекстах книги - напр., процедуры Edit на с. 125-127.

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

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

Примерно так. Интересны будут другие мнения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 11 Июнь, 2012 08:39 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Вот взглянул на очередные "СТА"... и такая статья: http://issuu.com/cta-mag/docs/20114054? ... =%23222222.
Что-то похожее по возможностям на ГРАФКОНТ, а по идее отдельных решений -на ГРАФИТ-ФЛОКС (наличие базы сущностей, отдельное схемное представление алгоритмов). Но т.к. полноконтурные АСУ "человек-информашина-среда" в Орион-среде разрабатываются - то также конструируется интерфейс оператора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 11 Июнь, 2012 09:29 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9127
Откуда: Россия, Орёл
Процитирую:

Цитата:
Программное обеспечение (ПО) АСУ ТО проектируется и реализуется на разработанном в ЗАО «СКБ Орион» инструментальном комплексе, позволяющем создавать ПО для систем высокой надёжности. Инструментальные средства включают в себя редактор мнемосхем, редактор алгоритмов, имитационное ПО для отладки, генератор исполняемого кода, систему контроля версий и ряд других компонентов.

Программист-технолог (для него не обязательно знание языков программирования, важно лишь понимание технологических процессов и основ алгоритмизации) средствами специальных редакторов создаёт базу сигналов (составляющая базы данных, содержащая описания сигналов системы, их характеристики, для аналоговых сигналов – ещё и интерпретационные законы; может использоваться отдельно от технологической базы данных на этапе калибровки системы и отвечает за её метрологическое обеспечение), интерфейс оператора и алгоритм управления. В базу данных программист-технолог включает всю совокупность устройств объекта управления, датчиков, сигналов
управления, служебных сигналов, с которыми имеет дело алгоритм работы системы. С помощью редактора алгоритмов задаются в графической форме алгоритмы работы системы управления. В редакторе интерфейса программист задает всё, что касается диалога «человек – машина»: вид мнемосхем, активные области, органы управления, вид отображаемой информации, графики, протоколы, диалоги и пр. Генератор осуществляет трансляцию созданных знаний в машинный код, который сохраняется в виде версии ПО и передаётся исполняющим устройствам: устройствам управления, УСО, автоматизированным рабочим местам операторов. Программирование и корректировка ПО системы управления в процессе наладки не требуют навыков профессиональных программистов и использования языков программирования низкого уровня. Всю работу по переводу знаний о поведении объекта в машинный код проводит инструментальное ПО, специально разработанное для этой задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 11 Июнь, 2012 09:37 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Это да... приблизительно к этому, видимо, следует стремиться...
К сожалению, качество иллюстраций неважное - поэтому о точном формализме, принятом для схем алгоритмов, нужно догадываться... :) Похоже на сети Петри для систем алгопроцессов (с явными расщеплениями и слияниями "рабочих точек").


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 12 Июнь, 2012 07:29 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Кстати, схемы в операторском интерфейсе (не только в этой среде) суть частные актив-схемы (только для объекта управления). А такие системы, как ПЕКАН, просто расширяют представление актив-компоненты и на сам управитель...

Да, к сказанному в этом посте нужно добавить наличие уровней детализации всего описания. Как результат примерно такого хода формализации:
Илья Ермаков в viewtopic.php?p=35029#p35029 писал(а):
...
"Разделяй и властвуй". И стройте сверху вниз, используя имена ещё неописанных процедур, а потом их определяя.
Ну, дело-то известное - пошаговая детализация - просто упустил из виду...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Среда, 13 Июнь, 2012 13:43 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3059
Откуда: Астрахань
Обнаружился неожиданный бонус от внедрения среды в обучение.
:)
Как-то ранее не приходило в голову, что студенты-халявщики при изучении языков программирования частенько прибегают к помощи "старших" товарищей. К самой разнообразной: от простого репетиторства до оплаты за изготовление лабов.
С нашей новой средой подобного быть в принципе не может... :)
Ибо по-легкому срубить денежку у изготовляющего не получится - надо среду освоить сначала.
А она пока без документации... :) И язык незнакомый... :)
По собственному опыту знаю, что ради малого заработка за такую работу никто не возьмется (в отличие от лабов на С++/С# - все программеры их знают :) ).
Придется халявщикам делать все самим - или вылетать... :mrgreen: :mrgreen: :mrgreen:

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Среда, 13 Июнь, 2012 21:46 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 572
Откуда: Россия, Санкт-Петербург
Главное чтобы потом не обнаружилось неудобство :)

Когда я требовал от студентов курсовых на обероне, старшие товарищи тоже мало кому помогали. Но всегда есть пара студентов, которым нужно позарез сделать курсовую, потому что у них "крыша" в вузе. Так вот, как я в последствии узнал, оберон пришлось осваивать одному профессору с соседней кафедры, так как родители попросили "помочь", а отказать им он не мог.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Четверг, 14 Июнь, 2012 08:19 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3059
Откуда: Астрахань
Madzi писал(а):
Главное чтобы потом не обнаружилось неудобство :)

Когда я требовал от студентов курсовых на обероне, старшие товарищи тоже мало кому помогали. Но всегда есть пара студентов, которым нужно позарез сделать курсовую, потому что у них "крыша" в вузе. Так вот, как я в последствии узнал, оберон пришлось осваивать одному профессору с соседней кафедры, так как родители попросили "помочь", а отказать им он не мог.

Я подобных случаев у нас не знаю. И уверен, что в подобном случае тем самым профессором окажусь именно я... :) То есть обратятся ко мне :). А я этого делать не буду. Учитывая, что я практически пенсионер - пошлю далеко и надолго... :) Только ректора не пошлю - он много мне хорошего сделал :) Но все равно откажусь...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Четверг, 14 Июнь, 2012 12:46 

Зарегистрирован: Суббота, 17 Сентябрь, 2011 16:39
Сообщения: 72
Валерий Лаптев писал(а):
Madzi писал(а):
Главное чтобы потом не обнаружилось неудобство :)

Когда я требовал от студентов курсовых на обероне, старшие товарищи тоже мало кому помогали. Но всегда есть пара студентов, которым нужно позарез сделать курсовую, потому что у них "крыша" в вузе. Так вот, как я в последствии узнал, оберон пришлось осваивать одному профессору с соседней кафедры, так как родители попросили "помочь", а отказать им он не мог.

Я подобных случаев у нас не знаю. И уверен, что в подобном случае тем самым профессором окажусь именно я... :) То есть обратятся ко мне :). А я этого делать не буду. Учитывая, что я практически пенсионер - пошлю далеко и надолго... :) Только ректора не пошлю - он много мне хорошего сделал :) Но все равно откажусь...


Тогда меня заставят :evil:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Четверг, 14 Июнь, 2012 16:39 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 572
Откуда: Россия, Санкт-Петербург
Валерий Лаптев писал(а):
Учитывая, что я практически пенсионер - пошлю далеко и надолго... :)

Тот профессор был уже запенсионного возраста. Поэтому и неудобно было, когда выяснилось...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Суббота, 23 Июнь, 2012 10:44 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
На РСДН обсуждают синтаксисы и в связи с этим - умотипы: http://www.rsdn.ru/forum/NewMsg.aspx?mid=4778476 :) . А также структурное редактирование непрограммно строгого текста: http://www.rsdn.ru/forum/tools/4781129.flat.aspx. Однако и лексика там местами... :wink: :|


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 25 Июль, 2012 08:58 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Ну что ж, в силу единства пространства общения Оберонкоре и на РСДН начатое обсуждение техноязыка перешло на Оберон-технологии... :wink: Теперь ветки разделили, и наряду с эмоциями можно даже найти ке-что конкретное: http://www.rsdn.ru/forum/philosophy/480 ... at.20.aspx.

Как раз в связи с предполагаемой статьёй в РСДН о топике ветки есть кое-какие мысли, уточняющие сказанное ранее. Один из повторяющихся мотивов дискуссии - так чем же и почему различаются между собой Обероны (как языки в базовом определении, так и подходы к их расширяемости)? И вот в статье бы для начала проанализироовать это - на основе чего дать обоснование, почему язык структурного редактора тоже от них отличается... и библиотечность (фреймворк), видимо, тоже... :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 25 Июль, 2012 12:00 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Среда, 25 Июль, 2012 12:44 

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

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

Кстати, очень верное один там сделал замечание по поводу встроенки и Оберона...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Четверг, 26 Июль, 2012 01:08 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8169
Откуда: Троицк, Москва
Владислав Жаринов писал(а):
дискуссия, в общем-то, ходит вокруг одних и тех же вещей
уже со счёту сбился сколько лет.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 28 Август, 2012 09:40 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3059
Откуда: Астрахань
"Кстати, о музыке..."(с)
Мы с 1 сентября начинаем обучать основам алгоритмизации на нашей среде.
Конечно, не все еще доделано, но среда дышит и перве лабы я на ней написал.
Кроме того, посмотрите, как реализована библиотека... :)
Код:
модуль Система
    подключить СистемаБаза;
    подключить Строки;
   
    #Останавливает поток выполнения на указанное число миллисекунд#
    откр процедура(входной целое миллисекунды) Заснуть
        вызвать СистемаБаза.Проверить(миллисекунды > 0, Строки.Инициализировать("Параметр 'миллисекунды' не может быть отрицательным"));
        вызвать СистемаБаза.Заснуть(миллисекунды);
    конец Заснуть;
   
    #Возвращает вещественное число из строки#
    откр функция(выходной Строки.Строка х):вещ СтрокаВВещ
        вернуть СистемаБаза.СтрокуВВещ(х);
    конец СтрокаВВещ;
   
    #Превращает целое число в строку#
    откр функция(входной целое х):Строки.Строка ЦелоеВСтроку
        вернуть СистемаБаза.ЦелоеВСтроку(х);
    конец ЦелоеВСтроку;
   
    #Превращает вещественное число в строку#
    откр функция(входной вещ х):Строки.Строка ВещВСтроку
        вернуть СистемаБаза.ВещВСтроку(х);
    конец ВещВСтроку;
   
    #Возвращает системное время в миллисекундах#
    откр функция():целое Миллисекунды
        вернуть СистемаБаза.Миллисекунды();
    конец Миллисекунды;
   
    #Проверяет истинность утверждения
Если утверждение неверно, то прерывает выполнение с ошибкой "сообщение"#
    откр процедура(входной булев утверждение, выходной Строки.Строка сообщение) Проверить
        вызвать СистемаБаза.Проверить(утверждение, сообщение);
    конец Проверить;
начало
   
конец Система.

модуль Строки
    откр тип Строка
        закр поле-массив[256] символ массивСимволов;
        закр поле-целое размер;
       
        откр метод(Строка этот)():целое Длина
            вернуть этот.размер;
        конец Длина;
       
        откр метод(Строка этот)(входной целое номер):символ ВзятьСимвол
            вернуть этот.массивСимволов[номер];
        конец ВзятьСимвол;
       
        откр метод(Строка этот)(входной целое номер, входной символ симв) УстановитьСимвол
            присвоить этот.массивСимволов[номер] := симв;
        конец УстановитьСимвол;
       
        откр метод(Строка этот)(выходной Строка строка) Склеить
            переменная-целое новыйРазмер := этот.размер + строка.Длина();
            если новыйРазмер > этот.массивСимволов.размер() то
                переменная-массив[новыйРазмер] символ новыйМассив;
                переменная-целое и := 0;
               
                пока и < новыйРазмер повторять
                    если и < этот.размер то
                        присвоить новыйМассив[и] := этот.ВзятьСимвол(и);
                    иначе
                        присвоить новыйМассив[и] := строка.ВзятьСимвол(и - этот.размер);
                       
                    конец ветвления;
                    присвоить и := и + 1;
                конец цикла;
                присвоить этот.массивСимволов := новыйМассив;
            иначе
                переменная-целое и := этот.размер;
                пока и < новыйРазмер повторять
                    присвоить этот.массивСимволов[и] := строка.ВзятьСимвол(и - этот.размер);
                    присвоить и := и + 1;
                конец цикла;
            конец ветвления;
           
            присвоить этот.размер := новыйРазмер;
        конец Склеить;
       
        откр метод(Строка этот)(выходной массив[] символ массивСимволов) Сцепить
            переменная-целое новыйРазмер := этот.размер + массивСимволов.размер();
            если новыйРазмер > этот.массивСимволов.размер() то
                переменная-массив[новыйРазмер] символ новыйМассив;
                переменная-целое и := 0;
                пока и < новыйРазмер повторять
                    если и < этот.размер то
                        присвоить новыйМассив[и] := этот.ВзятьСимвол(и);
                    иначе
                        присвоить новыйМассив[и] := массивСимволов[и - этот.размер];
                    конец ветвления;
                    присвоить и := и + 1;
                конец цикла;
                присвоить этот.массивСимволов := новыйМассив;
            иначе
                переменная-целое и := этот.размер;
                пока и < новыйРазмер повторять
                    присвоить этот.массивСимволов[и] := массивСимволов[и - этот.размер];
                    присвоить и := и + 1;
                конец цикла;
            конец ветвления;
            присвоить этот.размер := новыйРазмер;
        конец Сцепить;
       
        откр метод(Строка этот)(выходной массив[] символ массивСимволов) Инициализировать
            вызвать этот.Сцепить(массивСимволов);
        конец Инициализировать;
       
        откр метод(Строка этот)(входной целое номер, входной целое длина):Строка ВзятьПодстроку
            переменная-целое и := 0;
            переменная-массив[длина] символ строка;
            пока и < длина повторять
                присвоить строка[и] := этот.ВзятьСимвол(и + номер);
                присвоить и := и + 1;
            конец цикла;
            переменная-Строка подстрока;
            присвоить подстрока.массивСимволов := строка;
            вернуть подстрока;
        конец ВзятьПодстроку;
       
        откр метод(Строка этот)(выходной Строка подстрока):целое НайтиПодстроку
            переменная-целое и := 0;
            переменная-целое ж;
            пока и < этот.Длина() - подстрока.Длина() + 1 повторять
                присвоить ж := 0;
                пока ж < этот.Длина() & подстрока.ВзятьСимвол(ж) = этот.ВзятьСимвол(и + ж) повторять
                    если ж = подстрока.Длина() - 1 то
                        вернуть и;
                    конец ветвления;
                    присвоить ж := ж + 1;
                конец цикла;
               
                присвоить и := и + 1;
            конец цикла;
            вернуть minus1;
        конец НайтиПодстроку;
    конец Строка;
   
    #Возвращает строку из массива символов или строковой константы#
    откр функция(выходной массив[] символ массивСимволов):Строка Инициализировать
        переменная-Строка строка;
        вызвать строка.Инициализировать(массивСимволов);
        вернуть строка;
    конец Инициализировать;
   
    ##
    откр процедура(выходной Строка строка1, выходной Строка строка2) Склеить
        вызвать строка1.Склеить(строка2);
    конец Склеить;
   
    ##
    откр процедура(выходной Строка строка, входной массив[] символ массивСимволов) Сцепить
        вызвать строка.Сцепить(массивСимволов);
    конец Сцепить;
   
    ##
    откр функция(выходной Строка строка, выходной целое номер):символ ВзятьСимвол
        вернуть строка.ВзятьСимвол(номер);
    конец ВзятьСимвол;
   
    ##
    откр процедура(выходной Строка строка, входной целое номер, входной символ симв) УстановитьСимвол
        вызвать строка.УстановитьСимвол(номер, симв);
    конец УстановитьСимвол;
   
    ##
    откр функция(выходной Строка строка):целое Длина
        вернуть строка.Длина();
    конец Длина;
   
    ##
    откр функция(выходной Строка строка, входной целое номер, входной целое длина):Строка ВзятьПодстроку
        вернуть строка.ВзятьПодстроку(номер, длина);
    конец ВзятьПодстроку;
   
    ##
    откр функция(выходной Строка строка, входной Строка подстрока):целое НайтиПодстроку
        вернуть строка.НайтиПодстроку(подстрока);
    конец НайтиПодстроку;
начало
   
конец Строки.

модуль Файлы
    подключить ФайлыБаза;
    подключить Строки;
   
    константа целое Чтение = 0;
    константа целое Запись = 1;
    константа целое Дозапись = 2;
   
    #Используется для ввода/вывода данных из файловой системы
Объект данного типа можно получить функцией "Открыть(путь, режим): Файл"#
    откр тип Файл
        откр поле-ФайлыБаза.Файл базовыйФайл;
        откр поле-ФайлыБаза.Поток базовыйПоток;
    конец Файл;
   
    #Открывает файл для чтения, записи или дозаписи
В качестве переменной "режим" должна быть указана одна из констант
Чтение, Запись или Дозапись#
    откр функция(выходной Строки.Строка путь, выходной целое режим):Файл Открыть
        переменная-Файл файл;
        присвоить файл.базовыйФайл := ФайлыБаза.СоздатьФайл(путь);
        присвоить файл.базовыйПоток := файл.базовыйФайл.Открыть(режим);
        вернуть файл;
    конец Открыть;
   
    #Закрывает файл, делая его доступным для открытия в новом режиме#
    откр процедура(выходной Файл файл) Закрыть
        вызвать файл.базовыйПоток.Закрыть();
    конец Закрыть;
   
    #Возвращает истину, если достигнут конец файла#
    откр функция(выходной Файл файл):булев КонецФайла
        вернуть файл.базовыйПоток.Конец();
    конец КонецФайла;
   
    #Читает строку из файла до символа "\n"#
    откр функция(выходной Файл файл):Строки.Строка ПрочитатьСтроку
        вернуть файл.базовыйПоток.ПрочитатьСтроку();
    конец ПрочитатьСтроку;
   
    #Записывает строку в файл#
    откр процедура(выходной Файл файл, выходной Строки.Строка строка) ЗаписатьСтроку
        вызвать файл.базовыйПоток.ЗаписатьСтроку(строка);
    конец ЗаписатьСтроку;
начало
конец Файлы.


Комментарий непосредственно перед оператором - это кратенькая подсказка-помощь, которая показывается пользователю при определенных обстоятельствах.

В модуле Строки реализован тип строка с методами. И обычные функции. Чтобы и так и так можно было.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 28 Август, 2012 09:52 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3059
Откуда: Астрахань
А вот как выглядит модуль математики
Код:
модуль Math
    подключить МатематикаБаза;
   
    откр функция():вещ PI
        вернуть МатематикаБаза.Пи();
    конец PI;
   
    откр функция(входной вещ х):вещ Exp
        вернуть МатематикаБаза.Экспонента(х);
    конец Exp;
   
    откр функция(входной вещ х):вещ Sin
        вернуть МатематикаБаза.Синус(х);
    конец Sin;
   
    откр функция(входной вещ х):вещ Cos
        вернуть МатематикаБаза.Косинус(х);
    конец Cos;
   
    откр функция(входной вещ х):вещ Tan
        вернуть МатематикаБаза.Синус(х) / МатематикаБаза.Косинус(х);
    конец Tan;
   
    откр функция(входной вещ х):вещ Ctan
        вернуть МатематикаБаза.Косинус(х) / МатематикаБаза.Синус(х);
    конец Ctan;
   
    откр функция(входной вещ х):целое ToInteger
        вернуть МатематикаБаза.ПриветиКЦелому(х);
    конец ToInteger;
   
    откр функция(входной вещ х, входной вещ power):вещ Pow
        вернуть МатематикаБаза.Степень(х, power);
    конец Pow;
   
    закр функция(входной целое х):целое Abs
        вернуть МатематикаБаза.Модуль(х);
    конец Abs;
   
    откр функция(входной вещ х):вещ Fabs
        вернуть МатематикаБаза.МодульВещ(х);
    конец Fabs;
   
    откр функция(входной вещ х):вещ Sqrt
        вернуть МатематикаБаза.Степень(х, 0.5);
    конец Sqrt;
   
    откр функция(входной вещ х, входной вещ base):вещ Log
        вернуть МатематикаБаза.Логарифм(х, base);
    конец Log;
   
    закр функция(входной вещ х):вещ Ln
        вернуть МатематикаБаза.Логарифм(х, МатематикаБаза.Экспонента(1));
    конец Ln;
   
    откр функция(входной вещ х):вещ Asin
        вернуть МатематикаБаза.Арксинус(х);
    конец Asin;
   
    откр функция(входной вещ х):вещ Acos
        вернуть МатематикаБаза.Арккосинус(х);
    конец Acos;
   
    откр функция(входной вещ х):вещ Atan
        вернуть МатематикаБаза.Арктангес(х);
    конец Atan;
начало
конец Math.


МатематикаБаза - это слой, зависимый от окружения. А сама математики уже от окружения не зависит.
Аналогично и в других модулях сделано. Файлы подключают ФайлыБаза - там прописаны зависимости от окружения.

По-прежнему следуем минималистским принципам.

Сильно похоже на ББ, но редактор - не текстовый. Ошибок набора - просто нет.
Все ошибки - семантические. И появляются в момент набора. Например, имя неправильно написал - либо объяви новое, либо исправь на существующее.

Поскольку копипасты нет, приходится много исследовать методы рефакторинга.
Например, "одеть" оператор в комментарий и, соответственно, раздеть. Эта работа - на полгода как минимум.

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

Кстати, при наличии установленного .NET Famework 4.0 сама среда занимает всего 5 метров... :)
Но много еще не сделано.
В среде пока нет нормального хелпа.
А в языке еще нет наследования.
Ну и исследовательские работы по изучению возможных пользовательских операций вместо текстовых.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Вторник, 28 Август, 2012 14:07 

Зарегистрирован: Суббота, 17 Сентябрь, 2011 16:39
Сообщения: 72
Описание проекта среды можно почитать в недавно вышедшей статье в сборнике "Объектные системы - 2012" (стр. 92-101).
Рабочая версия соответствует ему процентов на 90.

добавлен сегодняшний скриншот


Вложения:
Комментарий к файлу: скриншот
ide.jpg
ide.jpg [ 353.43 КБ | Просмотров: 5871 ]
Комментарий к файлу: Сборник ОС - 2012
Object_Systems_2012_Proceedings.pdf [5.06 МБ]
Скачиваний: 770
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 19, 20, 21, 22, 23, 24, 25 ... 34  След.

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


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

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


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

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