Proteus (programovací jazyk) - Proteus (programming language) - Wikipedia
Proteus (PROcessor pro TExt Easy to NÁSE) je plně funkční procedurální programovací jazyk vytvořený v roce 1998 Simone Zanella. Proteus obsahuje mnoho funkcí odvozených z několika dalších jazyků: C, ZÁKLADNÍ, Shromáždění, Klipr / dBase; je zvláště všestranný při práci s řetězci, který má stovky vyhrazených funkcí; díky tomu je jedním z nejbohatších jazyků pro manipulaci s textem.
Proteus vděčí za své jméno řeckému bohu moře (Proteus ), který se postaral o dav Neptunu a poskytl odpovědi; byl proslulý tím, že se dokázal transformovat za předpokladu různých tvarů. Transformace dat z jedné formy do druhé je hlavním využitím tohoto jazyka.
Úvod
Proteus byl původně vytvořen jako multiplatforma (DOS, Okna, Unix ) systémový nástroj, pro manipulaci s textovými a binárními soubory a pro vytváření CGI skripty. Jazyk byl později zaměřen na Windows a přidal stovky specializovaných funkcí pro: síťovou a sériovou komunikaci, dotazování na databázi, vytváření systémových služeb, konzolové aplikace, emulaci klávesnice, ISAPI skriptování (pro IIS Většina z těchto dalších funkcí je k dispozici pouze v prostředí Windows tlumočníka, přestože a Linux verze je stále k dispozici.
Proteus byl navržen tak, aby byl praktický (snadno použitelný, efektivní, úplný), čitelný a konzistentní.
Jeho nejsilnější stránky jsou:
- výkonná manipulace s řetězci;
- srozumitelnost skriptů Proteus;
- dostupnost pokročilých datových struktur: pole, fronty (jednoduché nebo dvojité), hromádky, bitové mapy, sady, AVL stromy.
Jazyk lze rozšířit přidáním uživatelských funkcí napsaných v Proteus nebo DLL vytvořeno v C /C ++.
Jazykové funkce
Na první pohled může Proteus vypadat podobně jako Basic kvůli své přímé syntaxi, ale podobnosti jsou omezeny na povrch:
- Proteus má plně funkční procedurální přístup;
- proměnné jsou netypové, není třeba je deklarovat, mohou být místní nebo veřejné a lze je předávat podle hodnoty nebo podle odkazu;
- jsou k dispozici všechny typické řídicí struktury (if-then-else; for-next; while-loop; repeat-until; switch-case);
- nové funkce lze definovat a použít jako nativní funkce.
Datové typy podporované Proteusem jsou pouze tři: celočíselná čísla, čísla s plovoucí desetinnou čárkou a řetězce. Přístup k pokročilým datovým strukturám (soubory, pole, fronty, zásobníky, stromy AVL, sady atd.) Probíhá pomocí rukojeti, tj. celočíselná čísla vrácená funkcemi pro vytváření položek.
Deklarace typu je zbytečná: typ proměnné je určen použitou funkcí - Proteus převádí v případě potřeby proměnnou flyevery a uchovává předchozí vykreslování dat, aby nedošlo ke snížení výkonu způsobenému opakovanými převody.
K určení pořadí vyhodnocení není třeba přidávat závorky, protože jazyk je plně funkční (neexistují žádné operátory).
Proteus obsahuje stovky funkcí pro:
- přístup k souborovému systému;
- třídění dat;
- manipulace s daty a řetězci;
- interakce s uživatelem (funkce konzoly)
- výpočet logických a matematických výrazů.
Proteus podporuje asociativní pole (tzv. Sady) a stromy AVL, které jsou velmi užitečné a výkonné pro rychlé třídění a vyhledávání hodnot.
Dva typy regulární výrazy jsou podporovány:
- rozšířené (jako Unix);
- basic (Dos rád, mít pouze zástupné znaky „?“ a „*“).
Oba typy výrazů lze použít k analýze a porovnání dat.
Funkční přístup a rozsáhlá knihovna vestavěných funkcí umožňují psát velmi krátké, ale výkonné skripty; aby byla srozumitelná, byla přijata středně dlouhá klíčová slova.
Uživatel kromě psaní nových funkcí na vysoké úrovni v Proteus může přidávat nové funkce v C / C ++ podle pokynů a pomocí šablon dostupných v sadě pro vývoj softwaru; nové funkce lze vyvolat přesně stejným způsobem jako předdefinované, předávání výrazů podle hodnoty nebo proměnných odkazem.
Proteus je interpretovaný jazyk: programy jsou načteny do paměti, předkompilovány a spuštěny; protože počet vestavěných funkcí je velký, rychlost provádění je obvykle velmi dobrá a často srovnatelná s rychlostí kompilovaných programů.
Jednou z nejzajímavějších vlastností Proteusu je možnost spouštění skriptů jako služby neboISAPI skripty.
Spuštění skriptu Proteus jako služby, spuštěné, jakmile operační systém dokončí načítání, poskytuje mnoho výhod:
- ke spuštění skriptu se nemusí přihlásit žádný uživatel;
- službu lze spustit s různými oprávněními, aby ji uživatel nemohl zastavit.
To je velmi užitečné k ochraně kritických procesů v průmyslovém prostředí (sběr dat, monitorování zařízení) nebo k tomu, aby operátor nechtěně zavřel obslužný program (emulace klávesnice).
Verze ISAPI aplikace Proteus může být použita k vytváření skriptů spouštěných prostřednictvím Internetové informační služby a je vybavena specifickými funkcemi pro spolupráci s webovým serverem.
Pro ochranu duševního vlastnictví Proteus poskytuje:
- šifrování skriptu;
- digitální podpis skriptů pomocí vývojového klíče (který je jedinečný);
- možnost povolit nebo zakázat provedení skriptu (nebo jeho části) pomocí klíče zákazníka.
Proteus se cení, protože je relativně snadné psát krátké, výkonné a srozumitelné skripty; velké množství integrovaných funkcí spolu s příklady v příručce udržují nízkou křivku učení.
Vývojové prostředí zahrnuje a editor zdrojového kódu se zvýrazněním syntaxe a kontextovým průvodcem. Proteus není třeba instalovat: tlumočník je jediný spustitelný soubor (pod 400 kB), který nevyžaduje spuštění dalších knihoven DLL na nejnovějších systémech Windows.
Souhrn a licencování
Hlavní rysy tohoto jazyka jsou:
- plně funkční procedurální jazyk;
- vícejazyčná podpora: Proteus je k dispozici v několika jazycích (klíčová slova a zprávy);
- žádné datové typy: všechny proměnné lze použít jako celočíselná čísla, čísla s plovoucí desetinnou čárkou nebo řetězce; proměnné jsou interpretovány podle aplikovaných funkcí - Proteus udržuje různé reprezentace jejich hodnot mezi hovory, aby se snížila doba provádění v případě častých konverzí mezi jedním typem a druhým;
- žádné předem přidělené struktury: všechna data používaná Proteusem jsou dynamicky alokována v době provádění; neexistují žádná omezení: rekurze, maximální velikost dat, počet proměnných atd .;
- žádné operátory: Proteus je zcela funkční jazyk - neexistují žádní operátoři; při vyhodnocování výrazů a závorek tedy není potřeba dvojznačnosti;
- velká knihovna předdefinovaných funkcí: Proteus není hračka, přichází se stovkami knihovních funkcí připravených k práci s řetězci, daty, čísly, třídění, vyhledávání atd .;
- pokročilý přístup k datům (DAO), kanály, zásuvky Windows, sériové porty: ve verzi pro Windows obsahuje Proteus stovky systémových volání, která jsou specifická pro operační systém;
- jasná a srozumitelná syntaxe: názvy funkcí knihovny se podobají názvům odpovídajících funkcí v C, Clipper / Flagship a Assembly; pomocí středně dlouhých klíčových slov jsou programy Proteus velmi snadno srozumitelné;
- nativní podpora pro datové struktury na vysoké úrovni: pole, fronty (jednoduché nebo dvojité), komíny, bitové mapy, sady, stromy AVL jsou již k dispozici v Proteusu a nevyžadují použití dalšího kódu nebo knihoven;
- Verze ISAPI DLL a Windows Service: Proteus je k dispozici jako služba Windows nebo jako ISAPI DLL (pro použití společně s Microsoft Internet Information Server);
- uživatelské knihovny: je možné zapsat uživatelem definované funkce (UDF) do samostatných souborů a zahrnout je (i podmíněně a rekurzivně) do nových programů; Na UDF lze odkazovat před nebo po definici; je také možné psát externí funkce ve Visual C ++ a vyvolat je ze skriptu Proteus;
- nativní podpora textových souborů Ms-Dos / Windows, Macintosh a Unix (všechny verze);
- tři modely pro data (anglický, americký, japonský), s funkcemi pro jejich kontrolu a provádění výpočtů podle gregoriánského kalendáře;
- nastavení epochy pro 2místná data roku;
- podpora času ve 12- a 24hodinovém formátu;
- podpora jednoduchých (Dos-like) a rozšířených (Unix-like) regulárních výrazů, ve všech verzích;
- ochrana duševního vlastnictví pomocí digitálního podpisu a kryptografie;
- rozsáhlá knihovna funkcí pro psaní interaktivních konzolových programů.
Proteus je k dispozici v demo verzi (spuštění skriptu omezeno na tři minuty) a registrované verzi, chráněné USB klíčem. V tuto chvíli je k dispozici jako balíček Windows nebo Ubuntu a je distribuován společnostíSZP.
Ukázkové programy
Ahoj světe
Následující příklad vytiskne „Hello world!“.
CONSOLELN "Hello World!"
Extrahujte dvě pole
Následující příklad čte standardní vstup (CSV format, separator ";") a vytiskne první dvě pole oddělená znakem "|":
CONSOLELN TOKEN (L, 1, ";") "|" TOKEN (L, 2, ";")
Skripty Proteus ve výchozím nastavení fungují na vstupním souboru a zapisují do výstupního souboru; předdefinovaný identifikátor L získá hodnotu každého řádku na vstupu. Funkce TOKEN vrací požadovanou položku řetězce; třetí parametr představuje oddělovač. Zřetězení řetězců je implicitní.
Stejný program lze napsat tímto způsobem:
H = TOKNEW (L, ";")
KONSOLELOVÝ TOKGET (H, 1) „|“ TOKGET (H, 2)
TOKFREE (H)
V tomto případě jsme použili jinou funkci (TOKGET), která vytváří seznam tokenů v řádku; to je efektivnější, pokud potřebujeme získat přístup k několika položkám v řetězci.