Zonnon

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2015. március 31-én felülvizsgált verziótól ; az ellenőrzések 22 szerkesztést igényelnek .
Zonnon
Nyelvóra kötelező , strukturális , moduláris , objektumorientált , többszálas
A végrehajtás típusa összeállított
Megjelent 2000
Szerző Jürg Gutknecht [1]
Fájlkiterjesztés _ .znn
Kiadás 1.3.0 ( 2012. november 9. )
Típusrendszer statikus , erős
Főbb megvalósítások ETHZ
Befolyásolva Aktív Oberon
Engedély MS-PL
Weboldal zonnon.org
Felület .HÁLÓ

A Zonnon  egy általános célú programozási nyelv , amely a Modula-2 nyelven alapul, és támogatja az Active Oberonban bevezetett aktív objektumokat . A nyelv új programozási paradigmát vezetett be - a kompozíciós modellt. Szemétgyűjtést használnak , szintaktikai eszközöket tartalmaznak az objektumprogramozáshoz, a párhuzamos számítások szervezéséhez, az operátorok újradefiniálásához és a kivételkezeléshez. A nyelvet Jürg Gutknecht tervezte . Az ETH fordító modern verziójában a nyelv képes lineáris algebrai feladatok megoldására a Matlabhoz hasonló szintaxissal [2] [3] . A nyelvi fordító az első, amelyet teljesen a Microsofton kívül hoztak létre, és teljes mértékben integrálták a Visual Studióba más .NET platformnyelvekkel együtt . [négy]

Történelem

A projekt a Svájci Szövetségi Technológiai Intézet ( ETH ) tudósainak és az Oberon szakembereinek részvételével jött létre a 7. projekt (7. projekt) keretében, amely kezdeményezést a Microsoft Research 1999-ben terjesztett elő, hogy tanulmányozzák a nyelv kompatibilitását a NET platform az (1999-2002) években . [5] A nyelv szerzője Jurg Gutknecht, az ETH professzora, Niklaus Wirth munkatársa és társszerzője az Oberon nyelvről . A Zonnon projektet a 2000-es évek elején fejlesztették ki Zürichben az ETH -n . A projekt célja egy magas szintű, általános célú programozási nyelv létrehozása volt, amely a legegyszerűbb és legtisztább szintaxissal rendelkezik, ugyanakkor elegendő képességgel rendelkezik bármilyen bonyolultságú szoftver fejlesztéséhez.

A Zonnon projekt nem tekinthető a Pascal - Modula - Oberon - Oberon-2 - Component Pascal nyelvek sorának folytatásának . Ez inkább egy párhuzamos ág , valahol a Modula - Oberon szintjén elválasztva az említett vonaltól. A Zonnon közvetlen őse az Active Oberon , amelyet ugyanazon Jürg Gutknecht közreműködésével fejlesztettek ki. Ha Niklaus Wirth az Oberon létrehozásakor a lehető legnagyobb mértékben leegyszerűsítette a Modula-2-t, eltávolítva belőle mindent, amit nem tartott túl szükségesnek, akkor a Zonnon nyelv alkotói hagyományosabb utat választottak - megőrizték a Modula jellemzőinek nagy részét. 2 és még vissza is adott valamit Pascaltól, illetve több új fogalommal és mechanizmussal is kiegészítette a nyelvet.

A Zonnon a projekt támogatói szerint egyszerűbb és erősebb, mint az olyan nyelvek, mint az Ada, a Java és a C# [6] . Úgy tervezték, hogy egyszerűen és hatékonyan programozza a párhuzamos rendszereket az új többmagos processzorok segítségével, amelyek egy évtizedig uralják az iparágat.

Jellemzők

A nyelv megkülönbözteti a kis- és nagybetűket – az azonosítók betűinek különbsége a különbségükhöz vezet. Eredeti lépés történt – a kulcsszavak (fenntartott) lefoglalásra kerülnek, ha az összes betűt nagybetűvel vagy az összes betűt kisbetűvel írják. Azaz acceptés ACCEPT kulcsszavak, de itt AcCePt csak egy érvényes azonosító.

