Wie viele Programmiersprachen soll ein Programmierer beherrschen? [geschlossen]

21

Spezialisieren sich die meisten Programmierer auf einen einzelnen Stapel, lassen andere Dinge übrig, oder beherrschen sie mehrere Sprachen gleichzeitig? Wenn es mehr als eins ist, wie viele sind Standard?

Mit Experte meine ich mehr als nur die Syntax einer Sprache zu kennen - ein Experte kennt sich mit Standardbibliotheken, -werkzeugen, -umgebungen und -syntax so gut aus, dass er nicht-triviale Programme schreiben kann, ohne ständig nachschlagen oder Bücher / Tutorials lesen zu müssen.

Blaubeerfelder
quelle
2
Ich glaube nicht, dass es eine objektive (oder sogar subjektive) Antwort auf diese Frage gibt. Je mehr Sie ein Experte sind, desto besser ist es für Sie - desto breiter ist Ihre Perspektive. Meinten Sie "In wie vielen Programmiersprachenparadigmen sollte ein Programmierer idealerweise ein Experte sein?"
Talonx
6
Ich bin mit Ihrer Definition von Experte nicht einverstanden. Für mich ist es weniger wichtig , ob Sie Bibliotheksfunktionen nachschlagen müssen oder nicht, als ob Sie in dieser Sprache idiomatischen Code schreiben können. Wenn Sie in einer Sprache denken können, sind Sie zumindest fast ein Experte.
Chinmay Kanchi
1
Wie denken Sie in einer Sprache, wenn Sie die meisten Ihrer Wörter in einem Wörterbuch nachschlagen müssen, um zu wissen, was sie bedeuten?
blueberryfields
1
@blueberryfields: Fluency in einer Sprache ist viel mehr als nur Wortschatz und über die Grundlagen, Wortschatz ist ein kleiner Teil davon. Es ist nicht gut zu wissen, dass eine Funktion existiert, wenn Sie mit diesem Wissen nichts Intelligentes anfangen können. Es ist viel einfacher, nur die Funktion Lookup als um herauszufinden , wie etwas Intelligentes damit zu tun. Ich würde sagen , dass die Dokumentation gut genug , um zu wissen , zu schnell zu wissen , wo für eine bestimmte Funktion zu suchen , wenn es vorhanden ist genug Bibliothek Wissen. Danach werden erinnern Sie diejenigen genau , dass Sie vage diejenigen verwenden und denken Sie daran , dass Sie dies nicht tun.
Aaronasterling
2
@blueberryfields: Je nach Sprache / Plattform , ein wenig Wissen kann eine gefährliche Sache sein . Was ich meine ist: Wenn eine Person behauptet, viele Bibliotheksfunktionen auswendig zu kennen und die Dokumentation nicht lesen zu müssen, würde ich erwarten, dass diese Person auch alle Rückgabewerte, Ausnahmebedingungen und Fallstricke / Vorbehalte à la Raymond Chen kennt auswendig und der Lage sein , ein Buch und einen Vortrag zu Microsoft / Google usw. Kurz kommt , dass die Person endet machen viele lustige kleine Fehler zu schreiben.
rwong

Antworten:

33

Der Hauptvorteil der Kenntnis mehrerer Sprachen besteht nicht darin, sie direkt zu schreiben. Alle anderen Dinge gleich sind, würde ich eher mit einem C # Programmierer arbeiten, die auch C, Python und Lisp (zum Beispiel) kennt als derjenige, der immer nur in C # gehackt. Es ist nicht, dass mehr Sprachen zu wissen, besser ist, ist es, dass über Probleme auf mehreren Ebenen denken zu können und aus verschiedenen Perspektiven wirklich hilfreich ist.

Eine Programmiersprache, die Ihre Einstellung zur Programmierung nicht verändert, ist nicht wissenswert. -Alan Perlis

Es geht nicht darum, eine weitere Sprache anzukreuzen oder sie in Ihren Lebenslauf aufzunehmen. Sie müssen nur die zugrunde liegenden Konzepte gut genug verstehen, um sie zu programmieren und den vollen Nutzen daraus zu ziehen. Sie erhalten, dass nicht ein grundlegendes Verständnis der Syntax aus mit.

Die direktere Antwort lautet "es kommt darauf an".

Bei größeren Unternehmen sind Sie erwartet / erlaubt sich zu spezialisieren, aber wie ich oben gesagt, ich glaube, es ist immer noch Nutzen zu verstehen Dinge über Ihr ein Lieblingswerkzeug.

