
Полная версия
Сборник языков программирования А-я
83
COOL (Classroom Object Oriented Language) — учебный объектно ориентированный язык, созданный специально для преподавания основ программирования и построения компиляторов. Его часто используют в университетских курсах (например, в курсе компиляторов в UC Berkeley): язык достаточно простой, чтобы студенты могли за семестр написать для него полноценный компилятор, но при этом содержит ключевые концепции ООП — классы, наследование, статическую типизацию, диспетчеризацию методов. В COOL есть автоматическая сборка мусора, строгая система типов и поддержка базовых конструкций для работы с объектами; при этом намеренно ограничен набор возможностей, чтобы не усложнять учебные проекты. Язык не предназначен для промышленной разработки, но служит отличным «полигоном» для освоения принципов трансляции, семантики и архитектуры языков программирования.
84
Coq (кокью, кок) — это система интерактивного доказательства теорем и язык программирования с зависимыми типами, основанная на исчислении индуктивных конструкций (CIC). Разработана во Франции (INRIA) и активно развивается с 1989 года. В Coq математические утверждения формулируются как типы, а доказательства — как термы (соответствие Карри — Говарда); корректность каждого доказательства проверяется автоматически встроенным proof-checker. Основной язык системы — Gallina; для построения доказательств используют тактики (например, intros, apply, rewrite) и специализированный язык Ltac. Coq применяют для формальной верификации ПО (в т. ч. компилятора CompCert), доказательства сложных математических теорем (например, теоремы о четырёх красках) и разработки гарантированно корректных алгоритмов. Система кроссплатформенная, распространяется под лицензией LGPL, имеет среды CoqIDE и интеграцию с VS Code и Emacs.
85
Coral 66 (Computing Online Real time Algorithmic Language) — язык программирования для систем реального времени, разработанный в 1966 году в Royal Radar Establishment (Великобритания) как межвидовой стандарт Министерства обороны страны. Основан на Algol 60 с заимствованиями из JOVIAL и Fortran; ориентирован на встроенные и управляющие системы, где критичны предсказуемость и контроль ресурсов. В языке предусмотрены типы с фиксированной точкой (FIXED), таблицы (TABLE) для структурированных данных, жёсткие ограничения на рекурсию и управление памятью, а также возможность встраивания ассемблерных вставок (CODE). Coral 66 широко применялся в оборонных и промышленных системах Великобритании — в том числе в управлении авиацией, флотом и автоматизацией; стал основой для специализированных диалектов вроде PO CORAL/BT CORAL для телекоммуникаций. Сегодня это исторический язык, важный как пример инженерного подхода к надёжности в эпоху ранних встроенных систем.
86
Curry (карри) — мультипарадигменный язык, объединяющий функциональную и логическую парадигмы. Назван в честь логика Хаскелла Карри (Haskell Curry), чьё имя также связано с изоморфизмом Карри — Говарда, лежащим в основе многих систем типов и доказательств. Язык базируется на идеях Haskell, но добавляет механизмы логического программирования: недетерминизм, поиск с возвратами (backtracking), свободные переменные. В Curry вычисления могут идти как по функциональным правилам (редукция выражений), так и по логическим (поиск решений). Язык используют для задач, где важны декларативное описание и перебор вариантов — например, в задачах планирования, поиске конфигураций, моделировании. Существуют реализации, такие как PAKCS и KiCS2, которые компилируют Curry в Prolog или в код на Haskell.
87
Cyclone (сайклон, циклон) — исследовательский язык программирования, разработанный в Корнеллском университете и AT&T (авторы: Дэн Гроссман, Тревор Джим, Грег Моррисетт) как безопасный диалект C. Его цель — сохранить низкоуровневые возможности и эффективность C, но устранить типичные уязвимости (переполнение буфера, висячие указатели, use after free и др.) за счёт усиленной системы типов и дополнительных проверок. В Cyclone расширена работа с указателями, введены тегированные объединения, кванторные и линейные типы, а также управление памятью на базе регионов. Язык максимально совместим с C по синтаксису и семантике, что упрощает перенос существующего кода. Проект официально закрыт (версия 1.0 вышла в 2006 году), но его идеи существенно повлияли на развитие безопасных системных языков — в частности, на Rust. Распространялся под лицензией GNU GPL v2.
D
88
D — статически типизированный компилируемый мультипарадигменный язык, эволюция C++: сочетает высокую производительность с улучшенной безопасностью и удобством разработки. Поддерживает сборку мусора и ручное управление памятью, встроенные юнит тесты и контракты, модули, метапрограммирование и параллельные вычисления. Применяется в системном программировании, высокопроизводительных бэкендах, играх и мультимедиа; совместим с C библиотеками. Создан Уолтером Брайтом, развивается D Language Foundation; основные компиляторы — DMD, LDC, GDC.
89
Dart — мультипарадигменный язык программирования от Google (2011 г.), сочетает объектно ориентированный, функциональный и императивный подходы. Имеет C подобный синтаксис, статическую типизацию (с Dart 2), поддерживает асинхронность и изоляторы для параллелизма. Компилируется в нативный код или в JavaScript, работает на Dart VM. Ключевая сфера применения — разработка кроссплатформенных мобильных, веб и десктоп приложений с помощью Flutter; также используется для серверной разработки и IoT. Экосистема включает пакетный менеджер pub и среду DartPad для запуска кода в браузере. Создан Ларсом Баком и Каспером Лундом, распространяется по лицензии BSD.
90
Darwine — экспериментальный проект (2002–2009), порт Wine для среды Darwin (основы Mac OS X). Цель — запуск Windows приложений на Mac без виртуализации и установки Windows.
Адаптировал Wine под формат исполняемых файлов Mach O (для PowerPC), позже — под Intel Mac. Включал попытки интеграции с эмулятором QEMU и специальные утилиты вроде WineHelper. В 2009 году проект официально закрыли: наработки влились в основной проект Wine, а для Mac стали использовать отдельные сборки и инструменты вроде WineBottler.
Историческая ценность — демонстрация сложностей кроссплатформенной совместимости на низком уровне и вклад в развитие Wine.
91
DataFlex — объектно ориентированный язык 4 го поколения и среда разработки для бизнес приложений с глубокой интеграцией с базами данных. Появился в конце 1970 х, с 1991 года (версия 3.0) стал объектно ориентированным. Поддерживает работу с Oracle, MS SQL Server, IBM DB2, Pervasive PSQL и любыми СУБД через ODBC. Приложения компилируются под Windows, GNU/Linux и UNIX; код переносится между платформами с минимальной адаптацией. Используется в корпоративных, медицинских и учётных системах. Разрабатывается Data Access Worldwide (современная реализация — Visual DataFlex).
92
Datalog — декларативный язык логического программирования и запросов, подмножество Пролога, ориентированное на работу с дедуктивными базами данных. Появился в конце 1970 х — начале 1980 х годов.
В отличие от Пролога, Datalog не поддерживает функциональные символы — это гарантирует завершение вычислений и делает язык предсказуемым для обработки больших объёмов данных. Программа состоит из фактов (базовые отношения) и правил (выводимые отношения), а вычисления идут по принципу «снизу вверх»: новые факты выводятся итеративно, пока база не стабилизируется.
Ключевая сила Datalog — рекурсивные запросы: например, вычисление транзитивного замыкания (родственные связи, графы зависимостей, иерархии). Язык активно применяют в анализе программ, системах безопасности, обработке графов знаний и интеграции данных. Реализуется в движках вроде Soufflé, LogicBlox, а также в расширениях СУБД.
93
Delphi — объектно ориентированный язык программирования на базе Object Pascal, а также среда быстрой разработки приложений (RAD). Появился в 1995 году как преемник Turbo Pascal; сейчас развивается компанией Embarcadero в составе платформы RAD Studio.
Сочетает строгую статическую типизацию с визуальным проектированием интерфейсов: разработчик размещает компоненты на форме, а язык берёт на себя большую часть шаблонного кода. Поддерживает кросс компиляцию: приложения можно собирать под Windows, macOS, Linux, iOS и Android.
Ключевые особенности: мощная библиотека компонентов (VCL для Windows, FireMonkey для мультиплатформенности), встроенная работа с базами данных (через FireDAC), поддержка нативного кода и интеграция с нативными API целевых платформ. Широко применяется в корпоративных системах, учётных и промышленных приложениях, где важны стабильность и скорость разработки.
94
Dylan — динамический мультипарадигмальный язык программирования (объектно ориентированный, функциональный), созданный в начале 1990 х при участии Apple и Университета Карнеги Меллон. Название расшифровывается как DYnamic LANguage.
Язык сочетает идеи Lisp/CLOS и Smalltalk с алголоподобным синтаксисом: все значения — объекты, поддерживается множественное наследование, именованные параметры, макросы и модульная система. Отличается автоматической сборкой мусора, обработкой исключений и возможностью добавлять статическую типизацию для оптимизации.
Основные реализации — Open Dylan и Gwydion Dylan (open source). Применяется для быстрой разработки гибких систем, где важны расширяемость и динамичность. Исторически задумывался как «промышленный Lisp» с удобным синтаксисом для широкого круга разработчиков.
E
E — объектно ориентированный язык для безопасных распределённых вычислений, создан в 1997 году Марком С. Миллером и командой Electric Communities. Развился из языка Joule и расширений Java для безопасного распределённого программирования.
96
Eiffel (эйфель) — объектно ориентированный язык со статической типизацией (создан Бертраном Мейером в 1986 году). Его главная особенность — контрактное программирование: предусловия (require), постусловия (ensure) и инварианты (invariant) встроены прямо в язык и служат для гарантии корректности кода.
Язык опирается на инженерный подход (отсюда название — в честь Гюстава Эйфеля): все типы — классы, поддерживается множественное наследование с разрешением конфликтов, унифицированный синтаксис вызовов, автоматическая сборка мусора и защита от разыменования пустых ссылок. Компиляторы (например, EiffelStudio) транслируют код в C, а затем в нативный бинарный — так достигается кроссплатформенность.
Применяется в критически важных системах (аэрокосмическая отрасль, финансы, телекоммуникации), где приоритетны надёжность и поддерживаемость.
97
Elixir (эликсир) — функциональный язык с динамической типизацией (создан Жозе Валимом в 2011 году), работает на виртуальной машине Erlang (BEAM). Сочетает лаконичный синтаксис, вдохновлённый Ruby, с мощной моделью параллелизма Erlang: изолированные процессы-акторы общаются через передачу сообщений, обеспечивая высокую отказоустойчивость и масштабируемость.
Поддерживает протоколы для полиморфизма, метапрограммирование с макросами и сопоставление с образцом; конвейеры (|>) делают код выразительным. Полностью совместим с экосистемой Erlang — можно использовать OTP, библиотеки и инструменты Erlang. Основные инструменты: Mix (сборка и управление проектами) и IEx (интерактивная оболочка).
Ключевые фреймворки — Phoenix (веб приложения) и Ecto (работа с БД); также популярны Cowboy, GenStage и Broadway. Применяется в высоконагруженных распределённых системах: мессенджерах, стриминговых сервисах, финтехе, телекоме и IoT — везде, где нужны отказоустойчивость, обработка множества соединений и горизонтальное масштабирование.
98
Elm (элм) — функциональный компилируемый язык для создания надёжных веб интерфейсов, разработан Эваном Чаплицким в 2012 году. Компилируется в оптимизированный JavaScript, ориентирован на декларативное описание UI в функционально реактивном стиле.
Ключевая идея — архитектура Model View Update (MVU): состояние (Model) меняется только через явные сообщения (Msg) в функции Update, а интерфейс (View) строго выводится из состояния — это исключает целый класс ошибок. Язык со строгой статической типизацией и «без Null»: отсутствие значений null и исключений в рантайме заметно повышает предсказуемость кода.
Экосистема включает пакетный менеджер, инструменты вроде elm-reactor и elm-test, а также обширную коллекцию библиотек на elm-lang.org. Elm применяют для сложных SPA, панелей управления и интерактивных дашбордов, где критичны стабильность, понятная архитектура и удобство поддержки.
99
Emacs Lisp (Elisp, элисп)— диалект языка Lisp, служащий основным языком расширения и настройки текстового редактора GNU Emacs. Появился в 1980 х годах как инструмент для гибкой кастомизации редактора: сегодня на Elisp написана значительная часть самого Emacs.
Это динамически типизированный язык с префиксной нотацией и S выражениями; использует лексическую либо динамическую область видимости (настраивается). Ключевая особенность — тесная интеграция с внутренней моделью Emacs: работа с буферами, окнами, фреймами, режимами и событиями встроена прямо в язык. Поддерживает макросы, замыкания, функции как объекты первого класса; активно применяются «хуки» (hooks) — списки функций для реакции на события.
Язык используют для создания режимов редактирования, автоматизации задач в редакторе, написания утилит и даже небольших приложений внутри Emacs. Распространённые примеры — режимы для разных языков программирования, инструменты рефакторинга, интеграции с системами контроля версий и сборки.
100
Erlang (Эрланг) — функциональный язык программирования, созданный в компании Ericsson в 1986 году Джо Армстронгом и коллегами для построения высоконадёжных распределённых систем реального времени. Изначально применялся в телекоммуникационном оборудовании, где критичны непрерывная работа и отказоустойчивость.
Ключевая особенность — модель легковесных процессов (акторов), которые изолированы и взаимодействуют через асинхронную передачу сообщений: на одной машине могут одновременно работать сотни тысяч или миллионы процессов. Отказоустойчивость строится по принципу «let it crash»: сбойный процесс перезапускается супервизором, не ломая всю систему. В составе языка — фреймворк OTP (Open Telecom Platform) с готовыми шаблонами (GenServer, Supervisor и др.) для построения надёжных приложений.
Erlang поддерживает горячую замену кода — обновление без остановки сервиса, что важно для систем с нулевым простоем. Язык динамически типизирован, активно использует сопоставление с образцом, рекурсию и неизменяемые данные. Применяется в мессенджерах, телекоме, брокерских системах, высоконагруженных бэкендах (например, в WhatsApp на ранних этапах, RabbitMQ, Riak).
101
Euler (ойлер) — язык программирования, созданный Никлаусом Виртом и Гельмутом Вебером в 1965 году как обобщение и развитие ALGOL 60. Задумывался как более гибкий и простой инструмент, сохраняющий строгую формальность описания, при этом позволяющий эффективнее обрабатывать данные.
Ключевая особенность Euler — расширенная модель типов и динамическая типизация: процедуры могут возвращать значения разных типов, а элементы списков — быть разнородными (в том числе содержать процедуры или другие списки), что позволяло строить древовидные структуры и гибкие абстракции, недоступные в ALGOL 60. Язык ввёл операторы тестирования и преобразования типов, сделав работу с разнотипными данными управляемой.
Euler оказал заметное влияние на эволюцию языков программирования: многие идеи (гибкие структуры данных, динамические типы, формализованная семантика) позже нашли отражение в последующих работах Вирта, включая Pascal. Хотя сегодня Euler не используется в промышленности, он остаётся важным историческим этапом в поиске баланса между строгостью, выразительностью и практической эффективностью языков.
102
Euphoria (юфория) — процедурный императивный язык программирования общего назначения, созданный Робертом Крейгом и выпущенный в 1993 году; с 2006 года развивается сообществом OpenEuphoria как открытый проект. Задумывался как простой и производительный инструмент для быстрой разработки приложений и удобной работы с динамическими данными.
Главная особенность — минималистичная система типов: в языке всего четыре базовых типа, а основной структурой данных выступает динамический «ряд» (sequence), который может содержать элементы разных типов, в том числе вложенные ряды. Это позволяет легко моделировать списки, деревья, таблицы и другие структуры без сложных объявлений. Память управляется автоматически (счётчик ссылок с обработкой циклов), а выход за границы массивов контролируется на уровне среды выполнения.
Euphoria — интерпретируемый язык, но поддерживает трансляцию кода в C с последующей компиляцией в исполняемый файл или библиотеку, а также упаковку с интерпретатором для распространения готовых приложений. Язык применяют для прототипирования, обработки строк и изображений, учебных проектов, небольших утилит и экспериментов (в том числе в области ИИ и генерации шрифтов).
F
103
F#(Эф ша́рп)— мультипарадигмальный язык программирования для платформы .NET, сочетающий функциональную, императивную и объектно ориентированную парадигмы. Появился в 2005 году в Microsoft Research под руководством Дона Сайма; берёт корни из OCaml, но адаптирован под экосистему .NET.
В F# приоритет отдаётся функциональному стилю: неизменяемые данные, чистые функции, сопоставление с образцом, вывод типов и выражения вместо инструкций. Язык поддерживает хвостовую рекурсию, дискриминируемые объединения и записи, что удобно для моделирования предметных областей.
F# тесно интегрирован с .NET: можно напрямую использовать библиотеки C# и VB.NET, а код компилируется в MSIL и работает на CLR. Применяется в финтехе, анализе данных, научных расчётах и в проектах, где важны надёжность и выразительность. Сообщество сравнительно небольшое, но язык ценят за лаконичность и строгую систему типов — он хорошо подходит для задач, где критичны корректность и поддерживаемость кода.
104
Factor (Фэ́ктор)— конкатенативный, стековый язык программирования, созданный Славой Пестовым; активная разработка ведётся с 2003 года. Его основа — манипуляции с данными через стек и постфиксная нотация (по типу обратной польской записи): операции следуют за операндами, а композиция функций происходит без скобок, за счёт порядка слов («words»).
Язык сочетает низкоуровневый контроль с высокоуровневыми возможностями: поддерживает динамическую типизацию, макросы, метапрограммирование, рефлексию и мощную стандартную библиотеку. Важная черта — интерактивная среда разработки (REPL) с живой документацией и возможностью интроспекции, что сближает Factor с Lisp и Smalltalk.
Factor вдохновлён Forth, но делает стек программирование удобнее: добавляет цитаты (анонимные функции), комбинаторы и структурированные абстракции. Применяется для экспериментов с языковыми моделями, прототипирования и изучения конкатенативной парадигмы. Несмотря на узкую нишу и небольшое сообщество, Factor остаётся одним из самых проработанных стековых языков с компилятором и кроссплатформенной поддержкой.
105
Falcon (Фо́лкон)— динамический мультипарадигмальный язык программирования (процедурный, объектно ориентированный, функциональный), созданный в 2003 году; распространяется под лицензией GPL. Его философия — простота и гибкость: синтаксис интуитивно понятен, а возможности позволяют выбирать стиль под задачу.
Falcon поддерживает несколько моделей исполнения: от классического интерпретатора до JIT компиляции, что даёт баланс между удобством разработки и производительностью. В языке реализованы генераторы, замыкания, функции первого класса, а также удобная работа с коллекциями и итераторами. Важная особенность — встроенная поддержка встраивания в другие приложения: Falcon можно использовать как скриптовый движок внутри крупных систем.
На развитие повлияли Perl, Smalltalk и PHP, но Falcon выстроил собственный подход к объектной модели и управлению памятью. Хотя сегодня язык малораспространён, он остаётся интересным примером универсального скриптового инструмента с акцентом на встраиваемость и мультипарадигмность.
106
Forth (Форс) — стековый, конкатенативный язык программирования, созданный Чарльзом Муром в начале 1970 х годов; изначально задумывался как инструмент для управления астрономическим оборудованием. Его ядро предельно компактно: базовую систему можно реализовать за считаные килобайты, что сделало Forth популярным во встраиваемых системах и на микроконтроллерах.
Основа языка — работа со стеком и постфиксная нотация (обратная польская запись): операции следуют за операндами, а программы строятся как последовательности «слов» (определений), которые расширяют сам язык. Forth сочетает интерпретацию и компиляцию: код может исполняться пошагово или компилироваться в машинные инструкции, включая целевую компиляцию под конкретную архитектуру.
Важная черта — высокая расширяемость: программист фактически создаёт собственный проблемно ориентированный язык поверх базового ядра. Исторически Forth применялся в управлении спутниками, робототехнике, системах реального времени; повлиял на PostScript, а современные диалекты (например, colorForth) исследуют энергоэффективные архитектуры.
107
Fortran (Фортран) — первый массово используемый язык программирования высокого уровня, создан в 1957 году группой Джона Бэкуса в IBM. Изначально предназначался для автоматизации инженерных и научных расчётов: его синтаксис делали максимально близким к математическим формулам, чтобы физикам и инженерам не приходилось писать на ассемблере.
На протяжении десятилетий Fortran был стандартом для суперкомпьютеров и численного моделирования. Язык славится высокой производительностью при работе с массивами и математикой, а современные стандарты (Fortran 2018, Fortran 2023) добавили модули, объектно ориентированные возможности и средства параллелизма (например, Coarrays).
Fortran сохраняет актуальность в метеорологии, физике, вычислительной химии и других областях, где критична скорость расчётов. Огромное наследие кода и специализированные библиотеки (в том числе для линейной алгебры и дифференциальных уравнений) делают переход с него экономически невыгодным.
108
FoxPro (Фокс Про ) — диалект семейства xBase, изначально разработанный Fox Software, позже развивавшийся в составе Microsoft Visual FoxPro. Язык ориентирован на создание приложений для работы с базами данных: он сочетает процедурный стиль, SQL запросы и средства быстрой разработки форм и отчётов. В Visual FoxPro добавили объектно ориентированные возможности, сделав язык пригодным для более сложных бизнес приложений.
Исторически FoxPro конкурировал с dBase и Clipper и был популярен в 1990 х — начале 2000 х для файл серверных СУБД и корпоративных систем. Его сильные стороны — тесная интеграция с таблицами данных, богатый набор встроенных функций для обработки записей и удобные инструменты прототипирования. Поддержка Microsoft была прекращена в 2015 году, и сегодня язык считается устаревшим, хотя в ряде легаси систем по прежнему используется.
109
Frink (Фринк) — мультипарадигмальный язык (императивный, функциональный, объектно ориентированный), созданный Аланом Элиасеном и впервые представленный в 2001 году. Его главная особенность — встроенная работа с физическими единицами измерения: язык отслеживает размерности на протяжении всех вычислений, автоматически конвертирует единицы и предотвращает сложение величин с несовместимыми размерностями (например, метров и килограммов).
Frink поддерживает интервальную арифметику, вычисления с произвольной точностью, работу с датами, валютами, научными константами и сложными составными единицами. Синтаксис приближен к естественной математической записи: пробел трактуется как умножение, а преобразования единиц задаются оператором ->. Язык работает на JVM, пригоден и для интерактивных расчётов, и для написания скриптов, и как встраиваемый вычислительный движок.
Frink востребован в инженерных, физических и образовательных задачах, где критично сохранять семантику измерений.
G
110
Gambas (гамбас) — объектно ориентированный язык и среда разработки для Linux, созданный Бенуа Минисини в 1999 году. Позиционируется как аналог Visual Basic для UNIX систем: позволяет быстро создавать графические приложения с GUI, работать с базами данных и сетью. Синтаксис близок к BASIC, что делает язык удобным для новичков и быстрой разработки утилит.
Ключевые особенности: встроенная поддержка Qt и GTK для интерфейсов, прямой доступ к библиотекам Linux, работа с MySQL, PostgreSQL и SQLite «из коробки», наличие IDE с визуальным редактором форм. Язык интерпретируемый, но проекты можно распространять как исполняемые файлы. Применяется для создания небольших десктопных приложений, инструментов администрирования, обучающих программ и прототипов под Linux.




