Wie lerne ich schnell eine neue Sprache, wenn ich mehrere andere kenne? [geschlossen]

14

Eine Art von Frage, die bei Programmierern immer wieder auftaucht, ist, wie man eine bestimmte Sprache lernt, vorausgesetzt man kennt mehrere andere (normalerweise durch viel Erfahrung oder Ausbildung).

In einigen Fällen kann es jedoch erforderlich sein, schnell auf den neuesten Stand zu kommen, um einen Job zu erledigen oder sich persönlich weiterzuentwickeln, oder sich sogar eine neue, heiße Plattform anzusehen.

Welche allgemeinen Strategien haben Sie Ihrer Erfahrung nach angewendet, um schnell eine neue Sprache zu erlernen? Gibt es bestimmte Aspekte einer Sprache, auf die Sie sich konzentrieren möchten, wenn Sie kalt anfangen? Welche Arten von Ressourcen finden Sie in diesem Prozess hilfreich?

user8
quelle
6
Ich würde sagen, mach es einfach. Offizielle Dokumentation und Google sind die einzigen Ressourcen, die Sie benötigen.
Fosco
@Rein Einige der Antworten überschneiden sich, aber das Ziel dieser Frage ist es, eine kanonische Antwort auf das Erlernen einer Sprache (einer beliebigen Sprache) so schnell und effizient wie möglich zu erstellen. Die andere Frage ist eine Mischung aus Buchempfehlungen, ähnlichen Antworten wie hier und allgemeinen Ratschlägen zum Lernen ohne Eile (Lesen kurz vor dem Schlafengehen, Lesen der Sprachspezifikation, Einarbeitung in ein paar andere Wochen) Sprachen).
Ich bin mir nicht sicher, wie nützlich die gestellte Frage ist. Wenn ich mehrere Programmiersprachen kenne, habe ich wahrscheinlich gelernt, wie man eine neue Sprache aufnimmt, und das wahrscheinlich effizient. Wenn nicht, wie kann ich von dieser Frage profitieren?
David Thornley
1
@David Ich kenne ein halbes Dutzend Sprachen, aber ich habe sie in der Regel gelernt, nachdem ich Unterricht genommen oder mehrere Monate gearbeitet habe. Aber wenn ich andererseits für einen neuen Job schnell eine Sprache lernen muss, hilft mir das nicht weiter. Ich bezweifle nicht, dass Leute, die mehrere Sprachen gelernt haben, Wege gefunden haben, sie schnell zu lernen: Ich hoffe, dass die Antworten dies enthalten.
@ Mark Trapp: Danke, das klärt die Dinge für mich.
David Thornley

Antworten:

18

Ich habe den besten Weg gefunden, eine neue Sprache zu lernen, indem ich es tue, nicht nur lese. Wenn ich also eine neue Sprache lernen möchte (oder muss), lese ich im Allgemeinen ein paar Kapitel eines Nachschlagewerks über Syntax, tauche dann aber direkt ein und erstelle etwas, anstatt Buch für Buch zu lesen.

Ich habe festgestellt, dass bei auftretenden Problemen und Fragen Antworten gefunden werden (häufig im Internet). Ich denke auch, dass Training am Arbeitsplatz deshalb so wertvoll ist, weil Sie die meiste Zeit ein Arbeitsprodukt produzieren, auch wenn es eine Entwurfsversion ist - und Sie lernen, indem Sie es tun.

Ich ermutige die Leute, nur darüber nachzudenken, was sie interessiert, und mich direkt mit dem Schreiben von Code oder dem Erstellen von Formularen usw. zu befassen.

Später, nachdem Sie Projekt für Projekt erstellt haben, werden Sie in einem guten Nachschlagewerk über die Details informiert, die Sie an dieser Stelle leichter verstehen.

Außerdem beginnen die Projekte in der Regel kleiner und werden immer komplexer - von der einfachen "Hello World" -App zu einem kleinen und nicht sehr nützlichen Projekt bis hin zu einer vollständigen App. In Bezug auf die Aspekte der Sprache, auf die ich mich konzentriere, kommt es auf die angewandte Verwendung der Sprache an - ich lerne nie, dass jede API oder jedes Framework gestartet wird (wie zum Beispiel bei .NET). Das würde viel zu lange dauern. Ich lerne die Kernsyntax, verzweige mich dann von dort und recherchiere nach Bedarf nach jeder Erweiterung. Mit einer weniger modularen Sprache wie CSS oder XSLT lerne ich einfach zuerst die beliebtesten Konstrukte und füge nach Bedarf weitere hinzu.

