OberonCore

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

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




Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 34  След.
Автор Сообщение
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Пятница, 01 Июль, 2011 21:51 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Сергей Прохоренко писал(а):
Как насчет того, чтобы включить эту работу в Google Summer of Code ?

Пока нет.
Цитата:
Существуют альтернативы, которые соответствуют сущности семантического редактора:
1) Например, в MS PowerPoint в главном меню есть команда Правка > Дублировать. Слайд целиком дублируется одним щелчком мыши, после чего дубль можно переделать в новый по содержанию слайд.

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

Второе в точности соответствует одному из приемов рефакторинга. Мы в эту сторону и посмотрели: пацан 3-го курса будет в течение всей практики внимательно изучать рефакторинг и операции примеривать на редактор. По моим ощущениям - это самое оно.
Код:
О-о-о!!! Облачные технологии :)

Не... Все гораздо проще. Просто пацан уже реализовал Silverlite-проект и теперь редактор выглядит совершенно одинаково и на столе и в браузере. Более того, проект существенно упростился по объему.
Таким образом, школьнику достаточно будет скачать Silverlite с микрософта (бесплатный) и он сможет программить в нашем редакторе прямо из дома.
А я тем временем соображаю о переводе в Компонентный паскаль и С++. Посмотрим, как получится.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 11:13 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Обсуждение вопроса начато одной из тем статьи Б. Мейера; изначально высказался в этом сообщении.
Сергей Прохоренко в viewtopic.php?f=72&p=65064#p65002 писал(а):
Info21 писал(а):
До абсурда доводить не надо: как же это без копирования :)
Это вовсе не абсурд. Структурный редактор обрабатывает не исходный код в текстовом виде, а стркутурированный документ. Соответственно, ...
Тут штука, IMHO, вот в чём. Нужно, как всегда разделять результат и процесс его получения. Результат - документ - м.б. сколь угодно структурирован. Но это не значит, что нужно ставить процесс его получения в жёсткие рамки - если исполнителем предполагается человек. Пример я привёл выше. Есть и ещё кое-что. При критике шампур-редактора Тышова часто затрагивалось как раз выделение/копирование шампурами - уже это не всем казалось естественным. А там ведь пастить не запрещалось...
Хотя редактор ведь только для программистов... а им внутри себя, м.б. будет в большинстве несложно приноровиться обрабатывать "целые элементы"... Главное - именно не запрещать копирование в принципе.


Последний раз редактировалось Владислав Жаринов Суббота, 27 Август, 2011 11:30, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 11:15 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев в viewtopic.php?p=65064#p65064 писал(а):
...
Пока получается так: документ, открываемый в редакторе, четко делится на два вида содержания: обычный для текстового редактора (хотя бы как в ББ), и модуль с программой.
Получается, поддерживается деление содержания документа, примерно как в этой классификации?
Валерий Лаптев писал(а):
...
В части, относящейся к текстовому представлению разрешены все обычные операции текстового редактора, в том числе и копи-паст. В модуле копи-паст запрещен - его просто нет (пока). Исследуем операции рефакторинга на предмет использования в программной части. В этой части посимвольный ввод разрешен фактически только при вводе имен и выражений.
А также, наверное, можно выбирать имя для подстановки в очередное место идентификатора и из списка существующих (допустимых синтаксически для данного места)? Интересно, а что вы думаете о возможности так сделать и для выражений (т.е. завести их "словарь")?
Да, "модуль" понимается в компонентном смысле?[/quote]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Суббота, 27 Август, 2011 11:59 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Естественно, выпадающие списки - рулят во всех местах... :)
Модуль - именно в компонентном смысле Компонентного паскаля. То есть они загружаются динамически и связываются в процессе загрузки (хотя многомодульность только сейчас начинаем писать).
Однако отличие в том, что мы использовали секцию инициализации в стиле для написания программы.
Как у Инфо-21 в школьной сборке. Если прога одномодульная, то можно прогу прямо там и писать.
Либо написать процедуру, а в инициализации поставить просто вызов этой процедуры.
Модуль при загрузке сразу исполняет эту секцию, поэтому нам пока не потребовался коммандер.
Вот пример:
Код:
модуль НовыйМодуль
начало
    вывести "Привет, Мир!";
конец НовыйМодуль.

