Семя7 - Seed7

Семя7
Парадигма мультипарадигма : расширяемая , объектно-ориентированная , императивная , структурированная , универсальная , рефлексивная
Разработано Томас Мертес
Впервые появился 2005 ; 16 лет назад ( 2005 )
Стабильный выпуск
2021-08-07 / 69 дней назад
Печатная дисциплина статический , сильный , безопасный , именительный падеж , манифест
Операционные системы Кроссплатформенность : BSD , Linux , OS X , Unix , Windows
Лицензия GPL , LGPL (для библиотеки времени выполнения)
Расширения имени файла .sd7, .s7i
Веб-сайт seed7 .sourceforge .net
Основные реализации
эталонная реализация с открытым исходным кодом
Под влиянием
Паскаль , Модула-2 , Ада , АЛГОЛ 68 , C , C ++ , Java

Seed7 - это расширяемый язык программирования общего назначения, разработанный Томасом Мертесом. Синтаксически он похож на Паскаль и Аду . Наряду со многими другими функциями он предоставляет механизм расширения. Seed7 поддерживает введение в язык новых элементов синтаксиса и их семантики, а также позволяет определять и записывать новые языковые конструкции в Seed7. Например, программисты могут вводить синтаксис и семантику новых операторов и определяемых пользователем символов операторов . Реализация Seed7 значительно отличается от языков с жестко запрограммированным синтаксисом и семантикой.

Функции

Seed7 поддерживает парадигмы программирования : императивное , объектно-ориентированное (OO) и универсальное . Он также поддерживает такие функции, как вызов по имени , многократная отправка , перегрузка функций , перегрузка операторов , обработки исключений и произвольная точность арифметика .

Основные функции включают:

Обобщены несколько концепций языка программирования:

Проект Seed7 включает в себя как интерпретатор, так и компилятор . Интерпретатор очень быстро запускает программы, поддерживая быструю разработку программ. Компилятор использует интерфейсы синтаксического анализатора и отражения из библиотеки времени выполнения для создания программы C , которая впоследствии компилируется в машинный код . Скомпилированные программы Seed7 могут иметь производительность, сравнимую с программами на языке C.

Библиотеки

Seed7 имеет множество библиотек, охватывающих области, включая контейнеры , числовые функции, лексический анализ , манипуляции с файлами, работу в сети ( сокеты , безопасность транспортного уровня (TLS / SSL), протокол передачи гипертекста (HTTP), HTTP Secure ( HTTPS ), протокол передачи файлов (FTP) ), Simple Mail Transfer Protocol (SMTP) и т. Д.), Графика , растровое изображение и векторные шрифты , API , независимый от базы данных , поддержка Common Gateway Interface (CGI), сжатие данных , архивные файлы ( tar , zip , cpio , ar , rpm ), кодировка символов , обработка времени и даты, обработка XML , дайджесты сообщений и многое другое. Эти библиотеки уменьшают необходимость использования непереносимых функций операционной системы и сторонних библиотек (которые могут не всегда присутствовать) напрямую. Библиотеки Seed7 содержат уровни абстракции для оборудования , операционной системы и сторонних библиотек, например, графических библиотек и библиотек баз данных. Другими словами, никаких изменений не требуется для перемещения программ Seed7 между разными процессорами или операционными системами .

Библиотека TLS

Seed7 имеет собственную реализацию безопасности транспортного уровня . Библиотека включает AES и криптографию на основе эллиптических кривых .

API абстракции базы данных

Seed7 предоставляет библиотеку с API, независимым от базы данных . Программы могут подключаться к базам данных MySQL , MariaDB , SQLite , PostgreSQL , Oracle , Open Database Connectivity (ODBC), Firebird , InterBase , Db2 и SQL Server . Независимо от базы данных могут быть созданы подготовленные операторы, могут использоваться переменные связывания, операторы могут быть выполнены и могут быть получены наборы результатов.

История

Seed7 основан на MASTER, расширяемом языке программирования, описанном в дипломе и докторской диссертации Томаса Мертеса. Большинство оригинальных идей MASTER, таких как определяемые пользователем операторы и операторы, можно найти в Seed7. Прекомпилятор , чтобы перевести MASTER Паскаля, был предложен, но неосуществленными, в оригинальном проекте. В 1989 году началась разработка интерпретатора для MASTER, названного HAL. В 2005 году проекты MASTER и HAL были выпущены как проекты с открытым исходным кодом под названием Seed7. С тех пор новые версии выпускались каждые две-три недели. По состоянию на 25 апреля 2021 года проект Seed7 содержит более 500 000 строк исходного кода и несколько сотен страниц документации.

Механизм расширения

Расширение включает две части: определение синтаксиса, дающее шаблон для новой синтаксической формы, и стандартную функцию Seed7, используемую для определения семантики.

Определение синтаксиса

В определении синтаксиса используется описание структурированного синтаксиса Seed7 (S7SSD). Заявление S7SSD вроде

$ syntax expr: .(). + .()  is -> 7;

определяет синтаксис + оператора . Стрелка вправо ->описывает ассоциативность : связывание операндов слева направо. С 7в приоритетном порядке на +оператора определяется. Шаблон синтаксиса .(). + .()вводится и ограничивается точками ( .). Без точек узор () + (). Этот символ ()является нетерминальным символом и +является конечным символом. S7SSD не различает разные нетерминальные символы . Вместо этого он знает только один нетерминал символ: ().

Семантическое расширение

Определение +оператора для комплексных чисел - это просто определение функции:

const func complex: (in complex: summand1) + (in complex: summand2) is func
  result
    var complex: sum is complex.value;
  begin
    sum.re := summand1.re + summand2.re;
    sum.im := summand1.im + summand2.im;
  end func;

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

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