In Kapitel eins von "The Pragmatic Programmer" ist das erste Lernziel:
Lerne jedes Jahr mindestens eine neue Sprache. Verschiedene Sprachen lösen die gleichen Probleme auf unterschiedliche Weise. Indem Sie verschiedene Ansätze kennenlernen, können Sie Ihr Denken erweitern und vermeiden, dass der Betroffene ins Stocken gerät. [...]
Um dies im Laufe einer Karriere zu erreichen, wird die Liste der Sprachen wahrscheinlich recht lang (insbesondere, wenn Sie nicht in das Management "vorstoßen" möchten). Die Ausbildung eines Programmierers (oder in welcher Form auch immer) wird Ihnen den Einstieg in einen Kern kommerziell nützlicher Sprachen erleichtern (die übliche Liste aus Stellenausschreibungen: C, C ++, Ruby, Python, JavaScript, C #, Java, VB, ...). .). Darüber hinaus hat ein formelles oder informelles Lernprogramm wahrscheinlich funktionale Ansätze abgedeckt (über etwas wie Haskell, LISP oder eine von ML abgeleitete Sprache).
Aber sobald ein vernünftiger Teil dieser Liste gelernt ist - was kommt als nächstes und warum ?
quelle
Antworten:
Machen Sie es interessant und schreiben Sie jedes Jahr einen Interpreter oder Compiler für Ihre eigene Programmiersprache, der eine Nische ausfüllt, für die Sie noch nie eine Programmiersprache verwendet haben. Schreiben Sie jedes Jahr Ihren nächsten Compiler / Interpreter in der Sprache, die Sie im Vorjahr geschrieben haben.
quelle
Sie sollten die "marginale Relevanz" maximieren, dh sich immer in neue Bereiche wagen, in denen Sie noch nicht stark sind. Variieren Sie sowohl die Programmiersprachen als auch die Konzepte . Wenn Sie keine objektorientierte Sprache kennen, probieren Sie Java und ein hochabstraktives Framework wie Hibernate aus. Schreiben Sie dann einige Systemverwaltungsaufgaben in einer Skriptsprache wie Python oder Perl. Erlernen Sie dann einige grundlegende Kenntnisse in C oder C ++ und schreiben Sie leistungsstarken Multithread-Servercode. Wenn Sie sich mit funktionaler Programmierung nicht auskennen, probieren Sie Haskell mit einigen graphentheoretischen Problemen aus, z. B. mit der Lösung von Peg Solitaire usw. Sie können dies sehr gut tun, damit alles, was Sie lernen, einen unmittelbaren Marktwert hat, bis Sie auf gelehrte oder spezielle Dinge wie z als Objektfähigkeitssicherheit ,Prolog oder VHDL .
Übrigens gute Übung! Auf diese Weise lernen Sie, sprachunabhängig zu denken und Probleme zu erkennen, anstatt sich auf zu wenige plattformspezifische Techniken zu verlassen. Wenn Sie zum Beispiel die Ähnlichkeiten und Unterschiede beim Versand virtueller Methoden zwischen C ++ und Python beherrschen, werden Sie es für jede andere Sprache sofort "verstehen".
quelle
Eine Sprache, die die Art und Weise, wie Sie über Programmierung denken, nicht beeinflusst, ist keine Kenntnis wert. - Alan Perlis
Wie einige der anderen Antworten bereits angesprochen haben, wenn Sie eine neue Sprache pro Jahr lernen, warum? ist es, Ihre Fähigkeiten als Programmierer zu erweitern. Das wie? Es geht darum, Sprachen zu lernen, deren Paradigmen sich von denen der Sprachen unterscheiden, die Sie bereits kennen, und eine Bestandsaufnahme der Paradigmen, die Sie bereits kennen, entscheidet darüber, welche Sprache Sie als Nächstes lernen müssen.
Was sind diese Paradigmen? Das erweiterte Buch Konzepte, Techniken und Modelle der Computerprogrammierung bietet einen hervorragenden Überblick mit einer grafischen Karte .
Wenn Sie also nur C-ähnliche imperative Sprachen beherrschen, ist das Erlernen von Scheme / Lisp äußerst nützlich. Wenn Sie bereits zwingende und funktionale Sprachen beherrschen, ist das Erlernen von Prolog hilfreich.
Ein aktuelles Buch, das versucht, mehrere Sprachen und Paradigmen zu lehren, ist Seven Languages in Seven Weeks . Natürlich werden Sie nach einer Woche nicht in jeder Sprache fließend sein, aber es scheint eine ansprechbare, praxisorientierte Multi-Paradigma-Perspektive zu bieten.
Wenn Sie ein anderes Paradigma entwickeln, ist es wirklich ein Zen-Moment. Beim Übergang von der imperativen zur funktionalen Programmierung habe ich die Computerwelt in einem völlig neuen Licht gesehen. Viel Spaß beim Lernen!
quelle
C - als das Wesentliche, "zugrunde liegt alles", Systemprogrammiersprache
Lisp (Schema) - die seltsame, aber unglaublich mächtige Ursprache, die große Hacker für cool halten
Smalltalk - denn so sollte OO sein
Erlang (oder eine andere Darstellersprache), um Darsteller zu verstehen
Haskell - um Monaden zu verstehen
Javascript - weil es überall und für die Skripterstellung des Browsers unerlässlich ist
Eine von Python / Ruby / Perl (aber es ist wirklich egal, welche) - Sie wissen also, wie sich eine beliebte, moderne Hochsprache mit guter Bibliotheksunterstützung anfühlt
SQL - so können Sie mit relationalen Datenbanken sprechen
Prolog - weil Sie immer noch umhauen müssen
quelle
quelle
1) Prolog: Es ist völlig anders als alle anderen imperativen Sprachen, die Sie bisher verwendet haben, und es wird die Art und Weise verändern, wie Sie über Probleme denken
2) Lisp: Ohne es könntest du genauso gut Vi benutzen
3) Erlang: Auch hier ist es völlig anders, und es scheint ziemlich in Mode zu sein.
4) Etwas aus dem Turing Tarpit (zB Brainfuck) und wahrscheinlich einen Compiler oder Interpreter dafür schreiben: Ich kann mir keinen Grund dafür vorstellen, aber es fühlt sich nach einer guten Idee an.
quelle
Neben denen, die Sie aufgelistet haben,
Haskell, F #, Clojure, OCaml, Lua, Go, D, Erlang, Ziel C.
quelle
Ich bin zwar der Meinung, dass es gut ist, neue Sprachen zu lernen (und das ist auch in einer langen Karriere unerlässlich), aber ich denke, dass eine Sprache pro Jahr die ersten fünf bis zehn Jahre übersteigt. Was ich lieber sehen würde, ist jemand mit dieser Erfahrung, der neue Dinge über die Sprachen lernt, die er bereits kennt. Irgendwann braucht man Tiefe und Wissen. Sie können also ein If-Konstrukt in 12 Sprachen schreiben, großer Knaller. Ich würde lieber jemanden sehen, der sich wirklich mit etwas auskennt und Experte in mindestens einer Sache wird. Und dann werden die nächsten Jahre ein Experte für etwas anderes. Über 30 Jahre Karriere möchte ich, dass jemand ein tiefes Wissen hat und nicht nur die Grundlagen in vielen Dingen.
quelle