Схема 48
Парадигмы | Мульти : функциональный , процедурный , мета. |
---|---|
Семья | Лисп |
Разработано | Ричард Келси, Джонатан Рис |
Разработчики | Ричард Келси, Джонатан Рис |
Впервые появился | март 1987 г |
Стабильная версия | 1.9.2 / 12 апреля 2014 г |
Дисциплина набора текста | Динамичный , сильный , Скрытый |
Объем | Лексический |
ТЫ | Кросс-платформенный |
Лицензия | БСД |
Веб-сайт | s48 |
Схема 48 — это язык программирования , диалект языка Scheme , реализация с использованием интерпретатора , который генерирует байт-код . [2] Имеет внешний интерфейс функций для вызова функций из языка C. [3] и поставляется с библиотекой регулярных выражений (regex), [4] и интерфейс для интерфейса переносимой операционной системы ( POSIX ). [5] Он поддерживается переносимой библиотекой Scheme SLIB и является основой оболочки Scheme Scsh . [2] Его использовали в научных исследованиях. [6] Это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией BSD .
Она называется «Схема 48», потому что первая версия была написана за 48 часов в августе 1986 года. [7] Авторы сейчас [ когда? ] скажем, его предполагается понять за 48 часов. [ нужна ссылка ]
Реализация [ править ]
Схема 48 использует виртуальную машину для интерпретации байт-кода , написанного на ограниченном диалекте Scheme, называемом PreScheme, который можно перевести на C и скомпилировать в собственный двоичный код. PreScheme или Pre-Scheme — это статически типизированный диалект Scheme, обладающий эффективностью и низкоуровневым машинным доступом C, сохраняя при этом многие желательные функции Scheme.
Предварительная схема была довольно интересной. Келси, по-моему, тоже опубликовал статью по этому поводу. Это была Scheme в том смысле, что вы могли загрузить ее в систему Scheme и запустить код. Но это было ограничительно – требовалось, чтобы вы писали таким образом, чтобы обеспечить полный вывод статического типа Хиндли-Милнера, а все процедуры более высокого порядка были заменены бета-версией во время компиляции, что означало, что вы могли *прямо* транслировать предсхемную программу в " естественный» код C с эффективностью уровня C [ sic ]. То есть вы можете рассматривать prescheme как действительно приятную альтернативу C для низкоуровневого кода. И вы можете отлаживать свои программы prescheme в интерактивной среде разработки Scheme по вашему выбору, прежде чем щелкнуть переключателем и перевести их в код C, потому что prescheme была всего лишь ограниченной схемой. Интерпретатор байт-кода Scheme 48 был написан на prescheme. Пресхема как бы умерла – помимо научной статьи, которую он написал, у Келси так и не было времени задокументировать ее и превратить в автономный инструмент, которым могли бы пользоваться другие люди (группа Яна Хорсвилла в Северо-Западном университете является исключением из этого утверждения – они использовали предсхему).
- Олин Шиверс, «Олин Шиверс: История Т» [8]
Ссылки [ править ]
- ^ Заявление R5RS на сайте проекта.
- ↑ Перейти обратно: Перейти обратно: а б Келси, Ричард; Рис, Джонатан. «Схема 48» . S48.org . Проверено 5 декабря 2018 г.
- ^ Келси, Ричард; Рис, Джонатан; Спербер, Майк (10 января 2008 г.). «Справочное руководство по неполной схеме 48 для версии 1.8: Смешивание схем 48 и C» . S48.org . Проверено 5 декабря 2018 г. , Глава 8 в руководстве для версии 1.8.
- ^ Келси, Ричард; Рис, Джонатан; Спербер, Майк (10 января 2008 г.). «Справочное руководство по неполной схеме 48 для версии 1.8: Регулярные выражения» . S48.org . Проверено 5 декабря 2018 г. , Глава 5 в руководстве для версии 1.8.
- ^ Келси, Ричард; Рис, Джонатан; Спербер, Майк (10 января 2008 г.). «Справочное руководство по неполной схеме 48 для версии 1.8: доступ к POSIX» . S48.org . Проверено 5 декабря 2018 г. , Глава 9 в руководстве для версии 1.8.
- ^ Финальный сдвиг для вызова/cc: прямая реализация сдвига и сброса.
- ^ Рис, Джонатан А. «Схема JAR, 48 страница» . Джонатан А. Рис . Мамбл.нет . Проверено 5 декабря 2018 г.
- ^ Дрожь, Олин. «Олин Шиверс: История Т» . ПолГрэм.com . Проверено 5 декабря 2018 г.