Zonnon

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 31. března 2015; kontroly vyžadují 22 úprav .
Zonnon
Jazyková třída imperativní , strukturální , modulární , objektově orientovaný , vícevláknový
Typ provedení sestaven
Objevil se v 2000
Autor Jürg Gutknecht [1]
Přípona souboru .znn
Uvolnění 1.3.0 ( 9. listopadu 2012 )
Typový systém statický , silný
Hlavní implementace ETHZ
Byl ovlivněn Aktivní Oberon
Licence MS-PL
webová stránka zonnon.org
Plošina .SÍŤ

Zonnon  je univerzální programovací jazyk založený na jazyce Modula-2, který podporuje aktivní objekty představené v Active Oberon . Jazyk představil nové programovací paradigma - kompoziční model. Využívá se garbage collection , syntaktické nástroje pro objektové programování, organizace paralelních výpočtů, redefinice operátorů a zpracování výjimek. Jazyk navrhl Jürg Gutknecht . V moderní verzi kompilátoru ETH má jazyk schopnost řešit problémy lineární algebry se syntaxí podobnou matlabu [2] [3] . Jazykový kompilátor je první vytvořený zcela mimo Microsoft a plně integrovaný do Visual Studia spolu s dalšími jazyky platformy .NET . [čtyři]

Historie

Projekt vzešel z účasti vědců ze Švýcarského federálního technologického institutu ( ETH ), specialistů Oberon v rámci Projektu 7 (Projekt 7), iniciativy předložené v roce 1999 společností Microsoft Research za účelem studia jazyka z hlediska kompatibility s NET v letech (1999-2002). [5] Autorem jazyka je Jurg Gutknecht, profesor ETH, kolega Niklause Wirtha a jeho spoluautor jazyka Oberon . Projekt Zonnon byl vyvinut na počátku roku 2000 v Curychu na ETH . Cílem projektu bylo vytvořit univerzální programovací jazyk na vysoké úrovni s nejjednodušší a nejpřehlednější syntaxí, ale zároveň s dostatečnými schopnostmi pro vývoj softwaru jakékoli složitosti.

Projekt Zonnon nelze považovat za pokračování řady jazyků Pascal - Modula - Oberon - Oberon-2 - Component Pascal. Jde spíše o paralelní větev , oddělenou od zmíněné linky někde na úrovni Modula - Oberon. Bezprostředním předkem Zonnona je Active Oberon , vyvinutý za účasti stejného Jürga Gutknechta. Jestliže Niklaus Wirth při vytváření Oberonu co nejvíce zjednodušil Modula-2 a odstranil z něj vše, co nebylo považováno za příliš nutné, pak se tvůrci jazyka Zonnon vydali tradičnější cestou - zachovali většinu funkcí Modula- 2 a dokonce vrátil něco z Pascalu a také doplnil jazyk o několik nových konceptů a mechanismů.

Zonnon je podle zastánců tohoto projektu jednodušší a výkonnější než jazyky jako Ada, Java a C# [6] . Je navržen tak, aby snadno a efektivně programoval paralelní systémy pomocí nových vícejádrových procesorů, které budou dominovat průmyslu na deset let.

Funkce

Jazyk rozlišuje velká a malá písmena – rozdíl v případě písmen v identifikátorech vede k jejich odlišnosti. Byl proveden původní tah - klíčová (rezervovaná) slova jsou vyhrazena při psaní všech písmen velkými nebo všech písmen malými. To je accepta ACCEPT jsou klíčová slova, ale zde AcCePt je pouze platný identifikátor.

V jazyce je 51 klíčových slov (psaných buď pouze malými nebo pouze velkými písmeny):
accept | činnosti | pole | jako | čekat | začít | od | případ | konst | definice | div | udělat | jinak | elsif | konec | výjimka | výstup | nepravda | pro | pokud | realizace | nářadí | dovoz | v | je | spustit | smyčka | mod | modul | nový | nula | objekt | z | na | provozovatel | nebo | postup | přijímat | záznam | upřesnění | opakovat | návrat | sám | poslat | pak | do | pravda | typ | do | var | zatímco

Z funkcí si lze všimnout použití znaku #jako symbolu operace „není se rovnat“ (jako v Modulu-2), jakož i přítomnosti operace ** - „umocnění“, - vrácené do provozu po mnoha letech. zapomnění z fortranského jazyka .