An kleineren Orten, kann man wirklich nicht mit , dass wegzukommen. Wenn nichts anderes, müssen Sie Ihre App in der Regel nicht nur warten, sondern auch erstellen. Wahrscheinlich verwenden Sie nicht die gleichen Sprachen für das Durchlaufen von Protokollen / Mungodaten wie für das eigentliche Erstellen Ihrer App. Ich denke, Sie könnten technisch davonkommen , eine einzige Sprache zu beherrschen, aber der Vorteil einer leistungsfähigen, stark typisierten (oder zumindest durchsetzungsfähigen), wahrscheinlich kompilierten Sprache ist das A und O, und einer Skriptsprache für die Wartung / Setup / Scripting-Aufgaben scheinen ziemlich groß zu sein. Ich würde nicht wollen , ohne es zu tun, sicher.

Inaimathi
quelle
3
Ja , es erweitert meinen Horizont als auch - Denken in vielen Sprachen ein Problem in Angriff zu nehmen
maz3tt
3
+1 zu allen Inaimathi sagte. Denken Sie an eine Programmiersprache als Werkzeug. Ja müssen wir unser Tool wissen sehr gut , aber wenn Sie nur wissen , wie man einen Hammer verwenden dann wie ein Nagel aussieht alles könnte
Liviu T.
14

Sie haben eine sehr interessante Frage:

Ich denke nicht, dass jeder Programmierer sollte ein „Experte“ auf einer bestimmten Sprache sein. glaube, meine ist, dass als Programmierer wir Experten sollen bei der Programmierung sein, entwerfen Algorithmen, in klaren Schritten denken, aber eine Programmiersprache ist etwas, dass Sie nur lernen.

Ein „guter“ Programmierer, durch gutes meine ich, dass Entwicklungsprojekte Griff ohne hinter dem klassischen zu Erschrecken „Ich habe noch nie mit dem vor gearbeitet“, sollte die Sprache in weniger als 5 Arbeitstagen lernen. Sie lernen Best Practices, Tools und Bibliotheken, vor allem aus zwei Möglichkeiten, 1: Lesen und 2: arbeiten. Entweder Sie prallen mit dem Kopf gegen den Code oder lesen ein paar Bücher.

In ein paar Jahren nach der Premisse von „Gute Programmierer schreiben Sie einfach Code“ kein C # -Code oder C ++ Code oder Java-Code, werden Sie feststellen, dass Sie nach lernen, Programme zu entwickeln, die Sprache und die techonologies sind nicht so wichtig. Sicher, Sie wissen, wie man sich in C # besser bewegt als in PHP, aber wenn Sie es gut gelernt haben, finden Sie sich durch Python zurecht, wenn Sie müssen.

Hoffe meine Ideen gefallen euch!

David Conde
quelle
+1 "Gute Programmierer schreiben nur Code ... die Sprache und die Technologien sind nicht so wichtig."
Orbling
Thks, und Sie haben es richtig gemacht: 11 Jahre und zählen ... :)
David Conde
3

Eins, aber das heißt nicht, dass Sie die anderen vernachlässigen können. Sie müssen genug wissen, um zu rechtfertigen, warum Sie sie nicht verwenden, oder Ihre Einschränkungen kennen, damit Sie gegebenenfalls um Hilfe bitten können.

JeffO
quelle
3

Ich denke, es hängt wahrscheinlich von Ihrer Persönlichkeit ab. Es gibt Leute, die sich gerne in die Ecken und Kanten eines Themas vertiefen, und andere, die sich gerne einen umfassenden Überblick verschaffen. Sie müssen wahrscheinlich herausfinden, welche Art von Persönlichkeit Sie sind. Ich stelle nicht eins übereinander, jedes hat seinen Nutzen.

Als Ersterer wirst du der Experte, der Guru, der Spezialist sein. Als letztere werden Sie allgemeiner und möglicherweise in einer Vielzahl von Situationen eingesetzt, gehen aber möglicherweise nicht so tief in ein Thema ein.

Harald Scheirich
quelle
2

Eins. Aber du solltest verdammt gut darin sein.

Satanicpuppy
quelle
2

Eins

Der vor dir.

Steven A. Lowe
quelle
1
+1 Die Anzahl der Sprachen, in denen Sie Experte sein müssen, entspricht mindestens der Anzahl, die Sie verwenden müssen. ;-)
Orbling
1

