Tut es weh, Teile vieler Programmiersprachen zu lernen?

37

Ich habe meine Programmierkarriere in der 9. Klasse bei BASIC begonnen. Ich habe ein bisschen BASIC gelernt, indem ich einfache Programme zum Addieren, Subtrahieren und Drucken geschrieben habe. Dann bin ich an die Universität gegangen und habe Informatik und Systemtechnik studiert. Im ersten Jahr wurde mir C beigebracht und ich habe ein gutes Kommando darüber.

Als nächstes lernte ich C ++ im zweiten Jahr. Es hat mir nur ein bisschen Wissen über OOP beigebracht. Jetzt mache ich PHP (zusammen mit HTML). Ich habe C ++, BASIC oder PHP nicht gemeistert. Ich plane jetzt, zur mobilen Entwicklung überzugehen. Aber ich habe das Gefühl, dass ich in den Sprachen, die ich gelernt habe, nicht alles abgedeckt habe.

Ist es wirklich wichtig?

Fuddin
quelle

Antworten:

50

Wir alle lernen nur ein bisschen Programmiersprache. Ich würde die Sprache nur betrachten Implementierer diejenigen, die mit 10 von 10 in der Kenntnis einer Sprache.

Das Erlernen mehrerer Sprachen und Paradigmen ist die einzige Möglichkeit, einen "Geschmack" für das zu entwickeln, was Sie mögen und nicht mögen. Wenn du nur eine Sprache gelernt hättest, könntest du nicht einmal wirklich entscheiden, ob es dir überhaupt gefällt oder nicht.

Du machst es tatsächlich richtig. Sie werden in der Lage sein, die wichtigsten Grundlagen, die Sie jeweils gelernt haben, wiederzuverwenden, während Sie sich mit verschiedenen Syntax-, Bibliotheks- und Frameworks vertraut machen.

brian
quelle
16
Diese Antwort gefällt mir, außer dass sie weniger "das ist, was Sie mögen" und eher "das richtige Werkzeug für den Job" ist. Niemand sollte die gleiche Sprache verwenden, um jedes Problem zu lösen. Das würde einen schlechten Softwareentwickler machen. Jede Sprache und jedes Paradigma hat Vor- und Nachteile.
user606723
1
Angesichts der Tatsache, dass Compiler und Interpreten Fehler aufweisen, glaube ich nicht, dass es für die meisten Sprachen menschlich möglich ist, 10 zu erreichen.
Jmoreno
6
Ich glaube nicht einmal die Leute, die C ++ - Compiler schreiben, verstehen C ++. Individuell meine ich. Natürlich müssen sie gemeinsam die gesamte Sprache verstehen, aber ich glaube nicht, dass es eine einzige Person auf diesem Planeten gibt, die alles versteht. Tatsächlich sind sich die Ausschussmitglieder in der Regel ziemlich klar darüber, dass sie alle nur ihr eigenes Fachgebiet verstehen. Ähnliches gilt für Java: Martin Odersky sagte kürzlich, dass er glaubt, dass es nur drei Menschen auf der Welt gibt, die Wildcards verstehen. Und aus dem Ton der E-Mail habe ich den Eindruck gewonnen, dass er sich nicht eingeschlossen hat
Jörg W Mittag
2
in dieser Gruppe, obwohl er eigentlich entworfen Java Generics (zusammen mit Phil Wadler, natürlich). Obwohl, um ehrlich zu sein, Wildcards ohne seine Zustimmung zu seinem Design hinzugefügt wurden, sogar gegen seinen ausdrücklichen Widerspruch.
Jörg W Mittag
1
@brian, vertrau mir, du musst die Sprache nicht kennen, um den Compiler implementieren zu können. Sie können die Spezifikation einfach blind in einen Code übersetzen. Aber als Ergebnis davon lernst du zumindest einige Grundlagen der Sprache - deshalb ist es meine bevorzugte Art, die neuen Sprachen zu lernen.
SK-logic am
21

Wenn Sie noch in der Universität sind, sollte es noch keine Rolle spielen, dass Sie nicht das Gefühl haben, alles in einer der Sprachen zu beherrschen, die Sie kennen. Viel wichtiger ist es, die gemeinsamen fundamentalen Theorien hinter diesen Sprachen zu verstehen . Sobald Sie die Grundlagen verstanden haben, können Sie die Details anderer Sprachen bei Bedarf lernen.

