Zonnon

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 31. maaliskuuta 2015 tarkistetusta versiosta . tarkastukset vaativat 22 muokkausta .
Zonnon
Kieliluokka välttämätön , rakenteellinen , modulaarinen , oliosuuntautunut , monisäikeinen
Toteutustyyppi koottu
Esiintyi 2000
Tekijä Jürg Gutknecht [1]
Tiedostotunniste _ .znn
Vapauta 1.3.0 ( 9. marraskuuta 2012 )
Tyyppijärjestelmä staattinen , vahva
Tärkeimmät toteutukset ETHZ
Vaikutettu Aktiivinen Oberon
Lisenssi MS-PL
Verkkosivusto zonnon.org
Alusta .NETTO

Zonnon  on Modula-2-kieleen perustuva yleiskäyttöinen ohjelmointikieli , joka tukee Active Oberonissa esiteltyjä aktiivisia objekteja . Kieli esitteli uuden ohjelmointiparadigman - koostumusmallin. Käytössä on roskakeräys , syntaktiset työkalut objektiohjelmointiin, rinnakkaislaskennan järjestämiseen, operaattoreiden uudelleenmäärittelyyn ja poikkeusten käsittelyyn. Kielen on suunnitellut Jürg Gutknecht . ETH -kääntäjän modernissa versiossa kielellä on kyky ratkaista lineaarialgebra-ongelmia Matlabin kaltaisella syntaksilla [2] [3] . Kielenkääntäjä on ensimmäinen, joka on luotu kokonaan Microsoftin ulkopuolella ja integroitu täysin Visual Studioon muiden .NET -alustan kielten ohella . [neljä]

Historia

Hanke syntyi Sveitsin liittovaltion teknologiainstituutin ( ETH ) tutkijoiden ja Oberonin asiantuntijoiden osallistumisesta Project 7:n (Project 7) puitteissa. Tämä aloite Microsoft Researchin vuonna 1999 tekemästä aloitteesta tutkia kielen yhteensopivuutta NET-alusta vuosina (1999-2002) . [5] Kielen kirjoittaja on Jurg Gutknecht, ETH-professori, Niklaus Wirthin kollega ja hänen toinen kirjoittajansa Oberon -kielestä . Zonnon-projekti kehitettiin 2000-luvun alussa Zürichissä ETH: ssa . Projektin tavoitteena oli luoda korkeatasoinen, yleiskäyttöinen ohjelmointikieli, jolla on yksinkertaisin ja selkein syntaksi, mutta samalla riittävät valmiudet minkä tahansa monimutkaisen ohjelmiston kehittämiseen.

Zonnon-projektia ei voida pitää Pascal - Modula - Oberon - Oberon-2 - Component Pascal -kielten rivin jatkona . Se on pikemminkin rinnakkaishaara , joka on erotettu mainitusta linjasta jossain Modula - Oberonin tasolla. Zonnonin välitön esi-isä on Active Oberon , joka on kehitetty saman Jürg Gutknechtin kanssa. Jos Niklaus Wirth yksinkertaisti Oberonia luodessaan Modula-2:ta niin paljon kuin mahdollista poistaen siitä kaiken, mitä ei pidetty liian tarpeellisena, niin Zonnon-kielen luojat valitsivat perinteisemmän polun - he säilyttivät suurimman osan Modula-ominaisuuksista. 2 ja jopa palautti jotain Pascalista, ja myös täydensi kieltä useilla uusilla käsitteillä ja mekanismeilla.

Zonnon on tämän projektin kannattajien mukaan yksinkertaisempi ja tehokkaampi kuin kielet, kuten Ada, Java ja C# [6] . Se on suunniteltu ohjelmoimaan helposti ja tehokkaasti rinnakkaisia ​​järjestelmiä käyttämällä uusia moniytimisprosessoreja, jotka hallitsevat alaa vuosikymmenen ajan.

Ominaisuudet

Kielessä on isot ja pienet kirjaimet erotteleva - ero kirjainten välillä tunnisteissa johtaa niiden eroon. Alkuperäinen siirto on tehty - avainsanat (varatut) varataan, kun kirjoitetaan joko kaikki kirjaimet isoilla tai kaikki kirjaimet pienillä kirjaimilla. Eli acceptja ACCEPT ovat avainsanoja, mutta tässä AcCePt on vain kelvollinen tunniste.

