Ich beherrsche Java, C / C ++, JavaScript / jQuery ziemlich gut und bin ziemlich gut in Objective-C. Ich bin auch mit den Sprachen und den entsprechenden Frameworks ziemlich produktiv und produziere Systeme auf Unternehmensebene (und auch kleine Systeme) mit ausreichender Leichtigkeit, während der Code 'sauber' und wartbar bleibt (ja, ich kann meinen eigenen Code nach sechs lesen Monate :)
Nur "warum" sollte ich eine neue Programmiersprache lernen, es sei denn, dies wird von der Plattform (iPhone, iPad usw.) oder von der Client- / Implementierungsorganisation vorgeschrieben? Nur zum Spaß"? Und was mache ich mit diesem Spaß, wenn ich nichts Wertvolles damit machen werde?
Viele meiner Kollegen sind bereit, in die "nächste neue Sache / Sprache" einzutauchen, und es handelt sich normalerweise um Python, Ruby oder PHP (nur um einige beliebte). Nur die Sprache selbst zu kennen, ist meiner Meinung nach sinnlos. Sie müssen auch die Frameworks kennen, deren Verwendung / APIs sowie bewährte Implementierungspraktiken usw. kennen.
Gibt es aus wirtschaftlicher Sicht einen Vorteil beim Erlernen einer neuen Programmiersprache? Wenn die Sprache schnell und schmutzig erlernt wird, wird sie wahrscheinlich auch für schnelles und schmutziges Prototyping / Implementieren verwendet - aber ich sehe DAS nicht als gerechtfertigten Aufwand.
Warum sollte ich (oder sonst jemand) eine andere Programmiersprache lernen als "es macht Spaß, also probieren wir es aus" - wenn sich die Investition von Zeit auf lange Sicht nicht lohnt?
Antworten:
Tipp 8 vom Pragmatic Programmer : "Investieren Sie regelmäßig in Ihr Wissensportfolio":
Es geht nicht um das nächste "Neue". Es geht darum, anders zu denken, als es normalerweise der Fall ist.
Es gibt ein Sprichwort: "Wenn Sie ein Hammer sind, sieht alles aus wie ein Nagel." Vielleicht gibt es eine bessere Möglichkeit, ein Problem mithilfe einer anderen Technologie zu lösen. Wenn Sie nicht erkunden, wissen Sie möglicherweise nicht, dass es verfügbar war.
quelle
Warum besteigen die Menschen den Berg? Everest? Oder 100 Meilen in 24 Stunden laufen ? Warum unternehmen wir eine Herausforderung? Weil es da ist. An "Ars gratia artis" sehe ich nichts auszusetzen. Es kommt ein Punkt, an dem Lernen um des Lernens willen zur Belohnung wird. Aber wenn Sie stärkere Gründe haben möchten, eine neue Sprache zu lernen, hier einige:
Neue Wege, um Probleme zu lösen Wenn Sie eine neue Sprache lernen und sich wirklich die Zeit zum Eintauchen nehmen, haben Sie die Möglichkeit, als Neuling erneut zu programmieren. Diese neue Perspektive kann Ihnen Techniken beibringen, die auf eine alte Sprache übertragen werden können. Denken Sie an den Einfluss von Ruby on Rails auf ASP.NET MVC oder an die Portierung von Java Hibernate nach C # (zusammen mit unzähligen anderen Frameworks, die die .NET-Entwicklung beeinflussen). Wenn Sie mit verschiedenen Sprachen in Kontakt kommen, lernen Sie neue Wege, um Probleme anzugehen.
Das richtige Werkzeug für den richtigen Job Alle von Ihnen genannten Sprachen sind OO / Procedural Hybrids (oder rein prozedural im Fall von C). Versuchen Sie sich in einer oder zwei funktionalen Sprachen. Versuchen Sie, Fakultät in Erlang mithilfe von Rekursion zu implementieren, und beobachten Sie, wie Ihr Kiefer bei 20000 auf dem Boden aufschlägt! kehrt in 5 Sekunden zurück (kein Stapelüberlauf in der Site). Schauen Sie sich dann an, wie leistungsfähig es ist, Ihre Anwendung zu skalieren, um Zahlen und Analyseprotokolle mit weniger Code und in kürzerer Zeit zu verarbeiten, als es für zwei Instanzen einer JVM erforderlich wäre, die über RMI oder SOAP kommunizieren. Wenn Sie andere Sprachen / Frameworks lernen, die auf die Lösung spezifischer Probleme abzielen, erhalten Sie mehr Tools.
Lerne neue Leute kennen / erweitere dein Netzwerk Das Tauchen in eine neue Sprache bringt dich in eine neue Community. Neue Leute kennenzulernen ist eine gute Sache für Ihre Karriere und für Ihre Persönlichkeit.
Neue Möglichkeiten Das Kennen einer neuen Sprache kann nur die Chance erhöhen, diesen Job mit diesem heißen Start zu bekommen. "Mann, dieser Job wäre perfekt, wenn ich Ruby kennen würde." Außerdem mag Ihnen die Sprache so gut gefallen, dass Sie entscheiden, den Pfad zu wechseln.
Halten Sie es frisch Das tägliche Arbeiten mit der gleichen Sache wird mühsam. Die Verwendung einer anderen Sprache kann Ihnen eine Pause vom Alltagsstress geben und es Ihnen ermöglichen, erfrischt zum nächsten Tag zu kommen.
Weil es da ist Lerne eine neue Sprache, weil du willst.
quelle
Wir denken mit Worten. Die Sprache, die wir verwenden, beeinflusst die Art und Weise, wie wir es tun. Es gibt einen interessanten Fall über die Pirahã-Sprache : Menschen, die diese Sprache sprechen, können nicht als scheinbar "einfache" oder "intuitive" Zahlen behandelt werden, da die Sprache, in der sie erzogen wurden, keine Wörter für "bestimmte Mengen" enthält (nicht einmal "eine") " und viele").
Bei Programmiersprachen ist das genauso. Eine neue Programmiersprache kann Ihren Geist für einige Aspekte der Programmierung "öffnen".
In Anbetracht Ihrer aktuellen Programmierkenntnisse empfehle ich Ihnen, eine funktionale Sprache wie Erlang oder Scala zu lernen. Schließlich ist Clojure auch eine sehr solide Sprache.
Wenn Sie sich zuerst ein bisschen wie zu Hause fühlen möchten, probieren Sie eine leistungsstarke Skriptsprache wie Python oder Ruby aus.
quelle
Sie möchten nicht nur neue Sprachen lernen, Sie möchten auch andere Sprachen lernen als die, die Sie bereits kennen. Wenn Sie wissen, dass Java-Lernen C # Sie nicht wirklich herausfordert, sind sie ziemlich ähnlich. Idealerweise sollten Sie eine Sprache wählen, die sich von Ihren Kenntnissen unterscheidet. Wenn Sie Java, JavaScript und Objective-C kennen, möchten Sie etwas ganz anderes
Sowie:
Ruby ist eine lustige, schwach getippte OO-Sprache
Prolog Eine ganz andere Logik-Programmiersprache
Erlang Concurrency und Fault Tolerance sind sehr gut gelungen
Schema Lies SICP und erreiche die Erleuchtung
Haskell Eines der leistungsstärksten Schriftsysteme der Welt, wenn es kompiliert wird, wird wahrscheinlich funktionieren und Sie davon abhalten, alle möglichen seltsamen Fehler und vieles mehr zu machen.
Oder holen Sie einfach in sieben Wochen sieben Sprachen ab, die genau das tun, was der Titel verspricht.
quelle
Ihre Frage ist so führend, dass ich die folgende Frage stellen muss:
Wenn Sie von Beruf Programmierer sind, warum in aller Welt möchten Sie nicht etwas Neues lernen, um Ihre Berufserfahrung zu erweitern?
Ihre Frage klingt für mich sehr nach der Einstellung eines Studenten, den ich einmal hatte. Ein oder zwei Jahre vor Y2K unterrichtete ich auf Wunsch des Direktors für Karrieredienste an der Universität, an der ich zu der Zeit unterrichtete, eine Cobol-Klasse (als Wahlfach). Er hatte so viele Unternehmen, die ihm Stellenangebote für Cobol-Programmierer anboten, dass er glaubte, wir würden unseren Schülern einen schlechten Dienst erweisen, indem wir ihnen nicht die Möglichkeit gaben, die Fertigkeiten zu erlernen und ihre Fähigkeiten zu erweitern.
Ich hatte einen Schüler, der die Klasse als seine letzte Wahlklasse zum Abschluss brachte . Zu dieser Zeit arbeitete er auch als C-Programmierer. Er nahm an der Cobol-Klasse teil, weil er keine andere Wahl hatte und den Abschluss wollte. Also kam er mit einem Chip auf der Schulter in die Klasse.
Ich forderte ihn daher auf, ein Programm zum Lesen von Daten aus einer Datei zu schreiben, die für jeden Eingabedatensatz ein bestimmtes Format hatte (dh wie viele Zeichen jedes Feld in einer Zeile belegte, welches Feld zuerst, zweitens, drittens usw. Kam) .)
Er sollte sein Programm in C schreiben, was er auch tat, und er zeigte mir sein Programm. Gleichzeitig zeigte ich ihm meine Cobol-Version des Programms.
Dann warf ich ihm einen Kurvenball:
Er brauchte einen Tag, um eine neue Version des Programms zu erstellen, die mit dem neuen Datenformat funktionierte. Dabei wurden mindestens 20 oder 30 Codezeilen geändert und mehrere Funktionen und Module modifiziert.
Dann zeigte ich ihm die Änderungen, die ich an meinem Cobol-Programm vornehmen musste. Ich habe die Picture-Klausel geändert, um das neue Datenformat widerzuspiegeln.
Ich bin mir nicht sicher, ob er die Lektion dieser Übung vollständig verstanden hat, aber er hat zumindest für den Rest des Semesters aufgehört, sich zu beschweren.
Also - als Antwort auf Ihre Frage: Sie sollten neue Sprachen lernen, weil Sie LERNEN wollen. Und wenn du nicht lernen willst - mehr Kraft für dich ... (Ich bin mir nur nicht sicher, ob ich dich mit dieser Einstellung einstellen würde)
quelle
Es gibt mehrere Gründe, warum das Erlernen einer neuen Sprache eine Investition in die Zeit wert sein kann:
Das Erlernen neuer Sprachen kann, wie Sie bereits bemerkt haben, in "schnellen und schmutzigen" Lösungen unmittelbare Vorteile bringen. Diese sofortigen Lösungen könnten einen Programmierer jedoch dazu veranlassen, die mit der neuen Sprache verbundene Architektur zu untersuchen und tiefer in sie einzutauchen, um sie "richtig" zu lernen. Man kann diese schnellen Lernübungen als Investition in die Untersuchung betrachten, ob eine neue Sprache eine zusätzliche Lernzeit wert ist.
quelle
Mit einem Wort: Marktfähigkeit .
Sie eröffnen Ihre Beschäftigungsaussichten, wenn Sie nachweisen können, dass Sie sich anpassen und Neues lernen können. Sicher, Sie könnten weiterhin Anwendungen in der Sprache schreiben, in der Sie sich wirklich gut auskennen, aber was passiert, wenn Sie feststellen, dass Ihre bevorzugte Sprache für die Branche, in der Sie gearbeitet haben, keine Rolle mehr spielt Um unsere eigenen Webservices von Grund auf in C oder C ++ zu schreiben, verwenden wir heutzutage Tools, die die gesamte zugrunde liegende "Webbiness" für uns übernehmen (Think Rails, etc ...).
Der Punkt ist, dass Sie am Ende wie die Schauspieler einer Fernsehserie enden und dann nicht einfach zu etwas anderem übergehen können, weil sie für immer als ihr ursprünglicher Charakter angesehen werden. "Wer in aller Welt will, dass Captain Kirk Indiana Jones ist? !!". Das gleiche gilt für Programmierer, die bisher nur ein einziges Produkt verwendet haben. Sicher, Sie werden es wie kein anderer kennen, aber das wird Ihnen nicht weiterhelfen, wenn Sie so behandelt werden, als wären Sie ein Fortran, der nicht mehr mit C # arbeiten kann.
Wenn Sie in der Lage sein möchten, Jobs einfach zu verschieben und Ihre Optionen offen zu halten, müssen Sie Ihre Erfahrung erweitern. Arbeiten Sie an vielen verschiedenen Projekten in vielen verschiedenen Sprachen, vorzugsweise auf mindestens zwei oder mehr Plattformen, und halten Sie sich für mehr als nur das marktfähig, was Sie heute sind.
Natürlich gibt es viele andere Gründe, eine neue Sprache zu lernen, manchmal sogar nur zum Teufel. Es öffnet Ihren Geist für andere Möglichkeiten, und wenn Ihr Chef zu Ihnen kommt und sagt, "Können wir etwas tun?", Können Sie mit einer Auswahl von Tools, die Ihnen zur Verfügung stehen, "Ja" sagen.
quelle
An diesem Punkt Ihrer Karriere sollten Sie neue Sprachen lernen, wenn Sie glauben, dass Sie dadurch ein besserer Programmierer werden.
Die meisten der aufgelisteten Sprachen (Java / C / C ++ / Javascript / Objective-C) sind konventionelle OO / Imperative. Das Erlernen einer weiteren OO / imperativen Sprache wird Ihnen wahrscheinlich nicht viel mehr über diese Art der Programmierung beibringen. Wenn Sie kein besonderes Interesse haben, ist es sinnlos, den Geschmack des Monats anhand von Spezifikationen zu lernen.
Ich bin auch skeptisch gegenüber Ansprüchen auf Produktivitätssteigerungen in der Größenordnung. Es kann sich jedoch lohnen, gelegentlich die hochproduktive Sprache zu prüfen, um festzustellen, ob sie Ihnen gefällt.
Der beste Grund, eine neue Sprache zu lernen, besteht darin, allgemein anwendbare Fähigkeiten zu erlernen. Dafür würde ich einen tiefen Einblick in eine funktionale Sprache (Haskell oder einer der Lisps) und Assembler-Code und Systemarchitektur (x86 oder ARM) auf der anderen Seite empfehlen.
Funktionale Programmierung wird Ihr Gehirn brechen und Ihren Verstand verbessern, während die Architektur von Lernmaschinen Ihre Debugging- und Optimierungsfähigkeiten verbessern wird, selbst wenn Sie nie wieder eine Assemblierungslinie schreiben.
quelle
Jeder von uns entscheidet, woran wir arbeiten wollen ...
Wenn Sie PHP nicht lernen möchten, werden Sie von niemandem dazu gebracht, und es gibt unzählige Bereiche, in denen Sie programmieren können, ohne jemals zu wissen, wie man PHP buchstabiert.
Viele Leute schauen auf dem Arbeitsmarkt nach, wo sich heiße Gegenden befinden, und greifen auf diese Technologien zu. Viele Menschen lernen eine Sprache und bleiben dabei. 20 Jahre später werden sie ältere Instandhaltungsingenieure. Und dann haben Sie eine Menge Leute, die irgendwo zwischen diesen beiden Extremen sind.
Am Ende geht es darum, wo Sie sein wollen.
quelle
Das beste Argument, das ich kenne, ist, dass es Ihre Sichtweise dahingehend erweitert, wie viele verschiedene Arten der Lösung eines Problems oder eine Logik ausgedrückt werden können. Wenn Sie Java und C ++ gut kennen, erhalten Sie einen guten Überblick über die nativen und VM-Bereiche, aber es gibt noch viel mehr "Freiheitsgrade", die Sie erkunden können.
Ich habe ungefähr 15 Jahre Erfahrung in C ++, 5 in Java. Es gibt viele Sprachen, die ich gelernt und hinter mir gelassen habe (PHP, Pascal, Assembler für eine Reihe von verschiedenen Prozessoren, unter anderem) und ich kann mit Sicherheit sagen, dass auch diejenigen, die ich nicht mehr benutze, einen signifikanten Eindruck davon hinterlassen haben, wie ich über ein Problem denke . Außerdem: Auch wenn Sie sich für ein bestimmtes Projekt beispielsweise an Java halten möchten, müssen Sie die Alternative kennen, um seinen Befürwortern gute Gegenargumente zu präsentieren.
Trotzdem habe ich Python erst in diesem Jahr gelernt und war begeistert, wie elegant einige Dinge getan werden können. So sehr, dass ich mich entschied, eine Handvoll REST-Servlets, die ich geschrieben hatte, von Java nach Python zu konvertieren. Die Vorteile bei der Pflege des Codes waren sehr bedeutend. Natürlich hat es auch meine Arbeitsweise geprägt, nicht nur, weil ich mich jetzt für einige Aufgaben für Python entschieden habe, sondern auch, weil ich beim Codieren in C ++ und Java möglicherweise ähnliche Designprinzipien einsetze.
Das heißt, ich denke nicht, dass Sie die ganze Zeit viele verschiedene Sprachen lernen sollten, nur um das zu erreichen. Es kostet viel Zeit, und die "Anpassungen", die Sie vornehmen müssen, damit sie mit den anderen, die Sie bereits kennen, koexistieren, erfordern Zeit und Mühe. Ich entscheide mich nur dann, eine Sprache zu lernen, wenn sie ausreichend ausgereift ist, eine gute Entwicklerbasis hat und sich erheblich von den Ergebnissen unterscheidet, die ich kenne oder zu lernen beabsichtige. Als ich mich zum Beispiel für Python entschied, dachte ich auch über Ruby und Perl nach und verwarf sie später - zumindest für die nahe Zukunft.
quelle
Die Leute lernen neue Sprachen, um ...
Vertrauen = fantastischer Code!
Wie Sie sehen, gibt es viele Gründe, eine neue Sprache zu lernen. Mein Rat an Sie (und mein einziges Originalzitat, das ich für gut halte):
quelle
Ich stimme den meisten Antworten zu, die bereits veröffentlicht wurden. Lesen Sie dazu die Statistiken der Stapelüberlauf-Umfrage 2011. Es gab eine sehr hohe Korrelation zwischen der Anzahl der bekannten Sprachen und dem verdienten Geld. Sie sind vielleicht nicht direkt miteinander verbunden, aber es ist etwas, worüber man nachdenken muss.
Leute, die dazu neigen, mehr Sprachen zu lernen, neigen dazu, mehr Geld zu verdienen.
http://blog.stackoverflow.com/2012/02/survey-results/
quelle
Alfred North Whitehead schrieb einen großartigen Aufsatz mit dem Titel " The Importance of Good Notation ".
Eine Programmiersprache ist eine Form der Notation. Ich kann OO in C codieren; So begann Stroustrup mit C ++ - als eine Reihe von C-Precompiler-Makros. Es ist jedoch viel einfacher und schneller, OO-Code in Java, C ++ oder C # zu schreiben, da dort Sprachprimitive vorhanden sind, die OO leichter unterstützen.
Alle bisher genannten Gründe für das Erlernen neuer Sprachen sind gültig, aber ich denke, der beste Grund für das Erlernen einer neuen Sprache ist, dass eine neue Notation es Ihnen ermöglicht, auf eine neue Art und Weise zu denken, die Ihnen bei der Lösung neuer Probleme helfen kann.
quelle
Die meisten oder alle obigen Antworten beziehen sich auf den Beruf. Programmierung. Ich möchte daran erinnern, dass wir, bevor wir Programmierer sind, Menschen sind.
Ein guter Grund, warum Sie in Ihrem Fall keine neue Programmiersprache lernen sollten, ist, sich ausruhen zu lassen oder andere Dinge neben dem Programmieren zu tun.
Aus meiner Erfahrung in der Landwirtschaft und im Umgang mit Holz dachte ich viel über das Programmieren nach - mehr als über das Erlernen einer neuen Sprache. Dh um ein guter Programmierer zu sein, solltest du zuerst ein guter Mensch sein. Wenn Sie nicht viel Erfahrung im Leben haben, kann es sein, dass Ihre Vorstellung vom Programmieren völlig falsch ist - auch wenn Sie ein Experte sind.
Viele Konzepte in der Programmierung kommen direkt aus dem täglichen Leben: einfach, wartbar, praktisch, nützlich, schnell - und manchmal langsam , Modularität usw .; sind alles Begriffe, die beispielsweise von einem Schreiner verwendet werden.
Ob Sie es glauben oder nicht: Ich persönlich habe viel über Programmierkonzepte gelernt, indem ich einen langen Urlaub verbracht habe, um Orangen zu pflücken. Das Hauptkonzept, das ich daraus gelernt habe, war - Einfachheit. Durch die Arbeit als Baumeister habe ich ein anderes Konzept gelernt: Bauen Sie den Sockel so gut wie möglich - wenn Sie möchten, dass die Wände gerade stehen.
Schließlich könnte die Antwort auf Ihre Frage lauten: Machen Sie Urlaub, nehmen Sie an einem Taekwondo-Kurs teil oder kümmern Sie sich um den Garten - dann könnte Ihre Frage Sie nicht mehr stören.
quelle
Der Wert des Lernens einer neuen Programmiersprache ist ungefähr der Kehrwert der Anzahl der Programmiersprachen, die Sie bereits kennen.
Dies liegt daran, dass es eine begrenzte Anzahl von Paradigmen gibt und das Erlernen einer neuen Sprache Sie in der Regel mit mindestens einem oder zwei vertraut macht, was Sie als Programmierer erfahrener und fähiger macht. Einige können Ihre Programmierwelt auf den Kopf stellen. Aber wenn Sie eine neue Sprache lernen, die Paradigmen enthält, die Sie bereits kennen, kennen Sie sie bereits und sind an sie gewöhnt.
quelle
Wie die meisten von ihnen bereits geschrieben haben, habe ich gute Kenntnisse in C. Vor kurzem habe ich an einem Problem gearbeitet, für das ich die Ergebnisse überprüfen musste. es war mathematisch. Also, was ist der schnellste Weg, um die Antwort zu bekommen, gab mir einen Kick, um eine schnellere Programmiersprache zu lernen.
Und ich fand heraus, dass bc , eine beliebige Präzisionsrechnersprache, das Dienstprogramm ist, das fast auf jeder Unix-Plattform verfügbar ist.
Ich dachte nicht an Python, Perl oder so, aber ich fand heraus, dass dies meine Probleme im Handumdrehen löste. Ich habe es auf der Fakultät (20000) überprüft, die einer der Freunde vorgeschlagen hatte, und es ergab Ergebnisse im Handumdrehen ohne Absturz.
Es ist nur bis zu einem gewissen Punkt wichtig, dass Sie eine neue Sprache kennen, die Ihre Arbeit / Ihr Problem im Moment erleichtert.
Wenn ich das in meinen Lebenslauf schreibe, interessiert es mich bestimmt niemand, aber aus meiner Sicht löst es mein Problem, bevor ich es in meiner Lieblingssprache, 'C', angreife.
Und auch wenn Sie eine neue Sprache lernen müssen, haben Sie die Möglichkeit, verschiedene Probleme und n Lösungen zu finden.
quelle
Jeder kann eine neue Sprache erstellen. aber niemand scheint zu verstehen, dass "besser" selten dasselbe ist wie "so viel besser, dass die Adoptionskosten tatsächlich gerechtfertigt sind". Das Endergebnis sind Hunderte verschiedener Sprachen, in denen niemand den gesamten Quellcode verstehen kann und in denen Programmierer etwa ein Viertel ihrer Zeit damit verschwenden müssen, aufgrund von Unterschieden zwischen Sprache, Framework und Bibliothek unproduktiv zu sein.
In einer idealen Welt gäbe es eine einfache Programmiersprache (z. B. C), eine sichere Programmiersprache (z. B. Java) und eine Skriptsprache. Es würde auch einen großen Vorschlaghammer geben, um den "Programmiersprachenturm von Babel" zu zerstören, der von Leuten geschaffen wurde, die die Tugenden der Standardisierung und die Kosten der "Abwanderung" und der ständigen Umschulung der gesamten IT-Branche nicht verstehen.
Von einem gewissen Sinne ‚makroökonomischer‘, es ist nichts falsch mit einer neuen Programmiersprache als Hobby lernen, aber mit , dass neue Programmiersprache für alles , was macht Ihnen einen Teil des Problems.
quelle