{"id":18676,"date":"2026-05-31T17:11:48","date_gmt":"2026-05-31T15:11:48","guid":{"rendered":"https:\/\/www.bernd-leitenberger.de\/blog\/?p=18676"},"modified":"2026-05-31T17:16:07","modified_gmt":"2026-05-31T15:16:07","slug":"die-glorreichen-10-programmiersprachen","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/05\/31\/die-glorreichen-10-programmiersprachen\/","title":{"rendered":"Die glorreichen 10 \u2013 Programmiersprachen"},"content":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_18676\" class=\"pvc_stats all  \" data-element-id=\"18676\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.bernd-leitenberger.de\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>Ich wollte mal eine Reihe in dieser <a href=\"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/\">Rubrik <\/a>&uuml;ber Programmiersprachen machen. Zuerst dachte ich daran eine Liste nach meinen pers&ouml;nlichen Favoriten zu erstellen. Anfangs bef&uuml;rchtete ich, dass ich gar nicht auf 10 komme, aber es sind tats&auml;chlich mehr, wenngleich ich in vielen Sprachen nur kleine Programme verfasst habe oder mich nur wenig mit ihnen besch&auml;ftigt habe.<\/p>\n<p>Aber das w&auml;re zum einen wohl so pers&ouml;nlich, dass es f&uuml;r die meisten uninteressant w&auml;re und der Erkenntnisgewinn, der ja bei diesem Blog im Vordergrund steht, k&auml;me zu kurz. Also dachte ich nach und kam dann auf die Idee 10 Kriterien zu erarbeiten, nach denen man alle Programmiersprachen kategorisieren kann und das ist nun der heutige Blog. Anders als sonst bei den glorreichen 10 ist es aber keine Reihenfolge, es gibt also keinen Platz 10 und keinen Platz 1. Ich habe deswegen auch die Nummern weggelassen. Stattdessen arbeite ich mich geschichtlich nach vorne, wenngleich nicht exakt nach Jahreszahlen.<\/p>\n<p>Der Artikel geriet etwas lang, so lest ihr heute den Teil 1 und morgen geht es dann weiter.<!--more--><\/p>\n<h4 class=\"western\">Einteilung nach Generationen<\/h4>\n<p>Als ich mich zum ersten Mal mit Programmieren besch&auml;ftigte, also in den fr&uuml;hen Achtziger Jahren war dies die &uuml;bliche Einteilung von Programmiersprachen, damals gab es auch noch weniger Sprachen. Die Einteilung ging damals bis zur dritten Generation, sp&auml;ter wurde das bis zur f&uuml;nften erweitert, wobei die beiden folgenden schon nicht mehr einheitlich definiert werden und heute redet von Generationen keiner mehr.<\/p>\n<p>Die erste Generation wurde auf den ersten Computern eingesetzt. Als \u201eNullte Generation\u201c, also eigentlich keine Programmiersprache, sieht man den Maschinencode an, also die Bitmuster die der Prozessor als Befehle ansieht. Wer in den Achtzigern einen Heimcomputer hatte und Computerzeitschriften lass, fand da oft seitenlange Listings mit Maschinencode meist in Hexdezimalnotation die er abtippen musste. Da die Rechner so langsam waren, schrieben viele wichtige Routinen in Assembler und generierten einen Hexdump des erzeugten Maschinencodes.<\/p>\n<p>Die erste Generation war dann Assembler. Jeder Maschinenbefehl bekam einen Namen, meist ein schwer einpr&auml;gsames Buchstabenk&uuml;rzel und Register bekamen Nummern oder auch Namen. Das war viel einfacher als sich die Bin&auml;rkombination des Befehls zu merken. Daneben konnte man Sprungmarken definieren, Datenbereiche benennen f&uuml;r Variablen, Konstanten Namen geben und bessere Assembler beherrschten auch Makros also Befehlsfolgen, denen man Parameter &uuml;bergab, die im Quelltext durch Suchen\/Ersetzen im Makro ausgetauscht werden konnten. Das Vereinfachte vieles und eliminierte Fehlerm&ouml;glichkeiten.<\/p>\n<p>Assembler und Maschinensprache sind aber prozessorspezifisch. Ein Assemblerprogramm oder der Maschinencode f&uuml;r einen Intel-Prozessor l&auml;uft nicht auf einem ARM Prozessor. Dass, was wir eigentlich als Programmiersprache verstehen entstand erst mit der zweiten Generation, den ersten echten Programmiersprachen, die popul&auml;rsten sind COBOL und FORTRAN. Ein Quelltext dieser Programmiersprache kann von jedem Computer ausgef&uuml;hrt werden, wenn man das n&ouml;tige &Uuml;bersetzungsprogramm hat. Allerdings meist nicht ohne Anpassungen an die Hardware des Computers. Beide Sprachen wurden f&uuml;r einen bestimmten Anwendungszweck geschaffen: COBOL zur Verarbeitung von Daten in fester Form, z.B. den Eintr&auml;gen f&uuml;r die Buchhaltung. FORTRAN zur numerischen L&ouml;sung von mathematischen Problemen, dazu geh&ouml;ren auch physikalische Probleme wie der genaue Ablauf bei einer Supernova oder wie morgen das Wetter wird. Mathematik geht in COBOL, ist aber sehr umst&auml;ndlich zu handhaben und auf die Grundrechenarten beschr&auml;nkt und das Verarbeiten von Daten ist in FORTAN wiederum recht umst&auml;ndlich gel&ouml;st. <a href=\"https:\/\/de.wikipedia.org\/wiki\/Lisp\">FORTAN<\/a> ist zudem noch relativ maschinennah, so wird bei Funktionen nicht der Datentyp eines Parameters angegeben man kann einer Funktion, die einen Ganzzahlwert erwartet, auch eine Flie&szlig;kommazahl &uuml;bergeben. Intern differiert aber deren Darstellung und so kommen dann schon sehr komische Ergebnisse zustande.<\/p>\n<p>Die dritte Generation und das sind fast alle Sprachen, die danach entstanden sind Universalsprachen. Mit ihnen kann man jedes Problem l&ouml;sen, sie verf&uuml;gen &uuml;ber einen breiten Befehlsvorrat, auch wenn die M&ouml;glichkeiten je nach Sprache unterschiedlich gut oder schlecht sind. Sie abstrahieren auch noch etwas besser als Fortran von der Hardware.<\/p>\n<p>Die vierte Generation ist nicht mehr einheitlich definiert. Eine gute Definition finde ich ist die, die fr&uuml;he Programmiersprachen f&uuml;r KI einsetzten, wie <a href=\"https:\/\/de.wikipedia.org\/wiki\/Prolog_(Programmiersprache)\">Prolog<\/a>. In ihnen wird in der Sprache nicht der Algorithmus definiert, also wie ein Problem zu l&ouml;sen ist, sondern es werden Daten angegeben und die Beziehungen der Daten untereinander. Gibt man dann neue Daten ein so berechnet das System &uuml;ber einen Backtracking-Mechanismus die wahrscheinlichste L&ouml;sung. Eine in den sp&auml;ten Achtzigern als KI bezeichnete Implementierung wertete seismische Daten von Probebohrungen nach Erd&ouml;l aus. Das System kannte die Gesteinsschichten und wie sie seismische Signale ver&auml;nderten und gab man neue Daten ein so ermittelte das System den Aufbau des Untergrundes bis zu einer bestimmten Tiefe.<\/p>\n<p>Als f&uuml;nfte Generation etablierten sich dann Abfragesprachen f&uuml;r Datenbanksysteme, das popul&auml;rste Beispiel ist SQL. Anstatt eine Datenbank &uuml;ber ein Programm sequentiell abzusuchen und die Daten dann weiterzuverarbeiten z.b. zu gruppieren formuliert man eine Abfrage, was man haben m&ouml;chte, z.B. alle Personen deren Nachname \u201eMayer\u201c ist und die &uuml;ber 50.000 Euro im Jahr verdienen, gruppiert nach St&auml;dten, in denen sie wohnen. F&uuml;r diese Aufgabe m&uuml;sste man schon einen komplexen Algorithmus in einer Sprache der dritten Generation schreiben.<\/p>\n<p>Ich denke KI kann man als Sprache der sechsten Generation ansehen, denn dort kann man ein Problem umgangssprachlich formulieren, ohne selbst Code selbst zu schreiben. Ich habe das mal f&uuml;r euch gemacht und ChatGPT folgende Aufgabe gestellt:<\/p>\n<p>\u201e<b>Erstelle ein Pascal-Programm das die momentane Geschwindigkeit eines Satelliten berechnet, wenn gegeben: Masse des Himmelsk&ouml;rpers, Apo- und Peripunkt sowie Position deren Geschwindigkeit berechnet werden soll\u201c.<\/b><\/p>\n<p>Das System m&uuml;sste dann auf die vis-viva Gleichung sto&szlig;en und diese in Pascalcode umsetzen. Und das tat es dann auch, hier die Antwort:<\/p>\n<p><i>Hier ist ein Pascal-Programm, das die Bahngeschwindigkeit eines Satelliten an einer beliebigen Position seiner elliptischen Umlaufbahn berechnet.<\/i><\/p>\n<p><i>Grundlage ist die <\/i><strong><i>Vis-Viva-Gleichung<\/i><\/strong><i>:<\/i><\/p>\n<p><i>v=\\sqrt{GM\\left(\\frac{2}{r}-\\frac{1}{a}\\right)}<\/i><\/p>\n<p><i>mit:<\/i><\/p>\n<ul>\n<li><i>(G) = Gravitationskonstante (6.67430 \\cdot 10^{-11},\\mathrm{m^3,kg^{-1},s^{-2}})<\/i><\/li>\n<li><i>(M) = Masse des Zentralk&ouml;rpers<\/i><\/li>\n<li><i>(r) = aktueller Abstand vom Zentrum des Himmelsk&ouml;rpers<\/i><\/li>\n<li><i>(a) = gro&szlig;e Halbachse der Bahn<\/i><\/li>\n<\/ul>\n<p><i>Die gro&szlig;e Halbachse ergibt sich aus Apo- und Perizentrum:<\/i><\/p>\n<p><i>a=\\frac{r_{apo}+r_{peri}}{2}<\/i><\/p>\n<h3 class=\"western\"><i>Pascal-Programm<\/i><\/h3>\n<pre class=\"western\"><code class=\"western\"><i>program SatellitenGeschwindigkeit;<\/i><\/code> <code class=\"western\"><i>\r\nuses<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Math;<\/i><\/code> <code class=\"western\"><i>\r\nconst<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Gravitationskonstante = 6.67430E-11;  { m^3 kg^-1 s^-2 }<\/i><\/code> \r\n<code class=\"western\"><i>var<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>MasseDesHimmelskoerpers : Double;<\/i><\/code> <code class=\"western\">  <\/code> <code class=\"western\"><i>\r\nAbstandApopunkt         : Double;<\/i><\/code> <code class=\"western\">  <\/code> <code class=\"western\"><i>\r\nAbstandPeripunkt        : Double;<\/i><\/code> <code class=\"western\">  <\/code> <code class=\"western\"><i>\r\nAktuellerAbstand        : Double;<\/i><\/code> <code class=\"western\">  <\/code> <code class=\"western\"><i>\r\nGrosseHalbachse         : Double;<\/i><\/code> <code class=\"western\">  <\/code> <code class=\"western\"><i>\r\nGeschwindigkeit         : Double;<\/i><\/code> <code class=\"western\"><i>\r\nbegin<\/i><\/code> <code class=\"western\">  <\/code> <code class=\"western\"><i>Writeln('Berechnung der Satellitengeschwindigkeit');<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Writeln;<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Write('Masse des Himmelskoerpers [kg]: ');<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Readln(MasseDesHimmelskoerpers);<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Write('Abstand Apopunkt vom Zentrum [m]: ');<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Readln(AbstandApopunkt);<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Write('Abstand Peripunkt vom Zentrum [m]: ');<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Readln(AbstandPeripunkt);<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Write('Aktueller Abstand vom Zentrum [m]: ');<\/i><\/code> <code class=\"western\">  <\/code><code class=\"western\"><i>Readln(AktuellerAbstand);<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>GrosseHalbachse :=<\/i><\/code> <code class=\"western\">    <\/code><code class=\"western\"><i>(AbstandApopunkt + AbstandPeripunkt) \/ 2.0;<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Geschwindigkeit :=<\/i><\/code><code class=\"western\"><i>Sqrt(<\/i><\/code><code class=\"western\"><i>Gravitationskonstante *<\/i><\/code><code class=\"western\"><i>MasseDesHimmelskoerpers *<\/i><\/code> \r\n<code class=\"western\"><i>(<\/i><\/code><code class=\"western\"><i>(2.0 \/ AktuellerAbstand) -<\/i><\/code><code class=\"western\"><i>(1.0 \/ GrosseHalbachse)<\/i><span style=\"color: #2080ad;\"><span style=\"background-color: #fafafa;\">)<\/span><\/span><\/code><code class=\"western\"><i>);\r\n<\/i><\/code><code class=\"western\"><i>Writeln;<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Writeln('Grosse Halbachse: ', GrosseHalbachse:0:3, ' m');<\/i><\/code> <code class=\"western\">  <\/code> \r\n<code class=\"western\"><i>Writeln('Momentane Geschwindigkeit: ',<\/i><\/code> <code class=\"western\">          <\/code><code class=\"western\"><i>Geschwindigkeit:0:3, ' m\/s');<\/i><\/code> <code class=\"western\">  \r\n<\/code><code class=\"western\"><i>Readln;<\/i><\/code> <code class=\"western\"><i>\r\nend.<\/i><\/code><\/pre>\n<h3 class=\"western\"><i>Beispiel (Erde)<\/i><\/h3>\n<p><i>Eingaben:<\/i><\/p>\n<ul>\n<li><i>Masse: <\/i><code class=\"western\"><i>5.972E24 kg<\/i><\/code><\/li>\n<li><i>Peripunkt: <\/i><code class=\"western\"><i>6671000 m<\/i><\/code><\/li>\n<li><i>Apopunkt: <\/i><code class=\"western\"><i>42164000 m<\/i><\/code><\/li>\n<li><i>Aktuelle Position: <\/i><code class=\"western\"><i>10000000 m<\/i><\/code><\/li>\n<\/ul>\n<p><i>Ausgabe:<\/i><\/p>\n<ul>\n<li><i>Geschwindigkeit \u2248 <\/i><code class=\"western\"><i>8400 m\/s<\/i><\/code><\/li>\n<\/ul>\n<p><i>Wichtig: Apo- und Peripunkt sowie die aktuelle Position m&uuml;ssen als <\/i><strong><i>Abstand vom Zentrum des Himmelsk&ouml;rpers<\/i><\/strong><i> eingegeben werden. Falls nur die H&ouml;he &uuml;ber der Oberfl&auml;che bekannt ist, muss zuvor der Radius des Himmelsk&ouml;rpers addiert werden.<\/i><\/p>\n<p>Der eigentlich wichtige Code steckt nur in der Zeile Geschwindigkeit:= \u2026 Aber Chatgpt ist etwas schwafelig. Mann kann aber nachhelfen:<\/p>\n<p>\u201e<b>Bitte nur die Berechnung in einer Funktion, ohne Hauptprogramm\u201c<\/b><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">uses<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">Math;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: Consolas, monospace;\">function BerechneSatellitenGeschwindigkeit(<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">MasseDesHimmelskoerpers : Double;<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">AbstandApopunkt : Double;<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">AbstandPeripunkt : Double;<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">AktuellerAbstand : Double<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">) : Double;<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">const<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">Gravitationskonstante = 6.67430E-11; { m^3 kg^-1 s^-2 }<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">var<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">GrosseHalbachse : Double;<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">begin<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">GrosseHalbachse :=<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">(AbstandApopunkt + AbstandPeripunkt) \/ 2.0;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-family: Consolas, monospace;\">Result :=<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">Sqrt(<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">Gravitationskonstante *<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">MasseDesHimmelskoerpers *<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">(<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">(2.0 \/ AktuellerAbstand) &#8211;<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">(1.0 \/ GrosseHalbachse)<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">)<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">);<\/span><\/p>\n<p><span style=\"font-family: Consolas, monospace;\">end;<\/span><\/p>\n<p>Ist noch etwas lang, ich w&uuml;rde auch die Formel in eine Zeile packen, aber mathematisch und programmtechnisch korrekt.<\/p>\n<h4 class=\"western\">Compiliert \u2013 Interpretiert<\/h4>\n<p>Von nun an werden die Abs&auml;tze k&uuml;rzer, weil ich anfangs viel erkl&auml;ren muss und dann immer weniger. Die ersten Sprachen waren alle compiliert. Das &Uuml;bersetzungsprogramm von Quellcode in der Programmiersprache nach Maschinencode nennt man Compiler. Ein Compiler erzeugt aus dem Quellcode ein auf dem Rechner ausf&uuml;hrbare Datei, die den Maschinencode enth&auml;lt. Die meisten Apps, die sie installieren, sowie alle Betriebssysteme sind so erstellt worden. Bei Windows haben sie die Dateiendung \u201e,exe\u201c Das hat Vorteile: Man erh&auml;lt so die maximal m&ouml;gliche Geschwindigkeit und kann ein Programm verteilen ohne bef&uuml;rchten zu m&uuml;ssen, dass es jemand ver&auml;ndert und als sein Programm verkauft. Zudem braucht der Kunde keinen Compiler, der fr&uuml;her eine Menge Geld kostete. Allerdings ist das Erstellen ziemlich zeitaufwendig. Fr&uuml;her schrieb man den Quelltext in einem Editor, einer einfachen Textverarbeitung (als Notepad immer noch in Windows enthalten), beendete diesen, rief den Compiler auf, der oft Fehler meldete, untersuchte mit einem Debugger das Programm auf diese Fehler und ver&auml;nderte den Quelltext erneut mit dem Editor. <a href=\"https:\/\/de.wikipedia.org\/wiki\/Turbo_Pascal\">Turbo Pascal<\/a> f&uuml;hrte dann die IDE (Integrated Development Environment) ein, bei der alle drei Teile in einem Programm waren, sodass zumindest das Wechseln wegfiel, zeitaufwendig war das trotzdem. Man konnte dem Compiler zuschauen wie er langsam die Zeilennummern hoch z&auml;hlte. Bei gr&ouml;&szlig;eren Programmen bin ich immer einen Kaffee holen gegangen. Seitdem konsumiere ich etwa 1+ Liter Kaffee pro Tag.<\/p>\n<p>F&uuml;r Programmieranf&auml;nger ist das frustrierend und f&uuml;r Lehrsprachen wurde der Interpreter geschaffen, auch eine einfache IDE. Bekannteste interpretierte Sprache ist BASIC. Man schreibt den Quelltext in einem einfachen, zeilenorientierten Editor und startet das Programm mit dem Befehl <b>RUN<\/b>. Auch hier stoppt der Interpreter bei Fehlern, und zwar in der Zeile die ihn enth&auml;lt. Ist doch viel benutzerfreundlicher oder? Es gibt aber zwei Nachteile: der erste: der Quelltext und das Programm sind gleichzeitig im Speicher. Compilierte Programme sind meist viel k&uuml;rzer als der Quelltext. Der gr&ouml;&szlig;ere Nachteil ist aber das jede Zeile dann &uuml;bersetzt wird, wenn die Ausf&uuml;hrung &uuml;ber sie stolpert. Programme enthalten immer viele Schleifen, sonst k&ouml;nnte man ja auch Excel zur Berechnung nehmen. Wenn eine Schleife also eine Folge von Befehlen enth&auml;lt, die wiederholt ausgef&uuml;hrt werden, compiliert wird, dann wird jede Zeile einmal compiliert, bei einem Interpreter wird sie dagegen pro Schleifendurchlauf einmal \u201ecompiliert\u201c also bei 1000 Durchl&auml;ufen 1000-mal. Interpretierte Sprachen sind daher in der Ausf&uuml;hrung viel langsamer als compilierte und man kann nur den Quelltext weitergeben, sozusagen eine fr&uuml;he Form von Open Source.<\/p>\n<p>Der Unterschied kann dramatisch sein. Ich entdeckte in Astrozeitschrift einen Artikel &uuml;ber die Berechnung von Planetenbahnen &uuml;ber die Runge-Kutta-Methode und im Link ein <a href=\"https:\/\/de.wikipedia.org\/wiki\/Python_(Programmiersprache)\">Python<\/a>-Programm. Das habe in Pascal &uuml;bersetzt und zum Test die Planetenkonstellationen sowohl in Python wie in Pascal berechnet \u2013 Python ist interpretiert, Pascal compiliert: Das Pascalprogramm war 117-mal schneller fertig.<\/p>\n<h4 class=\"western\">Procedural \u2013 Functional<\/h4>\n<p>Eine weitere Unterscheidung ist wie die Programmiersprachen Probleme l&ouml;sen. Was ich bisher beschrieb, ist die prozedurale Programmierung, bei der es als charakteristisches Element Schleifen gibt. In funktionalen Sprachen gibt es diese nicht. Stattdessen werden Funktionen genutzt die miteinander verkettet werden. In beschr&auml;nktem Ma&szlig;e geht das auch in prozeduralen Sprachen so kann man die Fakult&auml;t einer Zahl wie folgt berechnen:<\/p>\n<p><span style=\"font-family: Courier New, monospace;\">Fak:=1<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">For I:=1 to n do Fak:=Fak*i<\/span><\/p>\n<p>oder so:<\/p>\n<p><span style=\"font-family: Courier New, monospace;\">Function Fak(n : integer) : integer;<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">if n=1 then Fak:=1 else<\/span><\/p>\n<p><span style=\"font-family: Courier New, monospace;\">fak:=Fak(n-1)*n;<\/span><\/p>\n<p>In der letzten Implementierung ruft sich die Funktion Fak rekursive auf so lange auf bis N=1 ist, &uuml;bergibt dann 1 als R&uuml;ckgabewert der dann mit 2 multipliziert wird bis man zu n zur&uuml;ckkehrt.<\/p>\n<p>Ich bin mit <a href=\"https:\/\/de.wikipedia.org\/wiki\/Funktionale_Programmierung\">funktionalen Sprachen<\/a> nie so richtig warm geworden, weil mein Denken dem prozeduralen Ansatz entspricht. Nach einem Programmierparadigma kann man jedes Problem auf beide Weisen l&ouml;sen, nur ist meist eine Methode die einfachere. Die erste funktionale Sprache war <a href=\"https:\/\/de.wikipedia.org\/wiki\/Lisp\">LISP<\/a>, erscheinen 1958.<\/p>\n<h4 class=\"western\">Objektorientiert oder nicht<\/h4>\n<p>Ein weiterer Trend ist die Programmiersprachen immer mehr sich von den M&ouml;glichkeiten der Maschine entfernten und sich dem menschlichen Denken ann&auml;herten. Fr&uuml;he Programmiersprachen kannten nur wenige elementare Datentypen wie die Zeichenkette (String), Ganzzahlen oder Flie&szlig;kommazahlen. Sprachen wie Pascal und C nutzen die M&ouml;glichkeiten Daten zusammenzufassen in Records. So geh&ouml;ren Vorname und Nachname zusammen und k&ouml;nnen gemeinsam in einer Variable abgelegt werden und sie erlauben das Einschr&auml;nken von Wertebereichen, z.B. Jahreszahlen auf einen Bereich von -6000 bis 2100, anstatt den gesamten Integerbereich der bei 32 Bit von -2 Mrd bis +2 Mrd geht oder es gibt Aufz&auml;hlungstypen wie f&uuml;r das Geschlecht (m&auml;nnlich, weiblich, divers) wo nur einer der drei Werte m&ouml;glich ist.<\/p>\n<p>So was macht nicht nur das Programm lesbarer, es vermeidet auch Fehler. Ein Compiler w&uuml;rde schon meckern, wenn man versucht einem Datumswert das Jahr 2130 zuzuweisen oder einem Geschlecht den Wert \u201eZwitter\u201c.<\/p>\n<p>Was aber immer noch m&ouml;glich ist, ist das man eine Routine aufruft mit Daten, die sie eigentlich nicht verarbeiten sollte. Der objektorientierte Ansatz sieht Daten und den Code, der sie verarbeitet als eine Einheit. Ein Objekt hat einen Datenteil und Code zur Verarbeitung. Man kann auch Routinen verstecken, also nur innerhalb des Objektes nutzen, aber nicht vom Code au&szlig;en zugreifen und man kann Objekte vererben. Ein Personenobjekt mit den obigen vier Datenfeldern (Vorname, Nachname, Geschlecht, Geburtsjahr) kann z.B. zu einem Adressobjekt erweitert werden, indem noch Daten f&uuml;r Stra&szlig;e, Telefonnummer, Stadt und Land hinzukommen. Dann muss man nur den neuen Code schieben und kann den alten Code wiederverwenden.<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vg09.met.vgwort.de\/na\/4073c4f9dc6943a08702cdde13605d43\" alt=\"\" width=\"1\" height=\"1\" \/><br \/>\nSolche Programmiersprachen nennt man objektorientiert. Eine der ersten war <a href=\"https:\/\/de.wikipedia.org\/wiki\/Python_(Programmiersprache)\">Smalltalk<\/a> die im Xerox Parc Anfang der Siebziger Jahre entwickelt wurde. Das Konzept war so erfolgreich, das seitdem viele Sprachen um diese Features erweitert wurden, manchmal entstand auch eine neue Sprache wie aus C das objektorientierte C++.<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_18676\" class=\"pvc_stats all  \" data-element-id=\"18676\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.bernd-leitenberger.de\/blog\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p>Ich wollte mal eine Reihe in dieser Rubrik &uuml;ber Programmiersprachen machen. Zuerst dachte ich daran eine Liste nach meinen pers&ouml;nlichen Favoriten zu erstellen. Anfangs bef&uuml;rchtete ich, dass ich gar nicht auf 10 komme, aber es sind tats&auml;chlich mehr, wenngleich ich in vielen Sprachen nur kleine Programme verfasst habe oder mich nur wenig mit ihnen besch&auml;ftigt [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5296],"tags":[1635,3053,1737,3485,5393,5394,1726,2067,697],"class_list":["post-18676","post","type-post","status-publish","format-standard","hentry","category-die-glorreichen-10","tag-basic","tag-cpython","tag-cobol","tag-fortran","tag-lisp","tag-objectorientiert","tag-pascal","tag-programmiersprachen","tag-turbo-pascal","entry"],"a3_pvc":{"activated":true,"total_views":21,"today_views":21},"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18389,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/17\/die-glorreichen-10-die-besten-deutschen-panzer-im-zweiten-weltkrieg\/","url_meta":{"origin":18676,"position":0},"title":"Die glorreichen 10 &#8211; Die besten deutschen Panzer im Zweiten Weltkrieg","author":"Bernd Leitenberger","date":"17. September 2025","format":false,"excerpt":"Heute wieder ein neuer Blog im allseits beliebten Format \"Die glorreichen 10\". Diesmal geht es um die Panzer der Wehrmacht im Zweiten Weltkrieg. Deutschland sticht hier heraus, weil es im Zweiten Weltkrieg sehr viele Modelle einsetzte \u2013 sechs Hauptlinien mit mehreren Submodifikationen und daraus abgeleitet noch zahlreiche andere Modelle. Bei\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/8ae7f5ac55f14b0282aac782fa596ba3","width":350,"height":200},"classes":[]},{"id":18380,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/09\/03\/die-glorreichen-10-das-war-mal-weg-pc-hardware\/","url_meta":{"origin":18676,"position":1},"title":"Die glorreichen 10 &#8211; Das war mal weg: PC Hardware","author":"Bernd Leitenberger","date":"3. September 2025","format":false,"excerpt":"Ich will heute mal zwei ZDF Info \/ Neo Sendungen verbinden. Die glorreichen 10, die bei mir als Vorlage f\u00fcr einige Blogs dienten und die von mir noch mehr gesch\u00e4tzte Sendung \"Das war mal weg\", wo es um Dinge geht, die fr\u00fcher fast jeder hatte und die heute aus unserem\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"https:\/\/vg02.met.vgwort.de\/na\/876c61d389304d98aa0332fadd769381","width":350,"height":200},"classes":[]},{"id":18504,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/01\/25\/die-glorreichen-10-satellitenrekorde\/","url_meta":{"origin":18676,"position":2},"title":"Die glorreichen 10 &#8211; Satellitenrekorde","author":"Bernd Leitenberger","date":"25. Januar 2026","format":false,"excerpt":"Ich denke, es wird mal wieder Zeit f\u00fcr etwas leichte Unterhaltung die etwas Wissen vermittelt. Also einen Blog \u00fcber 10 Rekorde bei Satelliten, die ihr vielleicht noch nicht kennt. Um eines klarzustellen - es geht nur um Satelliten. Raumsonden sind au\u00dfen vor, weil bei ihnen vieles anderes ist, so kann\u2026","rel":"","context":"In &quot;Die Glorreichen 10&quot;","block_context":{"text":"Die Glorreichen 10","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/die-glorreichen-10\/"},"img":{"alt_text":"","src":"\/img\/1kgsats.png","width":350,"height":200,"srcset":"\/img\/1kgsats.png 1x, \/img\/1kgsats.png 1.5x, \/img\/1kgsats.png 2x, \/img\/1kgsats.png 3x"},"classes":[]},{"id":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":18676,"position":3},"title":"Galileos CDS &#8211; Teil 3","author":"Bernd Leitenberger","date":"29. M\u00e4rz 2026","format":false,"excerpt":"So nun zum dritten Teil \u00fcber das prim\u00e4re Computersystem von Galileo, das CDS. Nachdem sich die ersten beiden Teile nur mit dem RCA 1802, warum er gew\u00e4hlt wurde und seiner Architektur befassten geht es heute um das Computersystem selbst. Der Artikel schlie\u00dft so an seine beiden Vorg\u00e4nger gestern und vorgestern\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/6e7f572a246b4ac395de9c260733b707","width":350,"height":200},"classes":[]},{"id":18612,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/28\/galileos-cds-teil-2\/","url_meta":{"origin":18676,"position":4},"title":"Galileos CDS \u2013 Teil 2","author":"Bernd Leitenberger","date":"28. M\u00e4rz 2026","format":false,"excerpt":"So, heute geht es weiter mit Teil 2 \u00fcber Galileos CDS, dieser Beitrag schlie\u00dft nahtlos an den ersten Beitrag von gestern an, wie man schon an der ersten Textzeile sieht. Nach der Einleitung im ersten Teil geht es heute weiter damit warum der RCA 1802 genutzt wurde und was seine\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"https:\/\/vg07.met.vgwort.de\/na\/191e4b0728de42829cf656027b84dc82","width":350,"height":200},"classes":[]},{"id":18502,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/01\/22\/der-ariane-kompatible-orbit\/","url_meta":{"origin":18676,"position":5},"title":"Der Ariane-Kompatible Orbit","author":"Bernd Leitenberger","date":"22. Januar 2026","format":false,"excerpt":"Heute wieder ein Grundlagenblog f\u00fcr alle, die die Grundlagen auf der Website noch nicht entdeckt haben, oder sie ihnen zu detailliert sind oder die einfach nur den Blog lesen. Es geht um einen Begriff, den man heute kaum noch h\u00f6rt, der aber mal das Ma\u00df der Dinge war und was\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/vg06.met.vgwort.de\/na\/901d5ccaac304c8baace44abf9e7aebe","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/18676","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/users\/169"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/comments?post=18676"}],"version-history":[{"count":5,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/18676\/revisions"}],"predecessor-version":[{"id":18680,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/18676\/revisions\/18680"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=18676"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=18676"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=18676"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}