2008-09-19 7 views
20

Ich habe gerade einen meiner Kurse begonnen, da der Unterricht erst vor 2 Wochen begann und wir lernen Scheme jetzt in einem, denn ich nehme später einen Grund an, aber so weit von dem, was er lehrt, ist im Grunde, wie man schreibt in Schema. Während ich hier sitze und versuche, wach zu bleiben, versuche ich nur zu begreifen, warum ich das wissen möchte und warum jemand es benutzt. Was zeichnet es aus? Nächste Woche habe ich vor, ihn zu fragen, was das Ziel ist, hier zu lernen, außer wie man Sachen im Schema schreibt.Vorteile des Lernprogramms?

+11

BTW, ich denke, es ist sehr reich, dass Sie einen Benutzernamen von "Huhn" haben und den Wert von Scheme in Frage stellen! http://www.call-with-current-continuation.org/ –

+5

Es ist fast genau 4 Jahre her, seit Sie angefangen haben, Scheme zu lernen. Ich bin gespannt, was Sie davon halten, dass die Vorteile des Lernens zurückblicken. –

Antwort

32

Es ist eine funktionale Programmiersprache und wird Ihre Erfahrung erweitern.

Auch wenn Sie es nicht in der realen Welt verwenden, heißt das nicht, dass es keinen Wert hat. Es wird dir helfen, Dinge wie Rekursion zu meistern und dich dazu zu bringen, Probleme anders zu denken, als du es normalerweise tun würdest.

Ich Wunsch meine Schule zwang uns, eine funktionale Programmiersprache zu lernen.

1

Mein Problem war, als wir das lernten, lernten wir Klipp genau damit. Ich konnte die zwei Zwangslagen nicht halten, um mein Leben zu retten.

Was ich von ihnen gelernt habe, war, wie man besseren c und Java Code schreibt. Das liegt einfach an dem unterschiedlichen Programmierstil, den ich gelernt habe. Ich habe mehr von dem funktionalen Stil in einige meiner Programmierung angepasst und es hat mir in einigen Fällen geholfen.

Ich würde nie in Schema oder Lisp wieder programmieren wollen, wenn ich nicht musste, aber ich bin froh, dass ich wenigstens etwas in ihnen gemacht habe, nur um die andere Weise zu lernen, zu programmieren.

6

Einige Leute sagen, Schemes größte Stärke sei eine Unterrichtssprache. Während es sehr nützlich ist, funktionale Programmierung zu lernen (es ist eine völlig neue Art zu denken), ist ein anderer Vorteil im Lernschema, dass es auch "rein" ist. Sicher, es kann eine Menge Zeug wie Java nicht, aber das ist auch großartig, es ist eine Sprache, die nur aus Klammern, alphanumerischen Zeichen und einer Handvoll anderer Interpunktionen besteht.

In meinem Einführungskurs werden wir Java beigebracht, und ich sehe viele meiner Freunde, die mit 'statischer void main' kämpfen, obwohl das nicht der Punkt des Programms ist und wie die Profs keine andere Wahl haben als 'handwave' es bis sie fortgeschritten sind. Das sieht man nicht in Schema.

Wenn Sie wirklich wollen lernen, was Schema in einem Stück Kuchen tun, die wirklich schwer ist, in Sprachen wie Java zu implementieren, schlage ich vor, bei dieser Suche: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3

Dies ist wahrscheinlich das beste Buch über Scheme geschrieben .

8

Sprachen wie LISP (und das sehr eng verwandte Schema) sind zu programmieren, was Latein zu Englisch ist.

Sie können in Ihrem normalen Leben nach einem Kurs nie wieder Latein sprechen, aber wenn Sie einfach eine Sprache wie Latein lernen, werden Sie Ihre Englischkenntnisse verbessern.

Das gleiche gilt für Scheme.

6

Ich sehe all diese Leute hier sagen, dass, während sie nie wieder Schema verwenden würden, es dennoch eine lohnende Sprache zu lernen war, weil sie eine bestimmte Art zu denken zwingt. Obwohl dies wahr sein kann, würde ich hoffen, dass Sie Scheme lernen würden, weil Sie es schließlich nützlich finden und nicht einfach als eine Übung im Lernen.

Obwohl es nicht blitzschnell wie eine kompilierte Sprache ist, noch ist es besonders nützlich beim Servieren von Websites oder beim Parsen von Text, ich habe festgestellt, dass Schema (und andere Lispeln durch Erweiterung) keine Parallele hat, wenn es um Einfachheit, Eleganz, und leistungsfähige funktionale Manipulation komplexer Datenstrukturen. Um ehrlich zu sein, denke ich in Scheme. Es ist die Sprache, in der ich Probleme löse. Gib nicht auf oder toleriere einfach Scheme - gib ihm eine Chance und es wird dich nicht enttäuschen.