FrustratedWithFormsDesigner
quelle
5
In den ersten beiden Jahren, glaube ich, haben wir alle drei bis vier Wochen eine neue Sprache für Pascal erlernt, die die Grundlage für den Großteil unserer Projektarbeit bildete (1982-85) - einige davon waren funktionale Sprachen. Ein Teil des Ziels bestand darin, sicherzustellen, dass wir "Programmieren" von "Codieren" getrennt haben
Murph,
12

Ich glaube, das Wichtigste beim Programmieren ist, die verschiedenen Paradigmen zu verstehen .

In Ihrer Frage haben Sie die objektorientierte Programmierung (OOP) erwähnt . Wenn Sie dieses Thema beherrschen, sollten Sie in der Lage sein, es nur mit Pseudocode und im Wesentlichen einer grafischen Modelldarstellung (wie UML-Klassendiagrammen) zu erklären.

Ob Sie sich für Java, C ++ oder C # (...) entscheiden, liegt bei Ihnen oder bei dem Unternehmen, für das Sie arbeiten. Entscheidend ist jedoch, die verschiedenen Probleme zu verstehen / zu erkennen und das beste Modell zu finden, um sie zu lösen . Eine sehr wichtige Möglichkeit, Probleme bei der Programmierung zu lösen, besteht darin, die Entwurfsmuster zu verwenden, die Sie in diesem Nachschlagewerk finden .

Was eingebettete Sprachen angeht, so ist es meiner Meinung nach wichtig, die verschiedenen Probleme zu verstehen, die mit solchen Technologien verbunden sind.

In einer metaphorischen Weise würde ich das mit dem Schreiben eines guten wissenschaftlichen Buches vergleichen; Was wichtig ist, ist die Theorie, die Sie aufdecken, die Probleme, die Sie lösen können und so weiter. Ob Sie das Buch auf Englisch, Französisch oder Japanisch schreiben, ist am Ende nicht so wichtig.

Allerdings ist es auch wichtig, die Besonderheiten einer bestimmten Sprache zu kennen, wenn Sie sich auf diese Technologie spezialisieren möchten, um sie sehr effizient zu nutzen.

SRKX
quelle
2
+1 für die Paradigmen. Es ist nicht wichtig, sich auf den syntaktischen Zucker der X- oder Y-Sprache zu konzentrieren (dies ist natürlich erforderlich, wenn Sie die X-Sprache jeden Tag bei der Arbeit verwenden). Es ist nützlich, verschiedene Paradigmen zu studieren, denn sie helfen Ihnen, offener und kreativer bei der Problemlösung zu sein.
Sakisk
5

Meiner Meinung nach macht es wenig Sinn, die Sprache sehr häufig zu wechseln. Sie werden nie einen von ihnen fassen . Besonders einige wie C ++, wo einige Leute ein Jahrzehnt damit verbringen, die Sprache zu schreiben und ihren Code immer noch wie C aussehen lassen.

Wenn Sie keine Best Practices in einer Sprache schreiben können, fahren Sie nicht fort, IMO. Das bedeutet, dass die Abdeckung von mehr als einem Paar viele Jahre, wenn nicht Jahrzehnte dauern wird.

DeadMG
quelle
5

Ich denke, dass es nicht schaden wird, ein bisschen viele verschiedene Sprachen zu lernen, aber zur gleichen Zeit sollten Sie mindestens ein oder zwei gründlich lernen.

Giorgio
quelle
3

Ich habe während meiner Karriere viele Sprachen verwendet, wie AMOS Basic, Java, C ++, PHP, VB6, Delphi usw. Heute benutze ich C #, JavaScript, Ruby und einige Clojure bei der Arbeit und habe auch mit Pyhton, Erlang, Common Lisp und Schema.

Aber in diesem Herbst wollte ich einen speziellen Weihnachtskalender für meinen Blog erstellen und entschied mich, mich mit einem bestimmten Problem in 24 weiteren Sprachen vertraut zu machen und es zu lösen. Dies war eine großartige Erfahrung, ich habe viel gelernt, und ich kann es nur empfehlen, dies zu tun, wenn Sie über Programmiererfahrung verfügen.

Meine Antwort an Sie lautet: Lernen Sie ein paar Sprachen sehr gut (sie sollten sehr unterschiedlich sein), aber stellen Sie sicher, dass Sie viele probieren und sich mit ihnen vertraut machen.

