Открыть сервис

Тэлви — язык программирования

Тэлви (англ. Telvy) — экспериментальный язык программирования высокого уровня, разработанный в середине 2010-х годов как учебный и исследовательский инструмент для изучения парадигм функционального и логического программирования. Язык не получил широкого промышленного распространения и существует преимущественно в виде открытой реализации и академических публикаций. Название происходит от аббревиатуры, образованной из первых слогов ключевых понятий, заложенных в основу синтаксиса.

История

Работа над языком началась в 2014 году в рамках университетского проекта, посвящённого формальной верификации программ. Первая публичная версия интерпретатора была выпущена в 2016 году под свободной лицензией. Исходный код размещён в открытом репозитории, что позволило независимым разработчикам участвовать в доработке стандартной библиотеки.

В 2018 году вышла вторая мажорная версия, в которой была переработана система типов и добавлена поддержка сопоставления с образцом. Третья версия (2021) ориентирована на встраивание в другие среды через механизм внешних вызовов. Дальнейшее развитие ведётся небольшим сообществом энтузиастов, регулярные релизы не гарантируются.

Философия и парадигма

Тэлви относится к мультипарадигмальным языкам, однако его ядро построено вокруг двух идей:

  • Декларативность. Программа описывает, что должно быть вычислено, а не последовательность шагов. Побочные эффекты вынесены в отдельный изолированный слой.
  • Явность типов. Вывод типов существует, но разработчик может указать тип вручную в любой точке; неявные преобразования между несовместимыми типами запрещены.

Язык сознательно отказывается от наследования классов в пользу композиции и интерфейсов, что сближает его с подходами, распространёнными в ряде функциональных языков.

Синтаксис и базовые конструкции

Синтаксис Тэлви минималистичен: блоки выделяются отступами, операторы разделяются переводами строк. Пример объявления функции:

`` fun square(x: Int) -> Int return x * x ``

Основные конструкции:

КонструкцияНазначение
funобъявление функции
letсвязывание неизменяемого значения
varизменяемая переменная (ограниченно)
matchсопоставление с образцом
typeобъявление составного типа
importподключение модуля

Сопоставление с образцом считается одной из наиболее развитых частей языка: оно поддерживает вложенные шаблоны, охранные условия и проверку на исчерпываемость на этапе компиляции.

Система типов

Система типов Тэлви — статическая, строгая, с поддержкой параметрического полиморфизма. Базовые типы включают целые числа, числа с плавающей точкой, логический тип, строки и символы. Составные типы строятся через записи, размеченные объединения и кортежи.

Отдельного упоминания заслуживает механизм эффектов: функции помечаются признаком наличия побочных эффектов (ввод-вывод, изменение состояния), и компилятор отслеживает их распространение по цепочке вызовов. Это позволяет изолировать «чистую» часть программы и упрощает тестирование.

Компиляция и исполнение

Изначально Тэлви был интерпретируемым языком. Начиная со второй версии появился транслятор в промежуточное представление с последующей генерацией кода для виртуальной машины. Полноценной компиляции в машинный код штатными средствами не предусмотрено, однако сторонние проекты экспериментировали с трансляцией в C.

Стандартная библиотека включает модули для работы со строками, коллекциями, файловой системой и сетевыми запросами. Часть модулей помечена как нестабильная и может изменяться между версиями.

Применение

Практическое применение Тэлви ограничено:

  • преподавание основ функционального программирования и теории типов;
  • прототипирование алгоритмов с активным использованием сопоставления с образцом;
  • исследовательские работы по формальной верификации;
  • встраиваемые сценарии в специализированных инструментах.

В промышленной разработке язык практически не используется из-за малой экосистемы, отсутствия корпоративной поддержки и ограниченного набора библиотек.

Сообщество и критика

Критические замечания в адрес языка касаются прежде всего производительности интерпретатора, неполноты документации и нестабильности API между версиями. Сторонники отмечают строгость системы типов, читаемость синтаксиса и хорошую приспособленность для обучения.

Сообщество немногочисленно и сосредоточено вокруг репозитория и тематических форумов. Конференции, посвящённые исключительно Тэлви, не проводятся; доклады появляются в рамках более общих мероприятий по языкам программирования.

Сравнение с родственными языками

По совокупности признаков Тэлви ближе всего к языкам, сочетающим статическую типизацию с функциональными возможностями. От классических функциональных языков его отличает наличие изменяемых переменных и явного слоя эффектов, а от распространённых промышленных языков — отсутствие наследования и акцент на сопоставлении с образцом. Такое сочетание делает его скорее исследовательской площадкой, чем инструментом для повседневной разработки.

IRONLIVE — база данных и аналитика по компаниям России.

На главную IRONLIVE →