
Полная версия
Сборник языков программирования А-я
111
Genie (джини) — язык программирования, созданный как более современный и лаконичный синтаксис для платформы Vala: он транслируется в код Vala, а затем компилируется в C. Появился в рамках экосистемы GNOME как инструмент для удобной разработки приложений под Linux с использованием библиотек GTK.
Ключевые особенности: упрощённый синтаксис (меньше бойлерплейта по сравнению с Vala), строгая типизация, прямой доступ к GObject системе и богатым API GNOME/GTK, высокая производительность за счёт компиляции в нативный код. Язык используют для создания графических приложений под Linux, прототипирования UI, инструментов администрирования и утилит, где важны скорость разработки и нативная интеграция с окружением GNOME.
112
Gherkin (геркин) — человекочитаемый язык спецификаций для поведенческой разработки (BDD), предназначенный для описания ожидаемого поведения ПО в понятной бизнесу форме. Не является языком общего назначения: это DSL (предметно ориентированный язык) со строгой структурой на базе ключевых слов (Feature, Scenario, Given, When, Then и др.).
Главная цель Gherkin — создать «исполняемую документацию»: сценарии на нём одновременно служат и спецификацией, и автотестами (чаще всего через фреймворк Cucumber). Язык поддерживает параметризацию (Scenario Outline) и таблицы данных, а также мультиязычность — одни и те же ключевые слова работают на десятках языков, включая русский. Применяется в Agile командах, чтобы синхронизировать понимание требований у разработчиков, тестировщиков и заказчиков.
113
GLSL (от OpenGL Shading Language, Джи-эл-эс-эл) — специализированный язык для написания шейдеров, предназначенный для выполнения на GPU в рамках графического конвейера OpenGL (и OpenGL ES / WebGL). Синтаксически близок к C, но заточен под работу с графикой: имеет встроенные векторные и матричные типы (vec2/3/4, mat2/3/4) и функции для расчётов освещения, текстур и трансформаций.
Поддерживает разные типы шейдеров: вершинные (обработка геометрии), фрагментные (расчёт цвета пикселей), геометрические и вычислительные. Код GLSL компилируется драйвером видеокарты и исполняется параллельно на тысячах потоков. Применяется в играх, 3D приложениях, визуализациях и спецэффектах — везде, где нужен низкоуровневый контроль над рендерингом и высокая производительность графики.
114
Go (он же Golang; произносится «Го» или «Гоу») — компилируемый язык программирования со строгой статической типизацией, разработанный в Google (Роб Пайк, Кен Томпсон, Роберт Гризмер) и выпущенный в 2009 году. Создавался как практичный инструмент для быстрой разработки надёжных и эффективных систем — с упором на простоту, читаемость кода и сильную поддержку конкурентности.
Ключевые особенности: лаконичный синтаксис (в духе C, но без избыточности), автоматическое управление памятью (сборщик мусора), встроенная модель конкурентности через горутины и каналы, чёткая система пакетов и развитый инструментарий (go build, go test, go mod). Язык отличается быстрой компиляцией и предсказуемым поведением — это удобно для непрерывной интеграции и частых деплоев.
Go активно используют для бэкенд сервисов, микросервисов, облачных и сетевых приложений, CLI утилит, инструментов DevOps и высоконагруженных распределённых систем. На нём построены многие популярные проекты (например, Docker, Kubernetes), где важны масштабируемость, скорость сборки и стабильность в продакшене.
115
GNU Octave (Гну Октав) — свободная среда и язык для численных вычислений, часть проекта GNU (лицензия GPL). Запущен Джоном Итоном в 1992 году как открытая альтернатива MATLAB: синтаксис и большая часть функций максимально совместимы — многие скрипты MATLAB работают в Octave почти без изменений.
Основа языка — матричная арифметика; есть встроенные средства для решения дифференциальных уравнений, задач оптимизации и линейной алгебры, а также 2D и 3D визуализация (через gnuplot или OpenGL). Поддерживает скрипты (.m), интерактивную работу в CLI и GUI, расширяемость через пакеты и внешние модули (в том числе на C++).
Применяют в научных исследованиях, инженерном моделировании, образовании и прототипировании алгоритмов — везде, где нужны мощные численные расчёты без проприетарного ПО.
116
Groovy (Груви) — объектно ориентированный язык программирования для платформы JVM, разработанный как более лаконичная и гибкая альтернатива Java. Появился в 2003 году, сейчас развивается под эгидой Apache Software Foundation.
Главная особенность — полная двусторонняя совместимость с Java: почти любой Java код валиден в Groovy, можно свободно смешивать классы и библиотеки обоих языков. При этом Groovy добавляет возможности, которых нет в Java: динамическую типизацию, замыкания, перегрузку операторов, удобные литералы для списков и карт, GStrings (строки с интерполяцией), а также средства метапрограммирования и DSL конструкции.
Поддерживает как статическую, так и динамическую компиляцию в байт код JVM. Язык активно используют для написания скриптов, автоматизации сборки (например, в Gradle), тестирования (Spock, Geb), создания веб приложений (фреймворк Grails) и прототипирования бизнес логики — везде, где нужна высокая продуктивность и тесная интеграция с Java экосистемой.
H
117
Haskell (Ха́скел ) — чистый функциональный язык программирования, стандартизованный в 1998 году; назван в честь Хаскелла Карри, чьи работы легли в основу теории типов и комбинаторной логики. Его ключевые черты — ленивые вычисления, строгая статическая типизация с автоматическим выводом типов (система Хиндли — Милнера) и отсутствие побочных эффектов: ввод вывод реализуется через монады, сохраняя чистоту функций.
Язык поддерживает алгебраические типы данных, сопоставление с образцом, полиморфизм и мощные абстракции для работы со структурами и параллелизмом. Основная реализация — компилятор GHC (Glasgow Haskell Compiler), который генерирует высокопроизводительный код и включает расширения для практического применения.
Haskell используют в компиляторах, финансовых системах, формальной верификации и обработке данных, где критичны надёжность и предсказуемость. Он служит полигоном для идей, позже проникающих в другие языки, и остаётся важным инструментом как в индустрии, так и в академической среде.
118
HLSL (Эйч Эл Эс Эл) — C подобный язык программирования шейдеров, разработанный Microsoft для работы с Direct3D (начиная с DirectX 9). Он позволяет описывать поведение вершинных, пиксельных, геометрических, тесселяционных и вычислительных шейдеров — то есть напрямую управлять этапами графического конвейера на GPU.
В HLSL активно используются векторные и матричные типы (float2, float3, float4, матрицы), семантики для передачи данных между этапами конвейера, а также встроенные функции для текстур, математических операций и работы с нормалями. Язык поддерживает циклы, ветвления, функции и константные буферы (cbuffer) для передачи параметров из приложения.
HLSL применяется в играх, профессиональной 3D графике и визуальных эффектах; используется в движках (Unity, Unreal — через вставки), инструментах отладки (RenderDoc, PIX) и редакторах шейдеров. Благодаря близости к C и мощной поддержке векторных операций он остаётся стандартом для DirectX экосистемы.
119
Harbour (Ха́рбор) — кроссплатформенный компилятор и язык семейства xBase, созданный как развитие Clipper; проект стартовал в 1999 году, активно поддерживается сообществом. Он полностью совместим с кодом Clipper и расширяет его: поддерживает объектно ориентированные конструкции, CodeBlocks (анонимные функции), хэши, расширенные RDD (Replaceable Database Drivers) для работы с разными форматами БД, включая DBF, SQL и сетевые источники.
Harbour компилирует код в C файлы, которые затем собираются любым C компилятором, обеспечивая высокую производительность и переносимость между Windows, Linux, macOS и другими ОС. Язык сочетает процедурный стиль с современными абстракциями, позволяет встраивать C код и использовать обширные библиотеки (криптография, графика, сети).
Применяется для поддержки и развития легаси систем на базе xBase, создания бизнес приложений и инструментов работы с данными.
120
Hope (Хоуп) — экспериментальный функциональный язык программирования, разработанный в Эдинбургском университете в конце 1970 х годов (авторы: Р. М. Бёрсталл, Д. Б. Маккуин и Д. Т. Санелла). Он стал одним из первых языков, где алгебраические типы данных и сопоставление с образцом были доведены до системной основы, а порядок уравнений не влиял на семантику — система выбирала наиболее специфичное правило.
Hope поддерживал полиморфную типизацию с явными объявлениями, ленивые списки и модель вычислений по образцу (call by pattern). Язык задумывался как исследовательская платформа для формальных методов и аппликативного программирования. Он оказал заметное влияние на развитие Miranda и затем Haskell, фактически заложив часть их концептуальной базы.
Сегодня Hope не используется в индустрии, но остаётся важным историческим примером: он показал, как можно строить выразительные функциональные системы с чёткими математическими основаниями.
121
HyperTalk (ХайперТо́к) — скриптовый язык, созданный Дэном Винклером в 1987 году как основа среды HyperCard от Apple; ориентирован на непрофессиональных разработчиков («авторов»), поэтому синтаксис намеренно приближён к естественному английскому. Команды вроде put 5 into result или обработчики событий on mouseUp делают скрипты понятными без специальной подготовки.
Язык процедурный, слабо типизированный: типы преобразуются автоматически, переменные создаются «на лету», а логика строится на обработке событий (клики, переходы между карточками) и передаче сообщений между объектами (кнопки, поля, карточки, стеки). HyperTalk поддерживает циклы, условия, списки (как строки с разделителями) и внешние расширения (XCMD/XFCN) для вызова машинного кода.
HyperCard и HyperTalk стали одними из первых инструментов для создания гипермедиа и интерактивных приложений; они повлияли на развитие скриптовых языков (AppleScript, ранние версии ActionScript) и популяризировали идею «программирования для всех». Сегодня язык устарел, но остаётся важной вехой в истории пользовательских интерфейсов и визуальной разработки.
I
122
Icon (А́йкон) — динамический мультипарадигмальный язык, созданный Ральфом Гризволдом в 1977 году как наследник SNOBOL; первая версия вышла в 1978 м. Его главная инновация — целенаправленная (goal directed) модель вычислений с бэктрекингом: выражения могут «проваливаться» и автоматически пробовать другие варианты, что радикально упрощает перебор и поиск решений.
В Icon встроены генераторы и совыражения (co expressions) для псевдопараллелизма, а также мощные средства работы с текстом: сканирование строк, сопоставление шаблонов и гибкая обработка последовательностей. Структуры данных — списки, таблицы, множества, записи; типизация динамическая, управление памятью автоматическое.
Язык ориентирован на быстрое прототипирование, обработку текстов, лингвистические задачи и комбинаторный поиск. На его основе позже создали Unicon — расширенную версию для современных задач. Icon остаётся исторически важным примером альтернативной семантики управления потоком и эталонным инструментом для задач, где естественнее описывать «что искать», а не «как перебирать».
123
Idris (А́йдрис) — чисто функциональный язык с зависимыми типами, созданный Эдвином Брейди; первая версия появилась в 2007 году, сейчас активно развивается Idris 2. Его философия — type driven development: тип задаёт «план» программы, а компилятор помогает собрать реализацию, гарантируя корректность по построению.
Ключевая особенность — зависимые типы, где значения влияют на типы (например, вектор с известной длиной Vect n a): это позволяет кодировать инварианты прямо в сигнатурах и проверять их на этапе компиляции. Idris поддерживает проверку тотальности функций (чтобы исключить неконтролируемые зацикливания), линейные типы (в Idris 2) и интерактивную разработку с «дырами» (holes) для пошагового построения доказательств.
Язык сочетает возможности proof assistant (вроде Coq или Agda) с практическими инструментами: компиляцией в C, Scheme, JavaScript, поддержкой IO через монадную модель и интерфейсами вместо классов. Применяется для верифицированных протоколов, безопасных DSL, драйверов и исследований надёжного программирования.
124
Inform (Инфо́рм) — специализированный язык для создания интерактивной художественной литературы (interactive fiction), разработанный Грэмом Нельсоном. Первая версия появилась в 1993 году; наиболее известна Inform 7, где синтаксис приближён к естественному английскому: код выглядит почти как литературный текст, но строго регламентирован и компилируется в исполняемую историю.
В основе — объектная модель мира: комнаты, предметы, персонажи и их свойства; действия игрока (например, «взять ключ», «открыть дверь») обрабатываются встроенным парсером, а логика задаётся правилами, которые срабатывают при определённых условиях. Inform 7 транслируется в Inform 6 (C подобный низкоуровневый язык), а затем в байт код для виртуальных машин Z machine или Glulx — это обеспечивает кроссплатформенность и совместимость с десятками интерпретаторов.
Язык сочетает декларативный стиль с мощной библиотекой стандартных правил: разработчик описывает мир и исключения, а базовая механика (перемещение, инвентарь, разбор команд) берётся из библиотеки. Inform остаётся главным инструментом для современных текстовых адвенчур и parser игр.
125
Io (А́йо) — минималистичный, полностью объектно ориентированный язык с прототипной моделью наследования, созданный Стивом Декорте в начале 2000 х. В нём всего две базовые сущности: объекты и сообщения — всё остальное строится на их комбинации. Классов нет: объекты клонируются, а поведение меняется динамически, что делает язык мощным инструментом для прототипирования, встраиваемых скриптов и экспериментов с метапрограммированием.
Io поддерживает анонимные функции, сопрограммы, гибкое изменение структуры объектов в рантайме и крайне лаконичный синтаксис: практически любая конструкция сводится к отправке сообщения объекту. Язык проектировался с упором на простоту реализации и лёгкость встраивания в другие системы; на его базе, например, был создан язык It, использовавшийся в Pixar.
Сегодня Io остаётся нишевым, но ценным примером «дзен минимализма» в ООП: он показывает, как можно выразить сложную семантику малым числом примитивов.
126
ISWIM (А́йсвим) — теоретический язык программирования, описанный Питером Лэндином в 1966 году как «синтаксически сахарированное» лямбда исчисление с императивными возможностями. Он не получил полноценной промышленной реализации, но стал фундаментальной моделью для развития функциональных языков. В ISWIM впервые системно использованы конструкции let и where, алгебраические типы данных (как суммы произведений), лексическая область видимости и J оператор для работы с продолжениями.
Семантика языка опиралась на SECD машину (стек, окружение, код, дамп) и строгую стратегию вычислений (call by value). Синтаксис строился без явных разделителей блоков — вместо них использовалось выравнивание (off side rule), приближая код к математической нотации. ISWIM повлиял на ML, SASL, Miranda и Haskell: именно оттуда пришли вывод типов, алгебраические типы, сопоставление с образцом и общая философия type driven подхода.
J
127
J (джей) — функциональный векторный язык программирования, разработанный Кеннетом Айверсоном и Роджером Хуэем в начале 1990 х как ASCII диалект APL: он сохраняет мощную массивовую семантику APL, но обходится без спецсимволов — всё строится на комбинациях обычных ASCII знаков. В J всё является массивом: скаляры — это нульмерные массивы, строки — векторы символов; язык ориентирован на обработку многомерных данных, статистику и численные расчёты.
Синтаксис J опирается на «части речи»: существительные (данные), глаголы (функции), наречия и союзы (модификаторы). Вычисления идут справа налево, приоритеты операций отсутствуют, а лаконичность достигается за счёт композиционного стиля: например, среднее значение записывается как +/%#. Язык поддерживает молчаливое (tacit) программирование — функции без явного указания аргументов.
J применяют в финансовой аналитике, обработке данных, исследовательском программировании и прототипировании сложных вычислений.
128
Jacquard cards (карты Жаккара) — прообраз программируемых носителей данных: отверстия в картоне кодировали, какие нити основы поднимать при каждом проходе челнока, формируя сложный узор автоматически. Карты нанизывали на иглы или связывали в непрерывную ленту — так станок «исполнял программу» плетения. Система радикально упростила производство тканей с рисунком (дамаст, парча): вместо ручного управления каждой нитью достаточно было сменить набор карт.
Исторически карты Жаккара считаются важнейшим предвестником вычислительной техники: принцип «данные в виде отверстий = инструкции машине» напрямую вдохновил Чарльза Бэббиджа (перфокарты для Аналитической машины) и позже индустрию табуляторов и ранних компьютеров (IBM). В текстильной промышленности механизм до сих пор применяется в усовершенствованном виде.
129
Java (Джа́ва) — объектно ориентированный язык программирования, выпущенный Sun Microsystems в 1995 году (ныне развивается под эгидой Oracle и сообществом OpenJDK). Его ключевая идея — «Write Once, Run Anywhere»: код компилируется в байт код и исполняется на любой платформе с JVM (Java Virtual Machine), обеспечивая кроссплатформенность.
Язык отличается строгой статической типизацией, автоматическим управлением памятью (сборкой мусора) и встроенной поддержкой многопоточности. Богатая стандартная библиотека и развитая экосистема (Spring, Jakarta EE, Hibernate) делают Java стандартом для корпоративных систем, бэкенд сервисов и Android разработки (до широкого распространения Kotlin).
Java повлиял на синтаксис и парадигмы множества языков, популяризировав ООП и концепцию переносимой виртуальной машины.
130
JavaScript (ДжаваСкри́пт) — мультипарадигменный язык сценариев, созданный Бренданом Айком в 1995 году в Netscape; сегодня это практическая реализация стандарта ECMAScript(ECMA 262). Изначально предназначался для придания интерактивности веб страницам, а сейчас охватывает фронтенд, бэкенд (Node.js, Deno), мобильные и десктоп приложения, скрипты и даже части компиляторных тулчейнов.
Ключевые особенности: динамическая типизация, прототипное наследование, событийно ориентированная модель и обширная экосистема (npm, фреймворки React/Vue/Angular). Тесно интегрирован с браузером через DOM и Web API, поддерживает асинхронность (промисы, async/await) и современные конструкции (ES6+).
Исторически важен как двигатель веба и пример стандартизации после «браузерных войн»: именно из за разнородных реализаций (вроде JScript) сообщество сделало ставку на единый стандарт.
131
JScript (ДжейСкрипт) — реализация скриптового языка от Microsoft (1996), созданная как ответ на JavaScript в эпоху «браузерных войн». Изначально предназначался для Internet Explorer и позволял добавлять интерактивность веб страницам, а также использовался в серверных сценариях (ASP) и автоматизации Windows (Windows Script Host).
Хотя JScript базировался на ранних спецификациях ECMAScript, Microsoft добавляла собственные расширения и не всегда строго следовала стандарту — из за этого возникали проблемы совместимости: код, корректно работавший в Netscape, мог вести себя иначе или не работать в IE. Со временем Microsoft развила идею в JScript.NET — более строго типизированную версию под .NET, но и она ушла в историю.
Сегодня JScript — устаревшая технология: в современном Edge (на Chromium) его нет, а для сценариев Windows используют PowerShell.
132
Joy (Джой) — функциональный стековый язык, созданный Манфредом фон Таном в начале 2000 х. В отличие от большинства функциональных языков, он не опирается на лямбда исчисление: вместо этого Joy использует стек и комбинаторы — программы здесь это последовательности операций над стеком, а функции неявно получают аргументы из стека и кладут туда результаты. Это даёт стиль «молчаливого программирования» (tacit programming) без явного упоминания переменных.
Язык демонстрирует мощную композицию функций: например, вычисление суммы квадратов списка сводится к цепочке стековых операций. Joy оказал влияние на развитие стековых и конкатенативных языков (Factor, Cat) и служит отличной моделью для изучения чистых комбинаторных вычислений и альтернатив классической функциональной семантике.
Хотя Joy не используется в промышленности, он важен как экспериментальная платформа и учебный пример: показывает, как можно строить выразительный язык на минимальном наборе примитивов.
K
133
K (кей) — компактный векторный язык для обработки данных, созданный Артуром Уитни как наследник APL и прямого предшественника языка Q; появился в 1990 х. Его главная ниша — высокоскоростная обработка потоков и временных рядов, особенно в финансовой аналитике и биржевых системах, где критичны минимальные задержки и плотная работа с массивами.
В "K" всё — массивы: скаляры трактуются как атомы, строки — как векторы символов; вычисления векторизованы и идут справа налево без приоритетов операций. Синтаксис предельно лаконичен: многие операции выражаются одиночными символами, а логика строится на композиции примитивов. Язык ориентирован на «молчаливое» (tacit) программирование — часто без явного именования переменных.
"K" тесно связан с базой данных kdb+ и языком Q (надстройка над K с более читаемым синтаксисом). Несмотря на узкую специализацию и высокую крутизну кривой обучения, "K" остаётся эталоном плотности и скорости для задач, где «каждая микросекунда на счету.
134
Kawa (кава) — реализация языка Scheme (диалекта Lisp) на платформе JVM, созданная Эндрю Казимирчуком; активно развивается с 1998 года. Его главная особенность — тесная интеграция с экосистемой Java: код на Kawa компилируется напрямую в байт код JVM, а любые Java классы и библиотеки доступны из Kawa «из коробки» без дополнительных обёрток.
Язык поддерживает макросы, лексические замыкания, хвостовую рекурсию и другие классические возможности Scheme, при этом даёт доступ к Java объектам, интерфейсам и аннотациям, а также позволяет экспортировать функции Kawa как Java методы. Kawa используется для встраивания скриптов в Java приложения, прототипирования, DSL и в образовательных целях как способ изучать функциональное программирование в привычной JVM среде.
Проект остаётся нишевым, но ценным примером гибридного подхода: он показывает, как динамический функциональный язык может сосуществовать с типобезопасной объектной экосистемой.
135
Kotlin (котлин) — статически типизированный мультипарадигменный язык, созданный компанией JetBrains и впервые выпущенный в 2011 году; стабильная версия 1.0 появилась в 2016 м. Язык работает на JVM, но также компилируется в JavaScript и нативные бинарники (через Kotlin/Native), а благодаря Kotlin Multiplatform позволяет переиспользовать код между Android, iOS, вебом и бэкендом.
Ключевые особенности: лаконичный синтаксис, null безопасность (защита от NullPointerException), умные приведения типов, корутины для асинхронности и полная совместимость с Java — можно смешивать код и использовать все Java библиотеки. В Kotlin органично сочетаются объектно ориентированный и функциональный стили.
С 2017 года Google объявил Kotlin приоритетным языком для Android разработки; сегодня он широко применяется в мобильной и серверной разработке (Spring, Ktor), а также в кроссплатформенных проектах.
L
136
Lasso (лассо) — скриптовый язык для веб разработки и серверной обработки данных, созданный в середине 1990 х (изначально как часть Lasso Server). Его главная идея — тесная интеграция кода с контентом: теги вида {lasso} встраиваются прямо в HTML, а язык предоставляет богатый набор встроенных методов для работы с базами данных, XML, JSON, HTTP запросами и файловой системой.
Lasso ориентирован на быструю разработку динамических сайтов: он предлагает объектную модель, обработку ошибок, сессии и кэширование «из коробки», а также удобные абстракции для доступа к СУБД. В экосистеме использовались Lasso Studio и серверные расширения, упрощавшие создание CMS и корпоративных порталов.
Хотя сегодня Lasso почти не применяется (уступив место PHP, Python, Node.js), он был заметным игроком в эпоху раннего динамического веба и интересен как пример «встраиваемого» серверного языка с сильной ориентацией на данные.