Jazyk obsahuje sadu primitivních typů – několik číselných typů, včetně celého čísla bez znaménka, několik skutečných typů, řetězcový typ (standardní jazykové nástroje považují řetězce za nemodifikovatelné), znakový a booleovský. Typy rozsahů byly opuštěny, ale typy výčtů byly zachovány a aktivně používány. Typ množiny ( SET) byl zachován, ale stal se méně obecným – množiny se nyní mohou skládat pouze z celých čísel v rozsahu od nuly do nějaké implementací definované horní hranice. Primitivní typy a množiny lze použít v programu s modifikátory velikosti – pokud v popisu objektu nebo objektu následuje číslo za názvem typu ve složených závorkách, je to vnímáno jako počet bitů, které je třeba alokovat k hodnotě. Tato funkce (přesněji konkrétní hodnoty velikosti povolené pro každý z typů) je však závislá na systému, takže její použití nelze doporučit v programech, které tvrdí, že jsou přenosné.

Pole jsou popsána stejně jako v Oberonu - typ pole může mít neomezenou velikost v libovolné sadě rozměrů, při vytváření skutečného pole jsou jeho rozměry specifikovány explicitně. Indexy pole mohou být buď celá čísla (spodní mez je vždy nula) nebo výčtové.

Obecná struktura programu, moduly, rozdělení modulu na modul definic a implementační modul, pravidla pro psaní syntaktických konstrukcí jsou prakticky beze změn převzaty z Modula-2. Je podporována "dlouhá" konstrukce podmíněného operátoru IF-THEN-ELSIF-ELSE-END, všechny typy cyklů dostupné v Modulu: konstrukce výběru REPEAT-UNTIL, WHILE, FOR, LOOP, CASE. Z Pascalu byly do jazyka vráceny standardní primitivní I/O operace Write, WriteLn, Read, ReadLn(které byly přesunuty do standardní knihovny v Module-2 ).

Kromě toho má jazyk:

Hlavní koncepční inovací Zonnona ve srovnání s Modulou a Oberonem bylo zavedení aktivních objektů. Ve většině programovacích jazyků je objekt jednoduše souborem dat a metod zpracování, které program používá podle potřeby. Aktivní objekty mají navíc své vlastní chování, to znamená, že každý aktivní objekt má své vlastní nezávislé vlákno provádění, které interaguje s jinými vlákny prostřednictvím nástrojů pro výměnu jazyků podle protokolů, které jsou pro ně popsány. V Zonnonu bylo možné popsat aktivní objekty a pořadí jejich interakce jazykovými prostředky, což umožňuje v případě potřeby vytvořit program jako soubor samostatně pracujících a interagujících aktivních objektů.

Příklad programu

modul Příklad ; (*toto je komentář*) var x , y , sum : integer ; begin write ( "Zadejte X : " ) ; readln ( x ) ; napište ( "Zadejte Y : " ) ; readln ( y ) ; součet : = x + y (*vypočtěte součet dvou čísel*) writeln ( " X + Y = " , součet ) ; konec Příklad .

Tento program vypočítá součet dvou čísel zadaných z klávesnice.

Kompoziční model

Zonnon používá kompoziční modely dědičnosti založené na agregaci. Typicky se objekt (nebo modul) skládá z řady funkčních komponent, z nichž každá se prezentuje klientům ve formě abstraktní definice. Sada definic a také vlastní rozhraní objektu (tj. kolekce všech veřejných prvků objektu) tvoří rozhraní mezi objektem a jeho klienty. To vám umožní realizovat výhody modulárního a komponentního programování, a co je důležité, být schopen podporovat jednoduchou a vícenásobnou dědičnost (bez nevýhod implementace posledně jmenovaného v C++), polymorfismus, zpřesňování a agregaci, delegování na úrovni podpisů metod.

Výhody a nevýhody

Jen stěží lze jednoznačně definovat určité rysy jazyka jako výhody a nevýhody – takové hodnocení je velmi závislé na pohledu hodnotitele. V tomto ohledu by bylo vhodné porovnat Zonnon s jazyky jemu blízkými.

Ve srovnání s Pascalem a Modulou-2 se Zonnon stal mnohem výkonnějším, ale zároveň objemnějším a komplexnějším. Zvýšení síly bylo dosaženo díky zařazení nových syntaktických konstrukcí. Paralelní zpracovatelská zařízení (v případě Zonnonu se nejedná pouze o samotné syntaktické konstrukce, ale také o obecný princip konstruování programů jako množin aktivních objektů) umožňují přenášet rutinní operace do kompilátoru. Zachování modulárního principu programování umožňuje psát programy všechny najednou bez použití objektově orientovaného programování , což je důležité pro vzdělávací účely. Byl zaveden nový kompoziční model, ale zastánci OOP mohou používat i objekty. Byla zavedena výjimečná manipulační zařízení. Srovnávací hodnocení jazyků bude záviset na tom, jak významné jsou tyto dvě výhody považovány.