2 Umdrehungen
quelle
Gibt es bestimmte Aspekte der Sprache, auf die Sie sich beim Eintauchen konzentrieren, um sicherzustellen, dass Sie sie so effizient wie möglich lernen? Oder machen Sie einfach so lange Stichprobenprojekte, bis es "klickt"?
Nun, die Projekte beginnen in der Regel kleiner und werden immer komplexer - von der einfachen "Hello World" -App zu einem kleinen und nicht sehr nützlichen Projekt bis hin zu einer vollständigen App. In Bezug auf die Aspekte der Sprache, auf die ich mich konzentriere, kommt es auf die angewandte Verwendung der Sprache an - ich lerne nie, dass jede API oder jedes Framework gestartet wird (wie zum Beispiel bei .NET). Das würde viel zu lange dauern. Ich lerne die Kernsyntax, verzweige mich dann von dort und recherchiere nach Bedarf nach jeder Erweiterung. Mit einer weniger modularen Sprache wie CSS oder XSLT lerne ich einfach zuerst die beliebtesten Konstrukte und füge nach Bedarf weitere hinzu.
Jqueryrocks
2
Kannst du das wieder zu deiner Antwort hinzufügen? Das sind großartige Informationen.
5

Das funktioniert bei mir:

  1. Lese darüber.
  2. Benutze es.
  3. GOTO 1.

Zum Lesen versuche ich, "die" Referenz für die Sprache auszuwählen. ZB "Die Programmiersprache C". Es muss auf den Punkt gebracht und Ihr Wissen schrittweise aufgebaut werden. Dann las ich es von vorne bis hinten durch. Ich bin ein schneller Leser und verweile nicht in dieser ersten Lektüre. Dann gehe ich zurück und beziehe mich auf bestimmte Punkte, wenn ich versuche, die Sprache zu benutzen. Ich werde wahrscheinlich mehr Zeit mit Codebeispielen im Buch verbringen.