Übrigens, die beste IDE für Scheme ist DrScheme, und es enthält Spracherweiterungen, um alles zu tun, was Sie in einer anderen Sprache tun können, und wenn Sie etwas finden, können Sie nicht einfach das C FFI verwenden und es schreiben dich selber.

3

Schema wurde von der NASA verwendet, um einige der Mars-Rover zu programmieren. Die Verwendung auf dem Markt ist ziemlich spezifisch, aber wie ich sicher bin, dass Ihre Lehrer Ihnen sagen, werden die Dinge, die Sie in Schema lernen, auch auf die Programmierung im Allgemeinen übertragen.

+0

NASA Neugier! – Timeless

1

Versuchen Sie, sich nicht über Details wie die Klammer und Auto/Cdr zu verfangen. Das meiste, was Sie lernen, übersetzt sich auf die eine oder andere Weise in andere Sprachen. Machen Sie sich keine Gedanken darüber, ob Sie Scheme auf den Markt bringen können oder nicht, wahrscheinlich werden Sie in anderen Klassen andere marktfähige Sprachen lernen. Was Sie hier lernen, ist wichtiger.

Wenn Sie ein Lernschema lernen, können Sie alles darüber lernen, wie Objektsysteme implementiert werden (Hinweis: Ein Objektsystem ist nicht immer ein Typ, an den Methoden und Instanzvariablen gebunden sind ...). Während diese Art von Wissen in 95% Ihrer täglichen Arbeit nicht helfen wird, werden Sie für 5% Ihrer Arbeit auf dieses Wissen angewiesen sein.

Darüber hinaus können Sie über völlig andere Arten der Berechnung lernen, wie Streams/Lazy-Evaluierung oder sogar Logik-Programmierung. Sie könnten auch mehr darüber lernen, wie Computerprogramme im Allgemeinen interpretiert werden; von den Grundlagen, wie Programmcode ausgewertet wird, bis hin zu tieferen Aspekten wie dem Erstellen eines eigenen Interpreters und Compilers. Das Wissen um diese Art von Informationen unterscheidet einen guten Programmierer von einem großartigen Programmierer.

Schema ist nicht wirklich eine funktionale Sprache, es ist mehr method agnostic als das. Vielleicht ist Schema eine ausgezeichnete Sprache, wenn Sie mit verschiedenen Berechnungsmethoden arbeiten möchten. Als Beispiel wurde eine hochparallele funktionale Sprache "Termite" auf Scheme gebaut.

Kurz gesagt, der Punkt im Lernschema ist so, dass Sie die Grundlagen der Programmierung lernen können.

Wenn Sie Hilfe benötigen, um die Programmierung im Schema angenehmer zu machen, haben Sie keine Angst zu fragen. Viele Programmierer hängen sich zum Beispiel an die Klammer, wenn es perfekte Möglichkeiten gibt, mit Schema-Quellcode zu arbeiten, der Klammern etwas wertschätzt, anstatt zu hassen. Als ein Beispiel, Emacs mit Parait-Modus, eine Art Schema Interaktionsmodus und Highlight-Klammer-Modus ist ziemlich beeindruckend.

6

Ich würde vorschlagen, eine offen zu halten beim Lernen. Die meiste Zeit in der Schule verstehen wir nicht vollständig was/warum wir ein bestimmtes Thema lernen. Aber wie ich es im Leben schon millionenfach erlebt habe, erweist es sich als sehr nützlich und zumindest hilft es Ihnen dabei. Scheme, ob Sie es glauben oder nicht, wird Sie zu einem besseren Programmierer machen.

1

Funktionale Sprachen wie Scheme haben eine große Anwendung in Mathematik, Künstlicher Intelligenz, Linguistik und anderen hoch theoretischen Bereichen der Informatik (maschinelles Lernen, Verarbeitung natürlicher Sprache usw.). Dies liegt an der Reinheit funktionaler Programmiersprachen, die keine Nebenwirkungen haben, sowie an ihrer Fähigkeit, leichter in Prozeduren höherer Ordnung zu navigieren.Ein starkes Wissen über funktionale Programmiersprachen ist entscheidend für die Lösung vieler Fragen, die über die Grenzen der Informatik hinausgehen. Als Bonus profitieren Sie von Prozeduren und Rekursionen höherer Ordnung.

+0

Schema ist keine reine funktionale Sprache. – newacct

+0

Richtig, aber wenn Ihre Verwendung von Scheme überwiegend nicht funktioniert, sollten Sie Scheme nicht verwenden. Jeder, der Schema lernt, ohne auch ein solides Verständnis der funktionalen Programmierung zu erlangen, hat Scheme nicht erfolgreich "gelernt". – Reggie