OberonCore
https://forum.oberoncore.ru/

Семантический редактор
https://forum.oberoncore.ru/viewtopic.php?f=93&t=1542
Страница 13 из 34

Автор:  Peter Almazov [ Вторник, 14 Сентябрь, 2010 16:46 ]
Заголовок сообщения:  Re: Структурный редактор Кирилла Осенкова для C# можно закач

Geniepro писал(а):
Сергей Прохоренко писал(а):
Структурный редактор Кирилла Осенкова для C# можно закачать из интернета:
Любопытно. Жаль только, что редактор не подвязан к компилятору.

Кстати, тут -- http://visualstudiogallery.msdn.microso ... 484fe3d853 -- предлагают плагин для VS2010, который делает выделение структурных блоков как у одного из режимов редактора Осенкова.
Идея плагина хорошая, но простые палки выглядят отвратно. Давно я хотел подправить этот плагин, вот, наконец, дошли руки.
Вот как было:
Вложение:
11.png
11.png [ 78.22 КБ | Просмотров: 11782 ]
и вот как стало (форматирование текста изменено на нормальное):
Вложение:
22.png
22.png [ 74.74 КБ | Просмотров: 11782 ]
Цвета, правда, пока не трогал.

Автор:  Сергей Прохоренко [ Среда, 15 Сентябрь, 2010 12:34 ]
Заголовок сообщения:  Re: Структурный редактор Кирилла Осенкова для C# можно закач

Peter Almazov писал(а):
наконец, дошли руки


Красиво получилось. Промежуточные else if-ы можно выделять не закругланиями "палок", а горизонтальными черточками - так лучше видно, что это не конец блока и начало нового блока, а лишь ветвь внутри блока.

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

Автор:  Сергей Губанов [ Среда, 15 Сентябрь, 2010 13:09 ]
Заголовок сообщения:  Re: Семантический редактор

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

Автор:  Peter Almazov [ Среда, 15 Сентябрь, 2010 13:30 ]
Заголовок сообщения:  Re: Семантический редактор

Сергей Губанов писал(а):
IMHO было лучше. Си-шный синтаксис заточен на расставлении фигурных скобок по одной на строку. Пытаться писать фигурные скобки как-то иначе значит идти против Си-шного замысла, в итоге получишь не рыбу не мясо. Вот на Обероне другое дело. Он заточен чтоб в одной строке можно было писать и то и сё.
Отцы-основатели использовали второй стиль, он так и называется - стиль Стиль «K&R»:
Код:
if (<cond>) {
··<body>
}
Потом люди, которым платят построчно за код, изобрели первый вариант...
После того, как добавил плавные соединительные линии, вообще не могу смотреть на код с фигурной скобкой на отдельной строке. Вся маразменность этого стандарта проявилась во всей красе.

Автор:  Сергей Губанов [ Среда, 15 Сентябрь, 2010 16:22 ]
Заголовок сообщения:  Re: Семантический редактор

Peter Almazov писал(а):
Отцы-основатели использовали второй стиль
Да я в курсе. Это что-то меняет? Авторитет этих товарищей не то что равен нулю, а отрицателен :D
Сначала они изобрели поганую Си-шную нотацию, но этого им показалось мало :D
Тогда они стали писать скобки так как будто не скобки в Си-шном синтаксисе являются блоком, чтоб ещё больше усугубить :D
Вот в Обероне - да именно такой стиль форматирования и должен быть (ибо в Обероне нет скобок для блока).
А в Сях - нет уж, в Сях блок - это скобки.

Автор:  Peter Almazov [ Среда, 15 Сентябрь, 2010 17:34 ]
Заголовок сообщения:  Re: Семантический редактор

Сергей Губанов писал(а):
А в Сях - нет уж, в Сях блок - это скобки.
Тут все, конечно, субъективно, на любителя.
Ход моих мыслей таков: я знаю цену такой конструкции:
Код:
if
{
}
else
{
}
Эта цена - 3 строчки:
Код:
if
else
endif
И я не хочу, чтобы мне морочили голову синтаксическим мусором из 6 строк.

Автор:  Валерий Лаптев [ Среда, 15 Сентябрь, 2010 19:31 ]
Заголовок сообщения:  Re: Семантический редактор

Это - не мусор. Однажды мы на лабе всей группой минут 15 искали ошибку в программе, написанной в стиле отцов-основателей. Пока, наконец, кто-то увидел, что открывающей скобки просто нет - случайно удалили при исправлениях.
Дело не в цене, а именно в структуре кода. При явном выделении скобок ВАШИ скобочки - НЕ НУЖНЫ... :)

Автор:  Peter Almazov [ Среда, 15 Сентябрь, 2010 20:20 ]
Заголовок сообщения:  Re: Семантический редактор

