Programmierkonzepte, Teil 1: Bedingungen

the next big thing  –  6 Kommentare

Alle modernen Programmiersprachen enthalten Möglichkeiten, Bedingungen auszudrücken und abzufragen. Das erfolgt üblicherweise mit Hilfe des if-Schlüsselworts. Doch das war nicht immer so, auch wenn das heutzutage kaum noch vorstellbar ist.

Im Jahr 1957 wurde die erste Version von Fortran veröffentlicht, einer zumindest damals ausschließlich prozeduralen Programmiersprache. Fortran gilt als die erste höhere Programmiersprache, was bedeutet, dass ihre Abstraktion und Komplexität bereits deutlich über jene von Maschinensprache hinaus ging.

Auf der Basis von Fortran wurde FLPL entwickelt, die Fortran List Processing Language, die eine DSL zur Handhabung von Listen darstellt. Genau genommen handelte es sich dabei jedoch nicht um eine eigenständige Sprache, sondern um eine Sammlung von Fortran-Funktionen zur Verarbeitung von Listen.

John McCarthy, der Erfinder von Lisp, berichtet in dem Artikel "LISP prehistory – Summer 1956 through Summer 1958", dass weder Fortran noch FLPL die Möglichkeiten besaßen, Bedingungen als Ausdruck zu formulieren:

"While expressions could be handled easily in FLPL […], it had neither conditional expressions nor recursion, […]"

Tatsächlich glich die in Fortran enthaltene if-Anweisung eher einem bedingten Sprung, wie er auch heute noch in Assembler verwendet wird. McCarthy berichtet weiter, dass für Fortran deshalb rasch die XIF-Funktion entwickelt wurde, die einen von zwei übergebenen Ausdrücken als Rückgabewert zurücklieferte. Da die Funktion jedoch als normale Fortran-Funktion implementiert war, wurden stets beide Ausdrücke ausgewertet:

"The function shortened many programs and made them easier to understand, but it had to be used sparingly, because all three arguments had to be evaluated before XIF was entered, since XIF was called as an ordinary FORTRAN function though written in machine language."

Das änderte sich 1958 mit dem Erscheinen von Lisp, das im heutigen Sinne "richtige" Bedingungen enthielt, die nur einen der beiden übergebenen Ausdrücke auswerten. Das Verhalten hat sich bis heute gehalten und ist in jeder modernen Programmiersprache üblich.

tl;dr: Bedingungen sind ein grundlegendes Konstrukt zur Ablaufsteuerung in Programmiersprachen. Das in modernen Sprachen enthaltene if gab es jedoch nicht immer: Es wurde im Jahr 1958 durch die Sprache Lisp eingeführt.