Сегодня 30.11.2024 | Вы зарегистрированы в системе под именем ANONYMOUS |
Интерфейсер в моей реализации.Интерфейсер - язык программирования, базирующийся на идее Андрея Акопянца. Ее я получил от него в 89-м году. Суть идеи - язык программирования, в котором все операторы и типы данных являются подключаемыми. То есть, они являются внешними, по отношению к компилятору.
Обсуждение раздела
(2 )
Интерфейсер был реализован в виде простого текстового интерпретатора и компилятора до шитого кода (подобно Forth). Полностью вынести из компилятора все типы данных не удалось, поскольку для языка с удобной семантикой и определенным сервисом необходимо, чтобы компилятор, как минимум, понимал строчные константы. Кроме этого, язык для прикладного программиста является блочно-ориентированным. Соответственно компилятор понимает блоки, которые для него являются константами соответствующего типа. Внутри (при программировании новых типов данных) язык объект-ориентированный, то есть каждый тип имеет конструктор, деструктор и ограниченный набор операций. На их основе строится взаимодействие с типом. В последней реализации типы данных, операторы и константы определяются разными таблицами. У меня было желание реализовать и типы и константы, как операции - тогда таблица осталась бы одна, это упростило бы компилятор и легче можно было бы реализовать подключение в виде динамических библиотек. Однако, я перешел на другую работу и более к Интерфейсеру не возвращался. Компилятор создает шитый код в виде ссылок на операции, скомпилированные в машинный код (пишутся на языке С) и линейные блоки. Ветвления и циклы реализуются как внешние, поэтому существуют регистры виртуальной машины, через которые подключенные операции управляют ходом выполнения программы. Виртуальная машина очень компактна - всего несколько десятков строк на С. Компилятор тоже компактен, объем исходных текстов (без учета файлов .h) составляет всего несколько десятков килобайт. На х86/32 размеры объектных модулей, содержащих компилятор и виртуальную машину составляют всего 18 и 4 КБайт. Семантически и синтаксически язык очень похож на С, но из-за специфики подключаемых операций, программирование на нем отдаленно напоминает программирование на Lisp. Одно из удобных свойств языка - скрытое преобразование типов. Если в качестве параметра операции указана переменная или константа несоответствующего ожидаемому типа и определена операция преобразования, то компилятор автоматически генерирует вызов соответствующего конвертера. То есть, с прикладного программиста снимается требование вызывать функции преобразования, например из целого в строку. Это существенно упрощает написание программ, особенно тогда, когда существует значительное количество пользовательских типов данных. Язык чрезвычайно удобен в тех случаях, когда необходимо в прикладной системе иметь языковой интерфейс управления (отсюда название Интерфейсер). При этом программируются только необходимые типы данных и операции. Отличие от VBA - компактность, скорострельность, исключительная простота расширения и встраивания в прикладную систему. Здесь лежат тестовая версия Ci и ее описание.
Материалы (всего 2 файла )
|
В начало страницы | Sponsored by Andrey Akopyants |