Das erste, was Sie brauchen, ist die Syntax. Ohne zu wissen, ob es sich um BEGIN oder {oder Blockeinrückung handelt oder wie Sie Variablen deklarieren, können Sie nichts schreiben. Der Autor wird in der Regel die wichtigsten Teile zuerst vorstellen oder ein Tutorial haben, das die grundlegende Verwendung der Sprache abdeckt. Es ist schwierig, allgemeinere Richtlinien zu geben, da einige Sprachen sehr unterschiedlich sind als andere. Das nächste ist, ein allgemeines Gefühl für die Sprache zu bekommen, was ist die allgemeine Philosophie, wie Sie mit dem Lösen von Problemen im Kontext der Sprache umgehen.

Eine andere Sache zu beachten ist das Konzept "benutze es oder verliere es". Wenn Sie eine Sprache längere Zeit nicht verwendet haben, wird es einige Zeit dauern, bis Sie wieder in Fahrt sind (obwohl diese Zeit mit zunehmender Erfahrung kürzer wird). Sobald Sie die Syntax der Sprache kennen, müssen Sie sich mit Bibliotheken usw. vertraut machen.

Es ist also ein iterativer Prozess. Bei jeder Iteration tiefer gehen. Niemals endend. Auch nach 20 Jahren Sprachgebrauch gibt es noch einiges zu lernen.

Guy Sirton
quelle
Können Sie näher erläutern, was Sie unter "darüber lesen" verstehen? Worauf konzentrieren Sie sich, wenn Sie anfangen, über eine neue Sprache zu lesen, die Sie lernen möchten?
@Mark - siehe meine Änderungen ... Ist es das, wonach Sie suchen?
Guy Sirton
5

Schnapp dir ein reales Projekt

So wie ich es sehe, ist es einfacher , etwas zu lernen , wenn Sie tatsächlich brauchen , es zu lernen. Für mich war es mit Javascript, wo ich es riskierte, indem ich ein großes Projekt mit einem Zeitrahmen von zwei Monaten akzeptierte. Ich war jeden Tag und jede Nacht dort und habe versucht, Ergebnisse für dieses freiberufliche Projekt zu erzielen. Nach anderthalb Monaten war das Projekt abgeschlossen.

Ich habe dort auch versehentlich etwas SQL gelernt, dann habe ich es auf dem College beendet und raten Sie mal, ich hatte auch eine leichtere Zeit.

Wenn Sie es nicht riskieren wollen ...

Der eigentliche Schlüssel zum vorherigen Punkt ist die Lösung von Problemen in der realen Welt ... aber ich arbeite besser unter Stress (Ich mag Stress, ich denke, es macht Spaß und ich könnte beschädigt werden, also ...). Wenn Sie dies nicht tun, suchen Sie einfach ein Open Source-Projekt, das Sie interessiert und die Sprache verwendet, die Sie lernen möchten, und versuchen Sie, einen Beitrag zu leisten. Wenn Ihr Code nicht funktioniert, erhalten Sie je nach Community möglicherweise Feedback.

Die Chancen stehen gut, dass Sie allein durch das Studium des Codes Fortschritte erzielen.

Holen Sie sich alle Informationen, die Sie können

Dazu gehören mehrere Bücher, offizielle Dokumentationen und alle Informationen, die Sie erhalten können. Auf diese Weise wissen Sie, wie Sie dasselbe auf unterschiedliche Weise tun können.

Andere Communitys - wie Foren, Mailinglisten und hier - gelten ebenfalls als Referenz.

dukeofgaming
quelle
Ich würde hinzufügen "schnappen Sie sich ein hartes Problem der realen Welt". Suchen Sie sich etwas aus, bei dem Sie am ersten Tag tief in den Nacken greifen müssen. Mein erster Tag mit C # war, herauszufinden, wie man DLLs dynamisch lädt, Reflektion verwendet, um die Klassen zu erhalten, und daraus eine Liste von Mehods. Ich lernte eine Tonne des Tages und hatte noch nie zuvor eine .net-Technologie verwendet.
Bryan Oakley
2

Es gibt viele Möglichkeiten, eine neue Sprache zu lernen, aber nicht alle sind gleich effizient. Ich fand diese drei Richtlinien am besten für mich:

Machen Sie eine Karte von dem, was Sie nicht wissen

Überlegen Sie sich im Voraus, was Sie lernen müssen. Suchen Sie nach einer Übersicht oder einer allgemeinen Dokumentationsquelle, die die Sprache in abstrakten Begriffen beschreibt. Auf diese Weise erhalten Sie normalerweise einen ziemlich vollständigen Überblick über die Sprache. Verwenden Sie diese Übersicht, um Bereiche hervorzuheben, die Sie nicht kennen, die jedoch als Kern der Sprache gelten. Ist Schwanzrekursion ein Konzept, das Sie lernen müssen, um die Sprache wirklich zu beherrschen? Vielleicht müssen Sie Ihre Regex viel besser kennen, da sich die Sprache auf die Manipulation von Zeichenfolgen spezialisiert hat. Oder vielleicht müssen Sie Ihre Algebra wirklich anwenden, da viele der Konzepte in der Sprachabbildung direkt von algebraischen Konzepten abgeleitet sind.

Holen Sie sich gute Ressourcen, um zu lernen, was Sie nicht wissen

Vielleicht möchten Sie eine gute Referenz zu algebraischen Formeln erhalten, oder Sie möchten einfach " Javascript, die guten Teile " kaufen . Für einige Lernkurven wurde diese Arbeit bereits teilweise durchgeführt. Wenn Sie versuchen, C # von einem Java-Hintergrund aus zu lernen (und umgekehrt), gibt es eine Vielzahl von Blog-Posts und Websites, die die Unterschiede aufzeigen und Verweise / Ressourcen enthalten, die Sie beim Lernen unterstützen.

Stellen Sie sicher, dass die Ressourcen nicht nur Referenzen sind - stellen Sie sicher, dass sie Tests oder Übungen enthalten, anhand derer Sie beurteilen können, ob Sie ein Konzept richtig gelernt haben. Über Schwanzrekursionen zu lesen, ist eine Sache, und es ist eine andere, herauszufinden, wie sie in der Sprache Ihrer Wahl implementiert sind.

Baue etwas Reales

Es ist fast unmöglich, wirklich zu lernen, ohne ein konkretes Ziel vor Augen zu haben. Dies gilt insbesondere für angewandte Kunst - und genau das ist der Gebrauch von Programmiersprachen. Stellen Sie sicher, dass Sie ein echtes Ziel haben - etwas aufzubauen ist normalerweise die beste Wahl.

Blaubeerfelder
quelle
1

Identifizieren der Programmierparadigmen

Normalerweise identifiziere ich die wichtigsten Paradigmen für die Sprache. Ich betrachte Probleme je nach Paradigma unterschiedlich.

Identifizieren Sie die Redewendungen

Alle Sprachen haben Redewendungen. Redewendungen variieren in Größe und Umfang von der Strukturierung des Codes bis hin zu bestimmten Codefragmenten. Sie sollten immer versuchen, eine Sprache zu verwenden.

Code schreiben

Normalerweise schreibe ich einen Funktionscode. Alles von einem Primes-Sieb bis hin zu Spielzeug-Web-Apps. Die Probleme, die ich wähle, hängen normalerweise davon ab, wofür ich die Sprache verwenden möchte.

dietbuddha
quelle
1

Einfach eintauchen !!

In Anbetracht dessen, dass Sie bereits wissen, wie man mehrere Sprachen programmiert und beherrscht, würde ich (gleichzeitig) sagen:

  • Finde ein Lieblingsprojekt, das dich antreibt,
  • und nebenbei noch ein paar Rätsel

Lernen, üben, bewerben (bis zufrieden)

Die klassischen 99 Prolog-Rätsel (hier die 99 Rätsel in Scala ) oder das Projekt Euler sind normalerweise gute Orte, um nach kleinen Rätseln zu suchen, die neu implementiert werden können. Oder lauern Sie in StackOverflow herum und schreiben Sie einige nette Antworten in Ihrer Zielsprache neu. Versuchen Sie dabei nicht, Zeilen für Zeilen neu zu schreiben, sondern etwas, das die Essenz Ihrer neuen Sprache einfängt.

Lernen Sie mit den Puzzlern, lesen Sie nebenbei Blogs und Essays, um ein tieferes Verständnis für die Sprache und das Werkzeug und die heiligen Kriege Ihrer neuen Community zu erlangen, und schreiben Sie Ihr Testprojekt, um Ihr neu gewonnenes Wissen und Ihre Fähigkeiten anzuwenden Sehen Sie, auf welche Unebenheiten Sie stoßen.

Apropos Gemeinschaft ...

Teile und mache dich frei. (Nicht zu viel.)

Vielleicht möchten Sie auch eine lokale Benutzergruppe besuchen, Freunde zum Codieren finden (um konstruktive Kritik zu üben und sich nicht an eine bestimmte Denkweise zu binden) und diesen beängstigenden IRC-Kanal oder diese Mailing-Liste abonnieren, in der sie seltsame Worte über AST verlieren Bäume und schreibe philosophische Tiraden darüber, wie Monaden keine Monaden sind und wie du nicht zurückkehren kannst, wenn du einmal ein seltsames Mädchen getroffen hast .

Haylem
quelle
0

Ich weiß, dass das lahm klingt, aber fange an, etwas zu programmieren, auch wenn es albern ist, und benutze viele Google für Dinge, die diesem Muster folgen:

Wie mache ich [etwas aus einer Sprache] in [einer anderen Sprache]

Wenn die Wörter gebräuchlich sind, zitieren Sie Literale.

Es ist eine häufig genug gestellte Frage, dass ich so gut wie keine Antwort mehr finde, wenn ich eine Seite finde, die erklärt, warum dies nicht möglich ist.

Rechnung
quelle
0

Als konkreter Vorschlag für die einfache Verwendung der Sprache:

Fehler beheben

  1. Finden Sie ein interessantes Open-Source-Projekt in der Zielsprache, vorzugsweise eines mit einem öffentlichen Bug-Tracker, einer moderat aktiven Entwicklung und einer anständigen Testsuite.
  2. Wählen Sie einen Fehler aus, der behoben werden soll, vorzugsweise einen, der Sie stört, wenn Sie das Programm tatsächlich verwenden.
  3. Finden Sie heraus, warum das Programm das Buggy-Verhalten aufweist.
  4. Schreiben Sie Tests und Code, um das Problem zu beheben.
  5. Senden Sie einen Patch Upstream.
  6. Überarbeiten Sie Ihren Patch, bis die vorgelagerten Entwickler zufrieden sind.
  7. Gehen Sie zurück zu Schritt 1 oder 2.

Dieser Prozess ist in der Regel erfüllender als das Schreiben eines weiteren Spielzeugprogramms, aber viel einfacher, als ein eigenes vollständiges Projekt von Grund auf neu zu starten. Sie werden mit einigen der Sprachausdrücke in ihrem natürlichen Kontext konfrontiert und (mit etwas Glück) mit einer Vorstellung davon, wie guter Code aussieht.

Auf der anderen Seite kann es auch sehr frustrierend sein, besonders wenn Sie einen fiesen Bug auswählen oder wenn die Entwickler Ihren Patch ablehnen, ohne richtig zu erklären, warum.

eswald
quelle