Modula-2

Modula
Date de première version 1977
Paradigme générique, procédural, impératif
Auteur Niklaus Wirth
Typage statique, sûr, nominatif
Dialectes Modula, Modula-1, Modula-2, ISO-Modula, Modula-3
Influencé par Algol, Pascal
A influencé Python, Oberon
Implémentations Windows, OS/2, Solaris, Macintosh, Unix

Modula est un langage de programmation créé en 1977 par Niklaus Wirth à l'École polytechnique fédérale de Zurich pour le système d'exploitation et les applications de la station de travail Lilith[1]. Sa syntaxe est une amélioration de celle du langage Pascal dont il reprend bon nombre de principes.

Modula est un langage de programmation compilé, procédural, fortement typé, modulaire, facile à lire et à apprendre. Il est conçu pour enseigner la programmation et faciliter le développement des projets de grande ampleur.

Par rapport à Pascal, il ajoute :

  • l'encapsulation en modules — d'où le nom du langage,
  • la notion d'interface, de bibliothèque, d'unité de compilation ; avec celle-ci, la programmation de haut et de « bas niveau » (permettant la définition de primitives ou fonctions de base au niveau le plus physique).
  • la programmation concurrente et une bien meilleure portabilité.

En résumé, Modula-2 est plus puissant et plus complet que Pascal. La modularité étant mieux conçue et traitée qu'en C, Modula-2 s'avère plus fiable dans les grosses applications.

Wirth a déclaré que ce langage était « celui qu'il aurait aimé concevoir quand il avait conçu Pascal ».

Dialectes et langages apparentés

Algol W et Pascal (Niklaus Wirth, 1970) sont les ancêtres de Modula.

Oberon est un descendant direct de Modula. (Niklaus Wirth, 1985)

Modula a influencé les langages Java et C#

dialectes

  • Modula, aussi appelé Modula-1. Niklaus Wirth, 1977
  • Modula-2. Niklaus Wirth, 1978
  • ISO-Modula. International Organisation for Standardisation, 1987.
  • Modula-3. 1980

Compilateurs Modula

Caractéristiques du langage Modula

La syntaxe générale de Modula est celle de Pascal. La différence majeure étant l'usage moins fréquent du mot clé BEGIN, et le remplacement du mot clé PROGRAM par MODULE, IMPLEMENTATION MODULE ou DEFINITION MODULE selon les cas.

Contrairement au langage Pascal, qui n'est pas sensible à la casse, les mots réservés et noms des éléments de base (fonctions, types et constantes) en Modula-2 sont obligatoirement écrits en majuscule.

exemple: Hello World écrit en Modula :

   MODULE Hello;
 
   FROM Terminal IMPORT WriteLn, WriteString;
 
   BEGIN
      WriteString("Hello world!");
      WriteLn;
   END Hello.

Typage fort et données brutes

Modula est un langage fortement typé, qui interdit toute conversion entre deux types où il y a possibilité de perte d'information tout en permettant la manipulation de données brutes et non typées.

Les types de base sont INTEGER (nombre entier), REAL (nombre à virgule flottante), CHAR (caractère), et BOOLEAN. (booléen)

Modula offre de nombreuses possibilités de créer des types complexes tels que tableaux ARRAY, enregistrements RECORD, pointeurs typés POINTER, énumérations, intervalles, groupe de flags SET OF.

Modula offre la possibilité de créer des callback par l'utilisation de types PROCEDURE.

En invoquant le module System, Modula offre aussi la possibilité de manipuler des informations brutes et non typées, grâce aux types génériques BYTE et WORD (octet), ADDRESS (pointeur non typé + nombre) et BITSET (groupe de flags non typé). Si un paramètre d'une fonction est de type ARRAY OF BYTE (tableau d'octets de taille quelconque), le paramètre pourra contenir en vrac n'importe quel type d'information. On peut ainsi profiter des avantages de la programmation physique dans les modules où elle est nécessaire, et d'une sécurité maximale partout ailleurs.

Modules, interfaces, encapsulation et unité de compilation

En Modula le mot clé MODULE sert à encapsuler des éléments tels que des variables, des types ou des fonctions, c'est-à-dire à les rendre invisibles de l'extérieur du module, afin de cacher les détails internes de la construction du module.

