Ist es sinnvoll, zwischen zwei Programmiersprachen hin und her zu wechseln? [geschlossen]


28

Ich habe fast zwei Jahre lang ziemlich viel PHP geschrieben. Jetzt mache ich .NET (hauptsächlich c #) Entwicklung. Manchmal gehe ich jedoch zurück und mache etwas PHP.

Meine Hauptfrage ist, ist es für mich ratsam, damit fortzufahren, oder sollte ich die Entwicklung in C # fortsetzen? Würde mir das auf lange Sicht schaden (wohlgemerkt, mein Hauptziel ist es nicht, ein Alleskönner zu sein) oder ist es eine gute Praxis, dies zu tun?


30
besser ein
Alleskönner

27
Es wird Ihnen sicherlich schaden, wenn Sie sich auf nur zwei Sprachen beschränken. Holen Sie sich mehr verschiedene Werkzeuge in Ihre Toolbox.
SK-logic

4
Sie stellen diese Frage, als ob Sie völlig frei zwischen C # und PHP wählen könnten - ist das wirklich der Fall?
Doc Brown

10
Die schmutzigen Details einer Sprache zu kennen, ist zweifellos sehr nützlich. Wenn Sie jedoch mit mehreren Sprachen arbeiten, werden Sie irgendwann bestimmte Teile des Programms entwerfen, unabhängig davon, in welcher Sprache Sie gerade arbeiten. Dies ist eine Art Programmiernirvana, in dem die Sprache sich ändert sekundäre und die Anwendung ist das, was zählt. Das ist ein großartiger Ort, denn Sie haben auch in Zukunft Potenzial als Programmierer, wenn Leute in einer neuen, ausgefallenen Z ++ - Sprache arbeiten.

2
Nur zwei? Viele Programmierer arbeiten regelmäßig in mehreren Sprachen. Wenn Sie mehrere kennen, haben Sie eine größere Auswahl an Werkzeugen zum Zeichnen.
Caleb

Antworten:


75

Die gleichzeitige Verwendung von zwei Sprachen ist nichts. Es ist nicht ungewöhnlich, dass Programmierer jeden Tag mehrere verschiedene Sprachen verwenden. Unterschiedliche Aufgaben und unterschiedliche Technologien erfordern unterschiedliche Sprachen.

Bis heute habe ich bereits vier oder fünf verschiedene Sprachen verwendet, und das ist interessant, weil ich bisher noch keine Programmierung vorgenommen habe. Ich habe nur an einer Präsentation gearbeitet.

Als guter Programmierer ist es im Wesentlichen erforderlich, dass Sie sich in mehreren Sprachen auskennen. Die einzige Möglichkeit, vernünftige Sprachkenntnisse zu erlangen (und diese beizubehalten), besteht darin , diese Sprachen zu verwenden.


4
Ich bin mir nicht sicher, wie jemand ein effektiver Programmierer sein kann, ohne regelmäßig mindestens drei Sprachen zu verwenden.
Brian Knoblauch

1
@Brian - Diese drei Sprachen sind Ihre primäre gesprochene / geschriebene Sprache, Ihre primäre Programmiersprache und SQL und / oder HTML?
KeithS

2
@KeithS Nur, wenn Sie auf der Clientseite Super-Plain-Seiten erstellen und auf der Serverseite niemals XML-Datensätze berühren. CSS und Javascript zählen ebenso wie XPath, XSLT und XQuery zu ihren eigenen Sprachen.
Tacroy

2
Alles, was "die meisten Leute" oder "die meisten Entwickler" enthält, sollte mit einer Art Zitat versehen werden. Ansonsten ist es subjektiv. Nahezu jeder Entwickler, den ich getroffen habe (und auch ich selbst), betrachtet SQL als Programmiersprache, und die Vollständigkeit von Turing ist kein notwendiger Faktor für eine Programmiersprache (denken Sie, DSLs, die normalerweise so konzipiert sind, dass sie NICHT vollständig sind). HTML und XML sind offensichtlich keine Programmiersprachen (obwohl Sie XML-basierte domänenspezifische Sprachen haben können). Regex sind keine Programmiersprachen, sondern programmierbare / konfigurierbare Automaten.
Luis.espinal

2
Das ist keine Quelle. Dies ist ein Link zu einer Diskussion (Diskussionen sind nicht für sich genommen Quellen), und es ist eine, die sich nur auf CSS und HTML konzentriert. Es geht weder um den "Turing Complete" -Test (ich schlage vor, Sie lesen Martin Fowlers Arbeit zum Thema DSLs), noch darum, ob SQL eine Programmiersprache ist (was es ist, hier ist eine aktuelle Quelle: en.wikipedia.org/ wiki / SQL oder this amazon.com/SQL-Programming-Language-Kirk-Scott/dp/0763766747 ). Entweder lesen Sie meinen Beitrag nicht vollständig, oder Sie denken, ein Link zu stackexchange ist eine Quelle (was nicht der Fall ist.)
Luis.espinal

37

ist es eine gute Übung, dies zu tun?

Es ist eine ausgezeichnete Praxis. Außerdem würde ich empfehlen, Ihre Sprachenliste regelmäßig zu erweitern, indem Sie eine neue ausprobieren.

Sprachen und Technologien verschlechtern sich innerhalb weniger Jahre sehr schnell. Zum Beispiel ist Objective C mit erstaunlicher Stärke gestartet, nachdem es zweieinhalb Jahrzehnte lang fast tot war - eine Ewigkeit nach den Maßstäben dieser Branche!

Es spielt keine Rolle, dass Sie vorhaben, "kein Alleskönner" zu sein: Wenn Sie vorhaben, lange genug in der Branche zu bleiben, können Sie davon ausgehen, dass Sie Ihren Technologie-Stack mindestens einmal wechseln müssten während Ihrer Karriere. Wenn Sie jetzt mehrere Sprachen verwenden, können Sie relativ schnell einschalten.


14

Würde mir das auf lange Sicht schaden (wohlgemerkt, mein Hauptziel ist es nicht, ein Alleskönner zu sein) oder ist es eine gute Praxis, dies zu tun?

Wenn Sie zwei oder mehr Sprachen kennen , kann Ihnen das nie schaden. Wenn Sie Ihre Sprachen nicht so gut beherrschen (ohne das Innenleben zu verstehen), kann dies zu Schäden führen.

Meine persönliche Präferenz war es immer , zuerst eine objektorientierte Programmiersprache zu beherrschen . Auf diese Weise können Sie sich eingehend mit allen Programmierkonzepten vertraut machen und bei Bedarf problemlos das nächste Programm erlernen.

ist es eine gute Übung, dies zu tun?

Absolut ja!

Ich würde definitiv vorschlagen , mehr als eine zu lernen und sie durch das Erstellen einiger Anwendungen zu üben. In der Zwischenzeit möchten Sie möglicherweise auch einige Skriptsprachen (jQuery, KnockoutJs usw.) und Bibliotheken erlernen, wenn Sie eine Webentwicklung durchführen oder planen.


1
Ich glaube nicht, dass das Erlernen von OOP Ihnen viele Konzepte aus der funktionalen Programmierung beibringen wird. Zum einen unterscheiden sich JavaScripts-Gültigkeitsregeln stark von den anderen gängigen OOP-Sprachen wie C # usw. Es gibt viele andere Konzepte.
Phant0m

Ich bin sehr einverstanden. JQuery und KnockoutJs sind jedoch KEINE Skriptsprachen. Und ich würde "jQuery lernen" ohne grundlegende JavaScript-Kenntnisse nicht empfehlen.
Bruno Schäpper

Sie können jQuery nicht lernen, ohne dabei JavaScript zu lernen, da jQuery keine Sprache ist, sondern eine Bibliothek, die in einer Sprache geschrieben ist.
ILikeTacos

5

Langfristig sollte es Ihnen nichts anhaben, wenn Sie eine Reihe von Sprachen beherrschen, sind Sie ein vielseitiger Entwickler. Die Verwendung des richtigen Tools zur Erledigung der richtigen Arbeit ist das ultimative Ziel. Wenn Sie sich in verschiedenen Sprachen auskennen, können Sie dies erreichen, da Sie wissen, was noch alles vorhanden ist, und eine fundierte Entscheidung darüber treffen, welche Plattform / Framework / Sprache verwendet werden soll etwas erledigen.


Vielen Dank für die Antwort, aber ich habe mich gefragt, ob das häufige Wechseln meinen Lernprozess nicht beeinträchtigt oder verlängert oder hängt das nur von den Fähigkeiten der Person ab?
Lamin Sanneh

@LaminSanneh Das Erlernen einer anderen Sprache macht Sie beim ersten Mal nicht schlechter. Es ist kein RPG und Sie haben keine festgelegte Anzahl von "Programmierfähigkeiten" -Punkten, die Sie jeder Sprache zuweisen können. Im schlimmsten Fall nimmt es Zeit in Anspruch, dass Sie sich einer anderen Sprache gewidmet hätten. Sprachen sind jedoch nur eine Möglichkeit, Ihre Ideen auszudrücken. Durch das Erlernen neuer Sprachen erhalten Sie neue, frische Perspektiven und Ideen, die Sie auf bereits bekannte anwenden können. Sicher, Sie kennen nicht die Syntax jeder Sprache, aber wen interessiert das? Es ist eine schnelle Google-Suche entfernt
Jay

5

Im Laufe Ihrer Karriere, Sie haben neue Sprachen und neue Technologien zu lernen; Die Industrie verlangt es einfach. Bei meiner ersten beruflichen Aufgabe musste ich in Ada, C und Fortran geschriebenen Code sowie einige SQL- und Shell-Skripte bereitstellen. Ich musste in den letzten Jahren von C ++ auf Java und wieder zurück umsteigen. Ich habe Shell-Skripte in csh, bash und perl geschrieben.

Nehmen Sie sich Zeit, um verschiedene Sprachen zu lernen, insbesondere wenn sie sich in verschiedenen Bereichen befinden (OO, funktional, logisch usw.). Es wird Ihr Gehirn scharf halten. Dies hilft Ihnen, Konzepte von der Implementierung zu trennen (z. B. sind Hashes und Maps nicht nur Datentypen in einer bestimmten Sprache). Sie erhalten eine bessere Vorstellung davon, welche Tools für ein bestimmtes Problem geeignet sind (z. B. würde ich in C weder eine Website erstellen noch einen Gerätetreiber in Haskell schreiben). Es könnte für Sie einfacher sein, einen Job zu finden ("Hey, er kennt Intercal 1 bereits , wir müssen ihn nicht ausbilden!"). Sie erhalten eine Vorstellung davon, vor welchen Herausforderungen Sprachdesigner stehen. Es kann Sie inspirieren, Ihre eigene Programmiersprache zu erstellen.

Zumindest wird es Sie vor Langeweile bewahren.


1. Witz. Versuche nicht, Intercal zu lernen.


4

Menschen, die in diesem Jahr in den Ruhestand treten, haben ihre Karriere begonnen, bevor C gegründet wurde. Man kann mit Sicherheit sagen, dass Sie in Ihrer Karriere ein- oder zweimal die Programmiersprache wechseln. Sie wollen nicht für Arbeitgeber arbeiten, die das nicht verstehen.

Wenn Sie neu sind, ist der Kontextwechsel zwischen zwei Sprachen sehr viel schwieriger, sodass Sie produktiver sind, wenn Sie vor dem Wechsel mindestens 4 bis 8 Stunden in einer Sprache arbeiten. Später können Sie sofort wechseln, ohne die Produktivität zu beeinträchtigen. Mit anderen Worten, die Verwendung von zwei Sprachen wird letztendlich zu einer Stärke, anstatt Sie zu verlangsamen.


2

Das hat Vor- und Nachteile.

Hier ist der Vorteil ...

Wie bereits erwähnt, ist es für eine lange Karriere im Programmieren fast unerlässlich, neue Kenntnisse zu erwerben und mit vielen Sprachen und Programmierwerkzeugen zu arbeiten. Dinge ändern sich im Laufe der Jahre, Werkzeuge / Sprachen kommen und gehen. Sicher, es gibt einige Leute, die damit zufrieden sind, in demselben COBOL zu programmieren, das sie in den 1980er Jahren verwendet haben, aber dies ist eine relativ seltene Situation. Die meisten Programmierer wechseln im Laufe ihrer Karriere mehrmals die Werkzeuge / Sprachen. Manchmal werden Sie eingestellt, weil Sie ältere Technologien kennen oder alle Sprachen beherrschen, mit denen ein Unternehmen arbeitet.

Der Nachteil ist ...

Einige Arbeitgeber werden Sie als "Alleskönner" betrachten und Ihre Bewerbung ablehnen, ohne Ihnen eine Chance zu geben. Sie suchen einen engen Experten in einem bestimmten Bereich, nicht einfach einen guten, runden Programmierer. Manchmal werden Sie von der Personalabteilung unterbrochen, weil Sie nicht über "5 Jahre ununterbrochene Erfahrung in [X]" verfügen. Sie können dies möglicherweise vermeiden, indem Sie Ihren Lebenslauf auf den Job zuschneiden. Dies hilft Ihnen jedoch möglicherweise nicht bei einem technischen Interview.

Für mich ist der Aufwärtstrend viel besser, aber Sie müssen sich darüber im Klaren sein, dass eine Minderheit von Organisationen dies als negativ ansieht.


+1, Außerdem bin ich mir sicher, dass es eine Korrelation zwischen dieser Minderheit von Organisationen und schlechter Programmierung und Ineffektivität gibt.
K.Steff

2
Dieses Negativ wird jedoch von Arbeitgebern aufgehoben, die genau das Gegenteil meinen. Ich habe ein Mitspracherecht bei Einstellungsentscheidungen, bei denen ich arbeite, und ich kann mich nur schwer davon überzeugen, jemanden einzustellen, der nur eine Programmiersprache beherrscht. Vielleicht für eine Junior-Position, aber sicher nicht für einen Senior-Entwickler.
Jon Hanna

@ JonHanna - Das Hauptproblem besteht darin, dass das Entwicklerteam möglicherweise nicht einmal den potenziellen Entwickler interviewen kann, da er von der Personalabteilung überprüft wird, manchmal von einem automatisierten Programm. Dies ist natürlich ein häufigeres Problem in größeren Organisationen. Es ist wichtig, dass Ihre HR-Mitarbeiter nicht die besten Kandidaten nach beliebigen Kriterien auswählen.
Jfrankcarr

+1 für das Hinweisen auf die Nachteile . Wo ich herkomme, ist die Anzahl der Unternehmen, die diese Ansicht von "Alleskönner, Meister ohne" beibehalten, nicht so gering.
Isoliveira

Ja, aber wir könnten das in eine gute Qualität verwandeln; Es könnte immer einen Idioten in der Personalabteilung geben, der das für eine schlechte Qualität hält. Wenn die Personalabteilung in einem Unternehmen Idioten sind, werden sie schlimme Einstellungen vornehmen, und wenn Sie eingestellt werden, ist dies möglicherweise besser als die Arbeitslosenquote. Sie werden sich jedoch sofort einen neuen Job suchen und woanders eine Arbeit finden .
Jon Hanna

2

Haben Sie bei der PHP-Entwicklung Javascript oder SQL geschrieben? In Ihrer C # -Entwicklung könnten Sie beide weiterhin verwenden. Es ist nicht ganz so schnittig und trocken wie eine Programmiersprache.

Wenn Sie damit zufrieden sind, machen Sie sich keine Sorgen. Wenn Sie nicht beides tun möchten (oder beides), haben Sie ein Problem.


2

Wenn Sie eine neue Programmiersprache lernen, lernen Sie Dinge über das Programmieren, die Sie auf die Sprachen anwenden können, die Sie bereits kennen. Sie sollten auf jeden Fall in Betracht ziehen, zumindest mit einigen anderen Sprachen zu spielen, auch wenn Sie diese nicht professionell einsetzen, anstatt nur so wenige zu haben.

Im Idealfall eine ganz andere Herangehensweise als die, die Sie bereits kennen.


2

Nein, es ist nichts Falsches daran, mehrere Sprachen zu lernen und sie alle ziemlich oft zu benutzen. In meinem Alltag kann ich Ruby, PHP, JavaScript, CoffeeScript, Python und gelegentlich C begegnen. Ich kenne all diese Sprachen ziemlich gut und wenn ich von einer Sprache zur nächsten wechsle, drücke ich einfach einen Schalter in meinem Gehirn. Sicher, ich vermisse Funktionen einiger Sprachen, wenn ich zu einer anderen wechsle, aber Sie werden darüber hinwegkommen.

Ich versuche immer eine Sprache zu haben, die ich intensiv lerne, und dann eine andere als "aufstrebend". Auf diese Weise haben Sie immer ein klares Bildungsziel und dann etwas am Horizont. Momentan ist Ruby meine Hauptsprache und ich experimentiere mit Go. Ich werde wahrscheinlich nie einen Job als Go-Entwickler bekommen, aber das Erlernen einer neuen Sprache hat es zu einem besseren Entwickler gemacht.

Wenn ich einen Entwickler interviewe, sehe ich immer gerne ein paar verschiedene Sprachen in seinem Lebenslauf. Wenn ein Entwickler auf "C / C ++" oder "PHP und Javascript" in seinem Lebenslauf hat, sehen sie viel weniger interessant aus als jemand, der 4 oder 5 Sprachen beherrscht. Stellen Sie sicher, dass Sie sich in jeder Sprache, die Sie auflisten, wohl fühlen. Alles in Ihrem Lebenslauf ist fair im Interview!

Kurz gesagt: Die regelmäßige Verwendung mehrerer Sprachen ist ein Zeichen für einen guten Entwickler, der sich um sein Handwerk kümmert. Kodierung beibehalten!


Ich würde sagen, wenn der Entwickler in einem Lebenslauf "C / C ++" sagt, möchte ich, dass dies die einzige (n) Sprache (n) ist (sind). Aber bei anderen, narrensicheren Sprachen gilt: Je mehr, desto besser.
Coder

2

Wenn wir uns Lebensläufe ansehen, suchen wir normalerweise jemanden, der mehrere Sprachen beherrscht. Wenn die Erfahrung einer Person zunimmt, sollte auch die Anzahl der verwendeten Sprachen zunehmen.

In unserem Umfeld müssen wir oft neue und interessante Probleme angehen und wir suchen Menschen, die bereit sind, sich auf diese Probleme einzulassen und sie zu lösen, unabhängig davon, ob sie eine neue Sprache lernen müssen oder nicht. Das Problem liegt möglicherweise in Code vor, der auf einem Windows-Desktop, einem Windows-Server, einem Linux-Server oder in einem Browser ausgeführt wird.

Die Kenntnis mehrerer Sprachen ist ein Zeichen dafür, dass jemand eine gute Einstellung zu seinem Handwerk hat. Sie wollen immer neue Dinge lernen, damit sie es tun. Mangelnde Sprachkenntnisse sind für mich ein Zeichen dafür, dass ein Mensch nur das Nötigste tut und kein Interesse am Lernen hat.


2

Es war schon immer so, dass Menschen mit mehr als einer Sprache programmierten. Wenn Benutzer Assembly verwenden, müssen sie bei jedem Architekturwechsel eine neue Assembly-Sprache lernen.

Wenn Leute COBOL oder Fortran machen, machen sie normalerweise auch RPG und / oder JCL.

Unter Unix wurde mit C, sed, awk, Shell-Skripten und so ziemlich allem in der Unix-Küchenspüle gearbeitet (fast jedes Befehlszeilen-Tool unter Unix ist ein eigenes, sehr spezialisiertes DSL.)

Unter DOS programmierten die Benutzer zusätzlich zu Batch-Skripten in Turbo Pascal oder C. Später als Windows kam, war es VB oder etwas wie PowerBuilder, gekoppelt mit SQL und möglicherweise Batch-Installationsskripten.

Heutzutage ist es ein de-facto , dass die Menschen „Arbeit“ mit mehr als zwei Sprachen zu einem gegebenen Datum (und von „Arbeit“ Ich meine tun Wissen tatsächlicher Tag-zu-Tag - Codierung oder hat arbeiten). Zumindest Java oder C # oder VB gemischt mit JavaScript und SQL. Dann kommen andere Sprachen zum Batch- / Job-Scripting und dergleichen ins Spiel. Dann haben Sie für jede Sprache ein Framework, das selbst eine interne DSL implementiert, eine eigene Mini-Sprache.

Es ist also nicht nur vorteilhaft, mit mehr als einer Sprache zu arbeiten, sondern es ist auch notwendig. Es gibt keine Möglichkeit, ein modernes, komplexes System mit einer einzigen Sprache zu erstellen (und mit "erstellen" meine ich nicht nur den Code für irgendeinen Mist, der kompiliert wird, sondern etwas mit einem anständigen Design zu erstellen.)

Verdammt, ich werde aus dem Rahmen gehen und sagen, dass ich erwarten würde, dass Kinder im College zwei oder mehr Sprachen beherrschen, wenn sie es ernst meinen, in diesem Beruf zu sein.

Also zu deiner Frage:

Meine Hauptfrage ist, ist es für mich ratsam, damit fortzufahren, oder sollte ich die Entwicklung in C # fortsetzen? Würde mir das auf lange Sicht schaden (wohlgemerkt, mein Hauptziel ist es nicht, ein Alleskönner zu sein) oder ist es eine gute Praxis, dies zu tun?

Eine kurze Antwort, nein, das Verwenden oder Wechseln zwischen Sprachen wird Ihnen nicht die nötigen Spielereien bringen. Wenn Sie mehr als eine Sprache kennen, werden Sie nicht zum Alleskönner, und ein Entwickler kann nicht zum Experten werden, wenn er nicht mehr als eine Sprache verwenden kann.


1

Je mehr Sie in Bezug auf Ihre Primärsprache (n) vergleichen müssen, desto besser verstehen Sie die Designkompromisse, mit denen sie in bestimmten Dingen besonders stark oder schwach gemacht wurden, und können diese Dinge ausnutzen / kompensieren. Meistern Sie mindestens einen, aber machen Sie sich keine Sorgen darüber, ein Bube vieler anderer zu sein. Das sieht nur gut aus.

Es ist besser zu fragen, wie Lebensläufe mit nur einer Sprache von "erfahrenen" Entwicklern aussehen. Die Antwort auf diese Frage lautet: "Wenig interessiert, was sie beruflich machen."


0

Zwei Sprachen können Ihnen helfen oder nicht - das hängt davon ab. Es wird dir nicht schaden, das ist sicher. Viele Entwickler sind der Meinung, dass es reine Zeitverschwendung ist, etwas anderes als die Hauptsprache zu verwenden, aber ich stimme dem überhaupt nicht zu. Das Erlernen einer anderen Sprache (und ihre Verwendung) ist ein reiner Vorteil: Sie erhalten eine andere Perspektive für die Lösung von Problemen. Es kann vorkommen, dass Sie zu jeder Zeit eine der Sprachen für bestimmte Aufgaben verwenden (wie es mir passiert ist, nachdem ich die Gelegenheit hatte, Python zu lernen und zu verwenden).


0

In dieser Situation fragen Sie nicht ständig nach einem Wechsel von JAVA zu C # und zurück, sondern entscheiden sich für C # und PHP, was wirklich keine große Sache ist.

Angenommen, Sie möchten einige WEB-basierte Aufgaben ausführen, bei denen Sie einen WAMP-Stack (Windows / Apache / MySQL / PHP) und C # verwenden. Mit C # schreiben Sie einige SOAP-basierte Dienste und verwenden dann PHP, um sie zu nutzen.

Das scheint mir völlig akzeptabel zu sein.

Jedenfalls ist es gut, mehr als eine Sprache zu kennen. Je mehr Sie wissen, desto besser. PHP / C # / Java / Python / Javascript-Bibliotheken [JQuery zum Beispiel]. Sei so vielen Menschen wie möglich nützlich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.