Ich bin ein relativ junger Programmierer. Ich bin 23 und programmiere seit ungefähr 5 Jahren professionell.
Wie die meisten Programmierer habe ich mit C angefangen, zum Spaß x86-Assembly gelernt und dann C ++ gefunden, was sich als meine größte Leidenschaft in der Programmierwelt herausstellte. Das Programmieren mit C und C ++ zwingt Sie zum Erlernen plattformspezifischer APIs, Bibliotheken und Frameworks, die alle ein ständiges Studium und Experimentieren erfordern. Nach einiger Zeit musste ich auf Java und C # umsteigen, da die Nachfrage in meiner Region hauptsächlich nach diesen Sprachen besteht. Mit diesen Sprachen trat ich in die Welt der Webentwicklung ein und musste dann Javascript lernen. Die Entwicklung für das .NET Framework war anfangs aufregend, aber ich hatte ständig das Gefühl, von Microsoft gefesselt zu werden (und natürlich trieb mich das .NET Framework von Linux weg). Für die Desktop-Entwicklung konnte ich mit C ++ und Qt so ziemlich alles machen, was ich mit .NET gemacht habe, aber für die Web-Entwicklung musste ich nach einer Alternative suchen. Schnell fand ich Django und lernte dann Python, damit ich Django verwenden konnte. Heutzutage lerne ich iOS-Entwicklung mit Objective-C.
Bisher war es ziemlich einfach, all diese Sprachen zu lernen (C ++ hat mich gut geschult), aber ich mache mir Sorgen, dass ich eines Tages nicht in der Lage sein werde, sie alle im Auge zu behalten. Nur um klarzustellen. Die einzigen Sprachen, die ich lernte, waren C # und Java. Alle anderen habe ich zum Spaß gelernt, weil ich es liebe zu programmieren und neue Dinge zu lernen. Ich mag es auch, meine Fähigkeiten in der Desktop-, Web- und mobilen Entwicklung zu verbessern.
Meine Frage ist: Wie behalten Sie mehrere Programmiersprachen im Auge? (Ich meine, behalten Sie Änderungen an diesen Sprachen im Auge und behalten Sie Ihre Fähigkeiten im Auge) und: Gibt es so etwas wie genügend Programmiersprachen?
quelle
Antworten:
Ich persönlich halte es für Zeitverschwendung, den Überblick über Sprachen zu behalten. Es ist immer gut, neue populäre Sprachen zu lernen, aber sobald Sie eine populäre und gut etablierte Sprache wie C ++, Python usw. im Griff haben, sollten Sie sich keine Sorgen mehr machen. Wenn Sie ein guter Programmierer sind, besteht die Sprache nur aus einer Reihe von Schlüsselwörtern.
Es gibt nur so viele wesentliche Paradigmen da draußen; Vielleicht können alte Hunde keine neuen Tricks lernen, aber es gibt wirklich nicht viele neue Tricks. Wenn Sie befürchten, dass Ihre funktionale / objektorientierte / ereignisgesteuerte / welche Sprache auch immer nicht von Dauer ist, lernen Sie ein anderes Paradigma. Aber ärgere dich nicht zu sehr über die genaue Sprachwahl.
Und was ist, wenn Sie ein oder zwei Stichwörter vergessen, nachdem Sie eine Weile nicht in einer Sprache gesprochen haben? Deshalb haben wir Google.
quelle
Lassen Sie mich das nach 30 Jahren sagen.
Ja, Sie verlieren den Überblick.
So?
Deshalb schreiben sie Referenzhandbücher.
quelle
Der wahre Vorteil des Lernens mehrerer Sprachen liegt in den unterschiedlichen Paradigmen und Modellen und Denkweisen, die sie Ihnen gewähren.
Ihre Kenntnisse von Java und seiner Einzelvererbung sollten Ihre Sicht auf C ++ und seine Mehrfachvererbung geprägt haben. Ihre Kenntnisse von Java und dessen GC sollten Ihre Sicht auf C ++ und dessen benutzerverwalteten Speicher geprägt haben. Ihre Kenntnisse von C ++ und seinen Vorlagen sollten Ihre Sicht auf Java und seine Generika geprägt haben. Alle diese Beziehungen funktionieren natürlich in beide Richtungen.
Wenn Sie noch nie in einer funktionalen Sprache geschrieben haben, werden Sie nicht
<algorithm>
verstehen, was die Bibliothek von C ++ versucht und was fehlt, wenn Sie keine erstklassigen Bürgerfunktionen haben (zumindest vor C ++ 11). Wenn Sie noch nie in einer dynamisch getippten Sprache geschrieben haben, werden Sie die Grenzen dessen, was statisches Tippen für Sie tun kann und was nicht, nicht erkennen. Wenn Sie noch nie in einer Sprache ohne veränderlichen Zustand geschrieben haben, werden Sie die Strafen, die der veränderliche Zustand mit sich bringt, nicht verstehen.Das Erlernen anderer Sprachen ist gut, da Sie dadurch Ihre vorhandenen Sprachen besser verstehen. In dieser Hinsicht müssen Sie sich keine Gedanken darüber machen, ob Sie auf dem neuesten Stand sind, da sich die Konzepte einer Sprache nicht schnell oder überhaupt nicht ändern.
quelle
Code schreiben. Wenn Sie mit den Aktualisierungen der Sprache auf dem Laufenden bleiben möchten, schreiben Sie einfach weiterhin Code.
Wenn Sie mehr als eine Sprache lernen, können Sie sich einen Überblick über andere Sprachen verschaffen, die Sie sonst nicht bekommen würden. Wenn Sie viele Sprachen lernen, erhalten Sie einen umfassenden Überblick über das Rechnen im Allgemeinen.
Aber es ist unmöglich, jede Sprache zu lernen, und nicht alle Sprachen haben einen Wert - weder für Sie noch für Ihre Arbeit. Die esoterischen Sprachen sind, abgesehen von ihrem inhärenten intellektuellen Wert, nicht lohnenswert zu lernen, da sie keinen echten praktischen Nutzen haben.
Also nein, es gibt kein "genug". Aber es gibt sicherlich so etwas wie "die Mühe nicht wert."
quelle
Sorgen Sie sich nur darum, mit den Sprachen Schritt zu halten, von denen Sie glauben, dass Sie sie verwenden werden oder gerade verwenden. Das Erlernen neuer Sprachen ist hilfreich, aber es gibt keinen Grund, sich mit kleineren Änderungen in einer Sprache vertraut zu machen, wenn Sie sie nie wieder verwenden.
quelle
Höre nie auf zu lernen; aber merke, dass du nie alles über alles weißt. Sie werden immer Umgebungen haben, in denen Sie fließender sind. Mach dir keine Sorgen, einfach weiter Spaß haben.
quelle
Sie haben genug Programmiersprachen, wenn Sie das Gefühl haben, fertig zu sein. Es ist großartig, mehrere Sprachen zu beherrschen, aber ich weiß nicht, ob es mehr als nur einen kontextuellen Nutzen bringt, 12 zu kennen, wenn Sie 2 bei der Arbeit verwenden. Es ist nichts Falsches daran, mehr Sprachen zu beherrschen, aber in der restlichen Zeit sind Sie wahrscheinlich besser dran, Ihre Kenntnisse in den Sprachen und Disziplinen zu verbessern, die Sie am häufigsten benötigen. Wie bei gesprochenen Sprachen möchten Sie die für Ihr Leben wertvollen Sprachen beherrschen.
Ich kann mich an mehrere Programmierer erinnern, die damit prahlen, mehrere Sprachen zu beherrschen, aber in jeder Sprache den gleichen Code geschrieben haben, und das ist nicht unbedingt eine gute Sache.
Wenn Sie älter werden, hilft Ihnen auch die Zeit, sich für Sie zu entscheiden (ich habe viel weniger Zeit, nebenbei zu lernen als vor meiner Heirat, hatte Kinder, wurde freiberuflicher Schriftsteller, beschäftigte mich mit Karriereproblemen und beschäftigte mich mit Meine Erinnerung begann nach Süden zu gehen.
quelle
Ich habe in den letzten 25+ Jahren viele Sprachen gelernt. Nach einer Weile werden einige weniger nützlich und vergessen (Perl). Sprechen wir nicht einmal über 6502-Assembler, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...
Andere Sprachen verblassten, dann musste ich nach 10 Jahren (Python) neu lernen. Es hat keinen Sinn, mit Python Schritt zu halten, es dauert nicht lange, bis es soweit ist - Google / SO ist Ihr Freund.
Am Ende ist eine Sprache nur ein Werkzeug. Sie verwenden es für den jeweiligen Job. Die Fähigkeit besteht darin, zu wissen, was wann verwendet werden soll. Um ehrlich zu sein, wollte ich nach dem Start von C ++ nie wieder C-Codierung durchführen. Als ich C # lernte, wollte ich C ++ nie wieder machen.
quelle
Meiner Meinung nach dreht sich beim Programmieren nicht alles um die Sprache, die Sie verwenden. Programmieren ist eine Denkweise. Sie müssen ein guter Analyst sein, um gute Software zu schreiben. Die Programmiersprache hilft Ihnen nur beim Erstellen Ihrer Software. Sicher, jede Sprache hat ihre Nachteile oder Vorteile, aber um gute Software zu entwickeln, muss man als Entwickler denken. Leute, die nicht wie ein Entwickler denken, werden keine großartige Software entwickeln, egal wie gut die Sprache ist, die sie verwenden.
Ich vergleiche immer mit jemandem, der ein Haus baut, er kümmert sich nicht um seinen Hammer, solange er einen hat, kann er das Haus bauen. Vielleicht muss er sich mit dem Hammer vertraut machen (zum Beispiel mit dem Gewicht), aber sobald er mit dem Werkzeug vertraut ist, kann er ein fantastisches Haus bauen. Sich an das Tool zu gewöhnen ist nicht so schwer, da die meisten "Versionen" des Tools ziemlich ähnlich sind (dies gilt für Hämmer, aber auch für Entwicklungssprachen).
Während des Studiums haben wir Java verwendet (vorher habe ich ASP und VB5 verwendet), aber nach meinem Abschluss (vor ungefähr 5 bis 6 Jahren) habe ich gelernt, C # (und Javascript) zu verwenden. Der nächste Job erlaubte mir, beide .NET-Sprachen zu verwenden (was ich auch getan habe) und erlaubte mir sogar, Java erneut zu verwenden (für ein älteres Tool, das sie verwendeten). Heutzutage arbeite ich mit X ++ (Sprache von Microsoft Dynamics AX), entwickle aber noch etwas in .NET. Dies ist nur die Sprache, mit der ich in meiner täglichen Arbeit arbeite. Ich untersuche auch gerne neue Sprachen wie F #, Ruby usw. Das Erlernen dieser neuen Sprachen dauerte nur ein paar Tage (nur um die Syntax zu verstehen) und den Rest von der zeit spielst du nur mit der sprache rum und lernst nach und nach.
Es gibt so viele Sprachen, aber ich neige dazu, mich nur auf Sprachen zu konzentrieren, die sich wirklich unterscheiden (wie F #). Ich empfinde das Erlernen neuer Sprachen als interessant und unterhaltsam, daher ist das Erlernen einer neuen Sprache für den Moment recht einfach (zumindest wenn der Gedanke derselbe ist, sind C #, VB, Java ale gleich, aber zum Beispiel ist F # ganz anders). und ich sorge mich nicht zu sehr.
quelle
ich habe meine karriere vor 5 jahren auf vb6 begonnen, bin dann zu php, dann zu java und dann zu .net übergegangen. Derzeit arbeite ich seit einem Jahr an asp.net mvc2 und versuche mich auch an mvc3
Das Geheimnis ist, dass man niemals veraltet werden sollte. Man kann nicht alles auf der Welt meistern, also ist es nicht die Option, sich darum zu sorgen
quelle
Ich denke, das ist eine Karrierefrage. Daher müssen Sie Personen, die Sie einstellen, nur dann berücksichtigen, wenn Sie bestimmte Tools kennen. Vielleicht disqualifiziert dies den Job, aber vielleicht auch nicht. Also lerne oberflächlich Neues. Aber lernen Sie die schwierigen Dinge (Mathematik, neue Programmierparadigmen) immer wieder gründlich.
Die Anpassung an die Verwendung neuer Tools ist ein Kompromiss. Die IT-Branche steckt voller Hypes und man muss sich dagegen wehren. Dies beginnt mit der Aussage: nein, ich benutze weiterhin meinen alten Editor (emacs?). Aber von Zeit zu Zeit muss man neue Dinge lernen. Mit den Jahren werden sie wirklich besser (3-4). Wenn Sie die Möglichkeit haben, mit einem realen Projekt bei der Arbeit Neues zu lernen, zögern Sie nicht, es wird Spaß machen! Der beste Weg, um Hype von echter Innovation zu unterscheiden, besteht darin, die Leute zu betrachten, die ihn verwenden. Sie beurteilen Menschen besser als Technik :)
quelle
Ich würde vorschlagen, Sprachen mit unterschiedlichen Paradigmen wie funktional, OO und logisch zu lernen, weil sie so unterschiedlich sind.
Ich würde jedoch nicht unbedingt empfehlen, 3 funktionale Sprachen oder 3 OO-Sprachen zu lernen.
Wenn Sie gut rezitieren können, vielleicht. Aber ich finde es schwierig, immer wieder ähnliche Dinge zu lernen, die fast gleich sind, aber nicht genau, insbesondere Bibliotheksmaterialien wie Fensterbemalung, Datenbankaufruf, Sammlungsbibliotheken, bei denen man sich verschiedene Namen und Konventionen merken muss, aber welche benimm dich fast gleich. War es paintRect (xstart, ystart, xend, yend) oder (xstart, ystart, width, height)? 'Ende' hier einbeziehen, es dort nicht einbeziehen?
Aber manche Menschen haben es nicht schwer, diese Dinge zu lernen.
Daher würde ich vorschlagen, einige Sprachen zu lernen, aber wenn Sie einige von ihnen gründlich lernen, werden Sie möglicherweise mehr als nur Sprache für Sprache an der Oberfläche lernen. Vielleicht nicht 2 Sprachen pro Jahr, sondern alle zwei Jahre eine Sprache.
quelle
Ich bin irgendwie auf der anderen Seite des Spektrums. Ich hasse es, mehrere Sprachen zu lernen, weil man so einfache Dinge lernt und nie mit tieferen Problemen fertig wird. Gleichzeitig lernst du schlechte Praktiken aus anderen Sprachen.
Es ist ein Chaos, das darauf wartet, explodiert zu werden.
Das Problem ist, dass alle Sprachen ihre Fallstricke haben, bei denen die Abstraktion zu lecken beginnt oder gegen Sie spielt. Sie können die Syntax innerhalb eines Tages erlernen, es dauert jedoch 5 Jahre, bis Sie wissen, wie Sie effizient und fehlerfrei programmieren können. Verwenden Sie bei () oder []? Warum hat malloc nicht mehr genügend Arbeitsspeicher?
Und auch das Lernen von Paradigmen ist ein interessantes Unterfangen. Denn die Verwendung von Java-Richtlinien in C oder Perl-Richtlinien in C # wird wahrscheinlich zu einer großartigen Demonstration des Schreibens von verschleiertem Code.
Das Erlernen weniger neuer Sprachen könnte Ihnen helfen, Ihren Horizont zu erweitern, aber Sie sollten sich nicht schlauer fühlen, sondern sich mit jedem neuen, den Sie lernen, dümmer fühlen.
quelle
Jemand anderes schlug irgendwo vor, dass "jeder 3 Sprachen beherrschen sollte".
Ich neige dazu, zuzustimmen. Sie sollten eine kompilierte Sprache (C / C ++, C # usw.), eine interpretierte Sprache (Python, Ruby usw.) und eine Textverarbeitungssprache (Perl, Awk usw.) kennen. Ich denke auch, dass Sie eine Shell-Skriptsprache (Bash, heutzutage oder Windows Power Shell) kennen sollten. Der gleiche Rat gilt für Toolkits und APIs.
Die einzige Möglichkeit, mit der Entwicklung einer Sprache Schritt zu halten, besteht darin, sie zu verwenden. Wenn Sie Ihr Toolkit für reguläre Sprachen auf wenige Sprachen beschränken, können Sie alle einfacher regelmäßig zum Lösen von Problemen verwenden und so mit den jeweiligen Entwicklungen Schritt halten.
Machen Sie sich also mit den Technologien vertraut, die Sie täglich verwenden, und bleiben Sie dort. Es ist nichts Falsches daran, sich in anderen Interessensgebieten zu versuchen, wenn Sie Zeit haben. Ein kompetenter Programmierer braucht normalerweise nicht lange, um eine neue Technologie zu erlernen, wenn er genügend Motivation und Zeit hat, sich damit zu beschäftigen.
Es ist nicht erforderlich, mit jeder Technologie auf dem Laufenden zu bleiben. Sie können sie nach Bedarf auf und ab drehen und dabei die Technologien beibehalten, die Sie am häufigsten als Fokus verwenden.
quelle
Leute, wirklich - das ist traurig. Keine Spezialisierung, "ich werde alles lernen". Tut mir leid, mit diesem Ansatz werden Sie alles wissen, aber Ihre Fähigkeiten werden so gering sein, dass Sie niemand gut bezahlt.
Es gab eine Untersuchung, die ergab, dass man 10 Jahre Training braucht, um mit irgendetwas "gut" zu sein (Programmieren, Gitarre spielen, Tanzen usw.). Und das ist wahr, Sie brauchen 5-10 Jahre, um C ++ / python / etc zu schreiben. Kenntnisse zu erwerben, die für die Entwicklung von kommerziellem Code von guter Qualität erforderlich sind.
Und dieser Quatsch über Sprachreferenzen? Und wo gibt es gute Programmiergewohnheiten, die für jede Programmiersprache unterschiedlich sind. In welcher Referenz finden Sie bewährte Speicherverwaltungsmethoden und Datenstrukturen für C- oder serverseitige Sicherheitsmethoden?
Desktop, Mobile, Server (!!!) - das sind ganz andere Umgebungen. Sie entscheiden, ob Sie das ganze Leben "spielen" wollen, oder Sie konzentrieren sich auf eine Sache und bekommen einen anständigen Job. Wahrscheinlich werden dir die Leute sagen, dass du jede Sprache auf der Erde beherrschen solltest, weil sie versuchen, dasselbe zu tun, um ihre beschissenen Jobs zu verbessern. Aber raten Sie mal, sie werden dies niemals tun können, selbst wenn sie die "Referenz" von Java gelesen haben, denn wozu werden sie dann in der Lage sein? Genau nichts.
Ja - lernen Sie Grafikdesign, Drehbuchschreiben und Flash, Sie werden es brauchen! :) Ich weiß nicht genau, was los ist, aber wenn Sie Client, Server und Mobile gleichzeitig ausführen - kündigen Sie Ihren Job und warten Sie nicht bis morgen, weil Sie es jetzt tun müssen!
Ihre Frage sollte sein, wie man sie nicht im Auge behält. Mein Rat, beenden Sie pokemon und erhalten Sie in etwas gut, das Sie mögen.
quelle