Ab wann 2. Programmiersprache lernen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ll9
User
Beiträge: 34
Registriert: Samstag 9. Februar 2013, 15:13

Hallo,

ich bin wohl noch recht weit weg davon, eine zweite Programmiersprache zu lernen. Ich habe mich jedoch schon öfters gefragt, ab wann es denn sinnvoll wäre eine zweite Programmiersprache zu lernen. Auch wenn man bei der ersten Programmiersprache noch einiges zu lernen hätte, könnte es doch Sinn machen eine zweite zu lernen, da sich diese im besten Fall gegenseitig ergänzen, oder etwa nicht?
Was haltet ihr zu dem Thema? Ab wann würdet ihr es als sinnvoll einschätzen eine zweite Programmiersprache zu lernen? Bin schon gespannt auf eure Antworten.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo,

es kommt darauf an, was für eine Sprache du lernst. Wenn du Python und die dahinter stehenden Konzepte noch nicht richtig beherrscht, dann ist eine weitere imperative und objektorientierte Sprache zunächst recht sinnlos. Außer, du benötigst diese für einen bestimmten Zweck oder willst einfach nur eine andere Sprachen kennenlernen. Ganz grob gesagt: kennst du eine Sprache aus der Ecke, so kennst du alle.

Durchaus lohnenswert sind Sprachen aus anderen Richtung, zum Beispiel funktionale oder deklarative Ansätze. Da geht es um ganz andere Konzepte, welche dir eine andere Sichtweise auf Probleme liefern. Schau dir einfach mal Haskell oder Prolog an. Wahrscheinlich wirst du überrascht sein, da dort ganz andere Denkansätze verwendet werden.
Das Leben ist wie ein Tennisball.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ich finde es kontraproduktiv eine zweite zu lernen bevor man nicht die erste in und auswendig kennt. Wenn einem nämlich da Mängel auffallen oder Gebiete die nicht zufriedenstellend gelöst werden, kann man über eine weitere nachdenken. Bspw. wurde bei mir an der Uni C++ und Java in einem Durchgang als OOP beigebracht und Haskell als funktionale. Ich hatte vorher Batch/Pascal/C/Delphi/C++ Kenntnisse war und bin immer noch abgeschreckt vom fürchterlichen Syntax, von den Ideen der 80iger, vom Weg der Umsetzung. Ging nicht nur mir so. Drum greife ich noch heute extrem ungern dazu obwohl es einige Vorteile gibt.
Den Vorteil den ich mit Python sehe nach meiner langer Odyssee, neue Konzepte und Herangehensweisen die einen Java Programmierer deutlich machen wie umständlich einiges doch war. Da Python vieles verbindet ist es schwer was konkret vorzuschlagen. Deshalb würde ich das vom Zweck abhängig machen, willst du Mobil/Enterprise kommst du an Java nicht vorbei.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

Eine zweite Sprache kann einem aber auch helfen die erste besser kennen zu lernen, zum Beispiel weil man verschiedene Ansätze vergleichen kann, und einem Sachen über die jeweils andere Sprache bewusst werden, die man sonst nicht gesehen hätte. Das heisst eine zweite Sprache kann dazu führen das man die Erste erst wirklich in und auswendig kennenlernt.

Zur Wahl der nächsten Sprache würde ich mich im Grunde beiden Vorrednern anschliessen — entweder eine möglichst unterschiedliche Sprache, um tatsächlich den Horizont zu erweitern und nicht nur andere Syntax und ähnliche Idiome zu verwenden — oder eine Sprache die als Ergänzung für ein Python-Projekt gebraucht wird, also zum Beispiel JavaScript wenn man mit Python eine Webanwendung schreiben möchte, oder C wenn man eine Erweiterung in C schreiben möchte oder auch nur wenn man eine Bibliothek mit `ctypes` einbinden möchte.
Chiller Royal
User
Beiträge: 8
Registriert: Freitag 7. März 2014, 16:49