Kielessä on 51 avainsanaa (kirjoitettu joko vain pienillä tai vain isoilla kirjaimilla):
hyväksy | toiminta | joukko | kuten | odottaa | alkaa | kirjoittaja | tapaus | const | määritelmä | div | tehdä | muu | elsif | loppu | poikkeus | poistu | väärä | varten | jos | täytäntöönpano | työvälineet | tuonti | vuonna | on | käynnistää | silmukka | mod | moduuli | uusi | nolla | esine | of | päällä | operaattori | tai | menettely | vastaanottaa | ennätys | tarkennuksia | toista | paluu | itse | lähetä | sitten | to | totta | tyyppi | asti | var | sillä aikaa

Ominaisuuksista voidaan huomata merkin #käyttö "ei tasa-arvo" -operaation symbolina (kuten moduulissa 2) sekä toiminnon olemassaolo ** - "exponsaatio", - palasi käyttöön monien vuosien jälkeen unohduksesta Fortranin kielestä .

Kieli sisältää joukon primitiivityyppejä - useita numeerisia tyyppejä, mukaan lukien etumerkitön kokonaisluku, useita todellisia, merkkijonotyyppi (standardikielityökalut käsittelevät merkkijonoja ei-muokattavina), merkin ja boolen. Aluetyypeistä luovuttiin, mutta luettelointityypit säilytettiin ja niitä käytettiin aktiivisesti. Joukkotyyppi ( SET) on säilytetty, mutta siitä on tullut vähemmän yleinen – joukot voivat nyt koostua vain kokonaisluvuista nollasta johonkin toteutuksen määrittelemään ylärajaan. Alkuperäisiä tyyppejä ja joukkoja voidaan käyttää ohjelmassa, jossa on kokomuuttajat - jos objektin tai objektin kuvauksessa tyypin nimeä seuraa aaltosulkeissa numero, se nähdään bittien lukumääränä, joka on varattava arvolle. Tämä ominaisuus (tarkemmin sanottuna kullekin tyypille sallitut tietyt kokoarvot) on kuitenkin järjestelmästä riippuvainen, joten sen käyttöä ei voida suositella ohjelmissa, jotka väittävät olevansa kannettavat.

Taulukot kuvataan samalla tavalla kuin Oberonissa - matriisityypillä voi olla rajoittamaton koko missä tahansa mittajoukossa; kun luodaan todellista taulukkoa, sen mitat määritetään eksplisiittisesti. Taulukkoindeksit voivat olla joko kokonaislukuja (alaraja on aina nolla) tai numeroituja.

Ohjelman yleinen rakenne, moduulit, moduulin jako määritelmämoduuliksi ja toteutusmoduuliksi, syntaktisten konstruktien kirjoittamisen säännöt on lainattu Modula-2:sta käytännössä ilman muutoksia. Ehdollisen operaattorin IF-THEN-ELSIF-ELSE-END "pitkä" rakenne on tuettu, kaikki moduulissa käytettävissä olevat syklit: REPEAT-UNTIL, WHILE, FOR, LOOP, CASE-valintarakenne. Pascalista normaalit primitiiviset I/O-operaatiot palautettiin kieleen Write, WriteLn, Read, ReadLn(jotka siirrettiin moduulin 2 standardikirjastoon ).

Lisäksi kielessä on:

Zonnonin tärkein käsitteellinen innovaatio Modulaan ja Oberoniin verrattuna oli aktiivisten esineiden käyttöönotto. Useimmissa ohjelmointikielissä objekti on yksinkertaisesti kokoelma tietoja ja käsittelymenetelmiä, joita ohjelma käyttää tarpeen mukaan. Aktiivisilla objekteilla on lisäksi oma käyttäytymisensä, eli jokaisella aktiivisella objektilla on oma itsenäinen suoritussäie, joka on vuorovaikutuksessa muiden säikeiden kanssa kielenvaihtotyökalujen kautta niille kuvattujen protokollien mukaisesti. Zonnonissa tuli mahdolliseksi kuvata aktiivisia objekteja ja niiden vuorovaikutuksen järjestystä kielellisesti, mikä mahdollistaa tarvittaessa ohjelman muodostamisen itsenäisesti toimivien ja vuorovaikutuksessa olevien aktiivisten objektien joukkona.

