{"id":4145,"date":"2011-01-06T00:35:50","date_gmt":"2011-01-05T23:35:50","guid":{"rendered":"http:\/\/www.bernd-leitenberger.de\/blog\/?p=4145"},"modified":"2011-01-05T10:37:36","modified_gmt":"2011-01-05T09:37:36","slug":"kriterien-fuer-eine-gute-programmiersprache","status":"publish","type":"post","link":"https:\/\/www.bernd-leitenberger.de\/blog\/2011\/01\/06\/kriterien-fuer-eine-gute-programmiersprache\/","title":{"rendered":"Kriterien f&uuml;r eine gute Programmiersprache"},"content":{"rendered":"<p>Es gibt nat&uuml;rlich eine Reihe von Kriterien. Sicherlich wird der eine oder andere die Codegeschwindigkeit und Gr&ouml;&szlig;e hervorheben &#8211; bald kommt man dann aber auf hersteller- bzw. Plattformspezifische Implementierungen. Man muss dazu nur mal ein einfaches &#8222;Hello World&#8220; mit einem C-Compiler erzeugen und hat ein Programm das um ein vielfaches gr&ouml;&szlig;er ist als dasselbe vor 20 Jahren unter DOS.<\/p>\n<p>Nat&uuml;rlich gibt es noch die Eignung der Sprache &#8211; es gibt Scriptsprachen f&uuml;r die Kommandoshell, Sprachen die im Browser ablaufen und Sprachen mit denen man EXE Dateien oder andere Binarys erzeugt. Aber gehen wir mal von der technischen Seite weg, auf die Sprachdefinition. F&uuml;r mich ist an einer Sprache folgendes wichtig:<!--more--><\/p>\n<p>Eine gute Sprache ist logisch durchdacht. Nun sind das wird der eine oder andere sagen alle Sprachen nach der BNF oder f&uuml;r die es eine exakte Grammatik gibt. Das muss aber nicht logisch durchdacht sein. logisch durchdacht ist z.B. das Schl&uuml;sselworte oder verwendete Zeichen eine gleiche (oder wenn mehrfach verwendet) &auml;hnliche Bedeutung haben.<\/p>\n<p>Meine Negativbeispiele kann ich hier leicht aus der Sprache &#8222;C&#8220; ziehen. Da ist mal das Komma ein Separator von Werten und mal ein Operator, was wirklich tolle Ergebnisse und viele Stunden mit einer spannenden Fehlersuche verursachte. z.B. ist:<\/p>\n<p><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\">a <\/span><span style=\"color: #ff0000; font-size: xx-small;\">=<\/span><span style=\"font-size: xx-small;\"> feld <\/span><span style=\"color: #ff0000; font-size: xx-small;\">[<\/span><span style=\"font-size: xx-small;\">i<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">j<\/span><span style=\"color: #ff0000; font-size: xx-small;\">];<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\">a <\/span><span style=\"color: #ff0000; font-size: xx-small;\">=<\/span><span style=\"font-size: xx-small;\"> feld <\/span><span style=\"color: #ff0000; font-size: xx-small;\">[<\/span><span style=\"font-size: xx-small;\">i<\/span><span style=\"color: #ff0000; font-size: xx-small;\">][<\/span><span style=\"font-size: xx-small;\">j<\/span><span style=\"color: #ff0000; font-size: xx-small;\">];<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p>nicht das gleiche&#8230;. dasselbe kann man &uuml;ber das Multiplikationszeichen sagen, das mal eine Multiplikation durchf&uuml;hrt und mal eine Referentierung.<\/p>\n<p>Auf der anderen Seite wird je nachdem ob man es mit einem Zeiger oder einer Variablen zu tun hat auf die Elemente eines Records mal mit &#8222;.&#8220; und mal mit &#8222;-&gt;&#8220; zugegriffen. Ist echt logisch.<\/p>\n<p>In diesem Zusammenhang halte ich &uuml;berhaupt nichts von Sprachen ohne Typisierung, weil Typen ja nicht nur Konstrukt einer Sprache sind sondern sich auch im t&auml;glichen Leben wiederfinden. Wir nennen sie dort Kategorien. Da gibt es Zahlen oder Texte, Autos oder H&auml;user. Zahlen kann man addieren, Texte verkn&uuml;pfen. Autos haben die Eigenschaft PS, Fabrikat, H&auml;user die Eigenschaften Quadratmeter, Bewohner u.a.<\/p>\n<p>Eine Sprache die keine Typisierung kennt, l&auml;sst es zu einer Stringvariablen eine Zahl zuzuweisen und umgekehrt. Besonders tolle Sprachen lassen so was zu:<\/p>\n<p>a=&#8220;ab&#8220;<\/p>\n<p>a= a+1<\/p>\n<p>Ratet mal was raus kommt&#8230;.<\/p>\n<p>Kriterium 2: Eine Sprache soll so umfangreich sein, dass man alles damit erledigen kann, aber so klein, dass man sie m&ouml;glichst schnell verstehen kann.<\/p>\n<p>Was ich damit meine ist, das ein Sprache zum einen so m&auml;chtig sein soll, dass alle Sprachelemente zur Verf&uuml;gung stehen die man braucht, zum anderen aber auch sie nicht unn&ouml;tig kompliziert ist. Der Mittelweg zu finden ist schwierig und was n&ouml;tig ist, &auml;ndert sich auch im Laufe der Zeit. So haben &auml;ltere prozedurale Sprachen noch nicht als Datentyp die Map, oder das assoziative Array. Das ist in vielen Dingen wo man auf Daten nicht mit Indexen zugreifen kann sehr n&uuml;tzlich. Dagegen finde ich die auch in diesen Sprachen nicht vorhandene for-each Schleife nicht so n&uuml;tzlich, dass sie unbedingt dazu geh&ouml;ren m&uuml;sste.<\/p>\n<p>Pascal (im Wirth Standard) mangelt es sicher an einigen n&uuml;tzlichen Dingen wie vern&uuml;nftigen Strings. Auf der der anderen Seite hat C so viele Features die Abk&uuml;rzungen sind aber nicht unbedingt notwendig f&uuml;r eine Sprache wie die M&ouml;glichkeit der Zuweisung in der If Anweisung, die Inkrement und Dekrement Operatoren oder die Kombination Operator mit Zuweisung. Alle diese sind durch etwas mehr Schreibarbeit ersetzbar.<\/p>\n<p>Ein sehr interessanter psychologischer Aspekt ist ja das viele Programmierer glauben, dass kurzer Code, am besten noch etwas kryptisch geschrieben, schneller w&auml;re. Siehe Alexanders Beispiel. Wie das Programm von mir beweist, das deutlich l&auml;nger ist muss das nicht der Fall sein. Vieles h&auml;ngt davon ab wie ein Compiler den Quelltext &uuml;bersetzt, aber auch wie effizient eine Programmiersprache implementiert werden kann. Im C-Beispiel ist es per Definition so, dass das Stringende? gesucht werden muss da es durch die bin&auml;re Null markiert ist. Egal wie man nun im beispiel daran einen neuen String anh&auml;ngt &#8211; die Suche dauert immer l&auml;nger je l&auml;nger der String ist.<\/p>\n<p>Ich habe schon w&auml;hrend des Studiums und dann w&auml;hrend der Diplomarbeit Sprachen verglichen. Bei der Diplomarbeit C#, Java und Delphi. Es zeigte sich dass bei dem elementaren Operationen ohne Ausgabe es praktisch keine Unterschiede in den Laufzeiten gab. Diese kamen erst auf als es auf die grafische Ausgabe ging, wobei die beiden interpretierten Sprachen deutlich langsamer waren, und das trotz C# Mogeltrick mit der Garbage-Collection.<\/p>\n<p>Kriterium 3: Eine Sprache ist syntaktisch so aufgebaut dass man sie ohne viel Nachdenken lesen kann.<\/p>\n<p>Ich muss sagen das Kriterium 3 mich bis heute abgehalten hat viele Sprachen zu lernen. Ich denke es ist m&ouml;glich eine Programmiersprache so grammatikalisch auszulegen, dass der Quelltext auch f&uuml;r nicht Programmierer verst&auml;ndlich ist. Ich denke das ist bei Pascal oder Modula, aber auch andere Sprachen gegeben. Das kann geschehen durch geschickte Wahl der Schl&uuml;sselw&ouml;rter und vermeiden von zu vielen Operatoren? die man erkl&auml;ren muss. Auf der anderen Seite gibt es das Gegenbeispiel einer Sprache die zu schwafelig ist. Ich rede von COBOL: Wenn man selbst +, *, &#8211; und \/ durch Worte ersetzt verzichtet man auf die Grundkrenntnisse der Mathematik die jeder hat und macht den Quelltext schwer lesbar.<\/p>\n<p>Doch das ist die Ausnahme. Der Trend geht heute eher dazu dass Sprachen eher wenige Schl&uuml;sselw&ouml;rter haben und vieles mit Operatoren definiert wird. Perl ist so ein Beispiel. Aber auch Smalltalk hat nicht sehr viele Schl&uuml;sselw&ouml;rter. Dann geh&ouml;rt viel Wissen dazu um einen Quelltext zu verstehen. Man kann aber auch f&uuml;r Profis das Lesen erschweren, z.B. so:<\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><span style=\"color: #008080; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #008080; font-size: xx-small;\">#include &lt;stdio.h&gt;<\/span><\/p>\n<p><span style=\"color: #008080; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #008080; font-size: xx-small;\"> <\/span><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">)<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><span style=\"color: #000080; font-size: xx-small;\"><strong> <\/strong><\/span><\/p>\n<p><span style=\"color: #000080; font-size: xx-small;\"><strong>char<\/strong><\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">*<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">;<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\">{<\/span><span style=\"color: #000080; font-size: xx-small;\"><strong>return<\/strong><\/span><span style=\"color: #ff0000; font-size: xx-small;\">!<\/span><span style=\"color: #0000ff; font-size: xx-small;\">0<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;<\/span><span style=\"color: #0000ff; font-size: xx-small;\">3<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">79<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">13<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">87<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&#8211;<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">86<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #0000ff; font-size: xx-small;\">0<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">)+<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">)):<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> _<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> a <\/span> <span style=\"color: #ff0000; font-size: xx-small;\">):<\/span><span style=\"color: #0000ff; font-size: xx-small;\">3<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">main <\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">&#8211;<\/span><span style=\"color: #0000ff; font-size: xx-small;\">94<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">&#8211;<\/span><span style=\"color: #0000ff; font-size: xx-small;\">27<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> a<\/span><\/p>\n<p><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\">)&amp;&amp;<\/span><span style=\"font-size: xx-small;\">t <\/span><span style=\"color: #ff0000; font-size: xx-small;\">==<\/span><span style=\"font-size: xx-small;\"> <\/span> <span style=\"color: #0000ff; font-size: xx-small;\">2<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;<\/span><span style=\"color: #0000ff; font-size: xx-small;\">13<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">main <\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #0000ff; font-size: xx-small;\">2<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> _<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #800080; font-size: xx-small;\">&#8222;%s %d %d\\n&#8220;<\/span><span style=\"font-size: xx-small;\"> <\/span> <span style=\"color: #ff0000; font-size: xx-small;\">):<\/span><span style=\"color: #0000ff; font-size: xx-small;\">9<\/span><span style=\"color: #ff0000; font-size: xx-small;\">:<\/span><span style=\"color: #0000ff; font-size: xx-small;\">16<\/span><span style=\"color: #ff0000; font-size: xx-small;\">:<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;<\/span><span style=\"color: #0000ff; font-size: xx-small;\">0<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">72<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"color: #800080; font-size: xx-small;\">&#8222;@n&#8217;+,#&#8217;\/*{}w+\/w#cdnr\/+,{}r\/*de}+,\/*{*+,\/w{%+,\/w#q#n+,\/#{l,+,\/n{n+\\<\/span><\/p>\n<p><span style=\"color: #800080; font-size: xx-small;\"> <\/span><\/p>\n<p>,\/+#n+,\/#;#q#n+,\/+k#;*+,\/&#8217;r :&#8217;d*&#8217;3,}{w+K w&#8217;K:&#8217;+}e#&#8216;;dq#&#8217;l q#&#8217;+d&#8217;K#!\/\\<\/p>\n<p>+k#;q#&#8217;r}eKK#}w&#8217;r}eKK{nl]&#8217;\/#;#q#n&#8216;){)#}w&#8216;){){nl]&#8217;\/+#n&#8216;;d}rw&#8216; i;# ){n\\<\/p>\n<p>l]!\/n{n#&#8216;; r{#w&#8217;r nc{nl]&#8217;\/#{l,+&#8217;K {rw&#8216; iK{;[{nl]&#8217;\/w#q#\\<\/p>\n<p>n&#8217;wk nw&#8216; iwk{KK{nl]!\/w{%&#8217;l##w#&#8216; i; :{nl]&#8217;\/*{q#&#8217;ld;r&#8216;}{nlwb!\/*de}&#8217;c \\<\/p>\n<p>;;{nl&#8216;-{}rw]&#8217;\/+,}##&#8217;*}#nc,&#8216;,#nw]&#8217;\/+kd&#8217;+e}+;\\<\/p>\n<p><span style=\"color: #800080; font-size: xx-small;\">#&#8217;rdq#w! nr&#8217;\/ &#8218;) }+}{rl#'{n&#8216; &#8218;)# }&#8217;+}##(!!\/&#8220;<\/span><span style=\"color: #ff0000; font-size: xx-small;\">)<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\">:<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">50<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">==*<\/span><span style=\"font-size: xx-small;\">a <\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">putchar<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">[<\/span><span style=\"color: #0000ff; font-size: xx-small;\">31<\/span><span style=\"color: #ff0000; font-size: xx-small;\">]):<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">65<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"color: #ff0000; font-size: xx-small;\">):<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">((*<\/span><span style=\"font-size: xx-small;\">a <\/span><span style=\"color: #ff0000; font-size: xx-small;\">==<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff00ff; font-size: xx-small;\">&#8218;\/&#8216;<\/span><span style=\"color: #ff0000; font-size: xx-small;\">)+<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">_<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">a\\<\/span><\/p>\n<p><span style=\"font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">):<\/span><span style=\"color: #0000ff; font-size: xx-small;\">0<\/span><span style=\"color: #ff0000; font-size: xx-small;\">&lt;<\/span><span style=\"font-size: xx-small;\">t<\/span><span style=\"color: #ff0000; font-size: xx-small;\">?<\/span><span style=\"font-size: xx-small;\">main <\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"font-size: xx-small;\"> <\/span> <span style=\"color: #0000ff; font-size: xx-small;\">2<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #0000ff; font-size: xx-small;\">2<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> <\/span><span style=\"color: #800080; font-size: xx-small;\">&#8222;%s&#8220;<\/span><span style=\"color: #ff0000; font-size: xx-small;\">):*<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">==<\/span><span style=\"color: #ff00ff; font-size: xx-small;\">&#8218;\/&#8216;<\/span><span style=\"color: #ff0000; font-size: xx-small;\">||<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(<\/span><span style=\"color: #0000ff; font-size: xx-small;\">0<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\">main<\/span><span style=\"color: #ff0000; font-size: xx-small;\">(-<\/span><span style=\"color: #0000ff; font-size: xx-small;\">61<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,*<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">,<\/span><span style=\"font-size: xx-small;\"> <\/span> <span style=\"color: #800080; font-size: xx-small;\">&#8222;!ek;dc \\<\/span><\/p>\n<p><span style=\"color: #800080; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #800080; font-size: xx-small;\">i@bK'(q)-[w]*%n+r3#l,{}:\\nuwloca-O;m .vpbks,fxntdCeghiry&#8220;<\/span><span style=\"color: #ff0000; font-size: xx-small;\">),<\/span><span style=\"font-size: xx-small;\">a<\/span><span style=\"color: #ff0000; font-size: xx-small;\">+<\/span><span style=\"color: #0000ff; font-size: xx-small;\">1<\/span><span style=\"color: #ff0000; font-size: xx-small;\">);}<\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p><span style=\"color: #ff0000; font-size: xx-small;\"> <\/span><\/p>\n<p>Hier das <a href=\"\/prog\/monster.c\">Programm zum Runterladen<\/a>. Es dr&uuml;ckt meine gesamte Begeisterung f&uuml;r C aus&#8230;.<\/p>\n<p>Ich konnte mich weder mit Smalltalk noch mit Pearl anfreunden und auch einen Artikel &uuml;ber Haskell in der ct fand ich interessant, aber der Einstiegsaufwand ist zu hoch. Es geht darum eine komplett neue Syntax zu erlenen und bisherige Sprachkonzepte kann man vergessen. Vor allem ist aber ein Listing nicht f&uuml;r einen nicht mit der Sprache vertrauten kaum verst&auml;ndlich, w&auml;hrend ich behaupten w&uuml;rde das dies bei Pascal nicht so ist.<\/p>\n<p>Wie schon abgek&uuml;ndigt habe ich morgen Vorlesung, sodass es keinen Beitrag gibt, sondern wahrscheinlich erst am Samstag oder?Sonntag?wieder.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt nat&uuml;rlich eine Reihe von Kriterien. Sicherlich wird der eine oder andere die Codegeschwindigkeit und Gr&ouml;&szlig;e hervorheben &#8211; bald kommt man dann aber auf hersteller- bzw. Plattformspezifische Implementierungen. Man muss dazu nur mal ein einfaches &#8222;Hello World&#8220; mit einem C-Compiler erzeugen und hat ein Programm das um ein vielfaches gr&ouml;&szlig;er ist als dasselbe vor [&hellip;]<\/p>\n","protected":false},"author":169,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[4],"tags":[1725,1737,1735,1726,1736,1739,1738],"class_list":["post-4145","post","type-post","status-publish","format-standard","hentry","category-computer","tag-c","tag-cobol","tag-haskell","tag-pascal","tag-perl","tag-programmiersprache","tag-smalltalk","entry"],"a3_pvc":{"activated":false,"total_views":703,"today_views":0},"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":4557,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2011\/04\/03\/atom-und-wahlnachlese\/","url_meta":{"origin":4145,"position":0},"title":"Atom- und Wahlnachlese","author":"Bernd Leitenberger","date":"3. April 2011","format":false,"excerpt":"Nun einige Wochen nach dem Super-Gau von Japan wird es an der Zeit f?r eine Nachlese und zwar eine etwas allgemeiner gehaltene. Ich m?chte an dieser Stelle mal meine Einstellung zur Kernkraft in den letzten Jahrzehnten reflektieren. Ich war urspr?nglich f?r Kernkraft. Wie viele andere, glaubte ich an umweltfreundliche Energie\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":5216,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2011\/08\/10\/fcea2\/","url_meta":{"origin":4145,"position":1},"title":"FCEA2","author":"Bernd Leitenberger","date":"10. August 2011","format":false,"excerpt":"CEA2 (Chemical Equilibrium with Applications) ist ein seit gut 30 Jahren entwickeltes NASA Programm mit dem verschiedenste Probleme bei Gasphasen berechnet werden k\u00f6nnen. Ich beschr\u00e4nke mich auf das, was Raumfahrtliebhaber wohl am meisten machen: Die Berechnung der Performance von Triebwerken bei Raketen. Ich will die Benutzung des Programmes einmal erl\u00e4utern,\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:\/\/vg01.met.vgwort.de\/na\/89efc24160614a1a93d97d19447e81a6","width":350,"height":200},"classes":[]},{"id":18430,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2025\/10\/06\/treibstoffgewinnung-auf-dem-mars\/","url_meta":{"origin":4145,"position":2},"title":"Treibstoffgewinnung auf dem Mars","author":"Bernd Leitenberger","date":"6. Oktober 2025","format":false,"excerpt":"Bis es eine Kolonie auf dem Mars gibt wird es sicher noch Jahrzehnte dauern, wenn \u00fcberhaupt. Ich bin jetzt 60 und glaube nicht, das ich dies noch erleben werde. Chancen g\u00e4be es f\u00fcr eine Expedition, also einen Flug zum Mars, einen Aufenthalt dort, der aus himmelsmechanischen Gr\u00fcnden etwa eineinhalb Jahre\u2026","rel":"","context":"In &quot;Chemie&quot;","block_context":{"text":"Chemie","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/chemie\/"},"img":{"alt_text":"","src":"https:\/\/vg01.met.vgwort.de\/na\/1098a0be1f3743bcb77eed3bd08301c5","width":350,"height":200},"classes":[]},{"id":12850,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2017\/11\/24\/the-expanse-fernsehserie\/","url_meta":{"origin":4145,"position":3},"title":"The Expanse (Fernsehserie)","author":"Thierry Gschwind","date":"24. November 2017","format":false,"excerpt":"K\u00fcrzlich bin ich auf Netflix auf der Sciencefiction Serie \"The Expanse\" gestossen, ich war eigentlich positiv \u00fcberrascht. Ich werde hier ein paar technische Dinge anreissen, und keine Details zur Storyline.\u00a0Die erste Staffel basiert auf dem Roman Leviathan Wakes von Daniel Abraham und Ty Franck. Schauplatz Die Serie spielt im 23.\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/www.bernd-leitenberger.de\/blog\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":18502,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2026\/01\/22\/der-ariane-kompatible-orbit\/","url_meta":{"origin":4145,"position":4},"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":[]},{"id":15301,"url":"https:\/\/www.bernd-leitenberger.de\/blog\/2021\/04\/20\/nachlese-zum-human-landing-system-hls-kontrakt\/","url_meta":{"origin":4145,"position":5},"title":"Nachlese zum Human Landing System (HLS) Kontrakt","author":"Bernd Leitenberger","date":"20. April 2021","format":false,"excerpt":"\ufeffWie bereits bekannt und hier auch schon kommentiert, hat die NASA am Wochenende SpaceX den Vertrag \u00fcber das HLS in einer H\u00f6he von 2,89 Milliarden Dollar vergeben. Ich habe zuerst \u00fcberlegt, ob ich das in der Aprilnachlese zu SpaceX thematisieren sollte, aber da die Kritik daran eigentlich nur teilweise mit\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:\/\/vg01.met.vgwort.de\/na\/352f2778c491440a9f73c731c5880d09","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\/4145","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=4145"}],"version-history":[{"count":0,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/posts\/4145\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/media?parent=4145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/categories?post=4145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bernd-leitenberger.de\/blog\/wp-json\/wp\/v2\/tags?post=4145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}