Hi,
also ich kann nur von meiner eigenen Erfahrung berichten.
Habe jetzt ein Semester in der Uni begeistert mit Java gearbeitet, obwohl das nur ein kleines Praktikum war und wir nicht wirklich tief in die Sprache eingedrungen sind. Ich würde mich also selber noch als Java-Anfänger sehen. Dennoch bin ich gerade dabei mich privat in Python einzuarbeiten.
Im moment habe ich großen Spaß daran weil ich vieles aus Java nun noch einmal durchgehe und besser verstehe und ich Pythons genalität durch meine Javavorkentnisse sehr zu schätzen lerne.
Außerdem komme ich in Python sehr viel schneller vorran da ich vieles ja schon kenne und mir nur einprägen muss wie es da gemacht wird.

Nachteil ist allerdings das ich wohl bald auf einem Niveao sein werde auf dem ich beide Sprachen wohl etwa gleich gut, aber keine der Sprachen wirklich gut beherschen werde. Da wär ich in der Zeit die ich nun in Python stecke wohl in Java ein ganzes stück weiter gekommen.

Ist also auch eine Sache ob man lieber schnell in einer Sprache weit kommen möchte oder lieber sich viele unterschiedliche Konzepte ansehen und hier und da mal reinschnuppern möchte. Bei mir eher lezteres.

LG
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich denke da würde ich BlackJack zustimmen: manchmal ist es notwendig eine weitere Sprache zu lernen, weil sich das Problem aus Python heraus nicht erschlagen lässt, wie etwa Client-Side JavaScript-Lösungen. Eventuell auch Mobile-Apps, für die Python eher wenig nützlich ist. Was ist wenn man aber solche Probleme nicht hat?

Man sollte sich für den Anfang, denke ich, nicht verzetteln. Damit meine ich nicht dass man unbedingt ein Python-Profi werden muss bevor man sich andere Sprachen ansieht. Aber man sollte denke ich solide Kenntnisse der Sprache haben, damit das lernen einer weiteren Sprache sich nicht nur in Syntaxunterschiede verzettelt sondern auch ein Verständnis für die jeweiligen Vor- und Nachteile da ist. Generall ist das lernen einer zweiten, dritten, fünften und neunten Sprache generell eine sinnvolle Idee, weil man dann oftmals neue Wege sieht Probleme zu lösen. Mein Ausflug nach Scheme hat auch meine Art Python-Code zu schreiben verändert.

Ist die Frage: wozu will man eine weitere Sprache lernen? Um berufliche Vorteile zu haben? Um mehr über Programmierung zu erfahren? Um sich selbst eine Challenge zu stellen? Für jede dieser Alternativen gibt es die passenden Sprachen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
lunar

darktrym hat geschrieben:Ich finde es kontraproduktiv eine zweite zu lernen bevor man nicht die erste in und auswendig kennt.
Das kann ich so überhaupt nicht nachvollziehen. Ich habe mit zwei Sprachen gleichzeitig programmieren gelernt, und fand das nicht sonderlich unproduktiv. Im Gegenteil, man lernt von Anfang an über den Tellerrand hinauszublicken, und von den syntaktischen und semantischen Feinheiten einzelner Sprachen auf allgemeinere Konzepte zu abstrahieren.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Die meisten Programmiersprachen bestehen aus den gleichen Grundkenntnissen, so würde ich sagen lohnt es sich erst, wenn man diese kapiert hat. Dadurch wird der Einstieg in eine neue Sprache durchaus flüssiger und angenehmer verlaufen als in die Erste.
Wenn man von Sprachen wie HTML, CSS und Co. absieht, würde ich sagen lohnt sich das erlernen einer zweiten Sprache erst, wenn man die Erste verbessern, vergänzen oder ersetzen möchte.
Z.B.:
- Erweiterung deines Moduls mit C für höhere Geschwindigkeit
- Verwendung von Modulen aus anderen Sprachen
- Hardware Programmierung
- unabhängige EXE Dateien

