{"id":9318,"date":"2014-01-28T00:08:10","date_gmt":"2014-01-27T23:08:10","guid":{"rendered":"http:\/\/www.bernd-leitenberger.de\/blog\/?p=9318"},"modified":"2014-01-28T00:17:39","modified_gmt":"2014-01-27T23:17:39","slug":"warum-gibt-es-so-viele-programmiersprachen","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2014\/01\/28\/warum-gibt-es-so-viele-programmiersprachen\/","title":{"rendered":"Warum gibt es so viele Programmiersprachen?"},"content":{"rendered":"<p>Zuballerst bitte ich um Entschuldigung: F&uuml;r die Vereinfachung. Das mache ich immer, schlie&szlig;lich richtet sich der Blog an die (interessierte) Allgemeinheit, doch bin ich mir sicher das bei Raumfahrt und Chemie \/ Ern&auml;hrung nur wenige Experten mitlesen. Bei diesem Thema ist es anders, vor allem gibt ex da viele selberernannte Experten und meistens kommt dann auch nach dem zweiten Kommentar die fruchtlose Diskussion auf: &#8222;Welche Programmiersprache ist die beste&#8220;. Doch darum geht es nicht, sondern warum gibt es so viele Sprachen.<\/p>\n<p>Als ich mich f&uuml;r Computer interessierte, gab es schon Dutzende von Programmiersprachen, heute sind es noch viel mehr. Ich wage zu behaupten es gibt mehr Programmiersprachen als es Rechnerarchitekturen gibt. Aber fangen wir an es mal genauer zu beleuchten. Ich meine es gibt mehrere Gr&uuml;nde.<\/p>\n<p>Grund Nummer 1: Es gibt so viele Programmiersprachen weil man immer leistungsf&auml;higste Konstrukte entwickelt hat.<\/p>\n<p>Oder anders ausdr&uuml;ckt: genauso wie sich die Hardware weiter entwickelt, so entwickeln sich auch die Softwaretechnik weiter, wobei dies Hand in Hand geht, denn mit den ersten Rechnern h&auml;tte man sicher kein System wie ADA laufen lassen k&ouml;nnen.<!--more--><\/p>\n<p>Anfangs gab es gar keine Programmiersprachen: die Programmierer gaben die Maschinensprache in bin&auml;rer Form ein. Jedes Bitmuster stand f&uuml;r einen Befehl oder einen Daten\/Adresswert. Die erste Verbesserung war der Assembler bei dem man f&uuml;r die Befehle einigerma&szlig;en verst&auml;ndliche W&ouml;rter ausdachte wie &#8222;Add&#8220;, &#8222;Mov&#8220; oder &#8222;JMP&#8220; f&uuml;r Addiere, Bewege oder Springe. Bis heute gilt: Mikroprozessoren verstehen nur sehr einfache Befehle. Der Assembler brachte noch eine weitere Verbesserung: Man konnte Konstanten und Variablen definieren und er k&uuml;mmerte sich um die Adressberechnung denn bei Verzweigungen oder wenn Daten eingeladen werden sollten musste man Adressen angeben.<\/p>\n<p>Die ersten h&ouml;heren Programmiersprachen wie COBOL und FORTRAN boten eine h&ouml;here Abstraktionsebene. Man konnte und mathematische Formeln direkt eingeben, ohne sich darum zu k&uuml;mmern wie der Prozessor sie berechnet. Damit waren sie zum ersten Mal unabh&auml;ngig von der verwendeten Hardware. Was FORTRAN oder COBOL von den nachfolgenden Sprachen unterschied war, das beide spezialisiert waren. COBOL eignete sich hervorragend zur formatierten Datenverarbeitung wie sie bei Versicherungen, Lohnabrechnungen oder anderen betriebswirtschaftlichen Abl&auml;ufen vorkommt. Ger&uuml;chteweise sollen einige BW-Ausbildungen auch COBOL Kurse enthalten. Mit\u00a0 FORTRAN konnte man dagegen vornehmlich Berechnungen vor allem naturwissenschaftliche spezialisiert. Beide kannten nicht die Typisierung von Daten, man gab bei einer\u00a0 FORTRAN Routine z.B. nur die Parameter an, nicht welchen Datentyp sie hatten und in der urspr&uuml;nglichen Form keine M&ouml;glichkeit f&uuml;r strukturierte Programmierung also bedingte Schleifen. Stattdessen wurde mit GOTO im Programm herumgesprungen.\u00a0 FORTRAN und COBOL waren Programmiersprachen f&uuml;r einen bestimmten Einsatzzweck. Das ist zwar immer gegeben, doch sie waren schon sehr eingeschr&auml;nkt. Mit COBOL w&uuml;rde man keine mathematischen Probleme angehen (es gab die Grundrechenarten, aber nichts weitergehendes) und die F&auml;higkeiten von\u00a0 FORTRAN Text zu verarbeiten sind doch sehr beschr&auml;nkt. (der Datentyp Char wurde erst sp&auml;ter eingef&uuml;hrt). FORTAN hatte anfangs sogar keine mit der Backus-Naur form definierte Grammatik. Das bewirkte bei der Raumsonde Mariner 1 einen Totalverlust, da eine Zeile wie<\/p>\n<pre><code><span class=\"fortran1-reservedword\">DO <\/span><span class=\"fortran1-number\">15<\/span><span class=\"fortran1-space\"> I = <\/span><span class=\"fortran1-number\">1.100\r\n<\/span><\/code><\/pre>\n<p><!--EndFragment--><\/p>\n<p>im Quelltext stand und da stehen sollte:<br \/>\n<!--StartFragment--><\/p>\n<pre><code><span class=\"fortran1-reservedword\">DO <\/span><span class=\"fortran1-number\">15<\/span><span class=\"fortran1-space\"> I = <\/span><span class=\"fortran1-number\">1<\/span><span class=\"fortran1-symbol\">,<\/span><span class=\"fortran1-number\">100\r\n<\/span><\/code><\/pre>\n<p><!--EndFragment--><\/p>\n<p>Das letztere Stand f&uuml;r eine z&auml;hlende Schleife bei der I von 1 auf 100 hochgez&auml;hlt wurde und der Schleifenblock wurde mit Anweisungsnummer (Zeilennummer) 15 beendet.<\/p>\n<p>Der Compiler meldete dies jedoch nicht als Fehler, da (zumindest damals) Leerzeichen nicht als Trenner betrachte und der Punkt f&uuml;r den Dezimalpunkt ansah war f&uuml;r den Compiler die Zeile gleichbedeutend mit<br \/>\n<!--StartFragment--><\/p>\n<pre><code><span class=\"fortran1-identifier\">DO15I=<\/span><span class=\"fortran1-number\">1.100\r\n<\/span><\/code><\/pre>\n<p><!--EndFragment--><\/p>\n<p>Also Zuweisung des Wertes 1.1 an die Variable DO15I &#8230;.<\/p>\n<p>Die n&auml;chste Generation waren Sprachen die geeignet waren verschiedenste Problemen auf algorithmischem Wege zu l&ouml;sen, also mit einer L&ouml;sungsvorschrift die man auch umfangssprachlich formulieren kann. Dazu gab es Schleifen wie die While Schleife &#8222;Mache etwas so lange &#8230; gegeben ist&#8220; oder Repeat Schleife &#8222;Wiederhole solange bis &#8230;&#8220; anstatt den Gotos die vorher dominierten. Dazu geh&ouml;re auch das es nun nicht nur die elementaren Datentypen des Prozessors gab sondern neue wie Teilbereiche (f&uuml;r Jahreszahlen sollte vielleicht ein wert von 2178 nicht zul&auml;ssig sein) zusammengefasste Daten (die Bestandteile einer Person sind Name, Vorname, Telefonnummer etc&#8230;).<\/p>\n<p>Dazu geh&ouml;ren eine Reihe von Programmiersprachen. Stammvater ist Algol, wichtige Ableger sind Pascal und C.<\/p>\n<p>Eine Frage, die sich sp&auml;testens jetzt auftut ist: Warum hat man nicht einfach\u00a0 FORTRAN erweitert. Ich denke es sind drei Gr&uuml;nde die daf&uuml;r verantwortlich sind. Das eine ist das sobald eine Sprache etabliert ist, d.h. weit eingesetzt wird, es sehr schwer ist an der bisherigen Syntax zu &auml;ndern Denn damit w&uuml;rde die alte Software nicht mehr laufen. Selbst wenn alle sich einig sind, das die bisherige Syntax Scheisse ist. Ein Paradebeispiel ist die Stringverwaltung von C. Die L&auml;nge eines Strings wird durch ein Nullbyte festgelegt und wenn man nicht ganz genau aufpasst kann man mit einem zu langen String f&uuml;r den man nicht den Platz vorgesehen hat, wichtige Daten &uuml;berschreiben. Darauf beruht ein Angriff auf Software, der sogenannte Buffer-Overflow beim dem Strings Code &uuml;berschrieben und so Schadcode einschleusen. Heute legen Compiler Pr&uuml;fdaten auf den Stack um eine Ver&auml;nderung festzustellen, aber die Stringverarbeitung von C wurde nie ge&auml;ndert.<\/p>\n<p>Bei FORTRAN sieht man dies deutlich. Dem ersten Compiler im April 1957 folgten bald FORTRAN II bis IV in vier Jahren bis 1961. Der n&auml;chste Standard w&auml;r dann\u00a0 FORTRAN 66. Nach weiteren 11 Jahren folgte\u00a0 FORTRAN 77 und nach 13 Jahren FORTRAN 90. Danach ging es dann wieder schneller mit FORTRAN 95,2003 und 2008. Das spiegelt dann auch den R&uuml;ckgang in der Verbreitung wieder, denn je weiter eine Sprache verbreitet ist, desto mehr wollen bei neuen Features mitreden.<\/p>\n<p>Anstatt das jemand seine Ideen in einem Komitee einbringt und Jahre wartet bis sie umgesetzt werden, ist es meist so, dass er eine eigene Sprache kreiert. Das ist m&ouml;glich, weil eine Programmiersprache letztendlich Software ist und wie jede andere Software kann sie entwickelt werden. Ich selbst habe schon eine Programmiersprache f&uuml;r entwickelt und dann noch zweimal in modifizierter Form eingesetzt. Es gibt sogar Tools wie LEX und Yacc die einem einen Teil (das Parsen des Quelltextes) abnehmen. Wenn man ein v&ouml;llig neues Konzept kreieren will das es so noch nicht gibt wie regelbasierte Programmierung (Prolog) Objektorientierung in reiner Form (Smalltalk) so kommt man gar nicht um diesen Schritt herum. Bei dem einbetten in vorhandene Programmiersprachen muss man dann zu viele Kompromisse eingehen. So ist reine Objektorientierung schwer m&ouml;glich wenn die Programmiersprachen auch Datentypen kennt die nicht vom Basistyp Objekt abstammen. Eine regelbasierende Programmiersprache die keinen linearen Ablauf kennt sondern Backtracking verwendet wird man schlecht mit einer prozeduralen Sprache mit einem linearen Ablauf verheiraten k&ouml;nnen.<\/p>\n<p>So, morgen geht es dann weiter mit weiteren Gr&uuml;nden&#8230;.<br \/>\n<img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/vg04.met.vgwort.de\/na\/9080f613d3254731869834ed65c07bee\" width=\"1\" height=\"1\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Zuballerst bitte ich um Entschuldigung: F&uuml;r die Vereinfachung. Das mache ich immer, schlie&szlig;lich richtet sich der Blog an die (interessierte) Allgemeinheit, doch bin ich mir sicher das bei Raumfahrt und Chemie \/ Ern&auml;hrung nur wenige Experten mitlesen. Bei diesem Thema ist es anders, vor allem gibt ex da viele selberernannte Experten und meistens kommt dann [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[1737,3485,3008],"class_list":["post-9318","post","type-post","status-publish","format-standard","hentry","category-computer","tag-cobol","tag-fortran","tag-mariner-2","entry"],"a3_pvc":{"activated":false,"total_views":3905,"today_views":0},"jetpack-related-posts":[{"id":18683,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/06\/01\/die-glorreichen-10-programmiersprachen-2\/","url_meta":{"origin":9318,"position":0},"title":"Die glorreichen 10 \u2013 Programmiersprachen (2)","author":"Bernd Leitenberger","date":"01.06.2026","format":false,"excerpt":"Der heutige Teil schlie\u00dft nahtlos an den ersten Teil an, der gestern erschien. Es geht um 10 Kriterien anhand derer man Programmiersprachen kategorisieren kann. Maschinennah oder universell, aber komplex Als eine maschinennahe Sprache bezeichnet man eine Sprache, die nahe den M\u00f6glichkeiten von Prozessoren ist. Das Paradebeispiel ist C. Alle Prozessoren\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:\/\/vg09.met.vgwort.de\/na\/7f5d9cf5265047179df05b778bf455b5","width":350,"height":200},"classes":[]},{"id":18676,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/05\/31\/die-glorreichen-10-programmiersprachen\/","url_meta":{"origin":9318,"position":1},"title":"Die glorreichen 10 \u2013 Programmiersprachen","author":"Bernd Leitenberger","date":"31.05.2026","format":false,"excerpt":"Ich wollte mal eine Reihe in dieser Rubrik \u00fcber Programmiersprachen machen. Zuerst dachte ich daran eine Liste nach meinen pers\u00f6nlichen Favoriten zu erstellen. Anfangs bef\u00fcrchtete ich, dass ich gar nicht auf 10 komme, aber es sind tats\u00e4chlich mehr, wenngleich ich in vielen Sprachen nur kleine Programme verfasst habe oder mich\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:\/\/vg09.met.vgwort.de\/na\/4073c4f9dc6943a08702cdde13605d43","width":350,"height":200},"classes":[]},{"id":18888,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/08\/27\/die-ki-nachlese-nach-drei-jahren\/","url_meta":{"origin":9318,"position":2},"title":"Die KI &#8211; Nachlese nach drei Jahren","author":"Bernd Leitenberger","date":"27.08.2026","format":false,"excerpt":"Als die KI vor einigen Jahren aufkam, konnte man ihr noch etliche Tatsachen unterschieben. Ich empfehle, meinen Beitrag \u201eMariner\u202f10 und ChatGPT\u201c mal durchzulesen. Der Beitrag ist sehr humorvoll zu lesen, weil die KI fabuliert und sich auch entschuldigt, wenn man der KI v\u00f6lligen Unsinn als Tatsache vorsetzt. Selbst Bilder waren\u2026","rel":"","context":"In &quot;KI&quot;","block_context":{"text":"KI","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/ki\/"},"img":{"alt_text":"","src":"\/img\/nightcafebild.jpg","width":350,"height":200,"srcset":"\/img\/nightcafebild.jpg 1x, \/img\/nightcafebild.jpg 1.5x, \/img\/nightcafebild.jpg 2x, \/img\/nightcafebild.jpg 3x"},"classes":[]},{"id":6096,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2012\/03\/24\/muss-alles-in-echtzeit-sein\/","url_meta":{"origin":9318,"position":3},"title":"Muss alles in Echtzeit sein?","author":"Bernd Leitenberger","date":"24.03.2012","format":false,"excerpt":"Ich bin ja nicht der gro\u00dfe Computerspieler. Wenn ich am Computer bin schreibe ich B\u00fccher, Blogbeitr\u00e4ge, Recherchiere oder programmiere. Spielen tue ich \u00e4u\u00dfert wenig und wenn dann meist abgehangenes aus einer Spielesammlung. Doch auch da gibt es wenig was mich l\u00e4ngere Zeit fesselt. Wenn ich die Programme ansehe, mit denen\u2026","rel":"","context":"In &quot;Computer&quot;","block_context":{"text":"Computer","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/computer\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":9318,"position":4},"title":"Galileos CDS &#8211; Teil 3","author":"Bernd Leitenberger","date":"29.03.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":16660,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2023\/04\/07\/das-solare-balkonkraftwerk\/","url_meta":{"origin":9318,"position":5},"title":"Das (solare) Balkonkraftwerk","author":"Bernd Leitenberger","date":"07.04.2023","format":false,"excerpt":"Heute mal einen Blog \u00fcber ein Thema das sicher viele interessiert: \u201eBalkonkraftwerke\u201c. Ich bin seit einigen Tagen Besitzer eines solchen, und da ich schon drei Solaranlagen mein Eigen nenne, je eine auf der Ost- und Westseite meines Hauses und eine auf dem Dach meines Ferienhauses mit kombiniert zusammen \u00fcber 27\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:\/\/vg05.met.vgwort.de\/na\/95581b6b56a24300882788c5ddaaae3f","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/9318","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=9318"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/9318\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=9318"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=9318"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=9318"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}