A nyelvben 51 kulcsszó található (vagy csak kisbetűvel vagy csak nagybetűvel írva):
elfogad | tevékenységek | tömb | mint | vár | kezdődik | szerző: | eset | const | meghatározás | div | csinálni | más | elsif | vége | kivétel | kilépés | hamis | mert | ha | végrehajtás | eszközök | import | in | az | elindítása | hurok | mod | modul | új | nulla | tárgy | a | on | operátor | vagy | eljárás | kap | rekord | finomítások | ismétlés | vissza | saját | küld | majd | hogy | igaz | típus | ig | var | míg

A jellemzők közül kiemelhető a jel használata #a „nem egyenlő” művelet szimbólumaként (mint a 2-es modulban), valamint a művelet jelenléte ** - a „hatványosítás”, - sok év után visszatért a szolgálatba. a felejtés a fortrán nyelvből .

A nyelv primitív típusokat tartalmaz – több numerikus típus, köztük egy előjel nélküli egész, több valódi, egy karakterlánctípus (a szabványos nyelvi eszközök a karakterláncokat nem módosíthatóként kezelik), karakter és logikai érték. A tartománytípusokat elhagyták, de a felsorolási típusokat megtartották és aktívan használták. A halmaztípus ( SET) megmaradt, de kevésbé általános lett – a halmazok már csak a nullától a megvalósítás által meghatározott felső határig terjedő egész számokból állhatnak. Primitív típusok és halmazok használhatók a méretmódosítókkal rendelkező programokban - ha egy objektum vagy objektum leírásában a típusnév után kapcsos zárójelben szám következik, akkor azt az értékhez hozzárendelendő bitek számaként érzékeljük. Ez a funkció (pontosabban az egyes típusokhoz megengedett méretértékek) azonban rendszerfüggő, így használata nem javasolt a hordozhatónak mondható programokban.

A tömbök leírása ugyanúgy történik, mint az Oberonban - egy tömbtípus korlátlan méretű lehet bármilyen méretkészletben, valódi tömb létrehozásakor a méretei kifejezetten meg vannak adva. A tömb indexei lehetnek egész számok (az alsó korlát mindig nulla) vagy felsoroltak.

A program általános felépítése, a modulok, a modul felosztása definíciós és implementációs modulra, a szintaktikai konstrukciók írásának szabályai gyakorlatilag változtatás nélkül a Modula-2-ből kölcsönzöttek. Az IF-THEN-ELSIF-ELSE-END feltételes operátor "hosszú" felépítése támogatott, a Modulban elérhető minden típusú ciklus: REPEAT-UNTIL, WHILE, FOR, LOOP, CASE kiválasztási konstrukció. A Pascalból a szabványos primitív I/O műveletek visszakerültek a nyelvbe Write, WriteLn, Read, ReadLn(amelyek átkerültek a Modul-2 szabványos könyvtárába ).

Ezenkívül a nyelv a következőket tartalmazza:

A Zonnon fő koncepcionális újítása a Modulához és az Oberonhoz képest az aktív objektumok bevezetése volt. A legtöbb programozási nyelvben az objektum egyszerűen adatok és feldolgozási módszerek gyűjteménye, amelyet a program szükség szerint használ. Az aktív objektumoknak ráadásul saját viselkedésük van, vagyis minden aktív objektumnak megvan a saját független végrehajtási szála, amely a nyelvcsere eszközökön keresztül lép interakcióba más szálakkal, a hozzájuk leírt protokollok szerint. A Zonnonban lehetővé vált az aktív objektumok és interakciójuk sorrendjének nyelvi eszközökkel történő leírása, ami szükség esetén lehetővé teszi, hogy önállóan működő és kölcsönhatásban álló aktív objektumok halmazaként programokat alkossunk.

Programpélda

