Схема 48 - Scheme 48

Схема 48
ПарадигмыМульти: функциональный, процедурный, мета
СемьяЛисп
РазработаноРичард Келси,
Джонатан Рис
РазработчикиРичард Келси,
Джонатан Рис
Впервые появилсяМарт 1987 г.; 33 года назад (1987-03)
Стабильный выпуск
1.9.2 / 12 апреля 2014 г.; 6 лет назад (2014-04-12)
Печатная дисциплинаДинамический, сильный, Скрытый
ОбъемЛексический
Операционные системыКроссплатформенность
ЛицензияBSD
Интернет сайтs48.org

Схема 48 это язык программирования, а диалект языка Схема, реализация с использованием переводчик который излучает байт-код.[1] Оно имеет интерфейс внешней функции для звонка функции с языка C[2] и поставляется с библиотека для обычные выражения (регулярное выражение),[3] и интерфейс для интерфейса переносимой операционной системы (POSIX ).[4] Поддерживается переносимой библиотекой Scheme. SLIB, и является основой оболочки Scheme Scsh.[1] Он использовался в академических исследованиях.[5] это бесплатное программное обеспечение с открытым исходным кодом выпущен под BSD лицензия.

Она называется «Схема 48», потому что первая версия была написана за 48 часов в августе 1986 года.[6] Авторы сейчас[когда? ] говорят, что его нужно понять через 48 часов.[нужна цитата ]

Реализация

На схеме 48 используется виртуальная машина интерпретировать байт-код, который написан на ограниченном диалекте Scheme под названием PreScheme, который может быть переведен на C и скомпилирован в собственный двоичный файл. PreScheme, или Pre-Scheme, представляет собой статически типизированный диалект Scheme с эффективностью и низкоуровневым машинным доступом C, сохраняя при этом многие из желаемых функций Scheme.

Предварительная схема была довольно интересной. Келси, как мне кажется, тоже опубликовала об этом статью. Это была Scheme в том смысле, что вы могли загрузить ее в систему Scheme и запустить код. Но это было ограничительно - это требовало, чтобы вы писали так, чтобы разрешить полный статический вывод типа Хиндли-Милнера, и все процедуры более высокого порядка были заменены бета-версией во время компиляции, что означало, что вы могли * прямо * преобразовать программу предварительной схемы в " естественный "код на языке C с эффективностью на уровне C. То есть вы можете рассматривать предварительную схему как действительно приятную альтернативу C для низкоуровневого кода. И вы могли отлаживать свои программы предварительной схемы в интерактивной среде разработки схемы по вашему выбору, прежде чем щелкнуть переключатель и перевести в код C, потому что предварительная схема была просто схемой с ограничениями. Интерпретатор 48-байтового кода Scheme был написан заранее. Прешем вроде как умер - помимо академической статьи, которую он написал, у Келси никогда не было времени задокументировать ее и превратить в отдельный инструмент, который могли бы использовать другие люди (группа Яна Хорсвилла в Северо-Западном является исключением из этого утверждения - они использовали предварительную схему

— Олин Шиверс, "Олин Шиверс: История Т"[7]

использованная литература

  1. ^ а б Келси, Ричард; Рис, Джонатан. «Схема 48». S48.org. Получено 2018-12-05.
  2. ^ Келси, Ричард; Рис, Джонатан; Спербер, Майк (10 января 2008 г.). "Справочное руководство по неполной схеме 48 для версии 1.8: Схема смешения 48 и C". S48.org. Получено 2018-12-05., Глава 8 в руководстве для версии 1.8.
  3. ^ Келси, Ричард; Рис, Джонатан; Спербер, Майк (10 января 2008 г.). «Справочное руководство по неполной схеме 48 для выпуска 1.8: регулярные выражения». S48.org. Получено 2018-12-05., Глава 5 в руководстве для версии 1.8.
  4. ^ Келси, Ричард; Рис, Джонатан; Спербер, Майк (10 января 2008 г.). "Неполная схема 48 Справочное руководство для версии 1.8: Доступ к POSIX". S48.org. Получено 2018-12-05., Глава 9 в руководстве для версии 1.8.
  5. ^ Последняя смена для вызова / cc: прямая реализация сдвига и сброса
  6. ^ Рис, Джонатан А. "Схема 48 Страница JAR". Джонатан А. Рис. Mumble.net. Получено 2018-12-05.
  7. ^ Дрожит, Олин. "Олин Дрожь: История Т". PaulGraham.com. Получено 2018-12-05.

внешние ссылки