Вообще с языком мы поступили так. Изначально делали две лексики: русскую и английскую. Все ключевые слова.
В редакторе просто есть кнопочка Русский-Английский. И все ключевые слова меняются.
Код:
module НовыйМодуль
start
    output "Привет, Мир!";
end НовыйМодуль.

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

Пока у нас более паскалевский синтаксис, достаточно многословный. Но поскольку ничего вручную не набирается, а вставляется целиком редактором, то проблем и неприятия многословность не вызывает.
Напротив, текст становится более читабельным.
Код:
модуль Factorial
начало
    переменная целое i := 1;
    переменная целое current := 1;
    константа целое N = 10;
   
    пока i < N повторять
        присвоить current := current * i;
        присвоить i := i + 1;
        вывести current;
        вывести '\n';
    конец цикла;
конец Factorial.

А вот как пока это выглядит в сохраняемом виде:
Цитата:
<?xml version="1.0" encoding="utf-16"?>
<Module NameWord="Factorial">
<Beginning>
<VariableWithInit NameWord="i" Type="целое" Expression="Operand$1;"></VariableWithInit>
<VariableWithInit NameWord="current" Type="целое" Expression="Operand$1;"></VariableWithInit>
<Constant NameWord="N" Type="целое" Expression="Operand$10;"></Constant>
<NullOperator KeyWord="&#xA;"></NullOperator>
<While Expression="Operand$i;Space$ ;BinaryOperation$&lt;;Space$ ;Operand$N;">
<Assign RightValue="Operand$current;Space$ ;BinaryOperation$*;Space$ ;Operand$i;" LeftValue="Operand$current;"></Assign>
<Assign RightValue="Operand$i;Space$ ;BinaryOperation$+;Space$ ;Operand$1;" LeftValue="Operand$i;"></Assign>
<Output Expression="Operand$current;"></Output>
<Output Expression="Operand$'\n';"></Output>
</While>
</Beginning>
</Module>

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

Далее - оператор вставляется при наборе снипета - и тут тоже список выпадает, можно выбрать.
Во вставленном операторе можно вводить символы только в строго ограниченных местах.
Каждый оператор имеет финальный end - как в Компонентном паскале.

Со вводом-выводом пока поступили просто - в языке два простейших оператора: ввести, вывести.
Потом будем думать об отдельном модуле уже на нашем модуле.

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

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

Пока все.


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

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев писал(а):
Естественно, выпадающие списки - рулят во всех местах... :)
Модуль - именно в компонентном смысле Компонентного паскаля. То есть они загружаются динамически и связываются в процессе загрузки (хотя многомодульность только сейчас начинаем писать).
Однако отличие в том, что мы использовали секцию инициализации в стиле для написания программы.
По смыслу похоже на это:
Драконограф в viewtopic.php?f=62&t=2527#p60855 писал(а):
...
Итак, язык схематизации - главный в документе и первый подлежащий реализации в РДП-редакторе (в полном соответствии с генеральной классификацией данных :)). Тем более, что ЛС-язык определяется как исполнимый и логически соотносим с компонентным прогязыком. Единственная разница - что нужно определить модули в рамках графит-модели (для ЛС-языка весь несоставной документ можно считать одномодульной моделью, а схемы разделов - её процедурами, в составном входящие документы м.б. модулями; но явно это не отражается - разве что в оглавлении) и решить вопрос с явным описанием исполнителя (актив-знания).
...
Т.е. весь документ понимается как компонентный модуль (возможно, как система модулей)?

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 16:00 

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 16:08 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Как можно понять из этого сообщения, в Вашем редакторе как язык программирования не обязательно реализуется именно КП? Будет разрабатываться оригинальное определение языка на его основе? или что-то новое?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 16:27 

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

Спасибо за ссылочку. Подскажу о выделении лексем.
Но на первый взгляд нам нет необходимости отслеживать элементы конструкции.
Поскольку редактор вставляет весь оператор целиком. Операторы у нас - исключительно структурные. То есть вход сверху, выход - снизу.
Для каждого оператора сейчас разрабатывается контекст (для многих уже сделано) - что РАЗРЕШЕНО в нем писать, и в каком месте. Таким образом, учень просто НЕ СМОЖЕТ написать неправильный цикл... :)
И не будет отвлекаться на мелкие синтаксические-лексические ошибки. А будет мыслить и исполнять блоками - конструкциями.

