Paradigm | multi-paradigm : расширяемый, объектно-ориентированный, императивный, структурированный, универсальный, отражающий |
---|---|
Разработан | Томасом Мертесом |
Впервые появился | 2005; 15 лет назад (2005) |
Стабильный выпуск | 30.08.2020 / 63 дня назад |
Дисциплина набора текста | статический, сильный, безопасный, именительный падеж, манифест |
OS | Межплатформенный : BSD, Linux, OS X, Unix, Windows |
Лицензия | GPL, LGPL (для библиотеки времени выполнения) |
Расширения имен файлов | .sd7,.s7i |
Веб-сайт | seed7.sourceforge.net |
Основные реализации | |
с открытым исходным кодом эталонная реализация | |
Под влиянием | |
Pascal, Modula-2, Ada, ALGOL 68, C, C ++, Java |
Seed7 - это расширяемый язык программирования общего назначения, разработанный Томасом Мертесом. Синтаксически он похож на Pascal и Ada. Наряду со многими другими функциями, он предоставляет механизм расширения. Seed7 поддерживает введение в язык новых элементов синтаксиса и их семантики, а также позволяет определять и записывать новые языковые конструкции в Seed7. Например, программисты могут представить синтаксис и семантику новых операторов и определяемых пользователем символов оператора. Реализация Seed7 существенно отличается от реализации языков с жестко запрограммированным синтаксисом и семантикой .
Seed7 поддерживает парадигмы программирования : императивный, объектно-ориентированный (OO) и общий. Он также поддерживает такие функции, как вызов по имени, множественная отправка, перегрузка функций, перегрузка оператора, обработка исключений и арифметика произвольной точности.
Основные функции включают:
Обобщены несколько концепций языка программирования:
Проект Seed7 включает в себя как интерпретатор, так и компилятор. Интерпретатор очень быстро запускает программы, поддерживая быструю разработку программ. Компилятор использует синтаксический анализатор и интерфейсы отражения из библиотеки времени выполнения для создания программы C, которая впоследствии компилируется в машинный код . Скомпилированные программы Seed7 могут иметь производительность, сопоставимую с программами на C.
Seed7 имеет множество библиотек, охватывающих области, включая контейнеры, числовые функции, лексический анализ, манипулирование файлами, работа в сети (сокеты, безопасность транспортного уровня (TLS / SSL), протокол передачи гипертекста (HTTP), HTTP Безопасный (HTTPS ), Протокол передачи файлов (FTP), Простой протокол передачи почты (SMTP) и т. Д.), графика, растровое и векторное изображение шрифты, API, независимый от базы данных, Поддержка Common Gateway Interface (CGI), сжатие данных, архивные файлы (tar, zip, cpio, ar, rpm ), кодировка символов, обработка времени и даты, XML обработка, дайджесты сообщений и многое другое. Эти библиотеки уменьшают потребность в использовании непереносимых функций операционной системы и сторонних библиотек (которые могут не всегда присутствовать) напрямую. Библиотеки Seed7 содержат уровни абстракции для оборудования, операционной системы и сторонних библиотек, например графические библиотеки и библиотеки баз данных. Другими словами, никаких изменений не требуется для перемещения программ Seed7 между разными процессорами или операционными системами.
Seed7 имеет собственную реализацию Transport Layer Security.. Библиотека включает AES и криптографию с эллиптической кривой.
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. С тех пор новые версии выпускались каждые две-три недели. По состоянию на 08.09.2013 проект Seed7 содержит более 300 000 строк исходного кода и несколько сотен страниц документации.
Расширение включает две части: определение синтаксиса, дающее шаблон для новой синтаксической формы, и стандартную функцию Seed7, используемую для определения семантики.
В определении синтаксиса используется описание структурированного синтаксиса Seed7 (S7SSD). Оператор S7SSD, например
$ syntax expr:. (). +. () равно ->7;
определяет синтаксис +
оператора. Стрелка вправо ->
описывает ассоциативность : связывание операндов слева направо. С помощью 7
определяется приоритет оператора +
. Шаблон синтаксиса . (). +. ()
вводится и ограничивается точками (.
). Без точек шаблон будет () + ()
. Символ ()
- нетерминальный символ, а +
- терминальный символ. S7SSD не различает разные нетерминальные символы. Вместо этого он знает только один нетерминальный символ: ()
.
Определение оператора +
для комплексных чисел - это просто определение функции:
const func complex: (в комплексе: слагаемое1) + (в комплексе: слагаемое2) является функцией результат var комплекс: сумма является сложным.значение; начало sum.re: = summand1.re + summand2.re; sum.im: = summand1.im + summand2.im; end func;