Валерий Лаптев писал(а):
Это - не мусор. Однажды мы на лабе всей группой минут 15 искали ошибку в программе, написанной в стиле отцов-основателей. Пока, наконец, кто-то увидел, что открывающей скобки просто нет - случайно удалили при исправлениях.
Дело не в цене, а именно в структуре кода. При явном выделении скобок ВАШИ скобочки - НЕ НУЖНЫ... :)
Здесь могу сказать две вещи.
1. По большому счету, причина ошибки не в стиле, а в том, что язык - говно.
2. Посмотрите внимательно на картинку выше, и вы поймете, что выделение блоков фигурными скобками на пустых строках - НЕ НУЖНО. Все блоки видны так ясно, что дальше некуда. В том числе будет видна и описанная выше ошибка.
А вообще, о вкусах спорить бессмысленно.

Автор:  Сергей Губанов [ Четверг, 16 Сентябрь, 2010 10:36 ]
Заголовок сообщения:  Re: Семантический редактор

Peter Almazov писал(а):
И я не хочу, чтобы мне морочили голову синтаксическим мусором из 6 строк.
Я тоже не хочу, поэтому на обероне именно так и пишу. Но если приходится писать на сях, то "снявши голову по шапке не плачут".

Автор:  Peter Almazov [ Четверг, 16 Сентябрь, 2010 12:11 ]
Заголовок сообщения:  Re: Семантический редактор

Сергей Губанов писал(а):
Но если приходится писать на сях, то "снявши голову по шапке не плачут".
Такую обречённость мне не понять.

Автор:  Сергей Прохоренко [ Воскресенье, 31 Октябрь, 2010 12:44 ]
Заголовок сообщения:  Re: Семантический редактор

Описание PureBuilder потихоньку разрастается и уточняется. Как обстоят дела с разработкой семантического редактора у Валерия Лаптева?

Автор:  yuriz [ Воскресенье, 19 Декабрь, 2010 22:36 ]
Заголовок сообщения:  Re: Семантический редактор

Здравствуйте! С интересом прочитал всю ветку обсуждений (я и сам работаю над в чём-то похожим проектом). Однако возник один вопрос теоретического плана, а точнее вопрос формулировки. Что именно Вы подразумеваете под семантическим редактором? Как это определение в вашей системе связано с понятием «семантика» в общепринятом смысле?

Возьмём, например, присваивание переменной. В Вашей системе такое действие представляется/хранится в виде дерева или графа, в узлах которого находятся элементы "пересылка", "идентификатор", "значение". Учитывая главную концепцию системы — отказ от текстового представления данных — каково семантическое представление/кодирование/понимание идентификаторов?

Автор:  Alexey Veselovsky [ Понедельник, 20 Декабрь, 2010 00:31 ]
Заголовок сообщения:  Re: Семантический редактор

Немного в тему:
http://www.3dnews.ru/news/android-app-i ... em/#603778

Автор:  Сергей Прохоренко [ Понедельник, 20 Декабрь, 2010 22:16 ]
Заголовок сообщения:  Re: Семантический редактор

Alexey Veselovsky писал(а):


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

Автор:  Сергей Прохоренко [ Понедельник, 20 Декабрь, 2010 22:45 ]
Заголовок сообщения:  Re: Семантический редактор

yuriz писал(а):
Здравствуйте! С интересом прочитал всю ветку обсуждений (я и сам работаю над в чём-то похожим проектом). Однако возник один вопрос теоретического плана, а точнее вопрос формулировки. Что именно Вы подразумеваете под семантическим редактором? Как это определение в вашей системе связано с понятием «семантика» в общепринятом смысле?

Возьмём, например, присваивание переменной. В Вашей системе такое действие представляется/хранится в виде дерева или графа, в узлах которого находятся элементы "пересылка", "идентификатор", "значение". Учитывая главную концепцию системы — отказ от текстового представления данных — каково семантическое представление/кодирование/понимание идентификаторов?


Непонятно, к кому вопрос. Что я понимаю под семантическим редактором - см. https://sites.google.com/site/purebuilder/

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


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

На Ваш вопрос об идентификаторах пусть лучше ответит Валерий Лаптев, так как мои знания в области компиляторов недостаточны.

А Вы можете рассказать о своем проекте?

Автор:  Валерий Лаптев [ Вторник, 21 Декабрь, 2010 11:42 ]
Заголовок сообщения:  Re: Семантический редактор

Узел в данном случае - это не идентификатор , а ОПЕРАТОР присваивания. Составной частью которого является идентификатор (в большинстве случаев) переменной. Есали провести аналогию с С++, то оператор присваивания - это L-value = R-Value.
А сами идентификаторы, естественно появляются в ОПЕРАТОРАХ определения переменных, и собираются редактором в таблицу имен. Чтобы потом использоваться и в операциях типа автодополнения, и при проверке совместимости типов.

Автор:  yuriz [ Вторник, 21 Декабрь, 2010 12:32 ]
Заголовок сообщения:  Re: Семантический редактор

Валерий Лаптев писал(а):
Узел в данном случае - это не идентификатор , а ОПЕРАТОР присваивания. Составной частью которого является идентификатор (в большинстве случаев) переменной. Есали провести аналогию с С++, то оператор присваивания - это L-value = R-Value.
А сами идентификаторы, естественно появляются в ОПЕРАТОРАХ определения переменных, и собираются редактором в таблицу имен. Чтобы потом использоваться и в операциях типа автодополнения, и при проверке совместимости типов.

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

