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