Un module peut contenir d'autres modules. Dans un programme de grande dimension, un seul fichier exécutable peut contenir plusieurs fonctionnalités, le code source de chaque fonctionnalité peut être réparti sur plusieurs fichiers sources. Les fichiers sont alors compilés par petits groupes appelés unités de compilation.

La compilation peut se faire en plusieurs étapes, une unité de compilation à la fois.

Pour un programme ordinaire l'unité de compilation est composée d'un seul fichier source qui commence par MODULE.

Pour une bibliothèque l'unité de compilation est composée de deux fichiers source :

  • une interface qui commence par DEFINITION MODULE, où sont déclarés les éléments rendus publics, utilisables par les unités qui exploiteront ce module ;
  • un corps qui commence par IMPLEMENTATION MODULE, qui contient les éléments privés, ainsi que les instructions.

Pour utiliser dans un module B un élément (fonction, type, variable) provenant d'un module A, on ajoute au début du module B le mot clé FROM suivi du nom du module (ici A), puis du mot IMPORT et de la liste des éléments importés.

Primitives et bibliothèques

Le langage Modula comporte seulement quelques instructions : INC, DEC, INCL, EXCL, CHR et ORD.

Dans les programmes écrits en Modula, la majorité des opérations se font par l'utilisation des primitives incluses dans un ensemble de bibliothèques fournies avec le compilateur. les fonctions dans ces bibliothèques peuvent varier selon le système et le compilateur.

Le langage offre la possibilité de créer des bibliothèques, et toutes les bibliothèques de primitives fournies avec le compilateur sont écrites en Modula, exception faite des bibliothèques SYSTEM et COROUTINES.

Chaque bibliothèque consiste en un fichier de définition DEFINITION MODULE et un fichier d'implémentation IMPLEMENTATION MODULE.

Dans le fichier de définition sont déclarés les éléments qui seront rendu publics et donc utilisables par les programmes qui exploiteront ce module. Dans le fichier d'implémentation se trouvent les éléments privés, ainsi que les instructions.

Programmation concurrente

La programmation concurrente en Modula est basée sur les coroutines et les variables de contexte. Le contexte étant l'instruction qu'une coroutine était en train d'exécuter à un moment donné (voir commutation de contexte).

Le type de données contexte s'appelle PROCESS en Modula-1 et Modula-2 et COROUTINE en Modula-3.

L'instruction TRANSFER permet d'arrêter l'exécution de la coroutine en cours A, et de relancer l'exécution d'une coroutine quelconque B. le contexte d'exécution de la coroutine B est passé en paramètre. La coroutine A sera suspendue - l'exécution de l'instruction TRANSFER est ne se terminera pas - jusqu'à ce qu'une autre coroutine utilise l'instruction TRANSFER.

L'instruction IOTRANSFER permet d'arrêter l'exécution de la coroutine en cours A et de relancer l'exécution d'une coroutine quelconque B jusqu'à ce qu'une interruption matérielle survienne. La coroutine A reste suspendue jusqu'à la venue de l'interruption.

Une instruction permet de créer un nouveau contexte pour une coroutine.

Ces trois instructions suffisent à réaliser un noyau multitâche préemptif, des thread légers, ainsi que des mécanismes de synchronisation. Des mécanismes qui sont souvent inclus dans les bibliothèques fournies avec le compilateur Modula.

Programmation de haut niveau et portabilité

Modula est un langage de programmation de haut niveau, c'est-à-dire qu'il permet d'écrire un programme sous une forme proche de la pensée humaine, et cache les détails techniques de la machine sur laquelle le programme va être exécuté.

Un langage de programmation de haut niveau permet d'écrire des programmes portables. C'est-à-dire qu'un programme écrit pour un système peut, moyennant quelques changements mineurs, être compilé de nouveau sur un autre système.

Pour faciliter les modifications, les éléments du langage qui peuvent différer d'un système à l'autre sont encapsulés dans les modules SYSTEM et COROUTINE. Il y a notamment les types de données de bas niveau BYTE, ADDRESS, BITSET, PROCESS et COROUTINE. ainsi un module qui risque de demander des changements peut être repéré facilement par le fait qu'il importe des éléments du module SYSTEM ou COROUTINE.

