Ich habe mich gefragt, welche einzigartigen Funktionen ich aus Scheme lernen kann, um ein besserer Programmierer zu werden.
Ich habe viel Erfahrung in Mainstream-Sprachen und möchte meinen Horizont erweitern und etwas über funktionale Aspekte lernen, die in anderen Sprachen fehlen. Ich bin mit Verschlüssen aus Javascript, Lambda-Ausdrücken aus C # vertraut und habe mich gefragt, worauf ich mich konzentrieren kann, was in anderen Sprachen fehlt. Abgesehen von der Lisp-Syntax habe ich das Gefühl, was ich bisher in anderen Sprachen gesehen habe.
Was ist einzigartig an Scheme / Lisp, das mir etwas Neues beibringen wird?
functional-programming
lisp
scheme
Mistkerl
quelle
quelle
Antworten:
Das vielleicht wichtigste definierende Merkmal von Lisp ist "Code as Data". Sie werden diese Erfahrung mit keiner anderen Sprache auf die gleiche Weise machen. In C # sind Expressionsbäume das nächste Analogon.
Es ist diese Qualität, die Lisp zu einer hervorragenden Sprache für das Parsen macht. Es ist auch die Qualität, die Paul Graham dazu motiviert hat, über Lisp zu sagen: "Das Ungewöhnliche an Lisp - in der Tat die definierende Qualität von Lisp - ist, dass es in sich selbst geschrieben werden kann." Selbsthosting-Compiler sind zwar nichts Neues, aber keine Sprache macht es so elegant wie Lisp.
Metaprogrammierung (etwas, in dem sich Lisp auch auszeichnet) ist ebenfalls eine lohnende Sache zu lernen.
Die Durchschnittswerte übertreffen von Paul Graham
http://www.paulgraham.com/avg.html
quelle
Ja, es wird Ihnen helfen, rekursiv zu denken. Ich habe es nur ungefähr einen Monat lang in einem Programmiersprachenkurs studiert (Schema) und es hat mir geholfen, meine Denkweise weiterzuentwickeln und Programmierprobleme zu lösen.
Es ist immer wertvoll, andere Programmierparadigmen auszuprobieren. Sie kehren dann erfrischt mit neuen Ideen in die OO-Welt zurück.
Nicht die Syntax, sondern die Argumentation, es ist eine großartige Gehirnübung. Abgesehen von der Rekursion und der interessanten Verwendung von Listen gibt es meiner Meinung nach nicht viel anderes, aber es lohnt sich.
quelle
Fortsetzung :
und versuchen Sie dann, McCarthys Ambiguous Operator zu implementieren :
quelle
Ich kann mir Folgendes vorstellen:
Ich denke auch, dass Lisp-Sprachen großartig sein sollten, um domänenspezifische Sprachen (DSL) zu definieren. Das ist etwas, worüber Sie vielleicht lesen möchten, wenn Sie es noch nicht wissen.
quelle