## Programlingvoj

1. Pri unioj: En Algol-68 kaj C
2. Pri FORTRAN
3. Pri ALGOL
4. Pri Paskalo
5. Pri C
6. Pri Ada
7. Pri Oberono

### Ekzemploj pri unioj

       .union(.char, .real) t, v; t:="a"; t:=3.14; v:=t;       #ALGOL-68#
       union{ char ch, real x } t, v; t.ch = 'a'; t.x = 3.14; v = t;  /*C*/

Ĉi tie la variabloj `t,v` entenas jen signan, jen reelan valoron, kaj la zorgo pri ilia ĝusta uzo estas tute lasita al la programisto. Tia libero estas utila, kiam en la programo oni uzas unu saman memorpecon (ekz-e reĝistron) por diverstipaj valoroj, aŭ kiam la programo devas trakti objekton kun statike nedeterminebla tipo (ekz-e grafeon, en kiu ĉiu vertico apartenas al unu el pluraj eblaj tipoj; dosieron kun diverstipaj rikordoj).

Kontraste al la rikordoj, kiujn en ALGOL-68 kaj C oni nomas strukturoj, kaj kiuj en siaj kampoj samtempe povas enteni diverstipajn valorojn, unio ajnmomente havas nur unu valoron. La Paskalaj varihavaj rikordoj malkomponeblas en kombinon de tiaj simplaj «strukturoj» (senvariaj rikordoj) kaj unioj. Ekz-e tipo`figuro` (tiu el Rikordoj en Paskalo) en ALGOL-68 esprimeblas jene:

       .mode .triangulo = .struct(.real latero, klino, alfa, beta);
       .mode .ortogramo = .struct(.real lateroA, lateroB, oblikvo);
       .mode .figuro = .struct(
          .real x, y, areo;
          .union(.triangulo, .ortogramo, .real #diametro#) mikso);

La kazetikedo estas implicata en ALGOL-68, ĝi uzeblas en la «porunia kazordono»:

       .case mikso.of fig .in          #supozante ke fig estas .figuro#
         (.real d): f(d),              #la kazo cirklo, la kampo diametro#
         (.ortogramo ort): areo.of fig := lateroA.of ort*lateroB.of ort
       .esac

(La nomoj`d` kaj`ort` estas deklaritaj por sia branĉo de la kazordono kaj nomas la koncernan kazon de la unio) Simile estas pri klasoj en SIMULA-67 kaj Oberono. — En C nenia implica kazetikedo estas provizata.

### Pri FORTRAN

FORTRAN disponigas al la uzanto rimedojn por prezenti, enigi kaj eligi aritmetikajn, Buleajn kaj tekstajn datumojn. La aritmetikaj datumoj inkludas entjerojn, reelojn (kun diversaj precizogradoj) kaj kompleksajn nombrojn, kun la tradicia aro da operacioj kaj rilatoj. La aritmetikajn valorojn oni povas teni en skalaraj variabloj aŭ en elementoj de tabeloj el koncerna datumtipo.

La tuta programo konsistas el «ĉefprogramo» kaj aro da «subprogramoj» (speco de proceduro), kiuj estas tradukeblaj dise, sendepende unu je la aliaj. La subprogramoj konsistas el frazoj deklaraj kaj «plenumeblaj» — kiujn lastajn ni nomas ordonoj; normale la ordonoj estas plenumataj laŭvice, en la teksta ordo; sed la stiraj ordonoj (simplaj kaj kalkulataj saltoj, kondiĉaj ordonoj, iteracioj kaj procedurvokoj) servas por malimplice ŝanĝi tian plenumordon.

La subprogramoj interŝanĝas datumojn per siaj parametroj kaj tra komunaj memorblokoj (angle COMMON blocks). Ĉar en la tradicia FORTRAN rekursiaj proceduroj estas malpermesitaj kaj la indiclimoj en la tabeloj estas konstantaj, la agoj por atingi tabelelementojn parte estas plenumataj dum la tradukado, kio konsiderinde plirapidigas la rulon de pretaj programoj.

Nun oni povas diri, ke la ĉefa interesaĵo de FORTRAN estas ne la lingvo mem, sed la unika rolo, kiun ĝi havis tutmonde en la programado. El «matematika maŝinkodo» por IBM 704 ĝi, per evoluo nemalsimila al la evoluo de la homaj lingvoj, iĝis la plej disvastigita programlingvo. Disponeblo de almenaŭ unu realigo de FORTRAN estas nepraĵo por ĉia ĝeneralcela komputilo.

En tiu evoluo FORTRAN retenis kelkajn trajtojn de simbola maŝinkodo, gravajn por la oportuno de programado aŭ vartado, ekz-e malsimplajn konstantojn (`DATA`, la datumfrazo) kaj disa tradukeblo. Ili kontribuis al akumuliĝo de grandegaj programbibliotekoj de Fortranaj proceduroj pri la nombraj metodoj de analitiko, grafikado, statistiko, inĝenieraj kalkuloj ktp. Tamen kontraste al ALGOL-60, FORTRAN kombinas la rimedojn por la nombraj kalkuloj kun riĉa esprimilaro por redakta eneligo (la frazoj`FORMAT` ktp).

0. FORTRAN 77
     Populara versio de FORTRAN, etendita per aldono de la krampa kondiĉa ordono (Block IF) kaj la frazoj PARAMETER kaj SAVE (sed ankoraŭ sen kondiĉa iteraciordono) kaj tabeloj kun subaj limoj. Difinita per la normo ANSI X3.9-1978 (GNU-a versio.)
   FORTRAN 90
     Konsiderinda etendo de FORTRAN 77. Ĝi havas derivitajn datumtipojn, modulojn, diversformajn tabelojn, sekcojn, funkciojn liverantajn tabelojn, nedevigajn kaj ŝlosilvortajn parametrojn, rekursion kaj dinamikan memordisponigon. Difinita per la normo ISO 1539:1991.
   Vd ankaŭ Fortran Market.