kekc_leader писал(а):
Валерий Лаптев писал(а):
По поводу редактора кода.
Хотелось бы, чтобы на выходе редактора помимо "голого" текста программы имелось бы и внутренняя модель программы.
То есть редактор берет на себя, хотя бы частично, функции фронт-енд-компилятора по лексическому-синтаксическому контролю.
Замечательная идея. Надо подумать над деталями. Есть соображения?
«На выходе» — значит, где-нибудь на боковой панели или в виде какой-то автоматической документации к проекту?
Ну, мы, собственно, реализовали такой редактор.
с 2012 года мы обучаем новичков в Semantic IDE.
Я посылал Илье Ермакову статью (для публикации в сборнике Дня Оберона) Там написано:
Цитата:
Б. Страуструп в своей книге [6] отмечал, что главным препятствием на пути развития языка С++ являются символьно-ориентированные инструменты (в частности, текстовый редактор кода). Более перспективный и интерес-ный подход – отказаться от традиционного текстового представления и реа-лизовать инструментарий на основе семантических понятий языка програм-мирования. В этом случае синтаксис языка представляет собой интерфейс между языком программирования и пользователем (программистом). И как всякий интерфейс, его можно заменять, не изменяя базовой семантики языка.
В соответствии этим подходом и с учетом анализа свойств современ-ных сред был сформулирован ряд концепций реализации интегрированной среды, которая является одной из подсистем автоматизированной обучающей среды по программированию:
- среда должна поддерживать работу и с одномодульными, и с много-модульными программами;
- среда должна обеспечивать простой и независимый от платформы механизм накопления программных компонент; в частности, с помощью этого механизма должны быть разработаны и включены в среду модули стандартной библиотеки;
- ввод-вывод данных должен осуществляться в рамках среды без вы-хода в операционную систему;
- среда должна обеспечивать разработку системы помощи непосредственно в редакторе без привлечения сторонних средств;
- редактор кода должен оперировать конструкциями языка программирования и объектами программы;
- изменение ключевых слов в коде должно быть невозможно;
- ошибки должны определяться в момент набора кода программы;
- редактор должен обеспечивать при необходимости традиционные операции редактирования текста;
- редактор должен позволять набирать код программы и в русской, и в английской лексике;
- должна быть обеспечена возможность переключения лексики и синтаксиса языка программирования, причем это переключение не должно приводить к повторному анализу кода программы.
В настоящее время практически все эти концепции реализованы в рам-ках интегрированной среды Semantic IDE.
Книга [6] - это Дизайн и эволюция С++.
В основе - семантическое дерево.
Но это редактор совсем для новичков, которые совсем ничего не умеют.
Для программеров нужен менее жесткий редактор.
В школьной сборке Ткачева - правильный подход, со сниппетами и функциональными клавишами.
Только там не делается семантическое дерево программы, а можно было бы.