Compile time computing

Svante v. Erichsen Svante.v.Erichsen at web.de
Wed Jun 15 22:18:44 UTC 2016


Moin!

Find ich gut!

Ich habe gerade keine Ergänzungen, aber Fragen zu Deinen Punkten:

zu 5: welche Art von Änderungen meinst Du hier?  Ich bin im Allgemeinen nicht
bereit, schlechteren Code hinzunehmen, nur weil der Diff zum besseren blöd
aussehen könnte.

zu 1 und 3 bräuchte ich wohl konkreten Code, um zu verstehen, was Du meinst.


Gruß

Svante


On 2016-06-15 11:40:05-0400, Martin Cracauer wrote:
> Moin moin.
> 
> Ich nehme mir jetzt mal Zeit um ueber compile-time-computing zu
> schreiben.
> 
> Welche Ideen hatte wir noch? Irgendwas neues?
> 
> 1) Struct mit Feldern, operatoren +/-/etc automatisch generieren indem
> man mehrfach ueber die Felder interiert (so dass man keine Felder
> vergisst wenn man spaeter neue Operatoren macht)
> 
> 2) arithmetische Formel nach anderen Variablen aufloesen (so dass der
> Programmier nicht die gleiche Formel mehrfach einhackt).  Da war die
> Frage ob Maxima uns helfen kann?
> 
> 3) literals.  Bei ITA haben wir zum Beispiel enormen Vorteil weil die
> Sache wie "BOS" als string direkt in die binaere Repraesentation von
> TLAs uebersetzen koennen.  Macht Code mehr leserlich.  Gleiches gilt
> fuer literals wie Trees, die wir direkt in den Code packen koennen, in
> der bequemsten Form die wir uns vorstellen koennen.
> 
> 3b) Regular Expressions sind eine gute Weise zu erklaeren warum das
> gut ist:
> - string wird zum compilierzet umgewandelt
> - syntaxcheck zur compilierzeit
> - verschiedene Frontends fuer die gleiche regex matching engine,
>   z.B. einmal als Perl-regex-string, einmal als Unix-regex string,
>   einmal als s-expression syntax.  Alles fuer den gleichen Matcher
> 
> 4) defmacro defun-inline.  Das gibt es mehrere Spielchen:
> - kann man dynamisch zum compilierzeit dann doch nicht inlininen
> - wenn der Compiler kein inlining haette kann man den defun zum
>   defmacro uebersetzen (wir hatten das bei ITA).  Nichts was man
>   machen moechte, demonstriert aber wie maechtig
>   compile-time-computing ist
> 
> 5) "refectoring tools".  Die Java hacker lassen groessere Aenderungen
> von der IDE umschreiben.  Das ist Bloedsinn weil die diffs im
> Versionskontrollsystem unleserlich werden.
> 
> 6) reflection.  Wenn man reflection statt c-t-c benutzt um ueber
> Felder in Strukturen zu iterieren dann werden Fehler von compilierzeit
> zur Laufzeit gepuscht.  Erst wollen die Typen static typing, dann
> machen die Reflexion at runtime.
> 
> 7) CLOS.  Wenn man kein OO System haette, wuerden Lisp macros
> ausreichen um das ohne Compilermodifikationen zu machen.  Oder
> vielleicht willst Du ein Klassenloses OO? Mach selber.  Ohne am
> compiler rumfummeln zu muessen.
> 
> Was hatten wir denn sonst noch?
> 
> Martin
> -- 
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> Martin Cracauer <cracauer at cons.org>   http://www.cons.org/cracauer/
> 

-- 
Svante von Erichsen

GPG fingerprint: A78A D4FB 762F A922 A495  57E8 2649 9081 6E61 20DE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://mailman.common-lisp.net/pipermail/lisp-hh/attachments/20160616/92be36b0/attachment.sig>


More information about the lisp-hh mailing list