Ohjelmaesimerkki

moduuli Esimerkki ; (*tämä on kommentti*) var x , y , summa : kokonaisluku ; alkaa kirjoittaa ( "Syötä X : " ) ; readln ( x ) ; write ( "Syötä Y : " ) ; readln ( y ) ; summa : = x + y (*laske kahden luvun summa*) writeln ( " X + Y = " , summa ) ; loppu Esimerkki .

Tämä ohjelma laskee kahden näppäimistöltä syötetyn numeron summan.

Koostumusmalli

Zonnon käyttää koostumukseen perustuvia periytymismalleja. Tyypillisesti objekti (tai moduuli) koostuu useista toiminnallisista komponenteista, joista jokainen esittelee itsensä asiakkaille abstraktin määritelmän muodossa. Joukko määritelmiä sekä objektin oma käyttöliittymä (eli objektin kaikkien julkisten elementtien kokoelma) muodostaa rajapinnan objektin ja sen asiakkaiden välillä. Tämän avulla voit ymmärtää modulaarisen ja komponenttiohjelmoinnin edut, ja mikä tärkeintä, pystyä tukemaan yksi- ja moniperintöä (ilman jälkimmäisen C++:ssa toteutuksen haittoja), polymorfismia, jalostusta ja aggregaatiota, delegointia tasolla. menetelmän allekirjoituksista.

Edut ja haitat

On tuskin mahdollista yksiselitteisesti määritellä tiettyjä kielen piirteitä eduiksi ja haitoksi - tällainen arviointi riippuu suuresti arvioijan näkemyksestä. Tässä suhteessa olisi tarkoituksenmukaista verrata Zonnonia sitä lähellä oleviin kieliin.

Verrattuna Pascaliin ja Modula-2:een Zonnonista on tullut paljon tehokkaampi, mutta samalla tilavampi ja monimutkaisempi. Tehon lisäys saavutettiin uusien syntaktisten rakenteiden sisällyttämisen ansiosta. Rinnakkaiset prosessointitoiminnot (Zonnonin tapauksessa nämä eivät ole vain syntaktisia rakenteita itse, vaan myös yleinen periaate ohjelmien muodostamisesta aktiivisten objektien joukoiksi) mahdollistavat rutiinitoimintojen siirtämisen kääntäjälle. Ohjelmoinnin modulaarisen periaatteen säilyttäminen mahdollistaa ohjelmien kirjoittamisen kerralla ilman opetustarkoituksiin tärkeää olioohjelmointia . Uusi sävellysmalli on otettu käyttöön, mutta OOP:n kannattajat voivat myös käyttää objekteja. Poikkeuskäsittelypalvelut on otettu käyttöön. Kielten vertaileva arviointi riippuu siitä, kuinka merkittävinä näitä kahta etua pidetään.

Rinnakkaisprosessointityökaluista on erilaisia ​​mielipiteitä: jotkut teoreetikot ja harjoittajat ovat sitä mieltä, että rinnakkaisohjelmointityökaluja ei pitäisi tuoda kieleen ollenkaan ja järjestelmäkirjastojen tuki on heille aivan riittävä, toiset huomauttavat, että tällaisten kirjastojen tulisi olla täysin vakioita, eli tulla osaksi kieltä, muuten niitä käyttävät ohjelmat menettävät siirrettävyyden (toisaalta siirrettävyyttä ei todellakaan niin usein tarvita). Joka tapauksessa ohjelmoijalle Zonnonin rinnakkaisten prosessointimekanismien arvon määrää suurelta osin se, missä määrin hän on valmis hyväksymään kielen ehdottaman aktiivisten objektien mallin ohjelman pääelementiksi.

Myöskään poikkeusten käsittelymekanismista ei ole yksimielisyyttä. Niklaus Wirth kieltäytyi ottamasta käyttöön tällaista mekanismia Oberoniin pitäen sitä hyödyttömänä, koska Oberon-järjestelmä, jota varten tämä kieli kehitettiin, ei tarvitse sitä. Yleisesti ollaan sitä mieltä, että useimmat ongelmat, jotka liittyvät ohjelmien reaktioon mahdollisiin virheisiin, on täysin ratkaistu ilman poikkeuksen käsittelyä, eikä tämä mekanismi ole ilmainen - yleensä joudut maksamaan mahdollisuudesta havaita mikä tahansa virhe ohjelman suorituskyvyllä. . Toisaalta poikkeusten käsittely on kätevää ja nyt yleistynyt, eivätkä suorituskykyhäviöt ole niin suuria (tai nopeusvaatimukset eivät ole niin kriittisiä), että kehitysmukavuudesta luopuisi.

