Scheme

Scheme – это диалект языка Lisp, который был разработан в конце 1970-х годов. Он является функциональным языком программирования, который широко используется в образовании и исследованиях. Scheme отличается простым синтаксисом, мощной системой макросов и динамической типизацией. Он поддерживает рекурсивные функции, лямбда-выражения, замыкания и другие функциональные возможности. Scheme также имеет встроенную поддержку многопоточности и объектно-ориентированного программирования.

Обладает минималистичным дизайном, содержит минимум примитивных конструкций и позволяет выразить всё необходимое путём надстройки над ними. Например, использует всего два механизма организации циклов — хвостовую рекурсию и итеративный подход (в котором используются временные переменные для сохранения промежуточного результата).

Язык начинался с попытки реализовать модель акторов Карла Хьюитта, для чего Стил и Сассман написали «крошечный интерпретатор Лиспа», а затем «добавили механизм создания акторов и посылки сообщений». Scheme стал первым диалектом Лиспа, применяющим исключительно статические (а не динамические) области видимости переменных, что гарантировало оптимизацию хвостовой рекурсии и обеспечило поддержку булевского типа (#t и #f вместо традиционных T и NIL). Также стал одним из первых языков с поддержкой продолжений. Начиная со спецификации R⁵RS, язык приобрёл средство для записи макросов на основе шаблонов синтаксического преобразования с «соблюдением гигиены». Предусматривается «сборка мусора» (автоматическое освобождение памяти от неиспользуемых более объектов).

В качестве базовых структур данных язык использует списки и одномерные массивы («векторы»). В соответствии с декларируемым минимализмом, (пока) нет стандартного синтаксиса для поддержки структур с именованными полями, а также средств ООП — все это может быть реализовано программистом по его предпочтению, хотя большинство реализаций языка предлагают готовые механизмы.

Для применения машинного обучения и языка Scheme вместе, можно воспользоваться готовой библиотекой для машинного обучения, написанной на Scheme или имеющей интерфейс для работы с языком Scheme. Например, можно использовать библиотеку Kawa, которая предоставляет язык Scheme для JVM и поддерживает работу с библиотеками машинного обучения на Java, такие как Weka или Deeplearning4j.
Другой способ – использовать библиотеку Scheme для работы с данными и предварительной обработки данных перед их обработкой алгоритмами машинного обучения. Например, можно использовать библиотеку SRFI-13 для работы с данными в Scheme и затем передать их в  машинное обучение для дальнейшей обработки.
Также можно написать собственные алгоритмы машинного обучения на Scheme, используя математические и статистические функции языка. В этом случае необходимо иметь понимание основных принципов машинного обучения и умение применять их на языке Scheme.
Кроме того, можно использовать библиотеки или фреймворки, которые предоставляют интерфейсы для работы с машинным обучением на других языках программирования, такие как Python или R, и взаимодействовать с ними из программ на Scheme, например, через вызовы API или использование библиотек для взаимодействия между языками программирования.

Основными реализациями Scheme в настоящее время являются:

  1. GNU Guile — язык расширений проекта GNU — интерпретатор Scheme, реализованный как библиотека, позволяющая приложениям создавать внутренний интерпретатор Scheme.
  2. Язык Racket изначально являлся реализацией Scheme (первое наименование — PLT Scheme).
  3. MIT Scheme — свободная (GPL) реализация для платформы x86 под LinuxFreeBSD, IBM OS/2, и Win32.
  4. Chicken Scheme — интерпретатор, поддерживающий трансляцию в Си.
  5. JScheme — интерпретатор, написанный на Java;
  6. Kawa — компилятор Scheme в байт-код JVM.
  7. Компилятор Chez Scheme длительное время поставлялся как коммерческий продукт, с 2016 года стал свободно распространяемым (Apache).

Всего существует очень большое количество реализаций языка для самых разных платформ, в частности, есть интерпретатор Armpit Scheme для микроконтроллеров на базе архитектуры ARM.

Обсуждение закрыто.