Автор:  Сергей Прохоренко [ Вторник, 21 Декабрь, 2010 17:48 ]
Заголовок сообщения:  Modkit, Scratch-like среда программирования встроенных систе

Modkit - похожая на Scratch среда программирования встроенных систем


http://www.modk.it/software



Вложение:
Using-Input.png
Using-Input.png [ 68.01 КБ | Просмотров: 10984 ]

Автор:  Валерий Лаптев [ Пятница, 01 Июль, 2011 09:34 ]
Заголовок сообщения:  Re: Семантический редактор

Семантический редактор обретает рабочие очертания.
Пацан очень заинтересован, пишет и рефакторит практически не переставая. Обсуждаем регулярно.
Пацан защитил на этом бакалавра, собирается в магистры. Выиграл Умника.
Работа четко разбивается на несколько подсистем.
- собственно редактор. Вчерашнее обсуждение показало, что операция copy-paste - не соответствует сущности семантического редактора. Эту операцию можно разрешить только в очень определенных местах программы и документа. А редактор должен выполнять высокоуровневые операции типа рефакторинга. Подключили пацана 3 курса - будет этим вопросом заниматься.
- интерпретатор семантического дерева. Первая версия работает. Пока только на процедурах. Далее будет добавляться ОО-часть. Сюда же - всякие конвертеры в известные языки. Здесь мы внимательно смотрим в стороны ББ. Вчера речь зашла о линкере - я тут же ему указал на динамическую загрузку модулей и автоматическое извлечение интерфейсов в ББ. Пацан проникся... :)

Пока у меня на этом компе не установлена Студия 2010 (пацан делает на том, что у него "в пальцах" сидит). Кроме того, реально хочет сделать сервис в инете для наших школьников (есть идея организовать в сети что-то вроде школьной ИТ-академии конкретно от нашей кафедры).
Поэтому пока сохраняет проги вот в таком виде:
Код:
<?xml version="1.0" encoding="utf-16" ?>
- <модуль NameWord="НовыйМодуль" BodyWord="НовыйМодуль" SelectionWord="НовыйМодуль">
- <процедура FirstWord="Главная" Expression="" NameWord="Главная" BodyWord="Главная" SelectionWord="Главная">
  <переменная Type="целое" NameWord="и" SelectionWord="целое" />
  <присвоить Left="и" Expression="1" SelectionWord="и" />
  <пустая_строка FirstWord="" KeyWord="" EnterWord="" BodyWord="" EndWord="" EndEnterWord="" />
- <цикл Expression="и<10" BodyWord="и<10" SelectionWord="и<10">
  <вывести Expression="стр(и) + "! = " + стр(Факториал(и)) + "\n"" SelectionWord="стр(и) + "! = " + стр(Факториал(и)) + "\n"" />
  <присвоить Left="и" Expression="и + 1" SelectionWord="и" />
  </цикл>
  </процедура>
  <пустая_строка FirstWord="" KeyWord="" EnterWord="" BodyWord="" EndWord="" EndEnterWord="" />
- <функция FirstWord="целое" Type="целое" Expression="целое б" NameWord="Факториал" BodyWord="Факториал" SelectionWord="целое">
- <если Expression="б==0" SelectionWord="б==0">
  <вернуть Expression="1" SelectionWord="1" />
  </если>
  <вернуть Expression="Факториал(б-1)*б" SelectionWord="Факториал(б-1)*б" />
  </функция>
  </модуль>

Как только установлю студию - скрины выставлю.
Но могу добавить - получается лучше, чем КуМир - абсолютно точно! Язык - существенно лучше: с Дейкстриным if и циклом.

Кстати, сильно сомневаемся о включении в язык механизма исключений. С одной стороны, вроде как знакомить студней надо. Но с другой стороны - вот не нравятся мне это на интуитивном уровне. И интерпретатор, возможно, усложнится.
Мне очень понравился if с assert(), который привел Евгений Темиргалиев - это прям паттерн, который надо вбивать в головы студней...

Автор:  Сергей Прохоренко [ Пятница, 01 Июль, 2011 21:14 ]
Заголовок сообщения:  Re: Семантический редактор

Валерий Лаптев писал(а):
Семантический редактор обретает рабочие очертания.

Ждем!
Валерий Лаптев писал(а):
Пацан защитил на этом бакалавра, собирается в магистры. Выиграл Умника.

Как насчет того, чтобы включить эту работу в Google Summer of Code ?
Валерий Лаптев писал(а):
Вчерашнее обсуждение показало, что операция copy-paste - не соответствует сущности семантического редактора.

Существуют альтернативы, которые соответствуют сущности семантического редактора:

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

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

Кроме того, реально хочет сделать сервис в инете для наших школьников (есть идея организовать в сети что-то вроде школьной ИТ-академии конкретно от нашей кафедры).


О-о-о!!! Облачные технологии :)

Страница 13 из 34 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/