La majorité des instructions dans un programme écrit en Modula consiste à utiliser des fonctions incluses dans les bibliothèques fournies avec le compilateur. Tout comme dans le langage C, il existe une suite de bibliothèques standards et communes à tous les compilateurs, à la suite de laquelle se rajoutent diverses bibliothèques, différentes d'un compilateur à l'autre.

Lilith

Lilith est le nom d'une station de travail conçue en 1978 par l'École polytechnique fédérale de Zurich, et dont l'environnement logiciel est entièrement écrit en Modula.

Cet environnement inclut un compilateur, un système d'exploitation, un environnement graphique et divers outils. Le développement de la machine était à la fois un exercice grandeur nature pour les élèves des facultés d'électronique et d'informatique de l'université, et une occasion d'évaluer les qualités et les défauts de Modula sur les projets de grande ampleur. Le processeur utilisait un M-code, et un bus rapide pour l'affichage graphique.

Voir aussi

  • Modula-3 (en) qui a été conçu comme un successeur de la version améliorée de Modula-2, Modula-2+ (en).
  • Lilith, la station de travail pour laquelle fût conçu Modula-2

Références

  1. « Summary of projects by N. Wirth, 1962 - 1999 », sur people.inf.ethz.ch (consulté le )

(en) Niklaus Wirth, Programming in Modula-2, Berlin, Springer-Verlag, , 176 p. (ISBN 3-540-11674-5)

(fr) Niklaus Wirth (trad. Jacques André), Programmer en Modula-2, Lausanne, Presses Polytechniques et Universitaires Romandes, , 263 p. (ISBN 2-88074-063-0)

Liens externes

Read other articles:

American lawyer and politician (born 1954) Senator Menendez redirects here. For the Texas state senator, see Jose Menendez. Robert Menendez redirects here. For his son, the U.S. representative, see Rob Menendez. Bob MenendezOfficial portrait, 2022United States Senatorfrom New JerseyIncumbentAssumed office January 17, 2006Serving with Cory BookerPreceded byJon CorzineChair of the Senate Foreign Relations CommitteeIn officeFebruary 3, 2021 – September 22, 2023Preceded byJ...

 

 

Halaman ini berisi artikel tentang kabupaten. Untuk kota bernama sama, lihat Kota Tegal. Tegal beralih ke halaman ini. Untuk kegunaan lain, lihat Tegal (disambiguasi). TegalKabupatenTranskripsi bahasa daerah • Hanacarakaꦠꦼꦒꦭ꧀ • Pégonتٓڮل • Alfabet JawaTagalDari kiri ke kanan; ke bawah: Ikon Tugu Poci Slawi, Matahari terbit di Tonggara, Kedungbanteng, Tegal, Pasarean Tegalarum, dan Pemandangan Gunung Slamet dari wisata Guci LambangEtimolo...

 

 

Sunni Muslim dynasty of Tajik origin Kart dynasty آل کرت1244–1381The Kart dynasty at its greatest extentStatusMonarchyCapitalHeratCommon languagesPersianReligion Sunni IslamMalik/Sultan • 1245 Malik Rukn-uddin Abu Bakr (first)• 1370–1389 Ghiyas-uddin Pir 'Ali (last) Historical eraMiddle Ages• Foundation by Malik Rukn-uddin Abu Bakr 1244• Disestablished 1381 Preceded by Succeeded by Ilkhanate Timurid Empire Today part ofAfghanistanIranTurkmenistan...

Halaman ini berisi artikel tentang kelahiran pada hewan. Untuk kelahoiran pada manusia, lihat Kelahiran anak. Untuk kegunaan lain, lihat Kelahiran (disambiguasi). Ibu domba menjilat anaknya terlebih dahulu ketika melahirkan anak kedua Kelahiran atau persalinan adalah tindakan atau proses melahirkan atau menghasilkan keturunan,[1] juga disebut dalam konteks teknis sebagai parturisi. Pada mamalia, proses ini diprakarsai oleh hormon yang menyebabkan dinding otot rahim berkontraksi, menge...

 

 

