Ich will es wird
- native Codegenerierung // Kann mit so etwas wie GHC kompiliert werden
- plattformübergreifend (win / linux)
- Funktional und etwas objektorientiert
- Lambdas, Pattern Matching, Tupel und andere funktionale Dinge
- Großartige Unterstützung für die Metaprogrammierung
- Einrückungs- und Mindestgrenzen
- statische Eingabe
- Ich möchte auch Mixin- Unterstützung :)
- Die Möglichkeit, Websites basierend auf einigen Frameworks zu erstellen, ist ebenfalls ein gutes Plus.
- Also und ja, Leistung und Stabilität sind wichtig.
Ich habe Haskell gestartet , bin mir aber immer noch nicht sicher, weil es OCaml gibt. Und ich habe F # Erfahrung. Aber soweit ich weiß, ist OCalm ein bisschen OOP und manchmal sogar schneller (nicht sicher), ich habe es nie ausprobiert. Es gibt auch erlang, ich weiß nichts über erlang . Und vielleicht fehlt mir noch etwas ..? Python , ich habe keine Ahnung von Python hier, es ist funktional und es ist oop und es unterstützt Mixin und beliebt und schnell, aber ich glaube nicht wirklich, dass Python für all die funktionale Magie geeignet ist, ich denke es kann nicht.
Ich weiß, dass dieser Thread / dieses Thema wie ein Reden über nichts oder wie ein Sprachkrieg ist, aber ich bin ernsthaft und möchte wirklich Ihre Vision davon hören.
Antworten:
Clojure scheint ziemlich gut zu all Ihren Anforderungen zu passen.
Native Code-Generierung / Kann mit etwas wie GHC kompiliert werden - Ja (der gesamte Clojure-Code wird in Java-Bytecode kompiliert, der anschließend über JIT in der JVM in nativen Code kompiliert wird.)
plattformübergreifend (Win / Linux) - Ja - überall dort, wo die JVM ausgeführt wird
Funktional und etwas objektorientiert - Ja - Clojure ist in erster Linie eine funktionale Sprache, bietet aber auch OO-Unterstützung, wenn Sie dies wünschen (entweder über Java-Interoperabilität oder Objekte im CL-Stil). Trotzdem wird OO in Clojure allgemein als unidiomatisch angesehen.
Lambdas, Pattern Matching, Tupel und andere funktionale Dinge - Ja - diesbezüglich ist es eine ziemlich standardmäßige funktionale Sprache. Der Autor (Rich Hickey) war etwas von Haskell inspiriert.
Hervorragende Unterstützung für die Metaprogrammierung - Ja - "Code-is-Data" gilt wie bei allen Lisps und Sie erhalten eine hervorragende Makrofunktionalität
Einrückung und Mindestgrenzen - Ja, obwohl dies sicherlich eher ein Editor als eine Sprachfunktion ist ?
statische Eingabe - Ja - Clojure ist standardmäßig dynamisch, Sie können jedoch jederzeit statische oder primitive Typhinweise für eine Leistungssteigerung bereitstellen
Ich möchte auch Mixin-Unterstützung :) - Ja - kann auf verschiedene Arten (z. B. Makros) erreicht werden, obwohl Sie es wahrscheinlich nicht wollen oder brauchen, nachdem Sie die Protokollfunktionalität von Clojure entdeckt haben ....
Die Möglichkeit, Websites basierend auf einigen Frameworks zu erstellen, ist ebenfalls ein gutes Plus. - Ja - es gibt Frameworks wie Ring / Compojure in Clojure und Sie können auch beliebige Java-Frameworks verwenden
Also und ja, Leistung und Stabilität sind wichtig. - Ja - Sie erhalten im Grunde die gesamte Leistung / Stabilität der JVM, die in Unternehmensanwendungen ziemlich gut bewiesen ist.
Abgesehen davon verfügt Clojure über einige wirklich beeindruckende Funktionen rund um die Parallelität. Es lohnt sich wirklich, dieses Video anzuschauen: http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey
quelle
Common Lisp
Es scheint alle oben genannten Anforderungen zu unterstützen. Über den Link gelangen Sie zu einem Online-Buch, das alles enthält, was Sie wissen müssen, um loszulegen.
quelle
eval
Funktion? Es ist nur eine Funktion, die Sie nach Belieben implementieren können. Einige Implementierungen verfügen über einen separaten Interpreter, den sie mit der kompilierten ausführbaren Datei liefern. Einige versenden nur den Compiler selbst mit der kompilierten ausführbaren Datei. Einige kompilieren den Code sowieso nur zur Laufzeit. Und wenn Sie zu Makros sprechen: diejenigen nur ausführen Kompilierung sowieso. Das ist das Schöne daran.OCaml ist die einzige Sprache, die alle von Ihnen gewünschten Funktionen bietet. (Aber ich weiß es nicht für Mixin.) Es hat sogar ein Webframework namens Ocsigen und es ist mehr als eine Hype-Sprache, es ist eine alte Sprache, mit einer echten Benutzerbasis (Unternehmen, Universitäten, Hobbyisten) und jahrelangen Verbesserungen und Tests .
quelle
Auf jeden Fall kann Scala Ihren Anforderungen entsprechen:
Darüber hinaus bietet Scala eine hervorragende Unterstützung für die parallele Programmierung (durch Schauspieler). Die Scala-Community wächst und wird in realen Projekten (Twitter) verwendet. Die Sprache ist ziemlich schwer zu lernen, da sie viele Funktionen und syntaktischen Zucker enthält, aber sobald Sie damit fertig sind, werden Sie sicherlich Spaß daran haben, damit zu programmieren.
quelle