Programmering - et herligt tidsfordriv

Traditionelt har man forsøgt at inddele programmeringssprog i et antal generationer, fra. 1. generation til 4. generation (5. generation ses undertiden). Inddelingen bruges mindre i dag, da det i stigende grad er blevet svært at afgrænse generationerne. Det bør bemærkes, at nogle af de første computere slet ikke blev programmeret i moderne forstand. I stedet ”satte man maskinen op” på rækker af omskiftere eller koblingstavler med ledninger, der forbandt de ønskede operationer.

1. generations programmeringssprog

Den første generation var maskinkode, der blev lagt direkte ind i computerens lager. Programmet blev ikke oversat på nogen måde, ud over at programmørerne kunne foretage en såkaldt håndassemblering, dvs. skrive programmet med mere menneskelæsbare instruktionskoder kaldet mnemonics og så oversætte dem til deres binære repræsentation. En mnemonic oversattes til én maskininstruktion. Adresser skulle regnes ud i hånden. Det færdige program kunne lægges ind på flere måder. En af dem var ved at bruge en række kontakter fra kontrolpulten til at indstille adresse på en lagercelle og indstille det ønskede indhold af cellen på en anden række kontakter og så med en særlig kontakt overføre indholdet til cellen. Tilsvarende kunne en lagercelles indhold vises på en række lamper.
På mikrocomputere fra 70'erne og 80'erne kunne man også gøre det fra f.eks. et BASIC-program med instruktionen POKE, der skriver en værdi til en bestemt lagercelle. Teknikken blev brugt til at tilføje små maskinkoderutiner til programmet. Disse kørte hurtigere end det fortolkede BASIC-program.

2. generations programmeringssprog

Den anden generation af programmeringssprog er den symbolske assembler. Assembleren er et program, der oversætter assemblersprog til dens binære værdier, beregner adresser og ekspanderer macroer. Den letter derved programmørens arbejde meget og begrænser fejlmulighederne ved adresseberegningerne.

3. generations programmeringssprog

Dette er de såkaldte højniveausprog, der dukkede op i slutningen af 1950'erne. Her arbejder programmøren ikke med maskininstruktioner men i stedet med instruktioner, der af compileren oversættes til et antal maskininstruktioner. De første højniveausprog var maskinspecifikke sprog som Flow-Matic og Math-Matic. Kort efter begyndte arbejdet med at udvikle mere eller mindre standardiserede sprog som FORTRAN, Algol, COBOL og Lisp. Disse sprog muliggjorde maskinuafhængige programmer. Den samme kildetekst kunne oversættes på forskellige computere, ofte fra forskellige leverandører, og køres; evt. med et minimum af ændringer.

4. generations programmeringssprog

Et fjerdegenerationssprog skal gøre programmøren meget mere effektiv, derved at sproget håndterer en masse trivielle og hyppigt benyttede operationer. Instruktionerne i sproget, i hvert fald mange af dem, er altså mere kraftfulde. Sproget kan have strukturer til at håndtere filer og databaser, løkker, brud (dvs. når en værdi i en række læste data skifter) og kommunikation med omverdenen. Programmøren tænkes at bruge mere tid på at løse opgaven i stedet for at bekymre sig om mindre, tekniske detaljer. Et program skrevet i et 4. generationssprog indeholder færre linjer end et tilsvarende program i et 3. generationssprog. Det antages også at indeholde færre fejl. Miljøet omkring sproget benytter sig i høj grad af oplysninger om data, metadata, der hentes fra et data dictionary. Det kan f.eks. være oplysninger om formatering og ledetekster, men også nogle valideringer kan lægges her. Nogle sprog i denne gruppe producerer kildekode i et tredjegenerationssprog, der så skal oversættes af dette sprogs compiler.

5. generations programmeringssprog

Denne gruppe af sprog er i hvert fald delvist baseret på kunstig intelligens. Man kunne f.eks. tænke sig, at opgaven blev beskrevet i et naturligt sprog og at systemet så stillede opklarende spørgsmål, inden det byggede en prototype. Typen er ikke rigtigt taget i brug endnu.

Udbredelse af sprog

An unhandled error has occurred. Reload 🗙