OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 15 Май, 2024 04:12

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




Начать новую тему Ответить на тему  [ Сообщений: 679 ]  На страницу Пред.  1 ... 9, 10, 11, 12, 13, 14, 15 ... 34  След.
Автор Сообщение
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Суббота, 29 Май, 2010 14:32 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2450
Откуда: Россия, Томск
Рэйлвэй Каген писал(а):
Непонятка в том, что на сегодняшний день абстрактное семантическое представление используется для несколько других целей. М.б. я что-то пропустил?
Абстрактное семантическое дерево - ключевая особенность обсуждаемого здесь абстрактного семантического редактора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Суббота, 29 Май, 2010 14:58 

Зарегистрирован: Воскресенье, 04 Ноябрь, 2007 23:01
Сообщения: 151
Да. Вот именно эта особенность обсуждения и повергла меня в сомнения, поскольку товарищ утверждает, что
Сергей Прохоренко писал(а):
..(абстрактное семантическое дерево и таблица символов) используется компилятором для создания исполнимого кода (в этом нет ничего нового)

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


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Суббота, 29 Май, 2010 21:01 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Рэйлвэй Каген писал(а):
даже в Coco реализована только синтаксическая составляющая языка

И то не полностью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Семантический редактор
СообщениеДобавлено: Понедельник, 31 Май, 2010 20:23 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Рэйлвэй Каген писал(а):
Не шутка ли это - предлагать обсуждение деталей технической реализации механизмов хранения, когда "в консерватории"(в самОй семантической записи - даже пример отсутствует) нет ясности?

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

Вот если бы научить машину намёки понимать...

Вот простой пример:
набираю в редакторе fieldCuont = prevFieldCount + func( a , b, c );
в имени использованной переменной fieldCuont - ошибка. Это хорошо, если есть система оперативной подсказки по месту, а, если меня отвлекли или я не глядя вбил текст и ушёл с этого места в тексте? Типичный компилятор мне просто скажет: "неизвестное что-то", он ведь не спросит: "а не fieldCount ли Вы имели в виду?"... :twisted:

Это хорошо, в Си++ можно даже так "объяснить" компилятору, что бы он в перегруженных операторах выражениях яблоки с апельсинами не складывал... А - в бестиповых языках - что делать? Вводить проверки на типы? ВО первых никто этого делать не "под дулом автомата" не будет, а, во-вторых, мы сражу в декартово произведение по вариантам совмещения типов влезаем...

Пока, что выход вижу ТОЛЬКО в наращивании мощности средств поддержки разработки. То есть - когнитивные всякие штучки-помогалки-построители картинок и расцветки, поиск и базы данных времени компиляции...


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Речь идет не о синтаксическом дереве, а о семантической модели проги. Причем, статической. Об интерпретации или компиляции этой модели - отдельная речь


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

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Wlad2 писал(а):
Вот простой пример:
набираю в редакторе fieldCuont = prevFieldCount + func( a , b, c );
в имени использованной переменной fieldCuont - ошибка. Это хорошо, если есть система оперативной подсказки по месту, а, если меня отвлекли или я не глядя вбил текст и ушёл с этого места в тексте? Типичный компилятор мне просто скажет: "неизвестное что-то", он ведь не спросит: "а не fieldCount ли Вы имели в виду?"... :twisted:


Спросит. http://zi.fi/shots/clang.png


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

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Alexey Veselovsky писал(а):

во-во-во! А чё это такое?


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

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Wlad2 писал(а):
Alexey Veselovsky писал(а):

во-во-во! А чё это такое?

Это clang. Написано же :-)
Фронтенд к llvm для языков Си-семейства (С/С++/ObjC).


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

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Alexey Veselovsky писал(а):
Wlad2 писал(а):
Alexey Veselovsky писал(а):

во-во-во! А чё это такое?

Это clang. Написано же :-)
Фронтенд к llvm для языков Си-семейства (С/С++/ObjC).