TreblinkaKamp pemusnahanBlok beton yang menandakan bekas jalur kereta api di Treblinka Treblinka Lokasi Treblinka di PolandiaKoordinat52°37′51.85″N 22°3′11.01″E / 52.6310694°N 22.0530583°E / 52.6310694; 22.0530583Koordinat: 52°37′51.85″N 22°3′11.01″E / 52.6310694°N 22.0530583°E / 52.6310694; 22.0530583Dikenal karenaGenosida sewaktu HolokausLetakDekat Treblinka, Pemerintah Jenderal (Polandia-diduduki Jerman)Dibangun oleh R...

 

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Desember 2023. Sebastian Neumann Informasi pribadiNama lengkap Sebastian NeumannTanggal lahir 18 Februari 1991 (umur 33)Tempat lahir Berlin, JermanTinggi 188 m (617 ft)[1]Posisi bermain BekInformasi klubKlub saat ini VfL OsnabrückNomor 29Kari...

Keuskupan DaetDiœcesis DaëtiensisDiyosesis ng Daet Diócesis de DaetKatolik LokasiNegara FilipinaWilayahCamarines UtaraProvinsi gerejawiCaceresStatistikLuas2.200 km2 (850 sq mi)Populasi- Total- Katolik(per 2006)508.360462,607 (91.0%)Paroki30 (4 kuasi-paroki dan 26 paroki)Sekolah11InformasiDenominasiKatolik RomaGereja sui iurisGereja LatinRitusRitus RomaPendirian27 Mei 1974 (secara kanonik didirikan pada 1 September 1974)KatedralKatedral Tritunggal Kud...

 

 

Questa voce sugli argomenti composti aromatici e chimica degli alimenti è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Questa voce sull'argomento alcaloidi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. TeobrominaFormula di struttura e modello Nomi alternativi3,7-dimetilxantina3,7-dimetil-2,6-diossipurinateobromina Caratteristiche generaliFormula bruta o molecolareC7H8N4O2 Massa molecolare (u)180,16 Aspettoso...

 

 

Alex GravesAlex Graves at the 2011 WonderCon.LahirAlexander John Graves23 Juli 1965 (umur 58)Kansas City, MissouriPekerjaanSutradara, Produser, Penulis naskah Alexander John Alex Graves (lahir 23 Juli 1965) adalah seorang sutradara, produser dan penulis naskah asal Amerika Serikat. Kehidupan awal Alex Graves lahir di Kansas City, Missouri. Ayahnya, William Graves, adalah wartawan untuk The Kansas City Star dan ibunya, Alexandra Sandy Graves, bekerja untuk Senator Amerika Serikat Nancy K...

Czech and Polish mountain range Giant MountainsKrkonoše / KarkonoszeSněžka – the highest peak of the Giant MountainsHighest pointPeakSněžka / ŚnieżkaElevation1,603 m (5,259 ft)Coordinates50°44′10″N 15°44′25″E / 50.73611°N 15.74028°E / 50.73611; 15.74028NamingEtymologyGiant+Mountains (see Names)GeographyCountriesCzech Republic and PolandRegions, VoivodeshipLiberec, Hradec Králové and Lower SilesianSubdivisionsWestern Giant Mountains...

 

 

Pour les articles homonymes, voir Jardin (homonymie) et Potager. Jardin potagerExemple de jardin potagerPrésentationType Utilisation du sol, type of gardenmodifier - modifier le code - modifier Wikidata Un jardin potager[1] ou potager est un jardin ou une partie de jardin où se pratique la culture vivrière de plantes potagères destinées à la consommation familiale, soit principalement des légumes, des fruits non cultivables en verger et des plantes aromatiques. Le jardin potager, en p...

 

 

  关于与「晋朝」標題相近或相同的条目页,請見「晋」。 晉 朝代 西晋 东晋 國君士族 河內司馬氏 首都 洛阳 建康 君主 -首位君主 -末位君主 共4位武帝司馬炎愍帝司馬鄴 共11位元帝司馬睿恭帝司馬德文 開始 266年司馬炎篡魏 317年司马睿於建康稱帝 結束 316年劉曜陷長安 420年劉裕篡晉   黃色為280年西晉疆域圖。 376年疆域圖:  黃色為東晉疆域。  藍...

