Seed7 - Seed7

Semeno 7
Paradigma multi-paradigma : rozšiřitelné , objektově orientované , imperativní , strukturované , obecné , reflexní
Navrhl Thomas Mertes
Poprvé se objevil 2005 ; Před 16 lety ( 2005 )
Stabilní uvolnění
Před 2021-08-07 / 69 dny
Kázeň při psaní statický , silný , bezpečný , nominativní , manifestní
OS Cross-platform : BSD , Linux , OS X , Unix , Windows
Licence GPL , LGPL (pro runtime knihovnu)
Rozšíření názvu souboru .sd7, .s7i
webová stránka seed7 .sourceforge .net
Hlavní implementace
implementace open source reference
Ovlivněn
Pascal , Modula-2 , Ada , ALGOL 68 , C , C ++ , Java

Seed7 je rozšiřitelný univerzální programovací jazyk navržený Thomasem Mertesem. Je syntakticky podobný Pascalovi a Adě . Spolu s mnoha dalšími funkcemi poskytuje mechanismus rozšíření. Seed7 podporuje zavádění nových prvků syntaxe a jejich sémantiky do jazyka a umožňuje definovat a psát nové jazykové konstrukce v Seed7. Programátoři mohou například zavést syntaxi a sémantiku nových příkazů a uživatelem definovaných symbolů operátorů . Implementace Seed7 se výrazně liší od jazyků s pevně kódovanou syntaxí a sémantikou.

Funkce

Seed7 podporuje programovací paradigmata : imperativní , objektově orientované (OO) a obecné . Podporuje také k dispozici, jako je volání podle jména , vícenásobné odeslání , funkce přetížení , přetížení operátorů , zpracování výjimek a výpočty s libovolnou přesností .

Mezi hlavní funkce patří:

Zobecňuje se několik konceptů programovacího jazyka:

Projekt Seed7 obsahuje tlumočníka i překladač . Tlumočník spouští programy velmi rychle a podporuje rychlý vývoj programu. Kompilátor používá rozhraní parseru a reflexe z run-time knihovny ke generování programu C , který je následně kompilován do strojového kódu . Kompilované programy Seed7 mohou mít srovnatelný výkon jako programy C.

Knihovny

Seed7 má mnoho knihoven, zahrnujících oblasti včetně kontejnerů , numerických funkcí, lexikální analýzy , manipulace se soubory, sítí ( sokety , Transport Layer Security (TLS/SSL), Hypertext Transfer Protocol (HTTP), HTTP Secure ( HTTPS ), File Transfer Protocol (FTP) ), Simple Mail Transfer Protocol (SMTP) atd.), Grafika , pixmapová a vektorová písma , API nezávislé na databázi , podpora Common Gateway Interface (CGI), komprese dat , archivní soubory ( tar , zip , cpio , ar , rpm ), kódování znaků , zpracování času a data, zpracování XML , přehledy zpráv a další. Tyto knihovny omezují potřebu používat přímo přenosné funkce operačního systému a knihovny třetích stran (které nemusí být vždy k dispozici). Knihovny Seed7 obsahují abstrakční vrstvy pro hardware , operační systém a knihovny třetích stran, např. Grafické a databázové knihovny. Jinými slovy, k přesunu programů Seed7 mezi různé procesory nebo operační systémy nejsou nutné žádné změny .

Knihovna TLS

Seed7 má vlastní implementaci Transport Layer Security . Knihovna obsahuje kryptografii AES a eliptickou křivku .

Abstrakce databáze API

Seed7 poskytuje knihovnu s databázově nezávislým API. Programy se mohou připojit k databázím MySQL , MariaDB , SQLite , PostgreSQL , Oracle , Open Database Connectivity (ODBC), Firebird , InterBase , Db2 a SQL Server . Nezávisle na databázi lze vytvářet připravené příkazy, používat vázané proměnné, provádět příkazy a načítat sady výsledků.

Dějiny

Seed7 je založen na MASTER, rozšiřitelném programovacím jazyce popsaném v diplomových a doktorských pracích Thomase Mertese. Většinu původních myšlenek programu MASTER, jako jsou uživatelsky definované příkazy a operátory, najdete v Seed7. V původním projektu byl navržen, ale neimplementovaný, předkompiler , který má přeložit MASTER na Pascal. V roce 1989 byl zahájen vývoj tlumočníka pro MASTER s názvem HAL. V roce 2005 byly projekty MASTER a HAL vydány jako open source pod názvem projektu Seed7. Od té doby byly vydávány nové verze každé dva nebo tři týdny. Od verze 2021-04-25 obsahuje projekt Seed7 více než 500 000 zdrojových řádků kódu a několik stovek stran dokumentace.

Prodlužovací mechanismus

Rozšíření obsahuje dvě části: definici syntaxe, která poskytuje šablonu pro novou syntaktickou formu, a standardní funkci Seed7, která se používá k definování sémantiky.

Definice syntaxe

Definice syntaxe používá strukturovaný popis syntaxe Seed7 (S7SSD). Podobné prohlášení S7SSD

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

určuje syntaxi + operátoru . Šipka doprava ->popisuje asociativitu : Vazba operandů zleva doprava. Se 7na priority tohoto +operátora je definována. Syntaxe .(). + .()je zavedena a oddělena tečkami ( .). Bez teček je vzor () + (). Symbol ()je neterminální symbol a +je symbolem terminálu. S7SSD nerozlišuje mezi různými neterminálními symboly . Namísto toho ví jen jeden terminálního symbolu funkce: ().

Sémantické rozšíření

Definice +operátoru pro komplexní čísla je pouze definicí funkce:

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;

Reference

externí odkazy