stringtranslate.com

Семя7

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

Функции

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

Основные характеристики включают в себя:

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

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

Особенности пропущены

Библиотеки

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

TLS-библиотека

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

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

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

История

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

Мертес сказал, что название Seed7 произошло от концепции его идей о том, что язык будет распространяться как семена, которые будут расти по мере того, как другие будут его использовать. Часть «7» была добавлена, потому что это было простое число, которое, по его мнению, хорошо звучало с «семя». [10]

Механизм выдвижения

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

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

Определение синтаксиса использует описание структурированного синтаксиса Seed7 (S7SSD). Оператор S7SSD, такой как

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

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

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

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

const func complex : ( in complex : summand1 ) + ( in complex : summand2 ) — это результат функции var complex : sum is complex . ценить ; начать сумму . ре := слагаемое1 . re + слагаемое2 . ре ; сумма . я := слагаемое1 . я + слагаемое2 . я ; конец функции ;                              

Ссылки

  1. Мертес, Томас (12 августа 2024 г.). «Новый выпуск Seed7 12 августа 2024 г.» . Проверено 16 августа 2024 г. - через SourceForge .
  2. ^ ab Daniel Zingaro , «Современные расширяемые языки», SQRL Report 47 McMaster University (октябрь 2007 г.), стр. 16 (альтернативная ссылка).
  3. ^ Абриаль, Жан-Раймонд и Глессер, Уве, «Строгие методы построения и анализа программного обеспечения», ISBN 978-3-642-11446-5 , Springer, 2010, стр. 166. 
  4. ^ Stadfeld, Paul (1 апреля 2010 г.). «В поисках окончательного цикла (включает сравнение производительности Python, Seed7 и C)». Архивировано из оригинала 25 октября 2013 г. Получено 19 августа 2019 г.
  5. ^ Библиотеки Seed7
  6. ^ Библиотека Transport Layer Security (TLS), написанная на Seed7.
  7. ^ API абстракции базы данных
  8. ^ Мертес, Томас, "Entwurf einer erweiterbaren höheren Programmiersprache", дипломная работа Венского технологического университета (1984). (Аннотация)
  9. ^ Мертес, Томас, «Определение einer erweiterbaren höheren Programmiersprache», докторская диссертация Венского технологического университета (1986). (Аннотация)
  10. ^ "Coding Club: Presents - Seed7". YouTube . 4 июля 2024 г. . Получено 22 июля 2024 г. .
  11. Дэвид Гудеман (26 марта 2015 г.), «Язык программирования Seed7» (В Seed7 можно задать такой синтаксис)

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