Вот, например, пишет он некую функцию. И написал имя, которого нет. Либо ошибся, либо просто сначала пишет алгоритм, а объявления потом. Редактор тут же, не давая ему продолжать пишет, что необъявленное имя и предлагает объявить. Или исправить.
Тут целое поле для исследований: какие операции в какой момент выполнять, что запрещать, что непременно требовать с учня в данной точке и т.п.
Кстати, простейший копи-паст у нас все же имеется в наличии... :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 16:34 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Драконограф писал(а):
Как можно понять из этого сообщения, в Вашем редакторе как язык программирования не обязательно реализуется именно КП? Будет разрабатываться оригинальное определение языка на его основе? или что-то новое?
Многое из КП+ББ.
Модульность - однозначно! Динамическая загрузка и связывание модулей - обязательно.
Саморазвивающаяся среда, как ББ.
Принцип - все неявное запрещено. Как у Вирта.
Делаем свой, но похожий язык, чтобы в явном виде включить в язык цикл Дейкстры, и его if (из Дисциплины программирования).
Вот скриншот сегодняшнего дня.


Вложения:
Скриншот.JPG
Скриншот.JPG [ 41.31 КБ | Просмотров: 6799 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 16:42 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4539
Откуда: Россия, Орёл
Валерий Лаптев писал(а):
Многое из КП+ББ.
Модульность - однозначно! Динамическая загрузка и связывание модулей - обязательно.
Саморазвивающаяся среда, как ББ....
Делаем свой, но похожий язык, чтобы в явном виде включить в язык цикл Дейкстры, и его if (из Дисциплины программирования).
Если не секрет:
1) Почему не стали делать на КП+ББ, чтобы не переписывать "многое"?
2) Можно посмотреть на РБНФ языка или отличающиеся об базового продукции?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 16:58 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3124
Откуда: Астрахань
Евгений Темиргалеев писал(а):
Валерий Лаптев писал(а):
Многое из КП+ББ.
Модульность - однозначно! Динамическая загрузка и связывание модулей - обязательно.
Саморазвивающаяся среда, как ББ....
Делаем свой, но похожий язык, чтобы в явном виде включить в язык цикл Дейкстры, и его if (из Дисциплины программирования).
Если не секрет:
1) Почему не стали делать на КП+ББ, чтобы не переписывать "многое"?
2) Можно посмотреть на РБНФ языка или отличающиеся об базового продукции?

Банальная причина.
Реализатор "в пальцах" имеет Додиез. Поэтому стал делать на чем владеет СЕЙЧАС...
Но о ББ знает - читал.
В дальнейшем подключу несколько студентов для конвертации в КП и С++ - посмотрим, где какие проблемы возникнут при переносе. Это ж просто даже интересно сравнить... :)
До РБНФ пока не формализовали. Нет необходимости пока, так как на уровне лексем обработка - только в выражениях.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 17:00 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев писал(а):
Драконограф писал(а):
Ещё вопрос: как Вам возможности, описанные в этом сообщении? В структурном редакторе предполагается что-то подобное?

Спасибо за ссылочку. Подскажу о выделении лексем.
Но на первый взгляд нам нет необходимости отслеживать элементы конструкции.
Поскольку редактор вставляет весь оператор целиком. Операторы у нас - исключительно структурные. То есть вход сверху, выход - снизу.
...
Тут дело вот в чём. Если допустить функцию редактора, обратную этой:
Валерий Лаптев в viewtopic.php?p=65071#p65071 писал(а):
...
Естественно, данный файл можно относительно легко конвертировать в текст на некоем языке программирования и скомпилировать его соответствующим компилятором - это если нужен отдельный exe-модуль. Пока мы этим не занимаемся. Есть более важные и интересные задачи.
...
- т.е. ретрансляцию каких-то внешних текстов - то появляется возможность "неправильного написания". Цели м.б., скажем, те же, которые Александр Ильин преследовал - или просто работа "в связке" с компилятором/верификатором, допустим, по технологии, описанной в этом сообщении. Когда внешние приложения не ограничивают так хорошо "приматическое комбинирование лексем"... :)

