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:

Ada usul agar Bendera Penyatuan Korea diganti judulnya dan dipindahkan ke Bendera Korea Bersatu (Diskusikan). Bendera Penyatuan Korea Perbandingan 3:5 Bendera Penyatuan KoreaHangul통일기 atau 한반도기 Hanja統一旗 atau 韓半島旗 Alih AksaraTong-ilgi atau HanbandogiMcCune–ReischauerT'ong'ilgi atau Hanbandogi Bendera Penyatuan adalah bendera yang dibuat untuk mewakili seluruh Korea ketika Korea Utara dan Selatan berpartisipasi dalam acara olahraga. Bendera ini pertama kali dig...

 

An antibody digested by papain yields three fragments, two Fab fragments and one Fc fragment An antibody digested by pepsin yields two fragments: a F(ab')2 fragment and a pFc' fragment Fragmen konstan (Inggris: constant fragmentcode: en is deprecated ,[1] fragment crystallizable region, Fc, fragment constant region, constant region,[2] c region) adalah bagian dari molekul antibodi yang melaksanakan aktivitas biologis (eksekutif) dari kelas antibodi bersangkutan demi menggerakk...

 

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 2022. 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 Oktober 2022. Meskip...

Israel has 92 species of reptiles, almost a third of which live in its northern areas. The reptiles of Israel live in environments ranging from the Negev Desert to the Red Sea, from the Jordan River to the Judaean Mountains. Turtles and tortoises Pond turtles Caspian turtle (Mauremys caspica) Balkan pond turtle (Mauremys rivulata) Sea turtles Loggerhead sea turtle (Caretta caretta) Green sea turtle (Chelonia mydas) Leatherback sea turtle (Dermochelys coriacea) Softshell turtles African softs...

 

Untuk Maputo sebagai provinsi, lihat: Provinsi Maputo. Maputo Lourenço Marques (Nama resmi sampai tahun 1976)kotaSearah jarum jam, dari atas: Panorama Maputo, Balai Kota Maputo, Katedral Our Lady of the Immaculate Conception, Stasiun Kereta Api Maputo, Port Maputo, Avenida 24 de Julho, dan Patung Samora Machel di Independence Square BenderaMaputoLokasi di MozambiqueKoordinat: 25°58′S 32°35′E / 25.967°S 32.583°E / -25.967; 32.583Koordinat: 25°58′S 32°35′E...

 

Irish political party The Workers' Party Páirtí na nOibrithePresidentMichael McCorry[1] (disputed)Founded28 November 1905(original form)17 January 1970(current form)[a]Split fromSinn FéinHeadquarters8 Cabra Road,Dublin 7, IrelandYouth wingWorkers' Party Youth[2]IdeologyCommunismMarxism–LeninismIrish republicanismPolitical positionFar-leftEuropean affiliationINITIATIVE (2013–2023)ECA (2023–present)[3]International affiliationIMCWPWAPColoursRed...

Rhododendron groenlandicum Klasifikasi ilmiah Kerajaan: Plantae Divisi: Tracheophyta Kelas: Magnoliopsida Ordo: Ericales Famili: Ericaceae Genus: Rhododendron Spesies: Rhododendron groenlandicum Nama binomial Rhododendron groenlandicum(Oeder) Kron & Judd Rhododendron groenlandicum adalah spesies tumbuhan yang tergolong ke dalam famili Ericaceae. Spesies ini juga merupakan bagian dari ordo Ericales. Spesies Rhododendron groenlandicum sendiri merupakan bagian dari genus Rhododendron. Refer...

 

Bryson Tiller (2016) Bryson Djuan Tiller (lahir 2 Februari 1993) adalah seorang penyanyi, penulis lagu dan rapper. Pada tahun 2016, Tiller merilis angka pertama satu albumnya dengan nama True to Self.[1] Album Trapsoul (2015) True to Self (2017) Tour Trapsoul Tour (2016) Set It Off Tour (2017) Referensi ^ Bryson Tiller Notches His First No. 1 Album on Billboard 200 Chart With 'True to Self'. Billboard. June 4, 2017. Diakses tanggal June 4, 2017.  Wikimedia Commons memiliki media ...

 

City in Oregon, United StatesEcho, OregonCitySt. Peter's Catholic Church, dedicated 1913, in EchoLocation in OregonCoordinates: 45°44′35″N 119°11′31″W / 45.74306°N 119.19194°W / 45.74306; -119.19194CountryUnited StatesStateOregonCountyUmatillaIncorporated1904Area[1] • Total0.58 sq mi (1.50 km2) • Land0.58 sq mi (1.50 km2) • Water0.00 sq mi (0.00 km2)Elevation[2]...

Это статья о китайском математике Сунь Цзы. Об одноименном китайском стратеге и военачальнике см. Сунь Цзы. Сунь Цзы (кит. трад. 孫子, упр. 孙子, пиньинь sūn zǐ) — китайский математик и астроном, автор трактата «Сунь Цзы Суань Цзин» (кит. трад. 孫子算經, упр. 孙子算经, пиньинь s�...

 

Stasiun Tarik J09D09 Tampak depan calon bangunan baru Stasiun Tarik, 2023LokasiTarik, Tarik, Sidoarjo, Jawa TimurIndonesiaKoordinat7°27′22″S 112°31′23″E / 7.45611°S 112.52306°E / -7.45611; 112.52306Koordinat: 7°27′22″S 112°31′23″E / 7.45611°S 112.52306°E / -7.45611; 112.52306Ketinggian+16 mOperator KAI Commuter Letakkm 47+657 lintas Surabaya Kota-Kertosono-Madiun-Solo Balapan (baik via Sidoarjo-Tulangan maupun via Sepanja...

 

Kenya Uniformi di gara Casa Trasferta Sport Calcio Federazione FKFFootball Kenya Federation Confederazione CAF Codice FIFA KEN Soprannome Harambee Stars Selezionatore Engin Fırat Record presenze Musa Otieno (106) Capocannoniere William Ouma (35) Ranking FIFA 102º[1] (7 aprile 2021) Esordio internazionale Kenya 1 - 1 Uganda Nairobi, Kenya; 1º maggio 1926 Migliore vittoria Kenya 10 - 0 Zanzibar Nairobi, Kenya; 4 ottobre 1961 Peggiore sconfitta Uganda 13 - 1 Kenya Uganda; 1932 Coppa ...

Relationship between theological concepts and politics Political theology is a term which has been used in discussion of the ways in which theological concepts or ways of thinking relate to politics. The term is often used to denote religious thought about political principled questions. Scholars such as Carl Schmitt, a prominent Nazi jurist and political theorist, who wrote extensively on how to effectively wield political power, used it to denote religious concepts that were secularized and...

 

Border conflict between China and India 2020–2021 China–India skirmishesPart of the Sino-Indian border disputeA CIA map of Kashmir with red circles marking the rough locations of the conflicts near the Galwan Valley (top), Spanggur Tso and Pangong Tso (bottom). One section of the Pangong Tso-Chushul skirmish area along the LAC via NASA WorldWind.Date5 May 2020 (2020-05-05) – 20 January 2021 (2021-01-20)(8 months, 2 weeks and 1 day)LocationLin...

 

A type of chlorofluorocarbon This article needs to be updated. Please help update this article to reflect recent events or newly available information. (October 2023) Trichlorofluoromethane Names Preferred IUPAC name Trichloro(fluoro)methane Other names TrichlorofluoromethaneFluorotrichloromethaneFluorochloroformFreon 11CFC 11R 11Arcton 9Freon 11AFreon 11BFreon HEFreon MF Identifiers CAS Number 75-69-4 Y 3D model (JSmol) Interactive imageInteractive image ChEBI CHEBI:48236 Y ChEMBL ...

Jessica SanchezNama lainBebe ChezLahir04 Agustus 1995 (umur 28)Chula Vista, CaliforniaAsalSan Diego, California, U.S.GenreR&B, pop, soul, hip hop[1][2]PekerjaanPenyanyiInstrumenVokalTahun aktif2006–sekarang Jessica Sanchez (lahir 4 Agustus 1995) adalah penyanyi asal Amerika Serikat yang berasal dari Chula Vista, California. Ia merupakan juara kedua American Idol musim kesebelas.[3][4] Sebelum tampil di Idol, Sanchez juga berkompetisi pada acara musim...

 

  لمعانٍ أخرى، طالع تجارة (توضيح). تجارةمعلومات عامةصنف فرعي من نشاط اقتصادي جزء من اقتصادسوق جانب من جوانب اقتصاد يدرسه اقتصادعلم التفاعلالتجارة البيانات الخارجية متاحة في http://data.europa.eu/euodp/en/data/group/eurovoc_domain_100147 يمارسها صاحب متجربائعmercander (en) لديه جزء أو أجزاء trade item (en) تع...

 

Article principal : Talbot Samba. Talbot Samba Groupe B Maiano La Talbot Samba Rallye Groupe B était une automobile de compétition construite par Peugeot. Talbot Samba Rallye Groupe B Après le succès auprès des pilotes amateurs de la Simca rallye et de la 104 GR2 et GR5 le groupe Peugeot Talbot sport sous la houlette de Jean Todt décide d'homologuer la Talbot Samba Rallye en groupe B. Elle se révélera être efficace sur l'asphalte, maniable avec une très bonne tenue de route[1],...

Pour leur album, voir Discharge (album). Discharge Discharge au Hellfest 2022.Informations générales Pays d'origine Royaume-Uni Genre musical D-beat, punk hardcore, thrash metal, crust punk Années actives 1977-1987, 1991-1995, depuis 2001 Labels Sanctuary Records, Captain Oi! Site officiel thenightmarecontinues.yolasite.com Composition du groupe Membres Royston « Rainy » WainwrightAnthony « Bones » RobertsTerence « Tezz » RobertsDavid « Proper...

 

Yoshito Ōkubo Yoshito Okubo selama Tamagawa Clasico - pertandingan antara FC Tokyo dan Kawasaki Frontale 2016Informasi pribadiNama lengkap Yoshito ŌkuboTanggal lahir 9 Juni 1982 (umur 42)Tempat lahir Fukuoka, JapanTinggi 5 ft 69 in (3,28 m)Posisi bermain Striker, Second strikerInformasi klubKlub saat ini Vissel KobeNomor 13Karier junior1998–2000 Kunimi High SchoolKarier senior*Tahun Tim Tampil (Gol)2001–2006 Cerezo Osaka 116 (57)2005–2006 →Mallorca (pinjam) 39 (...