Heute ist es wichtig, sowohl OOP als auch FP (Functional Programming) gut zu kennen, und Sie sollten sich sowohl in einer sehr statischen als auch in einer sehr dynamischen Sprache wohlfühlen.

PS: Mein Blog ist auf Norwegisch, aber wenn Sie die Liste der Sprachen sehen möchten, die ich behandelt habe, können Sie hier nachsehen .

Torbjørn
quelle
2

Ich lerne, was ich in einer bestimmten Sprache lernen muss, wenn ich etwas Neues lernen möchte. Der "Auslöser", der mir sagt, dass ich mich eingehender mit einer Sprache befassen muss, ist, dass ein bestimmtes Stück Code hässlich oder ungeschickt aussieht, unerreichbar erscheint oder schwierig zu testen oder zu kommentieren ist. Oft deuten diese Auslöser auf einen Mangel an Kenntnissen über eine bestimmte Programmiersprache, einen bestimmten Stil, eine bestimmte Datenstruktur usw. hin.

David Pointer
quelle
2

Das Erlernen mehrerer Programmiersprachen ist eine gute Praxis und heutzutage erforderlich. So oft kann man nicht immer die Sprache seiner Wahl für alles verwenden.

Die Vorteile, zu sehen, wie andere Sprachen Dinge tun, werden Ihnen als Programmierer helfen. auch wenn gelegentlich , wenn Sie springen um Sie syntaktische Fehler machen (zB für Ungleichheit überprüft !=, ~=oder <>). Sie sollten jedoch vorsichtig sein, um mehr als nur die Syntax einer Sprache zu lernen, sondern auch Best Practices innerhalb einer Sprache sowie allgemein gute Kenntnisse in der Softwareentwicklung. Wenn Sie C und dann C ++ gelernt haben, sollten Sie sicherstellen, dass Sie beim Schreiben von C ++ - Code den Stil von C ++ haben (und nicht nur C mit ein paar neuen Schlüsselwörtern. Das heißt, Sie haben mehrere Klassen / Objekte, bevorzugen Referenzen / intelligente Zeiger über rohe Zeiger usw.

Dr. Jimbob
quelle
1
Beginnen Sie nicht mit If x <b> = </ b> 5 Then. Ich muss meinen gesamten C-Code etwa eine Woche lang überprüfen, nachdem ich alles gepflegt habe, was mit BASIC zu tun hat.
user606723
2

es ist gut, zumindest Sprachen aus verschiedenen Programmierparadigmen zu lernen! Prozedurale, deklarative, funktionale, objektorientierte, prototypische und dynamische Sprache - jede Programmierklasse bietet einen eigenen Einblick in die Organisation und Lösung eines Problems. Schließlich entdecken Sie ein oder mehrere Paradigmen, mit denen Sie am produktivsten und zufriedensten sind, und verwenden sie.

rgordon0
quelle
2

Definitiv nicht. Natürlich möchten Sie auch sicherstellen, dass Sie verschiedene Arten von Sprachen lernen. Das Erlernen von C # und Java wird Ihren Geist nicht wesentlich erweitern, das Erlernen von Java und Haskell jedoch.

Lesen Sie das Buch Sieben Sprachen in sieben Wochen , in dem Sie eine Einführung in Ruby, IO, Scala, Erlang, Prolog, Clojure und Haskell erhalten. Wenn Sie Sprachen mögen, werden Sie dieses Buch lieben.

Zachary K
quelle
1
Das Erlernen von C # nach Java kann aufgrund der funktionalen Programmierung (und anderer fehlender Java-Funktionen) zu einer Erweiterung Ihres Denkvermögens führen. Aber wenn es nur zum Lernen ist, wird Haskell wahrscheinlich viel besser sein, weil es so rein funktional ist.
Svick
1

Nun, C und C ++ schaden Ihnen bei der mobilen Programmierung nicht. Sie können beide mit Cocoa Touch oder dem Android NDK verwenden, und manchmal müssen Sie für die Leistung. Manchmal möchten Sie auch, weil Sie Code schreiben möchten, der auf mehreren Plattformen ausgeführt wird. In diesem Fall können Sie unter der Annahme, dass Sie nicht nur ein Framework eines Drittanbieters verwenden, Ihre App in C / C ++ schreiben und plattformspezifische Wrapper für erforderliche native Elemente kompilieren (z. B. die einzige Möglichkeit, einen OpenGL-Kontext zu erhalten) auf dem iPhone wird die native CAEAGLLayer-Klasse verwendet).

