{"id":4120,"date":"2010-12-31T00:42:00","date_gmt":"2010-12-30T23:42:00","guid":{"rendered":"http:\/\/www.bernd-leitenberger.de\/blog\/?p=4120"},"modified":"2010-12-30T16:43:08","modified_gmt":"2010-12-30T15:43:08","slug":"wenn-freaks-programmiersprachen-machen","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2010\/12\/31\/wenn-freaks-programmiersprachen-machen\/","title":{"rendered":"Wenn Freaks Programmiersprachen machen&#8230;."},"content":{"rendered":"<p>Der von Michael K. als R&auml;tsel gestellte Aufsatz von Kerningham &uuml;ber Pascal zeigt recht deutlich, warum man eine Programmiersprache oder ein Betriebssystem nicht nutzen sollte, dass von einem Freak erstellt wurde. Man kann sicher einiges an Pascal kritisieren, wie praktisch an jeder Programmiersprache &#8211; man wird immer schlauer. Das Hauptproblem von Pascal ist, dass es als Lehrsprache konzipiert wurde. Vielleicht das nat&uuml;rlichste, das ein Uniprofessor tut, aber es ist im praktischen Einsatz Bl&ouml;dsinn. Es macht keinen Sinn Programmieren auf einer Sprache zu lernen und im Einsatz dann eine andere nutzen. So fehlen Pascal wichtige Funktionen in der Ein\/Ausgabebibliothek und die Stringverwaltung ist auch ziemlich schlecht implementiert.<\/p>\n<p>Viele Punkte in dem Memo zeigen aber etwas anderes, n&auml;mlich die Grundeinstellung die Kerningham hat und die sich in C und Unix wiederfindet. N&auml;mlich das man als Programmierer grenzenlose Freiheit braucht. Nur dazu ein Beispiel: Er bem&auml;ngelt dass man in Pascal keine Fliesskommazahl an eine Funktion &uuml;bergeben kann die Integer Zahlen erwartet, wie dies in FORTRAN der Fall war.<!--more--><\/p>\n<p>FORTRAN hatte nur formale Parameter als Platzhalter, genauso wie der K&amp;R Standard von C. Es gab keine Wertparameter. Bei einem Variablenparameter wird aber die Adresse des Parameters &uuml;bergeben. Welchen Sinn soll es nun machen, eine Flie&szlig;kommazahl an eine Funktion zu &uuml;bergeben, welche die Information als Integer interpretiert &#8211; die interne Repr&auml;sentation ist schlie&szlig;lich eine andere. Von dem Problem des &Uuml;berlaufs ganz zu schweigen.<\/p>\n<p>Die Konzeption von C ist dann auch ein R&uuml;ckschritt zu Pascal: grenzenlose Freiheit. An und f&uuml;r sich was tolles. Man muss sich nicht um Datentypen k&uuml;mmern, kann direkt auf den Speicher zugreifen und mit der fehlenden Pr&uuml;fung des Stacks bei Funktionen oder ob der Speicher bei Feldern \/ Strings ausreicht um den Inhalt aufnehmen kann man auch den Code des Programmes &uuml;berschreiben &#8211; absichtlich oder eben als Sicherheitsl&uuml;cke, die allseits bekannten Buffer-Overflows.<\/p>\n<p>Ein einfaches Beispiel ist die M&ouml;glichkeit eine Zuweisung in der if Anweisung durchzuf&uuml;hren. Das erlaubt es die Zuweisung eines R&uuml;ckgabeparameters einer Funktion und den Test auf 0 (es gibt ja keine Booleschen Variablen in C) in einer Anweisung zu machen. F&uuml;r dieses Ersparen von etwas Tipparbeit handelt man sich schwer auffindbare Fehler ein, wenn man eigentlich einen vergleich mit &#8222;==&#8220; anstatt &#8222;=&#8220; durchf&uuml;hren wollte.<\/p>\n<p>&Uuml;berhaupt scheinen die Designer von C und Unix der irrigen Ansicht zu folgen, dass die Hauptarbeit beim Programmieren das Eintippen ist. Mit der kurzen Schreibweise von C mit vielen Operatoren, den Klammern kann man sicher am Tag eine Minute Tipparbeit sparen &#8211; um dann Stunden nach einem Fehler aufgrund dieser kurzen Schreibweise zu suchen. Oder man spart eine Sekunde beim Tippen von &#8222;ls&#8220; und darf dann eine Minute mal das Manual studieren, welche der zahllosen kryptischen Parameter gerade ben&ouml;tigt wird.<\/p>\n<p>Sicherheit bedingt eine Einschr&auml;nkung der Freiheit. Ein System das Parameter pr&uuml;ft l&auml;sst eben nicht grenzenlose Typkonvertierungen zu. Doch aus irgendeinem Grund gibt es eine ganze Reihe von Programmierern die sich von Systemen mit maximaler Freiheit aber auch maximaler Gefahr von Fehlern verbunden ist angezogen f&uuml;hren.<\/p>\n<p>Ich muss sagen C hat mich nachhaltig beeindruckt. Bevor ich Softwaretechnik studiert habe habe ich ja schlie&szlig;lich auch schon programmiert in BASIC, Assembler und vor allem in Pascal. Als ich dann zum ersten Mal mit C zu tun habe f&uuml;hlte ich mich in die Computersteinzeit zur&uuml;ckversetzt: Das soll also die tolle Programmiersprache sein in der jeder programmiert? fehlertr&auml;chtig, umst&auml;ndlich (so muss man bei Strings dauernd selbst kopieren oder speicher allokieren anstatt das es eine Bibliothek daf&uuml;r gibt) und kryptisch.<\/p>\n<p>Seitdem habe ich auch C++, Perl, Java und C# als Abk&ouml;mmlinge dieser Sprache kennen gelernt. C++ und Perl sind noch schlimmer. Sprich unn&ouml;tig kompliziert und umfangreich (C++) oder noch kryptischer (Perl). Java und C# haben weitgehend mit C gebrochen was die Fehlerm&ouml;glichkeiten angeht. Viele Anleihen von Pascal und anderen Sprachen sind &uuml;bernommen worden. Aber ich muss sagen C hat mich so weitgehend negativ beeindruckt, dass ich mich f&uuml;r die Sprachen auch nicht sehr erw&auml;rmen kann &#8211; die Syntax ist eben noch &#8222;C-Style&#8220;.<\/p>\n<p>Wie w&auml;re die Geschichte verlaufen, wenn Wirth anstatt nach Pascal noch weitere Lehrsprachen (Modula, Oberon) zu erfinden, Pascal verbessert h&auml;tte. eine vern&uuml;nftige Stringverwaltung (nicht mit fixer L&auml;nge und 255 Byte Beschr&auml;nkung) und definierte Prozeduren f&uuml;r Lowlevelzugriffe geschaffen h&auml;tte die dann herstellerspezifisch implementiert werden. Das verschaffte Turbo Pascal ja auch den Erfolg. es g&auml;be zumindest f&uuml;r den Anwender keine Probleme mit Viren, nicht dauernde Sicherheitsupdates etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der von Michael K. als R&auml;tsel gestellte Aufsatz von Kerningham &uuml;ber Pascal zeigt recht deutlich, warum man eine Programmiersprache oder ein Betriebssystem nicht nutzen sollte, dass von einem Freak erstellt wurde. Man kann sicher einiges an Pascal kritisieren, wie praktisch an jeder Programmiersprache &#8211; man wird immer schlauer. Das Hauptproblem von Pascal ist, dass es [&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":[1725,1727,1726],"class_list":["post-4120","post","type-post","status-publish","format-standard","hentry","category-computer","tag-c","tag-kerningham","tag-pascal","entry"],"a3_pvc":{"activated":false,"total_views":1193,"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":4120,"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":4120,"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":4120,"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":18734,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/06\/24\/groschengrab-sammelbilder\/","url_meta":{"origin":4120,"position":3},"title":"Groschengrab Sammelbilder","author":"Bernd Leitenberger","date":"24.06.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":18614,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/03\/29\/galileos-cds-teil-3\/","url_meta":{"origin":4120,"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":5088,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2011\/07\/14\/das-ende-des-space-shuttles-der-fehlende-nachfolger\/","url_meta":{"origin":4120,"position":5},"title":"Das Ende des Space Shuttles &#8211; der fehlende Nachfolger","author":"Bernd Leitenberger","date":"14.07.2011","format":false,"excerpt":"Nun da Atlantis die letzte Reise eines Shuttles durchf?hrt, ist es Zeit die lockere Serie ?ber das Shuttle zu Ende zu schreiben. Anfang der achtziger Jahre war klar, dass die? Shuttles nicht das erf?llten was man sich von ihnen versprach. Geplant war einmal ein Gef?hrt, dessen Transportkosten vor allem von\u2026","rel":"","context":"In &quot;Raumfahrt&quot;","block_context":{"text":"Raumfahrt","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/raumfahrt\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"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\/4120","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=4120"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/4120\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=4120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=4120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=4120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}