Сегодня 30.11.2024 Вы зарегистрированы в системе под именем ANONYMOUS

Начало
Немного о себе
Виртуальный ресторан Гурмана
Умности
Котизмы
Фотографирую понемногу
MAX15 - система диаграммного программирования
Моя профессиональная деятельность на LinkedIn
GourmetLabs - Мои программы для Android
Список оцифровок винила
Новости
Карта сайта
Архив материалов
Обсуждение
Пользователи
 
 
Личный сайт  >  Интересы, преимущественно профессиональные.

Интерфейсер в моей реализации.

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

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

Компилятор создает шитый код в виде ссылок на операции, скомпилированные в машинный код (пишутся на языке С) и линейные блоки. Ветвления и циклы реализуются как внешние, поэтому существуют регистры виртуальной машины, через которые подключенные операции управляют ходом выполнения программы. Виртуальная машина очень компактна - всего несколько десятков строк на С. Компилятор тоже компактен, объем исходных текстов (без учета файлов .h) составляет всего несколько десятков килобайт. На х86/32 размеры объектных модулей, содержащих компилятор и виртуальную машину составляют всего 18 и 4 КБайт.

Семантически и синтаксически язык очень похож на С, но из-за специфики подключаемых операций, программирование на нем отдаленно напоминает программирование на Lisp.

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

Язык чрезвычайно удобен в тех случаях, когда необходимо в прикладной системе иметь языковой интерфейс управления (отсюда название Интерфейсер). При этом программируются только необходимые типы данных и операции. Отличие от VBA - компактность, скорострельность, исключительная простота расширения и встраивания в прикладную систему.

Здесь лежат тестовая версия Ci и ее описание.

Материалы (всего 2 файла )

Файл тестовая версия процессора Ci
в архиве 3 файла:

  • citsti.exe - компилятор, скомпонованный с исполняющей системой
  • mingwm10.dll - библиотека MinGW с основными функциями языка C
  • qt-mt3.dll - библиотека Qt3 for Windows, которая используется для отображения графического окна

в данной версии citsti в Windows корректно работают все функции, но есть нюансы:

  • получение звука использует устаревший метод, работает не через DirectX, поэтому сигнал приходит неверный, часть сигнала забита 0-ми
  • данная версия Qt3 4Win не совсем корректно отображает содержимое перекрытого окна - если оно меняется динамически, и окно перекрыть, то его содержимое перестает меняться, увы это зависит от реализации Qt3 4Win, которая не является официальным продуктом TrollTech

для использования распаковать все в один каталог, запускать citsti с параметром -o для получения справочника по операциям, либо с именем файла (включающего расширение), содержащего Ci программу (расширения я принял стандартными .ci для исходных текстов или .cip для компилированных программ)

описание языка и справочные сведения на русском находятся здесь

сохранение и запуск компилированных программ в этом билде не поддерживается

в случае обнаружения ЛЮБЫХ ошибок просьба сообщать мне по электронной почте (через страницу http://kasatkin.smartpr.ru/kasatkin/gourmet)

Автор: Касаткин Сергей Анатольевич <gourmet@freemail.ru> ( написано 24.09.2007, опубликовано 24.09.2007 )

Файл описание ASI Ci (постоянно изменяющийся черновик)
развитие идеи интерфейсера, описание языка, MS Word .doc
Автор: Касаткин Сергей Анатольевич <gourmet@freemail.ru> ( написано 12.08.2007, опубликовано 12.08.2007 )

 

Не знаешь, что из фильмов выбрать? КиноНавигатор подскажет - что посмотреть...
В начало страницы Sponsored by Andrey Akopyants