Zonnonin jäljellä olevia innovaatioita, erityisesti kehittyneempää OOP-syntaksia, rajapintoja, indeksoijia, ominaisuuksia, operaattorin uudelleenmäärittelyä, tuskin pitäisi pitää perustavanlaatuisena. Toisaalta ne vaikeuttavat kieltä, ja kaikki, mitä niiden avulla voit tehdä, voidaan tehdä melkein yhtä helposti ilman niitä. Toisaalta on huomattava, että tässä tapauksessa nämä varat toteutettiin varsin taloudellisesti. Loppujen lopuksi, jos vertaamme Zonnonia Object Pascaliin, joka kehittyi suunnilleen saman kaavan mukaan - täydentäen lähdekieltä uusilla muodikkailla mekanismeilla, voimme nähdä, että Zonnon on ominaisuuksiltaan samalla tasolla Object Pascalin kanssa ohittaen sen rinnakkaiskäsittelytyökalut, mutta silti yksinkertaisempi.

Toteutukset

Kielen käyttöönotto ei alusta alkaen edennyt oman integroidun kehitysympäristön ja tukiympäristön luomisen polkua, kuten Oberon-kielen tapauksessa, vaan integraatiopolkua julkaissut ja ylläpitämään .NET-alustaan. Microsoft. Tämä lähestymistapa lisäsi toteutusnopeutta eliminoimalla oman ympäristön ja kirjastojärjestelmän kehittämisen sekä antoi ohjelmille automaattisesti pääsyn .NET-ympäristön sovellus- ja järjestelmäkirjastoihin. Tämän toteutusvaihtoehdon haittoja ovat kehityksen riippuvuus ulkoisista ohjelmistoista, jotka eivät ole kielen toteuttajan hallinnassa.

Samassa .NET-toteutuksessa on kuitenkin muunnelma monikäyttöympäristöstä, joka on integroitu Eclipseen ja käyttää ilmaista .NET:n Mono -toteutusta , joka voi toimia Linuxissa.

Windowsille on myös yksinkertaisin natiivi kehitysympäristö ETH Zonnon Builder , joka sisältää tekstieditorin syntaksin korostuksella, projektinrakennustyökalut ja yksinkertaiset versionhallintatyökalut.

Evgeny Zuev loi ensimmäisen kääntäjän ETH :ssa Microsoft .NET -alustalle. Vuonna 2005 luotiin myös ohjelmistopaketti, joka integroi kääntäjän ja CASE-järjestelmän, joka tukee Zonnon-ohjelmien suunnittelua rakentamalla kaavioita UML 2.0 -kielellä Microsoft Visual Studio .NET -kehitysympäristöön. Tuloksena oleva työkalu tukee MS Visual Studio .NET -ohjelmistokehityssyklin standardia Zonnon-kielellä UML:ää käyttäen, mukaan lukien UML-kuvauksen käänteinen rakentaminen projektikoodin mukaan.

Linkit

Muistiinpanot

  1. Jürg Gutknechtin henkilökohtainen sivu
  2. Nina Gonova syntaksilaajennus: Zonnon-ohjelmointikielen matemaattinen laajennus. Nižni Novgorodin yliopiston tiedote. N. I. Lobachevsky, 2010, 3-1, ISSN 1993-1778
  3. Aloita matematiikasta . Haettu 13. helmikuuta 2011. Arkistoitu alkuperäisestä 30. maaliskuuta 2018.
  4. [1] Arkistoitu 9. marraskuuta 2011 the Wayback Machine , UNN
  5. László Böszörményi, Peter Schojer: Modulaariset ohjelmointikielet, yhteinen modulaaristen kielien konferenssi, JMLC 2003, Klagenfurt, Itävalta, 25.-27. elokuuta 2003, Proceedings Springer 2003, s. 132
  6. Suunniteltu luotettavuus (downlink) . Haettu 13. helmikuuta 2011. Arkistoitu alkuperäisestä 26. syyskuuta 2017.