modul Példa ; (*ez egy megjegyzés*) var x , y , sum : integer ; begin write ( "Enter X : " ) ; readln ( x ) ; write ( "Írja be az Y : " ) ; readln ( y ) ; összeg : = x + y (*két szám összegének kiszámítása*) writeln ( " X + Y = " , sum ) ; vége Példa .

Ez a program kiszámítja a billentyűzetről beírt két szám összegét.

Kompozíciós modell

A Zonnon aggregáción alapuló kompozíciós öröklődési modelleket használ. Általában egy objektum (vagy modul) számos funkcionális komponensből áll, amelyek mindegyike absztrakt definíció formájában jelenik meg az ügyfelek számára. Definíciók halmaza, valamint egy objektum saját interfésze (vagyis egy objektum összes nyilvános elemének gyűjteménye) képezi az interfészt az objektum és kliensei között. Ez lehetővé teszi a moduláris és komponens programozás előnyeinek felismerését, és ami fontos, hogy támogatni tudja az egyszeres és többszörös öröklődést (az utóbbi C ++-ban való megvalósításának hátrányai nélkül), a polimorfizmust, a finomítást és aggregálást, a szintű delegálást. metódus aláírásainak.

Előnyök és hátrányok

A nyelv bizonyos jellemzőit aligha lehet egyértelműen előnyként és hátrányként meghatározni – egy ilyen értékelés nagymértékben függ az értékelő nézetétől. E tekintetben helyénvaló lenne összehasonlítani a Zonnont a hozzá közel álló nyelvekkel.

A Pascalhoz és a Modula-2-höz képest a Zonnon sokkal erősebb, ugyanakkor terjedelmesebb és összetettebb lett. Az erőnövekedést az új szintaktikai konstrukciók beépítése miatt érték el. A párhuzamos feldolgozási lehetőségek (a Zonnon esetében ezek nemcsak maguk a szintaktikai konstrukciók, hanem a programok aktív objektumok halmazaként való felépítésének általános elve is) lehetővé teszik a rutinműveletek átvitelét a fordítóba. A programozás moduláris elvének megőrzése lehetővé teszi, hogy a programokat egyszerre, objektum-orientált programozás nélkül írják meg , ami oktatási célokra fontos. Új kompozíciós modellt vezettek be, de az OOP támogatói objektumokat is használhatnak. Kivételes kezelési lehetőségeket vezettek be. A nyelvek összehasonlító értékelése attól függ, hogy mennyire tartják jelentősnek ezt a két előnyt.

A párhuzamos feldolgozó eszközökről eltérőek a vélemények: egyes teoretikusok és gyakorlati szakemberek úgy vélik, hogy a párhuzamos programozási eszközöket egyáltalán nem kellene bevezetni a nyelvbe, és a rendszerkönyvtárak támogatása is elég számukra, mások arra hívják fel a figyelmet, hogy az ilyen könyvtáraknak teljesen szabványosnak kell lenniük. azaz továbbra is a nyelv részévé váljanak, különben az ezeket használó programok elvesztik a hordozhatóságot (másrészt a hordozhatóságra nincs is olyan gyakran szükség). Mindenesetre egy programozó számára Zonnon párhuzamos feldolgozási mechanizmusainak értékét nagyban meghatározza az, hogy mennyire hajlandó elfogadni a nyelv által javasolt aktív objektumok modelljét a program fő elemeként.

Nincs konszenzus a kivételek kezelésének mechanizmusáról sem. Niklaus Wirth nem volt hajlandó ilyen mechanizmust bevezetni az Oberonba, mivel haszontalannak tartotta, mivel az Oberon rendszernek, amelyre ezt a nyelvet fejlesztették, nincs rá szüksége. Általánosságban elmondható, hogy az a vélemény, hogy a programok esetleges hibákra való reagálásával kapcsolatos problémák többsége teljesen megoldódik kivételkezelés nélkül, és ez a mechanizmus nem ingyenes - általában fizetni kell azért, hogy a program teljesítményével bármilyen hibát elkapjon. . Másrészt a kivételkezelés kényelmes és mára általánossá vált, a teljesítményveszteségek pedig nem olyan nagyok (vagy a sebességigények nem olyan kritikusak), hogy feladják a fejlesztési kényelmet.