Je mehr Werkzeuge Sie in der Schublade haben, desto mehr Möglichkeiten haben Sie, die Arbeit zu erledigen. Sie werden feststellen, dass Sie bestimmte Aufgaben bevorzugen, da Sie sich auf verschiedene Arten von Aufgaben spezialisiert haben. Wenn Sie nur UI-Sachen machen, ist C möglicherweise nicht Ihr absoluter Favorit. Ich würde mir mehr Gedanken über die Dinge machen, die ich machen wollte, und dann jedes Werkzeug lernen, das ich brauchte, um sie zu machen.

Rab
quelle
1

Eigentlich ist es so nützlich, als würde man ein bisschen Französisch, Spanisch, Englisch, Arabisch, Hindi und Chinesisch lernen, ohne einen von ihnen zu kennen.

Mehrdad
quelle
6
Ich habe keine Ahnung, was Sie damit sagen wollten.
Svick
Sie stellen fest, dass die meisten von uns nicht einmal ihre Muttersprachen "gut" können, oder?
Spidey
1

Im Gegenteil, ich denke, es tut weh, wenn ich keine neue Programmiersprache lernen kann. Dies kann an Zeitmangel oder anderen Gründen liegen. Soweit ich weiß, lieben es Programmierer / Softwareentwickler, die Sprachen herauszufordern, bessere Dinge / Produkte zu entwickeln, und wenn Sie feststellen, dass Sie immer dasselbe tun, fühlen Sie sich nicht gut. Sie möchten also eine neue Herausforderung, eine neue Sprache, etwas Neues lernen und mehr Produkte daraus machen.

Ich finde es aufregend, neuen Sprachen, neuen Bibliotheken, neuen Ansätzen und neuen Technologien zu folgen. Aber ich habe nicht die Zeit, um alle zu bekommen, und die Leute sind möglicherweise nicht in der Lage, immer tief genug zu gehen. Es tut also weh, nicht mehr zu lernen; tut aber nicht weh mehr zu lernen.

Yasin Okumuş
quelle
0

Ich bin mit Brian, FrustratedWithFormsDesign und SRKX einverstanden, aber ich möchte hinzufügen, dass dies während der Universität der wünschenswerte Weg ist, um ein guter Profi zu werden, indem Sie Ihre Kenntnisse mit mehreren Programmiersprachen und Paradigmen erweitern.

Es ist sehr unwahrscheinlich, dass Sie als ausgebildeter Programmierer das College verlassen. Das Programmieren ist ein hartes Handwerk, und Sie müssen die Jahre in der Branche damit verbringen, mit guten Programmierern zusammenzuarbeiten, an guten Schulungsprogrammen und Community-Meetings teilzunehmen. Meistens müssen Sie sich mit den Handwerksproblemen auseinandersetzen und scheitern, bis Sie lernen, wie man es beherrscht es.

Das Erlernen mehrerer Paradigmen, mehrerer Sprachen und das Lösen der vielfältigen Probleme in unserer Region bieten Ihnen eine gute Grundlage, um das Handwerk selbstständig zu erlernen und gleichzeitig als Profi in der Branche zu agieren.

Sie können an einem Compiler-Kurs teilnehmen, kommen aber nicht als Sprachdesigner, Schöpfer oder sogar als Compiler-Entwickler heraus. Sie erhalten die Schritte, die Prozesse und die Probleme sowie die grundlegenden Lösungen, und das gibt Ihnen den Vorteil, dieses Wissen an ein breites Spektrum von Problemen anzupassen.

Spidey
quelle
0

Kurze Antwort: Nein.

Lange Antwort: Ein Großteil der Arbeit eines Programmierers, Softwareentwicklers oder Designers ist von einer bestimmten Sprache unabhängig, hängt jedoch stark von einer bestimmten Methodik ab. Bei der objektorientierten Programmierung geht es zum Beispiel vor allem darum, wo sich Dinge im Arbeitsspeicher und zur Laufzeit befinden, wie zugänglich sie sind und wie sie für eine spätere Verwendung zur Verfügung stehen (Vererbung und Kapselung). Die Implementierungen sind unterschiedlich, z. B. Java mit einem geerbten Klassenobjekt der obersten Ebene, ob es Ihnen gefällt oder nicht, und C ++ ohne eines, das Sie nicht angeben.

