Ich höre jeden Tag von C, C ++, Java, wenn Leute anfangen, über Informatik zu sprechen, aber in meinem ersten Informatikkurs werden wir gebeten, in Schema (DrRacket) zu schreiben.
Warum ist das so?
Welche Unterschiede ergeben sich für mein zukünftiges Programmierverständnis?
UPDATE: Ich habe mein erstes Semester beendet, aber mit Scheme nicht ganz fertig. In meinem zweiten Semester (das jetzt ist) sind wir in die C-Programmierung eingestiegen. Anfangs war es frustriert, Zeiger zu lernen, aber jetzt geht es mir viel besser.
Es gibt nicht viel mehr zu sagen. Ich versuche mir Java (oder C ++?) Für den fehlenden OOP-Teil beizubringen. Bisher mag ich funktionale Programmierung noch am liebsten. Lambda ist einfach faszinierend. :)
Antworten:
Klingt nach einer tollen Schule! Lisp-Dialekte folgen dem mathematischen Paradigma der Algorithmen viel genauer. Sie zwingen Programmierer, Rekursion und den funktionalen Stil zu lernen. Dies ist eine ausgezeichnete Erfahrung. Ihre Schule gehört zum MIT, das immer noch Abelson und Sussman für das erforderliche CS 6.001 verwendet.
Möglicherweise finden Sie diesen Artikel ermutigend und hilfreich für das Verständnis des Problems.
quelle
Niemand erwartet, dass Sie als Neuling eine Sprache beherrschen , um einen richtigen Job zu finden. Warum also nicht mit einer beginnen, die leicht zu erlernen ist? Wenn man erwartet, dass Anfänger das Programmieren lernen, indem sie eine professionelle Sprache in einer professionellen IDE verwenden, ist das so, als würde man einem Medizinstudenten im ersten Jahr ein Skalpell geben und sie an lebenden Körpern arbeiten lassen.
Mach dir keine Sorgen; Du lernst schließlich Java / C / C ++ und beginnst wahrscheinlich dein zweites Jahr. Wenn Sie jetzt mit dem Erlernen von Java 6 begonnen haben, ist Java 8 zum Zeitpunkt Ihres Abschlusses noch nicht verfügbar. Oder es wurde durch Python ersetzt. Oder eine andere Sprache, die noch nicht erfunden wurde, aber die Branche im Sturm erobert. Es ist besser, das Erlernen der "populären" Dinge so lange wie möglich zu unterbrechen, damit es nicht überholt ist, wenn Sie in der Belegschaft arbeiten.
Schema / Racket hilft Ihnen, sich auf die wichtigen Konzepte zu konzentrieren: Algorithmusdesign, Datenstrukturen und Informationsmanipulation. Wissen Sie, das Zeug, das allen Sprachen gemeinsam ist.
quelle
Herzlichen Glückwunsch, Sie werden jetzt in der Computerwelt zum Äquivalent eines Veganers und in zwei Jahren werden Sie keine Diskussion mehr führen können, ohne die Leute über die höhere moralische Grundlage zu informieren, auf der Sie stehen. ;)
Wie auch immer, Sie haben eine sehr gute Schule gefunden. Schulen, die nicht von der Industrie ausgepeitscht werden, sind gut.
Wie jemand anderes sagte, bringen sie Ihnen die Wissenschaft bei, von der Sie das Handwerk ableiten .
Viele schlechte Code-Monkey-Farmen bringen dir das Handwerk bei, und dann kannst du vielleicht die Wissenschaft daraus ableiten, aber es ist nicht garantiert. (und Sie können mit ziemlich seltsamen Missverständnissen darüber enden)
Wie auch immer, als geehrtes Mitglied der funktionalen Masse werden Sie sich immer missverstanden und unterschätzt fühlen, wenn Sie von dort verschwinden .
Zugegeben, der durchschnittliche Computer-Wiz ist nichts Neues.
Sie sind jetzt für ein hohes Risiko von:
Sie werden Open Source wahrscheinlich auch mögen, aber Sie werden nie genug Mitarbeiter für Ihre funktionalen Projekte finden.
quelle
Das ist ein bisschen wie zu fragen, wie das Lesen von Shakespeare Ihnen hilft, Hausarbeiten zu schreiben. Das Programmieren (in jeder Sprache) ist nur ein Mittel, um Ihre Ideen in ausführbarer Form auszudrücken. Die Informatik liefert die konzeptionellen Bausteine, mit denen Sie etwas Interessantes sagen können. Die Schemasyntax ist relativ einfach, sodass Sie schnell und ohne viele Compilerfehler, Standardbibliotheken usw. zu interessanten Ideen gelangen.
Pass gut auf im Unterricht - in diesem Semester wirst du viele interessante Dinge lernen.
quelle
Es sieht so aus, als wären Sie ein Neuling in der Programmierung und hätten keinerlei Vorkenntnisse. Hier sind einige Erläuterungen:
Warum Schema und nicht C / C ++ / Java ...?
Beim Erlernen einer Programmiersprache (eine Analogie könnte zur englischen Sprache hergestellt werden) lernen Sie die Syntax, die Sie befolgen müssen, damit Ihr Code grammatisch korrekt ist. Eine Sprache bringt Ihnen jedoch nicht die Logik bei, die hinter dem Lösen von Problemen steckt. Um diese Logik zu erlernen, lernen Sie verschiedene Programmierparadigmen .
Jede Sprache kann ein oder mehrere Paradigmen (mehr oder weniger genau) implementieren. Ein Paradigma ist eine Möglichkeit, Ihre Logik zu strukturieren, und das von Schema implementierte Paradigma heißt Functional Programming (FP).
Die eigentliche Frage, die Sie stellen, lautet also: Warum FP?
Wie Sie bereits erwähnt haben, sind C, C ++ und Java (die FP nicht implementieren) weitaus beliebter. Tatsächlich ist FP (und aus verschiedenen Gründen hat jeder seine Meinung) in der Branche nicht sehr beliebt.
Auf der anderen Seite wird FP in akademischen Kreisen sehr geschätzt. Es liegt näher am üblichen mathematischen Ansatz, konzentriert sich mehr auf die Beweisbarkeit und Optimierung von Algorithmen, und die meisten Leute stimmen darin überein, dass es Sie zu einem besseren Programmierer im Allgemeinen machen würde.
Es ist vergleichbar mit Schulen, die Latein unterrichten, um englische Literatur zu studieren.
quelle
Sie sollen lernen, wie programmiert wird und was die Grundkonzepte sind. Die alltäglichen Sprachen, die in den meisten Unternehmen verwendet werden, eignen sich möglicherweise gut für die Erstellung der heute benötigten Software, sind jedoch nicht unbedingt dazu geeignet , Ihnen die Grundlagen der Programmierung beizubringen.
Sobald Sie die Konzepte verstanden haben, können Sie sie leicht auf andere Sprachen anwenden.
quelle
Wenn Sie mit DrRacket lernen, verwenden Sie wahrscheinlich auch das Curriculum für das Entwerfen von Programmen.
Hier ist, was einer der (zugegebenermaßen voreingenommenen) Autoren von HtDP über die Art und Weise sagt, wie das Lehrsystem die Studenten an der Northeastern University auf das kooperative Bildungsprogramm vorbereitet hat: Studenten wechseln Semester des akademischen Studiums mit Semestern des Vollzeitstudiums Beschäftigung).
Bearbeiten: Für diejenigen, die sich sehr für das Rationale des Lehrplans interessieren, hier die Erklärung des Hauptarchitekten: http://www.youtube.com/watch?v=m3be1PHW5X0
quelle
Meine Schule begann auch mit Scheme. Ein Grund, der erwähnt wurde, war, dass dies dazu beitrug, die Wettbewerbsbedingungen zu verbessern. Die meisten Comp Sci des ersten Jahres sind möglicherweise einigen oder sehr viel häufigeren Sprachen ausgesetzt. Es war weniger wahrscheinlich, dass jemand viel über das Schema wusste.
quelle
Da Lisp (Schema ist ein Dialekt) die Grande Dame der funktionalen Sprachen ist (denken Sie an F #, Groovy, Clojure, Haskell usw.), hinterlässt dieses Training auch keine kommerziellen Nachteile, da dies das heißeste ist Thema auf dem Entwicklungsblock jetzt.
quelle
Das Schema hilft Ihnen dabei, gut zu werden und den richtigen Umgang mit funktionalen Programmiersprachen zu finden. Scala zum Beispiel ist ein Functional / OO-Hybrid, der ziemlich brillant, wenn auch etwas dicht ist. Sprachen wie diese markieren jedoch die Zukunft - hoffentlich.
Lisp-ähnliche Sprachen haben jedoch eine Reinheit und Einfachheit in ihrem Design, die sie für den Unterricht ein bisschen einfacher machen. Der schöne Vorteil ist jedoch, dass Sie später viel einfacher etwas wie Scala lernen können.
quelle
Wir haben das Programm in der ersten und ersten Hälfte des zweiten Semesters abgeschlossen. Erst als wir uns tatsächlich an die Arbeit mit C machten, begann ich, die Kraft von Scheme zu erkennen.
In Bezug auf Ihre Frage, warum Schema gewählt wurde: Die Antwort ist, dass es eine der einfachsten Sprachen ist und es Ihnen ermöglicht, eine Menge zu tun (insbesondere, wenn wir später anfangen, mit faulen Listen zu spielen). Außerdem :
quelle