Тьфу-ты! конечно! заморочился на работе сегодня сильно! :) Смотрю в упор на картинку, а мысли - про си-шарп, почему-то... но, смотрю и думаю, а что за реализация такая? ;)


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

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4696
Откуда: Россия, Орёл
http://modis.ispras.ru/sedna/index.html
- это вам и про СУБД и про XML сразу, если очень хочется.


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

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

Поддержка последовательных версий программных проектов
Исходный программный код каждого программного проекта должен сохраняться в отдельный файл, содержащий базу данных. В качестве СУБД рекомендуется Firebird, но возможен и другой выбор. В базе данных программного проекта должна храниться не только текущая версия проекта, но и полная история его изменений. Это позволит производить сравнение версий и откат изменений на любую глубину как в Википедии.

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

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

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

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

Изменения каждого модуля, функции и т.п. сопровождаются нередактируемым автоматическим комментарием в таблице, отображающей изменения, например, «Произведен откат к версии от 14.09.2012 13:57». Может быть также добавлен комментарий программиста, а в необходимых случаях семантический редактор может требовать от программиста ввода комментария.

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

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

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

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

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

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

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

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

При отладке программ стандартный именованный ввод тестовых данных и вывод результатов тестирования осуществляется в табличной форме в формате, совместимом с Microsoft Excel.

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

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

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

Элементарные типы данных семантического редактора
Элементарные типы данных семантического редактора должны быть совместимы с типами данных:
  • встроенной в семантический редактор СУБД Firebird,
  • промышленных СУБД и ERP: Oracle, Microsoft SQL Server, SAP, MySQL,
  • хранилищ данных BusinessObject, Cognos,
  • промышленных языков программирования C++ и Java, платформы .NET и XML,
  • офисных программных продуктов Microsoft Excel и Microsoft Access,
  • современных архитектур процессоров и микроконтроллеров.


Последний раз редактировалось Сергей Прохоренко Среда, 23 Июнь, 2010 14:14, всего редактировалось 1 раз.

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

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Сергей Прохоренко писал(а):
Пока был в отпуске, накидал дополнения:
...

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


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

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
сижу тут в графической программе, и пришло в голову.
есть такое понятие - "слои". Удобно в смысле вкл/выкл некоторой информации, которая должна накладываться на другую информацию. быстро и сердито.

На слоях могли бы располагаться:
1) комментарии (разного уровня на разных слоях)
2) уровни абстракции или детализации и изменений.


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

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

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


Последние два пункта должны обязательно войти в первую версию:
  • манипулирование ветками многоветочных конструкций реализовать просто, а удобство для программиста - значительное;
  • с элементарными типами данных нужно определяться сразу - потом будет сложно переделать.


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

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Виктор О писал(а):
сижу тут в графической программе, и пришло в голову.
есть такое понятие - "слои". Удобно в смысле вкл/выкл некоторой информации, которая должна накладываться на другую информацию. быстро и сердито.

На слоях могли бы располагаться:
1) комментарии (разного уровня на разных слоях)
2) уровни абстракции или детализации и изменений.

Слои - это правильная мысль. Это можно рассматривать как реализацию метода пошагового уточнения


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

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


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


Последний раз редактировалось Сергей Прохоренко Четверг, 24 Июнь, 2010 11:09, всего редактировалось 1 раз.

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

Зарегистрирован: Среда, 30 Сентябрь, 2009 14:45
Сообщения: 147
Сергей Прохоренко писал(а):
А как наложить слой? Заслонить подсказками весь программный код?

В частности, да.
При вставке комментов среди кода весь код "едет" по экрану, и его трудно соотнести с искомым местом. При хранении описаний отдельно от кода их тоже трудно соотнести с кодом. Но если описание можно жестко привязать к коду с переключением между ними, то поиск по описанию становится простым.

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

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


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

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


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


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

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


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

Схлопывание-расхлопывание - это традиционное - тоже нужно.


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

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


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

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


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

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