Viele Sprachen haben gemeinsame Merkmale (und viele gehen auseinander). Die Syntax unterscheidet sich natürlich und es ist schwieriger, wenn Sie ganz unterschiedliche Paradigmen wie Imperativ und Funktional miteinander vergleichen. Die Verarbeitung von Zeichenfolgen ist jedoch überall weitgehend identisch, sobald Sie keine weiteren Fragen zu Syntax, Index und Wandlungsfähigkeit mehr haben. Jede Sprache mit statischer Typisierung verfügt im Allgemeinen über eine Methode zum Umsetzen und Ausüben von Zwang. Wie und wann Sie dies tun können, hängt jedoch vom Sprachdesigner ab.

Die Sprache ist das Werkzeug. Sie stecken einfach mehr Werkzeuge in Ihren Gürtel. Aber das Werkzeug ist nur so gut wie der Handwerker, der es einsetzt.

Nun, wie viele Sie lernen, ist eine persönliche Entscheidung. Ich würde niemals eine Sprache lernen, um eine neue zu lernen. Jede Entscheidung, eine neue Sprache zu lernen, wird durch eine Kursanforderung (musste im letzten Jahr für eine einzelne Klasse js, php und R lernen), eine bestehende Projektanforderung (wenn 90% der Arbeit zuvor in Perl 6 erledigt wurden), veranlasst Sie werden eingestellt, die verbleibenden 10% später) oder ein anwendungsspezifischer Vorteil (R over say Java kombiniert mit einer zuckerhaltigen Bibliothek für statistische Analysen).

Das heißt, Sie möchten wissen, was da draußen und verfügbar ist. Mein College unterrichtete einen Kurs zu diesem Thema, Programming Language Concepts . Es war ein umfassender Überblickskurs, kein strenger Mathematik- oder Codierungskurs, in dem die Grundlagen dessen behandelt wurden, was als praktisch und nicht als theoretische Informatik angesehen werden könnte. Es war ein großartiger Kurs und ich wünschte, es wäre etwas gewesen, das im 1.-2. Jahr statt im 3.-4. Jahr angeboten wurde. Der Text lautete Konzepte von Programmiersprachen . Das heißt nicht, dass Sie dieses Buch lesen müssen, aber das würde sicherlich Ihren Horizont erweitern.

Justin Reeves
quelle
0

Nun, so wie ich das sehe, musst du nicht jedes bisschen Sprache lernen. Versuchen Sie jedoch, grundlegende Funktionen zu erlernen, die auch in anderen Sprachen erforderlich sind.
Zum Beispiel sind OOPS-Konzepte in allen Sprachen erforderlich, sei es in Java , PHP oder einer anderen Sprache.
Speicherzuweisungskonzepte sind in vielen Programmiersprachen ziemlich ähnlich. Diese Art von Themen sollten Sie sich niemals entgehen lassen.
Jede Sprache hat Grammatik und Regeln. Gleiches gilt für Programmiersprachen. Dennis Ritchie selbst akzeptierte diese Tatsache. Man sollte also die Grammatik dieser Sprache lernen.
Ich sehe es aber so, dass man die nicht alltäglichen Faktoren zwischen zwei Programmiersprachen lernen muss. Mit ihnen können Sie identifizieren, welche Sprache für was steht. C ++ ist alles grundlegende OOP (Object Oriented Programming). Wenn Sie also die OOP- Konzepte kennen, lernen Sie die Grammatik, die Sie auch in PHP und Java sehen werden.
Mein Lernfluss war:
Visual Basic 5 (teilweise) -> HTML 2.0 (teilweise) -> C (teilweise) -> CPP (teilweise) -> Java (teilweise)
und dann habe ich wieder C-Sprache gelernt , gefolgt von C ++ gefolgt von JAVA ( Vervollständigen Sie diese Zeit), dann bin ich zu Android gewechselt, da ich mit Java und XML vertraut war(teilweise) und es in der Zwischenzeit gelernt. Der erste Versuch hat mir weniger beigebracht, aber im zweiten Versuch musst du alles lernen, was dir beim nächsten Mal helfen wird.

Sandeep Pareek
quelle
Dieser Beitrag ist ziemlich schwer zu lesen (Textwand). Hätten Sie etwas dagegen bearbeiten sie in eine bessere Form ing?
gnat