Валерий Лаптев писал(а):
...
Для каждого оператора сейчас разрабатывается контекст (для многих уже сделано) - что РАЗРЕШЕНО в нем писать, и в каком месте. Таким образом, учень просто НЕ СМОЖЕТ написать неправильный цикл... :)
И не будет отвлекаться на мелкие синтаксические-лексические ошибки. А будет мыслить и исполнять блоками - конструкциями.
...
Ну да... редактор позволяет вставлять лишь целиком "атомы"... только текстовые...
Валерий Лаптев писал(а):
Вот, например, пишет он некую функцию. И написал имя, которого нет. Либо ошибся, либо просто сначала пишет алгоритм, а объявления потом. Редактор тут же, не давая ему продолжать пишет, что необъявленное имя и предлагает объявить. Или исправить.
Тут целое поле для исследований: какие операции в какой момент выполнять, что запрещать, что непременно требовать с учня в данной точке и т.п.
Кстати, простейший копи-паст у нас все же имеется в наличии... :)
Разумеется... ведь жёсткие поля (то, что у Вас называется "неисполняемыми узлами", как я понимаю) иначе и не заполнишь "из буфера"...
А вот "информатизованные" узлы можно не просто по шаблону заполнять, но и по словарю... так что сочинителю можно предоставить возможность этот словарь вести и использовать. В принципе это опять же области, только показываемые, видимо, чисто текстом.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 17:13 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев писал(а):
...
Делаем свой, но похожий язык, чтобы в явном виде включить в язык цикл Дейкстры, и его if (из Дисциплины программирования).
...
Это как в Promela - см. в выдержке из этого сообщения? Хотите в перспективе писать и "модельные программы" для верификации - как в этом примере визуализированная эскизно? Имея в виду и это:
Валерий Лаптев в viewtopic.php?f=93&t=1542&p=65090#p65071 писал(а):
...
Более того, реализация позволяет нам переключаться даже между стилем синтаксиса: паскалевский - сишный.
Это еще не реализовано, но все пути четко видны. Просто не первоочередная задача.
...
Выбрали один язык информодели (диалект, расширение) - написали программу (КП-шную). Выбрали другой - написали модельную программу (Promela+*TL-nevers) для неё. И в документе как-то логически связали (допустим, как областные вариации). И можно генерить исхтексты на каждом языке. Или Вы видите другой способ сделать описание решения полиязыковым... м.б. более элегантный?..


Последний раз редактировалось Владислав Жаринов Воскресенье, 28 Август, 2011 11:34, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 27 Август, 2011 20:07 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев в viewtopic.php?f=93&t=1542&p=65090#p65071 писал(а):
...
Вообще с языком мы поступили так. Изначально делали две лексики: русскую и английскую. Все ключевые слова.
В редакторе просто есть кнопочка Русский-Английский. И все ключевые слова меняются.
...
Это здорово. :) Вероятно, можно и легко расширять состав языков (кодовых таблиц литер), определяя словари ключевых - встроенных - слов (и поддерживая для сочиняемых - идентификаторов прежде всего)? Имеется в виду описанное в этом пункте в первую очередь.
Валерий Лаптев в viewtopic.php?f=93&t=1542&start=260#p65071 писал(а):
...
Мы ввели тег "текст". Теперь в том же окне модуля мы можем (вне программного модуля) работать как в обычном редакторе. Таким образом, мы получаем возможность подготовить текст справки непосредственно в нашем редакторе. И соответственно готовить задания и вообще обучающие материалы вместе с примерами программ без привлечения дополнительных средств.
...
Интересные вещи выяснились при реализации интерпретатора. Наш модуль - это список узлов-операторов, каждый из которых может иметь вложенный список узлов. В это семантическое дерево текст вставляется просто как неинтерпретируемый узел... :)
...
В структуре документа логически "текстовый" узел может содержать узлы (в частности, программные - или иные)? В модели РДП-документа у меня это, в частности, соответствует включению в жеполь "элементарных" фрагментов текста (в частном случае весь текст - один фрагмент), м.б. вперемешку с нетекстовыми элементами содержания (таблицы, рисунки, схемы для программ и/или неформальные). В порядке включения эти элементы (м.б. некая заданная выборка из них) должны входить и в отображение документа для экрана/печати ("символ-сборку"). У Вас что-то подобное мыслится?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Август, 2011 08:42 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев в viewtopic.php?f=93&t=1542&start=260#p65086 писал(а):
...
Реализатор "в пальцах" имеет Додиез. Поэтому стал делать на чем владеет СЕЙЧАС...
Но о ББ знает - читал.
В дальнейшем подключу несколько студентов для конвертации в КП и С++ - посмотрим, где какие проблемы возникнут при переносе. Это ж просто даже интересно сравнить... :)
...
Это можно понимать так, что в проекте принят принцип "реализовать язык, на котором пишем (или максимально совпадающий)"? Т.е. как в этом сообщении? Чтобы по мере готовности редактора описывать язык (а в перспективе - документировать целиком как "паспорт" задачи, решаемой редактором), пользуясь только самим редактором? И не тратя лишних сил на программирование в одном языке, а описание другого?

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


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

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