A Zonnon fennmaradó újításai, különösen a fejlettebb OOP szintaxis, interfészek, indexelők, tulajdonságok, operátorok újradefiniálása aligha tekinthető alapvetőnek. Egyrészt bonyolítják a nyelvet, és minden, amit megengednek, szinte ugyanolyan egyszerűen elvégezhető nélkülük. Másrészt meg kell jegyezni, hogy ebben az esetben ezeket az alapokat meglehetősen gazdaságosan hajtották végre. Hiszen ha a Zonnont összehasonlítjuk a hozzávetőlegesen azonos séma szerint - a forrásnyelvet új, divatos mechanizmusokkal kiegészített - Object Pascallal, akkor láthatjuk, hogy Zonnon képességeit tekintve egy szinten van az Object Pascallal, megkerülve azt ben. párhuzamos feldolgozó eszközök, de továbbra is egyszerűbbek maradnak.

Megvalósítások

A nyelv bevezetése a kezdetektől nem a saját integrált fejlesztői környezet és támogató környezet kialakításának útján haladt, mint az Oberon nyelv esetében, hanem az általa kiadott és karbantartott .NET platformmal való integráció útján haladt. Microsoft. Ez a megközelítés a saját környezet és a könyvtári rendszer fejlesztésének kiiktatásával növelte a megvalósítás sebességét, valamint automatikusan hozzáférést adott a programoknak a .NET környezet alkalmazás- és rendszerkönyvtáraihoz. Ennek a megvalósítási lehetőségnek a hátrányai közé tartozik, hogy a fejlesztés külső szoftvertől függ, amely nem áll a nyelvi implementátor irányítása alatt.

Ugyanazon .NET-megvalósításon belül azonban létezik egy többplatformos fejlesztői környezet egy változata, amely integrálva van az Eclipse -be , és a .NET ingyenes Mono megvalósítását használja , amely Linux alatt is működhet.

A Windows számára elérhető a legegyszerűbb natív fejlesztői környezet , az ETH Zonnon Builder is, amely szövegszerkesztőt tartalmaz szintaktikai kiemeléssel, projektépítő eszközöket és egyszerű verzióvezérlő eszközöket.

Az első fordítót az ETH -n készítette a Microsoft .NET platformra Jevgenyij Zuev. 2005-ben egy olyan szoftvercsomag is készült, amely egy fordítót és egy CASE rendszert integrál, amely támogatja a Zonnon programok tervezését UML 2.0 nyelvű diagramok összeállításával a Microsoft Visual Studio .NET fejlesztői környezetbe. Az eredményül kapott eszköz támogatja az MS Visual Studio .NET szoftverfejlesztési ciklus szabványát a Zonnon nyelven UML-t használva, beleértve az UML leírásának fordított konstrukcióját a projektkód szerint.

Linkek

Jegyzetek

  1. Jürg Gutknecht személyes oldala
  2. Nina Gonova szintaktikai kiterjesztése: A Zonnon programozási nyelv matematikai kiterjesztése. A Nyizsnyij Novgorodi Egyetem közleménye. N. I. Lobacsevszkij, 2010, 3-1, ISSN 1993-1778
  3. Kezdje a matematikával . Letöltve: 2011. február 13. Az eredetiből archiválva : 2018. március 30.
  4. [1] Archiválva : 2011. november 9., a Wayback Machine , UNN
  5. Böszörményi László, Peter Schojer: Moduláris programozási nyelvek, Joint Modular Languages ​​​​Conference, JMLC 2003, Klagenfurt, Ausztria, 2003. augusztus 25-27., Proceedings Springer 2003, 132.
  6. Tervezett megbízhatóság (downlink) . Letöltve: 2011. február 13. Az eredetiből archiválva : 2017. szeptember 26..