Modula-3 | |
---|---|
Szemantika | kötelező , strukturális , moduláris , objektumorientált , általános |
Nyelvóra | programozási nyelv , objektum-orientált programozási nyelv és kötelező programozási nyelv |
A végrehajtás típusa | összeállított |
Megjelent | 1986-1988 _ _ |
Szerző | DEC SRC , Olivetti |
Fejlesztő | Digital Equipment Corporation |
Kiadás | 5.8.6 (2010. július 14. ) |
Típusrendszer | szigorú, statikus |
Főbb megvalósítások | CM3 , PM3 , EzM3 , HM3 |
Befolyásolt | Algol , Modula-2 , Modula-2+ , Oberon , Pascal |
befolyásolta | C# , Java , Ocaml , Python , Nim |
Weboldal | module3.org |
A Modula-3 (Modula-3, M3) egy rendszerprogramozási nyelv , a Modula-2 nyelv fejlesztése . A DEC Rendszerkutató Központjában (SRC) fejlesztették ki Olivettivel .
Fejlesztők: Luca Cardelli, Jim Donahue, Mick Jordan, Bill Kalsow és Greg Nelson. A nyelvet nem használják széles körben az iparban, bár a tudományos körökben használják. A fejlesztés során a nyelvet erősen befolyásolta a Modula-2+ nyelv, majd az SRC használta a DEC Firefly többprocesszoros munkaállomás szoftverének írásához .
A Modula-3 főbb jellemzői a következők: egyszerűség, típusbiztonság és rendszerszoftver írására való használhatóság . A Modula-3 támogatja az általános programozást , a multitaskingot , az automatikus memóriakezelést ( szemétgyűjtés ), a kivételkezelést , az objektumorientált programozást (beleértve az adatok és módszerek elrejtését). A nyelv fejlesztői azt a célt tűzték ki, hogy a Modula-2-t a modern programozási nyelvek újdonságaival egészítsék ki. Ugyanakkor a potenciálisan veszélyes és összetett funkciók, mint például a többszörös öröklődés és az operátor túlterhelése , nem szerepeltek a nyelvben.
A Modula-3 fejlesztése 1986-ban kezdődött. Maurice Wilkes írt Niklaus Wirthnek néhány ötlettel a modul új verziójával kapcsolatban. Wilkes, aki korábban a DEC-nél dolgozott, visszatért Angliába, és az Olivetti Kutatóközpontban helyezkedett el. Wirth ebben az időben az új Oberon programozási nyelv fejlesztésével volt elfoglalva , de nem utasította vissza Wilkes segítségét. A Modula-3 leírása 1988 augusztusában készült el, és 1989 januárjában felülvizsgálták. Ezzel egy időben megjelentek a DEC SRC és az Olivetti fordítói, és megjelentek a külső cégek fordítói is.
A XX. század kilencvenes éveiben a Modula-3 főként az akadémiai környezetben terjedt el, mint programozásoktatási nyelv, az iparban pedig szinte soha nem használták. Ennek oka a nyelv fő fejlesztőjének, DEC-nek a halála lehet. Ugyanakkor a CM3 kereskedelmi fordítóprogramot és a Reactor integrált fejlesztői környezetet javasolta a Critical Mass Corporation. 2000-ben a Critical Mass megszűnt. A Modula-3-at jelenleg az Elego Software Solutions GmbH támogatja, amely a CM3 fordító forráskódját a Critical Mass-tól örökölte. A Reactor IDE-t most átnevezték CM3 IDE-re, és forráskóddal terjesztették. 2002 márciusában az Elego megkapta a PM3 fordítóprogram forráskódját, amelyet korábban az Ecole Polytechnique de Montrealban fejlesztettek ki.
Kivételek kezelése a TRY ... EXCEPT ... END és TRY ... FINALLY ... END blokkban. Az EXCEPT konstrukció a CASE konstrukcióhoz hasonlóan valósul meg. A Modula-3 támogatja a LOOP...EXIT...END hurkot is.
Megvalósított támogatás az objektum-orientált programozáshoz . Az objektum típusa OBJECT. Ez a típus abban különbözik a rekordoktól (RECORD), hogy referenciatípus, és lehetővé teszi a típushoz (metódusokhoz) társított eljárások létrehozását, valamint támogatja a metódusok túlterhelését. Minden módszer virtuális. Például a konstrukció:
A TÍPUS = a OBJEKTUM: INTEGER; MÓDSZEREK p():=AP VÉGE;definiál egy objektumtípust, amely egy egész típusú a mezőt és egy p metódust tartalmaz. Az AP eljárás a p metódus megvalósítása, és a következő formájú:
ELJÁRÁS AP(saját: A) = BEGIN … END AP;A metódust így hívjuk: op();, ahol o egy A típusú változó (objektum).
A REVEAL konstrukció egyszerű, de nagyon hatékony mechanizmust biztosít az objektum megvalósítás részleteinek elrejtésére az ügyfelek elől.
A Modula-3 azon kevés nyelvek egyike, amelyhez a külső modulokból importált programozási egységek szigorú minősítése szükséges. Például, ha az A modul a B modul x változóját használja, akkor erre a változóra való hivatkozást a következő formában kell megírni: Bx Más szóval, a Modula-3 nem teszi lehetővé az összes modul által exportált objektum importálását. Emiatt szinte lehetetlen letiltani a programot új funkciók hozzáadásával. Nagyszámú felhasználó egyidejűleg bővítheti a programot anélkül, hogy félne attól, hogy ez meghibásodásokhoz vezet. A Modula-3 különbséget tesz a metódusaláírás deklarálása (a METHODS blokk) és a túlterhelés (az OVERRIDES blokk) között is.
szia világ! így nézhet ki:
MODUL Fő; IMPORTIO; KEZDŐDIK IO.Put("Hello World\n") END fő.vagy így (a kimeneti adatfolyam modul használatával):
MODUL Hello EXPORT Főoldal; IMPORT Wr, Stdio; KEZDŐDIK Wr.PutText(Stdio.stdout, "Hello, World!\n"); Wr.Close(Stdio.stdout); VÉGE Hello.A C nyelvhez hasonlóan a 3. modulban a legtöbb programírási eljárás a szabványos könyvtárban valósul meg. Az I/O műveletek a szabványos könyvtárban is megvalósulnak.
A szabványos könyvtár interfészeket is tartalmaz a lebegőpontos számok, szótárak, listák stb.
A Modula-3 a hivatkozásokon kívül a mutatókat is támogatja . A ADDRESS típus a void* típus C megfelelője . Egy egész típusú változóra mutató mutató így néz ki:
TÍPUS IntPtr = NYOMTALAN REF INTEGER;Egy változó címének megszerzéséhez használja az ADR() beépített függvényt, amely analóg a & operátorral a C-ben. A szemétgyűjtő nem tartja nyilván a mutatókat (ezt az UNTRACED szó jelzi). Minden mutatót manuálisan kell felszabadítani a DISPOSE beépített eljárással.
Ezenkívül a Modula-3 támogatja a C nyelven elérhető összes adattípust. Emiatt a Modulo-3 kód szabadon összekapcsolható C kóddal. Az összes típusdefiníciót a Ctypes modul tartalmazza.
A legtöbb fordító nyílt forráskódú.
Minden megvalósítás nagyszámú (több mint 20) platformot támogat. Az adattípusok binárisan kompatibilisek a C nyelvtípusokkal, ami lehetővé teszi a két nyelv együttes használatát.
E könyvek egy része külföldi webáruházakban is megtalálható. Legtöbbjük ingyenesen elérhető az interneten.
Programozási nyelvek | |
---|---|
|