Еще один студент 2 курса у меня делает графическую оболочечку для рисования разнообразного рода диаграмм.
UML, Дракон, DFD... Пока на С++ - в QtCreator - там довольно богатая библиотека.
Делаем сами, чтобы иметь возможность навесить туда оценку деятельности студента и потом состыковать с программированием.
Еще одна студентка делает системку генерации заданий по программированию.
Разработан простой XML-язык представления шаблонов заданий. Будем после полной реализации тега текст начинать прикручивать ее к редактору.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Август, 2011 12:04 

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

Валерий Лаптев писал(а):
...
Не совсем пока ясно, какие операции рефакторинга существенны и полезны, а какие - нет. Это только опыт даст ответ. Но операции редактора тоже отделены в отдельную иерархию, поэтому там тоже более-менее без особых проблем стройка идет...
...
Немаловажно, чтобы простые вроде бы техоперации типа обмена фрагментов содержания не требовали такой многоходовости, как описано в этом сообщении для Ты-среды... для этого чаще всего достаточно "побыть оператором", как мы знаем... :wink:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 28 Август, 2011 12:05 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Валерий Лаптев писал(а):
...
Еще один студент 2 курса у меня делает графическую оболочечку для рисования разнообразного рода диаграмм.
UML, Дракон, DFD... Пока на С++ - в QtCreator - там довольно богатая библиотека.
Делаем сами, чтобы иметь возможность навесить туда оценку деятельности студента и потом состыковать с программированием.
Еще одна студентка делает системку генерации заданий по программированию.
Разработан простой XML-язык представления шаблонов заданий. Будем после полной реализации тега текст начинать прикручивать ее к редактору.
Состыковать - это по такому принципу как здесь описано (п. 2)? Или "неисполняемо" - как ряд реализаций того же UML определяют в этой работе?

Можно, видимо, и визуализацию заданий "прикрутить" - чтобы получалось то что здесь (см. вложения) как опросы сделано. И визуализация тестового бланка - всё студням интереснее :wink: - и сопряжение с алгоритмикой ещё одно. Как Вы думаете?


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

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


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

2. Планируете ли в дальнейшем для большей наглядности дополнить/заменить снипеты на палитры операторов и паттернов/конструкций на отдельной панели?

3. Там, где "Во вставленном операторе можно вводить символы", не хотите ли вставлять заглушки вида «выражение», «число», «тело цикла» и т.п.?

4. Можно ли будет видеть программу не только в виде текста, но и структурированно - в виде дерева (браузер проекта) и/или графа зависимостей программных объектов?

5. Будут ли надмодульные структуры (подсистемы, программный проект)?

6. Планируете ли вынести объявления в табличном виде на отдельную панель, а не вставлять в текстовом виде непосредственно в текст программы?


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

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


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

2. Планируете ли в дальнейшем для большей наглядности дополнить/заменить снипеты на палитры операторов и паттернов/конструкций на отдельной панели?

3. Там, где "Во вставленном операторе можно вводить символы", не хотите ли вставлять заглушки вида «выражение», «число», «тело цикла» и т.п.?

4. Можно ли будет видеть программу не только в виде текста, но и структурированно - в виде дерева (браузер проекта) и/или графа зависимостей программных объектов?

5. Будут ли надмодульные структуры (подсистемы, программный проект)?

6. Планируете ли вынести объявления в табличном виде на отдельную панель, а не вставлять в текстовом виде непосредственно в текст программы?

1. Пока - нет. Пока просто при вставке сразу вложенность делается (та самая обязательная табуляция, которую Федор Васильевич в школьной сборке включил.
2. Не заменить - дополнить.
3. Надо подумать. Пока у нас вставляется операция вместе с операндами. Затем на месте операнда учень может уже вставить реальный операнд - или опять операцию с операндами. Скобки всегда вставляются парами.
4. Дерево уже было - пока убрали. Но вообще справа - место для проекта
5. Естественно - будут. Когда начнем реализовывать многомодульные проги.
6. Об этом думаем.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15, 16, 17 ... 34  След.

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


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

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


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

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