Wie Joel im SO-Podcast sagte, ist es besser, viele verschiedene Sprachen zu kennen und zu wissen, wie und wann die richtige Sprache für die Aufgabe verwendet werden muss. Es gibt Dinge, die Sie in einer Sprache viel schneller erledigen können als in einer anderen. Ich denke, es wäre gut, zum Beispiel eine imperative und eine funktionale Sprache zu kennen. Oft trainiert das Erlernen einer härteren oder esoterischeren Sprache Ihr Gehirn, um insgesamt ein besserer Programmierer zu sein.

Chiurox
quelle
1

Keine, da es wahrscheinlich einige Programmierer gibt, die in keiner Sprache Experten sind, aber die vielfältige Umgebung, die sie haben, genießen und je nach den Umständen verschiedene Sprachen verwenden, da einige einige serverseitige Technologien wie PHP und ASP.Net in C # kennen. .Net oder VB.Net oder Java, ein paar clientseitige Skriptsprachen wie JavaScript oder Flash, und dies, ohne auf die Hardware zu stoßen, die hier zum Erstellen des Webmaterials verwendet wird.

Gleichzeitig kann es einige Programmierer geben, die Experten in einem Dutzend oder mehr Sprachen sind, da sie dies die meiste Zeit ziemlich genau lernen, um in jeder Sprache so viel auf dem Laufenden zu halten.

JB King
quelle
1

Eins, aber es muss möglich sein, nicht-triviale Programme aus der realen Welt zu lesen, die von Zeit zu Zeit in einigen anderen Sprachen geschrieben wurden. In gewisser Weise ist die Sprache, in der der Programmierer Experte ist, wie seine Muttersprache, sie denken darin, aber das Lernen und Sprechen anderer Sprachen ist sehr gut, da sie zeigt, dass der Programmierer andere Denkweisen schätzen kann. Wenn sie als ihre Muttersprache in mehr als einer Sprache so fließend denken, dass ist genial.

vpit3833
quelle
1

Dies ist eine gute Frage, aber ich glaube nicht , es ist ein Standard. Normalerweise sind die Leute, wie ich gesehen habe, Experten in einer Hochsprache (C ++, Java usw.) in einer Umgebung (Windows / Linux, Mac, Solaris). Sie kennen ungefähr eine andere Hochsprache, verstehen sie aber nicht vollständig. (zB C ++, Java Leute kennen sich grob). Mit ungefähr meine ich, dass sie die Leistung einer Aufgabe in der Sprache, in der sie Experte sind, und in der anderen Sprache vergleichen können. Und dann sind sie in einigen Skriptsprachen moderat. (zB Linux-Leute kennen sich mit Bash aus, Windows-Leute kennen sich mit VBA aus, Web-Leute kennen sich mit PHP aus).
Für mich ist das grundlegende Wissen über Algorithmen wichtiger als die Sprache. Wenn Ihre Grundlagen gut sind, gibt es weniger Chancen zu Chaos in jeder Sprache auf.
Aber ja, manchmal kann es nützlich sein zu wissen, welche Sprache für welche Aufgabe besser sein könnte. zB ist der folgende Code in Pascal viel schneller als in C.

strcat (A, "Hallo"); strcat (A, "WOrld"); strcat (A, "I say hi!");

Dies liegt daran, dass Pascal die Länge des Strings an der ersten Stelle speichert und es daher einfach ist, zur letzten Stelle zu springen. In C ist die Zeichenkettenbeendigung '\ 0' und daher müssen Sie für die strcat-Operation die gesamte Zeichenkette durchlaufen.

Manoj R
quelle
0

Dies hängt von der Umgebung ab, in der Sie programmieren. Bei einem früheren Job war der Großteil meiner Arbeit in Perl. Während meiner Zeit dort wurde ich ziemlich kompetent darin. Jetzt arbeite ich an einem Ort mit Legacy-Programmen in drei Sprachen, deren Syntax ich kaum kenne. Ich werde sie voraussichtlich zusätzlich zu meiner Arbeit an neuen Projekten beibehalten. Ich beherrsche jetzt weniger eine Sprache, aber ich glaube, ich habe ein besseres Gefühl für das Programmieren . Ich habe gelernt, abstrakter zu denken, zuerst das Gesamtbild zu sehen und dann die Syntax und die Bibliotheken nachzuschlagen, um die Details auszufüllen.

Bruce Alderman
quelle