[Python-de] Source code generation is a stupid idea

Peter J. Holzer hjp-usenet3 at hjp.at
Fr Okt 13 08:26:19 EDT 2017


On 2017-10-13 09:50, Thomas Güttler <guettliml at thomas-guettler.de> wrote:
> danke für das Feedback!
>
> ich habe den Abschnitt "Source code generation is a stupid idea" überarbeitet:
>
>    https://github.com/guettli/programming-guidelines/blob/master/README.rst#source-code-generation-is-a-stupid-idea
>
> Ist es nun besser?

Nicht wirklich. Im ersten Absatz schreibst Du im Wesentlichen "Compiler
sind eine blöde Idee". Ein Programm das ein File in einer Sprache
hernimmt und daraus ein eines in einer anderen Sprache erzeugt, ist ein
Compiler. Ein Programm, das das Input-File direkt verarbeitet, ist ein
Interpreter.

Diese Aussage halte ich für unsinnig. Compiler sind nicht nur keine
blöde Idee, sondern ziemlich notwendig. Generell übersetzen Compiler von
einer "höheren" in eine "niedrigere" Sprache. Die "höhere" Sprache hat
für den Programmierer den Vorteil, dass sie ihm Arbeit erspart, die
"niedrigere" hat den Vorteil, dass bereits ein Interpreter (oder
Compiler) dafür existiert.

Richtig ist, dass das, was der Compiler ausspuckt, nicht "Source Code"
ist. Auch dann nicht, wenn es Code in einer Sprache ist, die (auch) zum
Schreiben von Source Code verwendet wird, wie C, JavaScript, Python oder
Assembler. Der Source Code ist der Input des Compilers, also das was Du
als "DATA" bezeichnest.

Deine Exception 1 halte ich auch für unsinnig: Warum soll man aus einer
Syntax-Beschreibung nicht gleich einen kompletten Parser erzeugen, wenn
es möglich ist? (Und ja, auch in diesem Fall ist der Output kein
Source-Code. Der Source-Code ist die Syntax-Beschreibung.)

Schließlich der Fall, den Du überhaupt nicht erwähnst (es sei denn, Du
meinst das mit Exception 1), obwohl er der einzige ist, in dem
tatsächlich Source-Code generiert wird, in dem Sinne, dass er vom
Benutzer editiert werden soll: Das Generieren von *unvollständigem* Code
aus einer abstrakteren Beschreibung, wie z.B. einer IDL (wie von Dir
erwähnt) oder UML oder ähnlichem. Das halte ich tatsächlich für eine
blöde Idee. Denn wenn sich der Input ändert (und das wird vorkommen),
dann wird ein echtes Source-File überschrieben und man muss im
günstigsten Fall die eigenen Änderungen wieder reinmergen, im
ungünstigsten neu schreiben.

        hp


-- 
   _  | Peter J. Holzer    | Fluch der elektronischen Textverarbeitung:
|_|_) |                    | Man feilt solange an seinen Text um, bis
| |   | hjp at hjp.at         | die Satzbestandteile des Satzes nicht mehr
__/   | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel


Mehr Informationen über die Mailingliste python-de