Path: csiph.com!weretis.net!feeder4.news.weretis.net!news.albasani.net!news.luga.at!.POSTED!not-for-mail From: "Peter J. Holzer" Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Source code generation is a stupid idea Date: Fri, 13 Oct 2017 14:26:19 +0200 Organization: LUGA Lines: 52 Message-ID: References: <2c85cd93-5e6e-522d-9159-d16a514be956@thomas-guettler.de> NNTP-Posting-Host: hrunkner.hjp.at Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: cherenkov.luga.at 1507897582 14790 212.17.106.130 (13 Oct 2017 12:26:22 GMT) X-Complaints-To: abuse@luga.at NNTP-Posting-Date: Fri, 13 Oct 2017 12:26:22 +0000 (UTC) User-Agent: slrn/pre1.0.0-40 (Linux) Xref: csiph.com de.comp.lang.python:4964 On 2017-10-13 09:50, Thomas Güttler 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@hjp.at | die Satzbestandteile des Satzes nicht mehr __/ | http://www.hjp.at/ | zusammenpaßt. -- Ralph Babel