{"id":6059,"date":"2012-03-18T00:56:17","date_gmt":"2012-03-17T23:56:17","guid":{"rendered":"http:\/\/www.bernd-leitenberger.de\/blog\/?p=6059"},"modified":"2012-03-18T18:41:02","modified_gmt":"2012-03-18T17:41:02","slug":"herr-leitenberger-warum-gibt-es-so-viele-programmierspachen","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2012\/03\/18\/herr-leitenberger-warum-gibt-es-so-viele-programmierspachen\/","title":{"rendered":"Herr Leitenberger, warum gibt es so viele Programmierspachen?"},"content":{"rendered":"<p>Tja was antwortet man Maschinenbau-Studenten, die schon mit einer f&uuml;r die Lehre entworfenen Programmiersprache ihre Probleme haben, warum es noch so viel mehr Sprachen gibt?<\/p>\n<p>Nun, es gibt nat&uuml;rlich einige Beantwortungsm&ouml;glichkeiten: Die eine ist weil bisherige Programmiersprachen etwas nicht hatten was gew&uuml;nscht war. Diese allgemeine Aussage kann man in viele Unteraspekte unterteilen.<!--more--><\/p>\n<p>Betrachtet man es historisch, dann waren die ersten Programmiersprachen noch begrenzt: FORTRAN konnte nur Berechnungen, COBOL nur Datenverwaltung. Selbst so Basics wie die heutigen Schleifentypen, Parameter als Wert und Referenzparameter mussten erst noch entstehen. Das kam dann &uuml;ber Programmiersprachen wie Algol, Pascal und C.<\/p>\n<p>Das eine ist der Grundstock an Sprachfeatures. Das zweite sind Konzepte. Nach der prinzipiellen Art sind drei Sprachtypen zu unterscheiden, n&auml;mlich prozedurale, funktionale und deklarative. Wenn man dann noch technische Randbedingungen hinzunimmt, kann man leicht zwischen Sprachen unterscheiden die interpretiert sind oder Maschinensprache erzeugen.<\/p>\n<p>Und nat&uuml;rlich gibt es noch Weiterentwicklungen wie das Objektmodell, Modularisierung, Erweiterung fundamentaler Datenstrukturen wie das native Unterst&uuml;tzen von B&auml;umen, Listen oder assoziativen Arrays. Schon hier kann man &uuml;ber &uuml;ber Bibliotheken viel nachr&uuml;sten, ohne den Sprachkern zu erweitern.<\/p>\n<p>Doch wenn ich mal von den grundlegenden technischen Basiseinschr&auml;nkungen absehe (eine interpretierte Sprache hat einfach andere M&ouml;glichkeiten zur Laufzeit, z.B. kann sie viel einfacher Code interpretieren als eine schon &uuml;bersetzte Sprache) und vielleicht auch, dass eine eierlegende Wollmilchsprache die sowohl deklarativ wie auch prozedural und funktional und objektorientiert ist nicht w&uuml;nschenswert ist, dann gibt es trotzdem noch viel zu viele Sprachen.<\/p>\n<p>Die Frage ist: warum? Nun ein Grund ist, dass Standards meistens drauf hinauslaufen dass Sprachen sich nur ganz langsam weiter entwickeln. Man sieht dass an den Oldtimern wie Cobol, FORTRAN oder C. Die Komptabilit&auml;t zu alten Programmen f&uuml;hrt dazu dass die Erweiterungen immer kleiner werden. Das scheint nun auch anderen Sprachen so zu gehen wie Ruby, Python oder Java. Schon dass f&uuml;hrt dazu dass viele einfach was neues machen wie dies z.B. bei C++ der Fall war.<\/p>\n<p>Das n&auml;chste und wahrscheinlich der Hauptgrund f&uuml;r neues Sprachen ist einfach der &#8222;Ich mach mein Ding&#8220; Ansatz. Anstatt zu sehen wie man eine existierende Sprache weiterentwickelt werden kann, damit sie den Bed&uuml;rfnissen entspricht, macht man einfach eine neue. Angesichts der Vorrede &uuml;ber existierende Standards ist das ja auch kein Wunder. Einen Compiler zu schreiben ist dank Lex und Yacc ja auch kein Problem. Wenn eine gro&szlig;e Firma dahinter steht, dann wird das ganze sogar erfolgreich. Die Zahl der Beispiele ist endlos. So VbScript bei Microsoft als Alternative zu Javascript und Google macht es mit seinem Dart ja auch nicht anders oder C# als Alternative zu Java, nachdem es mit dem J++\/J# nicht so richtig geklappt hat.<\/p>\n<p>Man kann gegen Firmenstandards sagen was man will, aber sie entwickeln sich schneller weiter als offizielle Standards. Nehmen wir mal Delphi, das ja auf Pascal basiert. Pascal hat praktisch keine Marktbedeutung mehr und der einzige Hersteller von Delphi ist eben die Firma Embacederro (Ex-Borland). Das gab die Freiheit sich praktisch vom Standard zu verabschieden und erst Pascal objektorientiert zu erweitern und dann daraus ein komponentenbasierendes visuelles Programmiersystem zu machen, mit dem man erstaunlich viel machen kann. Bestimmte Teile wie die M&ouml;glichkeit es komponentenbasiert zu erweitern haben andere Sprachen noch immer nicht, wenn auch die M&ouml;glichkeiten der Kernsprache inzwischen gegen&uuml;ber C# ein bisschen veraltet sind. Der springende Punkt ist dass es aber im Kern immer noch Pascal ist, f&uuml;r dasselbe Konzept muss man bei den C-&auml;hnlichen Sprachen vier Generationen durchgehen n&auml;mlich C,C++,Java und C#.<\/p>\n<p>Dann gibt es noch die Programmiersprachen als Selbstverwirklichung. Also jeder nur mittelm&auml;&szlig;ig begabte kann eine Programmiersprache erstellen. Von mir stammen auch zwei, die jeweils Messsysteme gesteuert haben. Eine f&uuml;r eine Demonstration an der Hochschule an der ich arbeitete und eine zweite f&uuml;r die automatisierte Ausf&uuml;hrung von Tests bei einem Hersteller von sicheren Steuerungen. Von der letzten habe ich mal ein Programm abgedruckt, wie ihr seht ist es so ein Mischmasch zwischen BASIC und Pascal:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"\/img\/ats-basic.jpg\" alt=\"\" width=\"1068\" height=\"854\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tja was antwortet man Maschinenbau-Studenten, die schon mit einer f&uuml;r die Lehre entworfenen Programmiersprache ihre Probleme haben, warum es noch so viel mehr Sprachen gibt? Nun, es gibt nat&uuml;rlich einige Beantwortungsm&ouml;glichkeiten: Die eine ist weil bisherige Programmiersprachen etwas nicht hatten was gew&uuml;nscht war. Diese allgemeine Aussage kann man in viele Unteraspekte unterteilen.<\/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":[1725,1737,2408,2407,1750,1726,2406],"class_list":["post-6059","post","type-post","status-publish","format-standard","hentry","category-computer","tag-c","tag-cobol","tag-fortram","tag-j","tag-java","tag-pascal","tag-programmierspachen","entry"],"a3_pvc":{"activated":false,"total_views":364,"today_views":0},"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18683,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/06\/01\/die-glorreichen-10-programmiersprachen-2\/","url_meta":{"origin":6059,"position":0},"title":"Die glorreichen 10 \u2013 Programmiersprachen (2)","author":"Bernd Leitenberger","date":"1. Juni 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":6059,"position":1},"title":"Die glorreichen 10 \u2013 Programmiersprachen","author":"Bernd Leitenberger","date":"31. Mai 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":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":6059,"position":2},"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":18734,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/06\/24\/groschengrab-sammelbilder\/","url_meta":{"origin":6059,"position":3},"title":"Groschengrab Sammelbilder","author":"Bernd Leitenberger","date":"24. Juni 2026","format":false,"excerpt":"Jetzt ist ja wieder Fussball-WM-Zeit und es gibt wieder einmal die Sammelbilder von Panini. Die gab es schon zu meiner Jugend. Das Grundkonzept gibt es aber auch woanders, man sammelt Bilder und klebt sie in ein Album ein. Ich war nie Fan von so was, schon als Kind merkte ich,\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/"},"img":{"alt_text":"","src":"\/img\/panini2026.png","width":350,"height":200,"srcset":"\/img\/panini2026.png 1x, \/img\/panini2026.png 1.5x"},"classes":[]},{"id":18612,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/28\/galileos-cds-teil-2\/","url_meta":{"origin":6059,"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":18458,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/10\/23\/die-agena-c-2\/","url_meta":{"origin":6059,"position":5},"title":"Die Agena C","author":"Bernd Leitenberger","date":"23. Oktober 2025","format":false,"excerpt":"Wie ihr sicher bemerkt habt, war es etwas ruhig hier im Blog. Der Grund ist ganz einfach, ich habe mich endlich entschlossen, einen Schlussstrich zu ziehen. Nein, nicht unter dem Blog. Seit f\u00fcnf Jahren will ich Band 2 des Apolloprogramms fertigstellen und habe in den letzten Jahren eigentlich immer nur\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:\/\/vg04.met.vgwort.de\/na\/d6474dec02b34cf385a0dfced0cffb64","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\/6059","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=6059"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/6059\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=6059"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=6059"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=6059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}