Welche Programmiersprachen könnt ihr/wollt ihr noch lernen?
-
Hallo,
ich bin immer auf der Suche nach Programmiersprachen die es sich Lohnt zu lernen.
Jetzt möchte ich gerne mal wissen welche Sprachen ihr könnt, warum ihr sie könnt und in wie fern sie euch/euer denken beeinflusst hat. (Das hört sich jetzt für nicht Programmierer ziemlich komisch an oder?)# Mein Liste #
Basic - naja irgendwie muss man anfangen
C - Ich mochte Basic nicht sehr, zeigte das es ohne GoTo geht
C++ - zeigte mir die OO
Python - zeigte mir das Programmiersprachen mit wenig Klammern gut zu lesen sind
Haskell - zeigte mir die Funktionale Programmierung + Rekursionen + wie elegant man Programmieren kann
PHP - meine erste "Online Programmiersprache" + erste DB Kenntnisse
JavaScript - hat meine OOP sehr beeinflusst
ASM - ich erlernte viel über den Computer + Optimierung + Windows
-
ne sprache lernen dauert ca. 2 wochen. ist doch völlig egal. ich lern das, was ich für ein projekt gerade brauche. ich lache über die leute, die in ihrem curriculum vitae auflisten daß sie html, xhtml, x86 assembler, php, javascript etc. können, das ist völlig wurst,.
-
asdca schrieb:
ne sprache lernen dauert ca. 2 wochen. ist doch völlig egal. ich lern das, was ich für ein projekt gerade brauche. ich lache über die leute, die in ihrem curriculum vitae auflisten daß sie html, xhtml, x86 assembler, php, javascript etc. können, das ist völlig wurst,.
ich glaube es geht ehr darum, daß man durch das erlernen einer Programmiersprache die Ideen der Programmiersprache mitlernt und diese in einer anderen Programmiersprache einsetzen kann
-
asdca schrieb:
ne sprache lernen dauert ca. 2 wochen. ist doch völlig egal. ich lern das, was ich für ein projekt gerade brauche. ich lache über die leute, die in ihrem curriculum vitae auflisten daß sie html, xhtml, x86 assembler, php, javascript etc. können, das ist völlig wurst,.
Und ich lache über Leute die behaupten, dass man eine Sprache in ca. 2 Wochen lernen kann.
-
Tim schrieb:
asdca schrieb:
ne sprache lernen dauert ca. 2 wochen. ist doch völlig egal. ich lern das, was ich für ein projekt gerade brauche. ich lache über die leute, die in ihrem curriculum vitae auflisten daß sie html, xhtml, x86 assembler, php, javascript etc. können, das ist völlig wurst,.
Und ich lache über Leute die behaupten, dass man eine Sprache in ca. 2 Wochen lernen kann.
Geht bei mir gleich. Mein Vater kam mal zu mir, weil sich bei ihm eine Frau beworben hatte. Die hatte auf der Bewerbung an die 100 Programmiersprachen aufgelistet, welche sie kann. Sie hatte überall ein paar Kurse dafür besucht und war der Meinung, sie verstehe nun 100 Programmiersprachen
@ToLearn,
Falls du noch noch ein paar interessanten Sprachen suchst, welche einem auf neue Ideen bringen sollen, wie wäre es mit:
- Eiffel (by Contract Sache)
- Erlang (Hotcode swapping und Multithreading)
- Lambda-Kalkül (mal etwas richtig abgefahrenes, zumindest in meinen Augen. Ob man es allerdings Programmiersprache nennen darf?)
- Java (hat auch ein paar interessante Konzepte und ist in meinen Augen eine super Toolsprache)Grüssli
-
Tim schrieb:
Und ich lache über Leute die behaupten, dass man eine Sprache in ca. 2 Wochen lernen kann.
haengt davon ab. wenn du 5 jahre lang java gemacht hast, dann hast du in 2 wochen 90% von C# kapiert. da kauft man sich dann nur Effective XY und lernt daraus das wichtige.
Wenn man dagegen mit neuen Konzepten konfrontiert wird, dann kann es Jahre dauern bis man sie wirklich verstanden hat.
Deshalb soll man seinen Horizont auch so stark erweitern wie moeglich
-
Shade Of Mine schrieb:
Tim schrieb:
Und ich lache über Leute die behaupten, dass man eine Sprache in ca. 2 Wochen lernen kann.
haengt davon ab. wenn du 5 jahre lang java gemacht hast, dann hast du in 2 wochen 90% von C# kapiert.
Schon klar, dass es Ausnahmen gibt. Ich denke auch Brainfuck hat man in 2 Wochen "gelernt"
Was mich viel mehr stört ist diese Verallgemeinerung.
-
Tim schrieb:
asdca schrieb:
ne sprache lernen dauert ca. 2 wochen. ist doch völlig egal. ich lern das, was ich für ein projekt gerade brauche. ich lache über die leute, die in ihrem curriculum vitae auflisten daß sie html, xhtml, x86 assembler, php, javascript etc. können, das ist völlig wurst,.
Und ich lache über Leute die behaupten, dass man eine Sprache in ca. 2 Wochen lernen kann.
Nicht jeder benötigt ein lebenlang, um ein paar Syntaxregeln zu lernen. Unbekannte Programmierparadigmen lernen dauert natürlich deutlich länger. Aber einfach nur eine Sprache innerhalb eines bekannten Paradigmas - ich bitte dich. Das grenzt ja fast schon an Trivialität. Willst du erzählen, dass man als C++ler erst einmal monatelang oder Jahre an z. B. Interfaces in Java zu knabbern hat, bis man es kapiert hat?
Oder ist für dich "eine Sprache lernen" synonym mit "'perfekten' Code darin schreiben"? Dafür braucht man natürlich Erfahrung und einen erweiterten Hintergrund. Aber das fällt wohl kaum unter "eine Sprache lernen".
Oder hast du auch nie Englisch gelernt, weil du keinen Shakespeare mal eben aus dem Ärmel schütteln kannst? Oder auch nie Deutsch, da du kein Faust mal so schreiben könntest? Es gibt mehr als Schwarz und Weiß.
-
@ minhen: vorab gilt natürlich das was ich schon zu Shade sagte.
minhen schrieb:
Tim schrieb:
asdca schrieb:
ne sprache lernen dauert ca. 2 wochen. ist doch völlig egal. ich lern das, was ich für ein projekt gerade brauche. ich lache über die leute, die in ihrem curriculum vitae auflisten daß sie html, xhtml, x86 assembler, php, javascript etc. können, das ist völlig wurst,.
Und ich lache über Leute die behaupten, dass man eine Sprache in ca. 2 Wochen lernen kann.
Nicht jeder benötigt ein lebenlang, um ein paar Syntaxregeln zu lernen.
Wenn eine Sprache zu beherrschen für dich nur darin besteht Syntaxregeln zu lernen, empfehle ich dir z.B. mal den C-Standard durchzulesen. Denn _etwas_ mehr gehört dazu leider schon.
minhen schrieb:
Unbekannte Programmierparadigmen lernen dauert natürlich deutlich länger. Aber einfach nur eine Sprache innerhalb eines bekannten Paradigmas - ich bitte dich. Das grenzt ja fast schon an Trivialität. Willst du erzählen, dass man als C++ler erst einmal monatelang oder Jahre an z. B. Interfaces in Java zu knabbern hat, bis man es kapiert hat?
Nein, aber ich glaube auch nicht, dass ein Pascal-Programmierer innerhalb von 2 Wochen C kann, oder dass ein Java-Coder innerhalb von 2 Wochen (shared, auto, rohe) Zeiger, Templates und Operatorüberladung gelernt hat. Der "scharz und weiss"-Spruch war doch sogar von dir?
minhen schrieb:
Oder ist für dich "eine Sprache lernen" synonym mit "'perfekten' Code darin schreiben"? Dafür braucht man natürlich Erfahrung und einen erweiterten Hintergrund. Aber das fällt wohl kaum unter "eine Sprache lernen".
Da du das "perfekt" ja schon so schön in Hochkomma gesetzt hast, erwartest du jetzt was für eine Antwort (die du dir ja sogar bereits selbst gegeben hast) von mir?
minhen schrieb:
Oder hast du auch nie Englisch gelernt, weil du keinen Shakespeare mal eben aus dem Ärmel schütteln kannst? Oder auch nie Deutsch, da du kein Faust mal so schreiben könntest? Es gibt mehr als Schwarz und Weiß.
Der Vergleich, so sinnvoll er für einen Linguisten auch klingen mag, ist für einen Techniker einfach nur albern. Aber ich würde durchaus sagen, dass ich Englisch erst mit Besuchen in England und allgemein durch Kommunikation auf englisch gelernt habe. Das alles natürlich nicht in zwei Wochen (ja, der war albern...). Und im übrigen verdiene ich meine Brötchen nicht mit der Übersetzung vom Englischen ins Deutsche.
Wollen wir hier echt eine sinnfreie Diskussion darüber wie wir "etwas lernen" definieren? Ich für meinen Teil verzichte.
-
minhen schrieb:
Oder ist für dich "eine Sprache lernen" synonym mit "'perfekten' Code darin schreiben"?
Wenn ich adsca's Posting richtig interpretiere (nicht-trollig, wie die anderen die gerade so geschrieben wurden, also), dann reden wir hier von einem Niveau, ab dem man die Sprache guten Gewissens in den Lebenslauf aufnehmen würde, also auch professionell einsetzen kann.
Da reicht es leider nicht, mal gerade so kapiert zu haben, was ein Interface von einer abstrakten Basisklasse unterscheidet...
-
Tim schrieb:
Wenn eine Sprache zu beherrschen für dich nur darin besteht Syntaxregeln zu lernen, empfehle ich dir z.B. mal den C-Standard durchzulesen. Denn _etwas_ mehr gehört dazu leider schon.
Ich kenne die Standards von C und C++. Wenn auch nur selektiv gelesen und nicht zusammenhängend als "Gute Nacht"-Lektüre. Höhere geistige Ebenen benötigt man dazu wirklich nicht. Wo genau siehst du denn einen nennenswerten qualitativen Unterschied zu reinen Syntaxregeln? Oder geht es dir nur um die Quantität der Standards? Dann bliebe nur anzumerken, dass man noch nicht einmal die Standards jemals zu Gesicht bekommen haben muss, um erfolgreich eine Sprache einzusetzen. So fundamental für das Erlernen einer Programmiersprache können die Standards also kaum sein. Sicher, um jeden Winkel einer Sprache zu kennen sind die Standards ein essentieller Baustein von mehreren. Aber, wie gesagt, perfekte Beherrschung ist wohl kaum sinnvollerweise synonym mit gelernt haben.
Nein, aber ich glaube auch nicht, dass ein Pascal-Programmierer innerhalb von 2 Wochen C kann, oder dass ein Java-Coder innerhalb von 2 Wochen (shared, auto, rohe) Zeiger, Templates und Operatorüberladung gelernt hat.
Gerade Zeiger, Templates und Operatorüberladung sind sehr schnell zu erklären. Natürlich gibt es Feinheiten und es werden gemeine Fallstricke bereit gehalten. Aber das ändert nichts daran, dass die Konzepte keine großen geistigen Herausforderungen sind. In der Universität hätte ich mal das Vergnügen einen furchtbar schlecht konzipierten C++-Kurs als Tutor zu begleiten. Die Leute in dem Kurs konnten praktisch nur Perl. C++ war also mehr als nur eine einfache Herausforderung. Doch gerade mit Templates und Überladungen konnten sie am Ende sehr gut umgehen. Ich denke du unterschätzt die Lernfähigkeit und überschätzt den Lernaufwand zur Erreichung eines produktiven Niveaus.
Da du das "perfekt" ja schon so schön in Hochkomma gesetzt hast, erwartest du jetzt was für eine Antwort (die du dir ja sogar bereits selbst gegeben hast) von mir?
Welche Antwort soll ich mir selbst gegeben haben? Das "perfekt" habe ich ausschließlich wegen der sprachlichen Beispiele in Hochkommata gesetzt. Denn ich bin nicht der Meinung, dass Shakespeares oder Goethes Werke eine perfektere Beherrschung des Englischen resp. Deutschen darstellen als ein durchschnittlicher Artikel in der Bild-Zeitung. Aber darum geht es mir auch gar nicht. Mir scheint du setzt bei "eine Sprache gelernt" das höchste Qualitäts-Niveau an und alles davor und darunter sei nur Schall und Rauch, nichtig und nicht vorhanden. Dem stimme ich nicht zu und darauf zielten auch die Beispiele. Man muss Shakespeare weder lesen noch schreiben oder im englischsprachigen Ausland gewesen sein, um Englisch erfolgreich einzusetzen. Dass du etwas anderes behauptest, ist zur Kenntnis genommen, halte ich jedoch für haltlos. Was das mit Linguisten und Technikern zu tun haben soll, ist mir etwas schleierhaft. Ist das der Versuch dir mehr Fachkenntnis zuzusprechen und mir "als Linguisten" die Beurteilungsfähigkeit abzusprechen? Hilft es dir, wenn ich dir sage, dass ich mehr Informatik als Linguistik studiert habe?
Allerdings sollte es eh nicht darum gehen, wer etwas sagt, sondern nur darum, was gesagt wird. Aber auch das ist egal. Schließlich willst du ja noch nicht einmal sagen, worüber du redest. Und lässt "etwas lernen" lieber undefiniert, damit man auch willkürlich alles darunter verstehen und davon behaupten kann. Das ist sinnfrei und erübrigt jeglichen weiteren Beitrag.
-
Wow, schon wieder soviel Dampf...
Ich sehe das ähnlich wie Bashar. Um eine Sprache *professionell* einsetzen zu können, bedarf es mehr als nur zu Verstehen wie die Sprache aufgebaut ist. Die
Basiseigenschaften (objektorientiert, funktional,...), die Syntax und die wichtigsten Sprachmittel lassen sich, sofern man eine ähnliche Sprache bereits beherrscht, ganz schnell lernen. Als Nächstes kommt bei Sprachen wie Java oder C# aber noch eine beträchtliche Infrastruktur hinzu - nicht unbedingt eine intellektuelle Herausforderung, aber der Umfang ist enorm. Und dann kommt das Wichtigste: Benutzung, Idiome usw. Für jedes Problem gibt es in nahezu jeder Sprache mehre Lösungsansätze. In jeder Sprachcommunity bildet sich über die Zeit aber ein Satz von "best-practices" und das ist meist eben keine simple Liste von X Einträgen die man schnell mal eben am Wochenende überfliegen kann. Vielmehr erlent man diese Dinge nur mit der Zeit über den konkreten Einsatz der Sprache.Fazit: Nach zwei Wochen kann man sicher problemlos kleine Programme für den Hausgebrauch schreiben. In ein professionelles Umfeld würde ich persönlich mit zwei Wochen Spracherfahrung aber sicher nicht gehen wollen. Da leistet man dann wahrscheinlich höchstens negative Arbeit.
-
Ja, dem kann ich ohne Wenn und Aber zustimmen. Bliebe nur die von Bashar aufgeworfene Frage, ab wann man eine Sprache in den Lebenslauf aufnehmen kann. Wobei ich fürchte, dass die von dir angebotene Lösung - "wenn man sich bereit fühlt, mit ihr professionell zu arbeiten" - wohl die einzige ist.
-
Ich stimmt minhen in sofern zu, dass man eine um eine Sprache zu lernen, mit dessen Konzepten man bereits aus einer anderen vertraut ist, nicht laenger als 2 Wochen braucht. Wenn man Java gut kennt, wird man mit C++/C/C#/D usw. keine Probleme haben. Selbst Php, JavaScript und Ruby unterscheiden sich nicht so extrem das man jetzt Monate brauchen wuerde.
Was allerdings weitaus mehr Zeit in Anspruch nimmt, ist es, die Bibliotheken und Tools die in der Sprache/fuer die Sprache verfuegbar sind zu finden und zu benutzen lernen.
VisualBasic wuerde ich innerhalb von 2 Wochen gelernt haben, aber fuer die Standard-Lib, die IDE, die Build-Tools, usw. brauche ich sicher einen Monat.
Was anderes ist es, wenn man sich in Lisp/Erlang/Prolog/usw. versucht. Ein neues Sprachkonzept ist eine betraechtliche Huerde. Man kann nicht mehr so denken wie bisher, sondern muss eine neue Denkweise erlernen. Prozedurial/OO nach funktional oder gar logische Programmiersprache ist weitaus schwieriger.
Also nun mal wieder zum Topic:
TurboPascal: Damit angefangen, erste Versuche in OOP.
C++: Damit weitergemacht und ziemlich viel gehackt. Zeiger, Operatorueberladung, Templates
Java: Von C++ auf Java
C: Weil ich auf C++ keine Lust mehr hatte aber low-level Sachen programmieren musste.
Ruby: Buch durchgelesen, paar Tutorials programmiert.
Php: Fuer Webseiten, erste Versuche mit Datenbanken.
Lisp: Unser Professor seine Lieblingssprache
Prolog: Ein anderer Professor seine Lieblingssprache
HDVL???: Irgend so eine Beschreibungssprache fuer Prozessoren/SchaltplaeneWill ich mal anschauen:
Python
Erlang
-
DEvent schrieb:
HDVL???: Irgend so eine Beschreibungssprache fuer Prozessoren/Schaltplaene
Gefragt war nicht, welche Programmiersprache könnt ihr buchstabieren *g* *scnr* *aufVHDL,welchekeineProgrammierspracheist,hinweis*
-
Ich würde mal sagen, wie schnell man eine neue Sprache lernen kann, kommt auf den Programmierer an und was er schon kennt. Ein durchschnittlicher Java Programmierer wird es vielleicht schaffen in 2 Wochen ein schlechtes C++ Programm im Java-Style zu schreiben. Ein wirklich guter Java Programmierer wird es schaffen in 2 Wochen ein ordentliches C++ Programm mit Initialisierungsliste, const correctness, RAII usw. zu schreiben, wenn einer ihm genau diese Unterschiede beibringt. Ein guter C++ Programmierer wird in weniger als 2 Wochen ein ordentliches Java Programm schreiben können, wenn man ihm sagt worauf er achten muss. Einer der schon eine Menge Programmier- und Scriptsprachen kann wird mit einer neuen Sprache einfach los programmieren können und muss sich nur die neue Syntax anschauen.
-
naja schrieb:
Einer der schon eine Menge Programmier- und Scriptsprachen kann wird mit einer neuen Sprache einfach los programmieren können und muss sich nur die neue Syntax anschauen.
Nein.
Jede Sprache hat Paradigmen die man lernen muss. Man kann sie natuerlich recht schnell verstehen wenn man clever ist, aber man muss sie dennoch erst einmal lernen.
-
Meinst du wirklich, dass du es schaffst für jede sprache irgendetwas aufzuzählen, dass es in keiner anderen Sprache gibt?
-
naja schrieb:
Meinst du wirklich, dass du es schaffst für jede sprache irgendetwas aufzuzählen, dass es in keiner anderen Sprache gibt?
Themenverfehlung.
Selbst wenn es nur 3 Idiome gaebe die man koennen muesste, muesste man immernoch die Zeit aufwaenden sich damit auseinanderzusetzen welches der 3 Idiome in der Sprache verwendet wird.
Nur sind es keine 3 Idiome und Paradigmen sondern eine ganze Menge. Die meisten sind trivial zu verstehen, zB RAII. Simpel und primitiv. Zu lernen es richtig anzuwenden muss man aber dennoch. Und dann muss man auch noch bedenken wie das das Code Design beeinflusst. Selbst wenn man also alle Paradigmen und Idiome kennt, muss man immernoch ueberlegen wie diese in genau dieser Konstellation zusammenarbeiten koennen.
RAII ist zum Beispiel nett um Ressourcen aufzuraeumen. Das fuehrt aber weiter zu Exception Handling dass dadurch ploetzlich komplett anders gemacht wird als zB in Java. Und weiters haben wir jetzt auch noch Transaktionen uber RAII vor uns. Dazu auch die Abstraktion alles in RAII-Klassen zu stecken und dann noch solche netten Sachen wie ScopeGuard/ON_BLOCK_EXIT was zu deferred Code Execution fuehrt (was wir zB bei Transaktionen einsetzen koennen).
Alles ist vernetzt. Und auch wenn vieles davon trivial ist wenn man es einmal verstanden hat - es dauert eine gewisse Zeit bis man diese ganzen Paradigmen und Idiome der Sprache kennt und die Zusammenhaenge versteht.
Ein Programm kann ich jederzeit in jeder Sprache schreiben - guten Code dagegen nicht. Irgendwas hin nudeln ist kein problem, aber will man sowas dann wirklich warten wollen...?
-
Themenverfehlung
Ich hab ja auch nicht geschrieben, dass man die neue Sprache sofort perfekt kann und alle Mittel sofort perfekt ausnutzt, dass werden auch viele die Monate oder Jahre lang mit der Sprache programmiert nicht können. Und das muss man auch nicht können um ein vernünftiges und wartbares zu schreiben, es gibt noch was zwischen hinnudeln und alle Möglichkeiten perfekt ausnutzen, letzters wird sowieso fast keiner schaffen. Bei entsprechend komplexen Sprachen wie z.B. C++ tauchen auch immer wieder neue Ideen auf die vor ein paar Jahren noch keiner verwendet hat, aber jetzt fast jeder verwendet, weil sie vernünftig sind. Deshalb sind aber ältere Programme die noch anders geschrieben wurden nicht unwartbares gehacke. Wenn mans mit den Kombinationen der Idiomen zu weit treibt, endet das ganze nur in Overengineering und kann nur noch von Experten gewartet werden, was auch nicht der Sinn sein kann.Wenn man sich einmal ein gutes Basiswissen geschaffen hat, kann man mit so gut wie jeder Sprache vernünftige und wartbare Programme schreiben, auch wenn nicht alles perfekt ist.