Hängt natürlich auch davon ab, warum Python deine erste Sprache ist. Duales Lernen und ggf. verknüpfen hört sich im wesentlichen nicht schlecht an.
BlackJack

@Dami123: Hast Du schon mal in Haskell, Prolog, oder Factor programmiert? Ich vermute mal nicht, denn die sind jeweils komplett anders als das was man so von imperativ und objektorientiert gewohnt ist.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Hab mit der Antwort gerechnet und deshalb "die meisten" hinzugefügt ;)
Selber in diesen Sprachen programmiert hab ich nicht, denke aber es gibt dort auch Datentypen und Formen von Abfragen, Schleifen?
Benutzeravatar
Balmung
User
Beiträge: 44
Registriert: Sonntag 17. März 2013, 18:36

Schleifen in funktionalen Sprachen? Wohl eher weniger ;-)
»Honk Honk«
BlackJack

@Dami123: Teilweise total andere Typsysteme und bei Haskell und Prolog auch keine Schleifen. Factor hat Worte für Schleifen, die werden aber selten verwendet, weil Kombinatoren, so etwas wie Funktionen höherer Ordnung, bevorzugt werden.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich vermute, Dami123 meinte eher, ob es eine wie auch immer geartete Form von Iterationen, Ausführungsbedingungen, etc gibt.
BlackJack

@snafu: Wenn Du das als Grundlage nimmst sind ja alle Sprachen irgendwie gleich. Und es wäre egal ob man in C, Haskell, Java, oder Factor programmiert, weil die sich ja gar nicht gross unterscheiden. Tun sie aber.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

BlackJack hat geschrieben:Wenn Du das als Grundlage nimmst sind ja alle Sprachen irgendwie gleich.
Dann lohnt es sich dem Starterpost zufolge eine zweite Programmiersprache zu lernen, wenn man die grundlegenden Grundlagen verinnerlicht hat.
Diese sollten dann, egal mit welcher Sprache man beginnt, verwendbar und hilfreich beim lernen einer weiteren Sprache sein.

Ob es nun funktional oder objektorientiert sein darf, hängt von der Aufgabenstellung ab. Für meinen Fall ist die OOP zu 90% die geeignetste Vorgehensweise.
BlackJack

@Dami123: Ähm, doch aber nur wenn man das als Grundlage nimmt, was IMHO eine unsinnige Annahme ist, das alle Sprachen irgendwo gleich sind. Das ist zwar wahr, die sind alle turingvollständig, aber das ist irgendwie als wenn man sagen würde ein Hund und ein Stein sind aus Atomen zusammengesetzt, also kann ein Geologe wenn er die Grundlagen kennt eigentlich auch ganz einfach Tierarzt sein, es sind ja die gleichen Grundlagen, nur die Details sind ein bisschen anders. ;-)

Ich hatte zum Anfang des Studiums schon ein paar Sprachen (verschiedene BASIC-Dialekte, Assembler (6510 und x86), Pascal, C) hinter mir und behaupte einfach mal ich war ein halbwegs brauchbarer Programmierer (für damalige Verhältnisse). Haskell hat mein Selbstbewusstsein damals ganz schön erschüttert, weil ich das Gefühl hatte wieder komplett bei Null anzufangen. Klar hatte man auch Datentypen, die denen in den Sprachen die ich kannte nicht unähnlich waren, aber alles andere hat radikales Umdenken erfordert.
Dami123
User
Beiträge: 225
Registriert: Samstag 23. Februar 2013, 13:01

Bin schon auf den Zeitpunkt gespannt, wenn ich mich dazu entscheide Haskell o.ä. auszuprobieren.
Kann jetzt schlecht weiteres zu diesem Thema beitragen und verinnerliche einfach für die Zukunft mich auf eine 180° Wende vorzubereiten :D
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Ich find ja ein grundlegendes Tutorial kann man immer mal machen. Das kostet nicht zu viel Zeit. Und dann sieht man schon, ob das Interesse geweckt wird und man sich dem gewachsen fühlt, die Kenntnisse zu vertiefen.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Antworten