Um ehrlich zu sein, habe ich das schon zu oft erlebt, wenn ich von einer Programmiersprache zu einer anderen wechselte. Als ich das erste Mal von JavaScript zu Python wechselte, brauchte ich drei Monate, um mich daran zu gewöhnen, und ich könnte ein Buch über die Schlaglöcher schreiben, in die ich getreten bin. Später fand ich langsam heraus, dass es bei der Sprachumstellung tatsächlich eine Regel gibt, die man befolgen muss, und dass der Schlüssel darin liegt, den "denkenden Schalter" zu finden. Zum Beispiel ist die Listenableitung in Python im Wesentlichen eine Kombination aus map und filter in JavaScript! Wenn man diese Art der Entsprechung gefunden hat, verdoppelt sich die Lerneffizienz direkt.

Verstehen Sie die Designphilosophie, bevor Sie an den syntaktischen Details knabbern
Viele Menschen lernen eine neue Sprache, indem sie die Syntax auswendig lernen, was kein besonders kluger Ansatz ist. Ich habe einen Freund, der von Java auf Go umgestiegen ist und sich schwer tut, Go wie Java zu schreiben, was dazu führt, dass der Code auf vier verschiedene Arten geschrieben wird. Die Design-Philosophie der Sprache Go ist "Einfachheit ist Schönheit", sie hat nicht das komplexe Vererbungssystem von Java, sondern betont, dass Kombination besser ist als Vererbung. Wenn Sie das Kernkonzept verstehen, werden Sie auch verstehen, warum die Schnittstelle von Go implizit implementiert ist, was ein völlig anderes Designdenken widerspiegelt.
Ein weiteres interessantes Beispiel: Als ich von Python zu Rust wechselte, fand ich das Ownership-System von Rust anfangs geradezu lächerlich. Aber als ich erkannte, dass dieser Mechanismus im Wesentlichen Probleme der Speichersicherheit zur Kompilierzeit löst, anstatt sich auf die Müllsammlung zur Laufzeit zu verlassen, wie es bei Python der Fall ist, wurde es plötzlich klar. Dieses Umdenken ist wichtiger als das Auswendiglernen von hundert Syntaxregeln.
Dieser Tipp zur Erstellung einer "Concept-Mapping-Tabelle" ist sehr nützlich!
Ich zeichne jetzt für jede neue Sprache, die ich lerne, eine Vergleichstabelle in mein Notizbuch. Wenn Sie beispielsweise JavaScript-Konzepte auf der linken Seite und Python-Implementierungen auf der rechten Seite schreiben, entspricht Promise async/await und arrow function Lambda, kann diese Art von intuitivem Vergleich Ihnen helfen, schnell Wissensverbindungen herzustellen. Einige Daten zeigen, dass Lernende, die Concept Mapping verwenden, die Geschwindigkeit der Beherrschung einer neuen Sprache um etwa 40% erhöhen können.
Beachten Sie jedoch, dass diese Zuordnung nicht absolut ist. Obwohl beispielsweise Go's goroutine und JavaScript's async/await beide Gleichzeitigkeit handhaben, sind die zugrunde liegenden Mechanismen völlig unterschiedlich. Hier ist ein tieferes Verständnis der Unterschiede erforderlich und nicht einfach ein gegenseitiger Austausch.
Beginnen Sie mit echten Projekten, nicht mit Hello World!
Ich habe zu viele Leute gesehen, die im Beispielcode eines Tutorials stecken geblieben sind und nicht mehr herauskamen. Am besten ist es, ein Projekt zu finden, mit dem Sie vertraut sind, und es in einer neuen Sprache neu zu schreiben. Schreiben Sie zum Beispiel das Kommandozeilentool, das Sie zuvor in JavaScript geschrieben haben, in Rust um. Dabei werden Sie feststellen, dass das Pattern-Matching von Rust so elegant mit Kommandozeilenargumenten umgehen kann, was in JavaScript nur mit einer Menge if-else möglich ist.
Kürzlich hat mich ein Fall beeindruckt, in dem ein Front-End-Entwickler seine Microservices in Go umgeschrieben hat und die Node.js-Version der Schnittstelle, die 200 ms benötigte, in der Go-Version nur 50 ms brauchte. Diese Art von echter Leistungsverbesserung ist motivierender als jedes Tutorial, um weiter zu lernen.
Letztendlich erfordert der Sprachwandel Geduld und den richtigen Ansatz. Finden Sie den Punkt der "Erleuchtung" und der Rest wird sich von selbst ergeben. Welche neue Sprache lernen Sie gerade? Haben Sie irgendwelche besonderen Probleme?
评论列表 (15条):
加载更多评论 Laden...