Na nástroje paralelního zpracování existují různé názory: někteří teoretici i praktici se domnívají, že nástroje paralelního programování by se do jazyka neměly zavádět vůbec a podpora ze systémových knihoven jim zcela stačí, jiní poukazují na to, že takové knihovny by měly být naprosto standardní, to znamená, že se stále stanou součástí jazyka, jinak programy, které je používají, ztratí přenositelnost (na druhou stranu přenositelnost není tak často potřeba). V každém případě je pro programátora hodnota Zonnonových mechanismů paralelního zpracování do značné míry určena tím, do jaké míry je připraven přijmout model aktivních objektů navržený jazykem jako hlavní prvek programu.

Rovněž neexistuje shoda ohledně mechanismu zpracování výjimek. Niklaus Wirth odmítl zavést takový mechanismus do Oberonu, považoval ho za zbytečný, protože systém Oberon, pro který byl tento jazyk vyvinut, jej nepotřebuje. Obecně existuje názor, že většina problémů s reakcí programů na možné chyby je zcela vyřešena bez zpracování výjimek a tento mechanismus není zdarma - zpravidla musíte platit za schopnost zachytit jakoukoli chybu výkonem programu . Na druhou stranu je zpracování výjimek pohodlné a nyní se stalo běžným a ztráty výkonu nejsou tak velké (nebo požadavky na rychlost nejsou tak kritické), aby se vzdaly pohodlí při vývoji.

Zbývající inovace Zonnonu, zejména propracovanější OOP syntaxe, rozhraní, indexery, vlastnosti, předefinování operátorů, lze jen stěží považovat za zásadní. Jednak komplikují jazyk a vše, co vám dovolí, se dá téměř stejně snadno zvládnout i bez nich. Na druhou stranu je třeba poznamenat, že v tomto případě byly tyto prostředky realizovány poměrně hospodárně. Ostatně, porovnáme-li Zonnon s Object Pascalem, který se vyvíjel přibližně podle stejného schématu – doplňování zdrojového jazyka o nové módní mechanismy, vidíme, že Zonnon je ve schopnostech na stejné úrovni s Object Pascalem a obchází jej v nástroje pro paralelní zpracování, ale stále jsou jednodušší.

Implementace

Implementace jazyka od samého počátku nešla cestou vytváření vlastního integrovaného vývojového prostředí a podpůrného prostředí jako v případě jazyka Oberon, ale cestou integrace s platformou .NET vydanou a udržovanou spol. Microsoft. Tento přístup zajistil zvýšení rychlosti implementace odstraněním vývoje vlastního prostředí a knihovního systému a také automaticky umožnil programům přístup k aplikačním a systémovým knihovnám prostředí .NET. Mezi nevýhody této možnosti implementace patří závislost vývoje na externím softwaru, který není pod kontrolou implementátoru jazyka.

V rámci stejné implementace .NET však existuje varianta vývojového prostředí pro více platforem, které je integrováno do Eclipse a využívá bezplatnou implementaci Mono .NET, která může fungovat pod Linuxem.

Pro Windows existuje také nejjednodušší nativní vývojové prostředí ETH Zonnon Builder , které obsahuje textový editor se zvýrazňováním syntaxe, nástroje pro tvorbu projektů a jednoduché nástroje pro správu verzí.

První kompilátor vytvořil na ETH pro platformu Microsoft .NET Evgeny Zuev. V roce 2005 byl také vytvořen softwarový balík, který integruje kompilátor a systém CASE, který podporuje návrh programů Zonnon konstrukcí diagramů v jazyce UML 2.0 do vývojového prostředí Microsoft Visual Studio .NET. Výsledný nástroj podporuje standard pro vývojový cyklus softwaru MS Visual Studio .NET v jazyce Zonnon pomocí UML, včetně zpětné konstrukce UML popisu podle kódu projektu.

Odkazy

Poznámky

  1. Osobní stránka Jürga Gutknechta
  2. rozšíření syntaxe od Niny Gonovy: Matematické rozšíření programovacího jazyka Zonnon. Bulletin univerzity v Nižním Novgorodu. N. I. Lobačevskij, 2010, 3-1, ISSN 1993-1778
  3. Začněte s matematikou . Získáno 13. února 2011. Archivováno z originálu 30. března 2018.
  4. [1] Archivováno 9. listopadu 2011 na Wayback Machine , UNN
  5. László Böszörményi, Peter Schojer: Modulární programovací jazyky, Společná konference modulárních jazyků, JMLC 2003, Klagenfurt, Rakousko, 25.–27. srpna 2003, Proceedings Springer 2003, s.132
  6. Reliability by Design (downlink) . Získáno 13. února 2011. Archivováno z originálu 26. září 2017.