Beide scheinen gut für die Erstellung erweiterbarer APIs und Codegenerierung zu sein.
Was sind die Hauptunterschiede zwischen ihnen?
Was sehen Sie als ihre Stärken, Schwächen, ...
Disclaimer: Ich bin vertrauter mit Clojure als Tcl und entschuldige mich bei Tclers, wenn ich etwas falsch darstelle. Aber hier sind einige Punkte, die mir allgemein bekannt sind:
Im Durchschnitt sind beide Sprachen ideal für die Metaprogrammierung, aber wenn ich zwischen den beiden wählen würde:
Ich denke, Mikeras Antwort ist ausgezeichnet.
Ich würde nur hinzufügen, dass in clojure metaprogramming tendiert, auf Makros zu konzentrieren, eine große einheitliche Metaprogrammierungslösung ohne Peer, hat tcl mehrere kleine scharfe Werkzeuge für die Metaprogrammierung, darunter den "unbekannten" Befehl, der dazu verwendet werden kann alle möglichen raffinierten Tricks. Interessant ist auch, dass obwohl clojure nur eine kleine Anzahl von Schlüsselwörtern oder "speziellen Formen" hat, tcl tatsächlich keine hat, was es zu seinem eigenen dsl macht, und das Verhalten jedes Befehls zu ändern (oder zu erweitern).
Eine Sache, der ich aus Mikers Antwort nicht zustimmen kann, ist der Teil über die Syntax von clojure, der der Metaprogrammierung zugänglicher ist. Eine der unangenehmen Überraschungen für mich, wenn ich zu clojure komme, ist eigentlich, wie viel syntaktische Variation es in clojure gibt, mit den verschiedenen Verwendungen von () [] {} "^ {} # ': Schlüssel ... und weiter und weiter. Ich grabe völlig die Rechtfertigung dieser Art von syntaktischem Zucker, aber ich finde tatsächlich tcl-Syntax leichter zu behandeln für "ham-handed" Metaprogrammierung und Code-Generierung. Und tcls "alles ist eine Schnur" Natur fügt der Einfachheit hinzu.
Was multi-processing Fähigkeiten, unveränderliche Datenstrukturen, rein funktionale Natur und viele andere Fälle von clojure unterscheidet, gibt es tatsächlich nichts Vergleichbares in tcl.
Ich konnte der Schlussfolgerung von mikera nicht mehr zustimmen.