Canadian-American television series Ricky Sprocket: Showbiz BoyAlso known asRicky SprocketGenreComedySitcomCreated byDavid FineAlison SnowdenWritten byRussell MarcusDavid FineAlison SnowdenBill MotzBob RothShane SimmonsSteven SullivanAlicia Sky VarinaitisDirected byJosh MephamAlison SnowdenDavid FineStarringJillian MichaelsTabitha St. GermainAshleigh BallJayne EastwoodJeff LumbyKathleen BarrDorla BellAndrea LibmanScott McNeilIan James CorlettJamie WatsonBrian DrummondPeter KelamisRichard Newm...

 

 

Climate Köppen climate types of Florida, using 1991–2020 climate normals. The climate of the north and central parts of the U.S. state of Florida is humid subtropical. South Florida has a tropical climate.[1] There is a defined rainy season from May through October when air mass thundershowers that build in the heat of the day drop heavy but brief summer rainfall. In October, the dry season sets in across much of Florida (starting early in the month in northern Florida and near the...

 

 

Ne doit pas être confondu avec rameau communicant blanc. Cet article est une ébauche concernant l’anatomie et les neurosciences. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Rameau communicant gris1 - Neurones sensitifs 2 - Neurones moteurs 3 - Moelle spinale 4 - Substance blanche 5 - Substance grise 6 - Racine antérieure ou motrice 7 - Racine postérieure ou sensitive 8 - Ganglion spinal 9 - Nerf spinal...

Barografo La pressione atmosferica è una grandezza fisica che esprime il rapporto tra la forza peso della colonna d'aria che grava su una superficie, presente in un qualsiasi punto dell'atmosfera terrestre e la misura dell'area della superficie stessa. Nella maggior parte dei casi il valore di tale grandezza è equivalente alla pressione idrostatica esercitata dal peso della colonna d'aria presente al di sopra del punto di misura e si misura nel sistema internazionale in pascal e con uno str...

 

 

Halaman ini berisi artikel tentang spesies Equid. Untuk senjata, lihat Onager (senjata). Onager Periode 4.5–0 jtyl PreЄ Є O S D C P T J K Pg N ↓ Early Pliocene – Holocene Equus hemionus Seekor onager Persia (Equus hemionus onager) di Kebun Binatang Rostov-on-Don, RusiaStatus konservasiHampir terancamIUCN7951 TaksonomiKelasMammaliaOrdoPerissodactylaFamiliEquidaeTribusEquiniGenusEquusSpesiesEquus hemionus Pallas, 1775 Tata namaSinonim taksonEquus onager Boddaert, 1785Subspesies...

 

 

Islam menurut negara Afrika Aljazair Angola Benin Botswana Burkina Faso Burundi Kamerun Tanjung Verde Republik Afrika Tengah Chad Komoro Republik Demokratik Kongo Republik Kongo Djibouti Mesir Guinea Khatulistiwa Eritrea Eswatini Etiopia Gabon Gambia Ghana Guinea Guinea-Bissau Pantai Gading Kenya Lesotho Liberia Libya Madagaskar Malawi Mali Mauritania Mauritius Maroko Mozambik Namibia Niger Nigeria Rwanda Sao Tome dan Principe Senegal Seychelles Sierra Leone Somalia Somaliland Afrika Selatan ...

Cet article est une ébauche concernant l’architecture ou l’urbanisme, le sport, le basket-ball et une salle de concert. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Philadelphia Civic CenterGénéralitésAdresse 3400 Civic Center Blvd, Philadelphie, PennsylvanieConstruction et ouvertureOuverture 1931Coût de construction 5,3 millions $USDFermeture 1996Démolition 2005UtilisationClubs résidents Universit...

 

 

中国人民武装警察部队内蒙古自治区总队中国人民武装警察部队旗存在時期1996年至今國家或地區 中华人民共和国種類武警内卫部队省级总队功能治安維持、民防後備、要塞守备直屬武警总部[1]駐軍/總部内蒙古自治区呼和浩特市專用顏色  橄榄绿指挥官司令员刘会成 武警少將政治委员肖方举 武警少将 中国人民武装警察部队内蒙古自治区总队,简称武警内蒙古�...