Семя7 - Seed7

Семя7
Парадигмамультипарадигма: расширяемый, объектно-ориентированный, императив, структурированный, общий, отражающий
РазработаноТомас Мертес
Впервые появился2005; 15 лет назад (2005)
Стабильный выпуск
2020-09-29 / 70 дней назад[1]
Печатная дисциплинастатический, сильный, безопасный, именительный падеж, манифест
Операционные системыКроссплатформенность: BSD, Linux, OS X, Unix, Windows
ЛицензияGPL, LGPL (для библиотеки времени выполнения)
Расширения имени файла.sd7, .s7i
Интернет сайтсемя7.sourceforge.сеть
Основной реализации
Открытый исходный код эталонная реализация
Под влиянием
Паскаль, Модула-2, Ада, АЛГОЛ 68, C, C ++, Ява

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

Функции

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

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

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

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

Библиотеки

Seed7 имеет множество библиотек, охватывающих области, включая контейнеры, числовые функции, лексический анализ, манипулирование файлами, работа в сети (Розетки, Безопасность транспортного уровня (TLS / SSL), Протокол передачи гипертекста (HTTP), HTTP Secure (HTTPS ), протокол передачи файлов (FTP), Простой протокол передачи почты (SMTP) и т. Д.), графика, растровое изображение и вектор шрифты, независимый от базы данных API, Общий интерфейс шлюза (CGI) поддержка, Сжатие данных, архивные файлы (деготь, застегивать, cpio, ар, об / мин ), кодировка символов, обработка времени и даты, XML обработка, дайджесты сообщений и больше.[5] Эти библиотеки уменьшают необходимость использования непереносимый функции операционной системы и сторонние библиотеки (которые могут не всегда присутствовать) напрямую. Библиотеки Seed7 содержат слои абстракции для аппаратное обеспечение, Операционная система и сторонние библиотеки, например графические библиотеки и библиотеки баз данных. Другими словами, для перемещения программ Seed7 между разными процессоры или же операционные системы.

Библиотека TLS

Seed7 имеет собственную реализацию Безопасность транспортного уровня.[6] Библиотека включает AES и криптография с эллиптической кривой.

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

Seed7 предоставляет библиотеку с база данных независимый API.[7] Программы могут подключаться к MySQL, MariaDB, SQLite, PostgreSQL, Oracle, Открытое подключение к базе данных (ODBC), Жар-птица, InterBase, Db2 и SQL Server базы данных. Независимо от базы данных могут быть созданы подготовленные операторы, могут использоваться переменные связывания, операторы могут быть выполнены и могут быть получены наборы результатов.

История

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

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

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

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

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

$ синтаксис expr:. (). +. () равно -> 7;

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

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

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

const func complex: (in complex: summand1) + (in complex: summand2) is func result var complex: sum is complex.value; начало sum.re: = summand1.re + summand2.re; sum.im: = summand1.im + summand2.im; end func;

Рекомендации

  1. ^ Мертес, Томас (29 сентября 2020 г.). "Новый выпуск Seed7 2020-09-29". Получено 29 сентября 2020 - через SourceForge.
  2. ^ а б Даниэль Зингаро, «Современные расширяемые языки», Отчет 47 SQRL Университет Макмастера (Октябрь 2007 г.), стр. 16 (альтернативная ссылка ).
  3. ^ Абриаль, Жан-Раймон и Глессер, Уве, «Строгие методы построения и анализа программного обеспечения», ISBN  978-3-642-11446-5, Springer, 2010 г., стр. 166.
  4. ^ Стадфельд, Пол (1 апреля 2010 г.). «В поисках окончательного цикла (включает сравнение производительности Python, Seed7 и C)». Архивировано из оригинал 25 октября 2013 г.. Получено 19 августа 2019.
  5. ^ Библиотеки Seed7
  6. ^ Библиотека безопасности транспортного уровня (TLS), написанная на Seed7
  7. ^ API абстракции базы данных
  8. ^ Томас Мертес, "Entwurf einer erweiterbaren höheren Programmiersprache", дипломная работа Венского технологического университета (1984). (Абстрактный )
  9. ^ Мертес, Томас, "Определение einer erweiterbaren höheren Programmiersprache", Докторская диссертация Венского технологического университета (1986).Абстрактный )
  10. ^ Дэвид Гудеман (26 марта 2015 г.), «Язык программирования Seed7» (в Seed7 вы можете указать подобный синтаксис)

внешняя ссылка