Empfehlung für eine Programmiersprache?
-
Erhard Henkes schrieb:
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht79Ht/c++_lernsprache_de
Schüler können solche Fehler auch finden und verstehen, es kostet sie aber mehr Zeit als in Sprachen, die weniger Freiheiten erlauben und daher bei solch einer Formulierung sofort eine Fehlermeldung erzeugen würden. Diese Zeit fehlt dann wieder, um sich mit der Methodik des Programmierens zu beschäftigen. Schüler lernen unter Umständen dabei viele Details einer speziellen Programmiersprache aber weniger allgemein nützliches Programmierwissen.
Bezüglich Einsatz in der Schule ist das vermutlich richtig, aber bei einer Programmiersprache geht es nicht um die ersten 100 Stunden, sondern um den langfristigen Einsatz. Es geht auch nicht um den allgemeinen Schüler, sondern um Personen, die sich für Programmierung interessieren. Eines ist auf jeden Fall klar: C/C++ und Java haben eine gewaltige Community, und man findet, wenn man sucht, und man erhält eine Antwort, wenn man fragt. Das zählt.
Hier findet man die Vorteile von C++ sehr kompakt dargestellt, leider falsch betont, nämlich abschreckend anstelle attraktiv:
Die Speicherverwaltung fehlt in C++ vor allem, weil sie Laufzeit kostete. Viele andere Mühen nimmt ein C++ -Programmierer nur aus einem Grund auf sich: Um die Laufzeiteffizienz des geschriebenen Programms zu steigern. Dieser Gedanke durchdringt die Gestaltung der gesamten Sprache bis hin zur generischen Programmierung. Das Ziel ist die Erzeugung möglichst schneller Programme.
Um dieses Zieles willen, werden dem Programmierer auch noch viele Techniken maschinennaher Programmierung ermöglicht. Auf die meisten Tests zur Absicherung des Programms und zur Fehlerdiagnose während Laufzeit wird verzichtet, weil diese ja Zeit kosten könnte.Dast ist doch blödsinn
In der Schule müssen viele Leute das Programmieren lernen die sich oftmals gar nicht dafür interressieren, oder man hat es nur ein Jahr, also ist C++ wohl das dümmste was man nehmen kann.
Wer sich dafür interressiert kann sich C++ ja gerne selbst beibringen.Aber in einer großen Lehrveranstaltung die nur bedingt freiwillig ist sollte man eine einfache Sprache wie Java benutzen, da ist C++ einfach fehl am Platz.
Jeder der C++ als Lehrsprache progagieren will outet sich automatisch als Sprachfanatiker.
C++ ist eine ultra komplexe Sprache mit einer sehr sehr flachen Lernkurve, sowas zu nehmen ist didaktiv einfach quatsch!
-
C++ würde ich auch nicht in der Schule als Lernsprache einsetzen, aus den von dir genannten Gründen bezüglich der Komplexität, weil eben doch einige in den Informatikkursen sitzen, die sich weniger dafür interessieren und es auch später nie wieder brauchen können.
Allerdings sehe ich in der Uni C++ nicht als falsche Wahl zum Erlernen der Programmierung an. Wenn sich jemand für ein informatiklastiges Studium einschreibt, gehe ich davon aus das er die Leistungsbereitschaft zum Erlernen einer solchen Sprache mitbringt. C++ ist hier imho deswegen interessant, da man eine Sprache an die Hand bekommt, die die Programmierung mit vielen Paradigmen erlaubt, von prozedual über objektorientiert bis hin zur funktionalen Programmierung.MfG
-
Ich kann Jasc nur zustimmen. dazu gibts ja noch das zitat von Bjarne Stroustrup, der sagt, dass seine Elektrotechniker die bei ihm C++ gelernt haben besser Programmieren konnten als die Informatiker, die bei einem anderen Dozenten an der Uni Java gelernt haben. Inzwischen dürfen die Informatiker auch die C++ Vorlesung anhören
-
Sprachfanatiker schrieb:
In der Schule müssen viele Leute das Programmieren lernen die sich oftmals gar nicht dafür interressieren, oder man hat es nur ein Jahr, also ist C++ wohl das dümmste was man nehmen kann.
Wer sich dafür interressiert kann sich C++ ja gerne selbst beibringen.Aber in einer großen Lehrveranstaltung die nur bedingt freiwillig ist sollte man eine einfache Sprache wie Java benutzen, da ist C++ einfach fehl am Platz.
Genau, wer nicht wirklich richtig Programmieren lernen will, der soll Java lernen.
-
so ist es schrieb:
Sprachfanatiker schrieb:
In der Schule müssen viele Leute das Programmieren lernen die sich oftmals gar nicht dafür interressieren, oder man hat es nur ein Jahr, also ist C++ wohl das dümmste was man nehmen kann.
Wer sich dafür interressiert kann sich C++ ja gerne selbst beibringen.Aber in einer großen Lehrveranstaltung die nur bedingt freiwillig ist sollte man eine einfache Sprache wie Java benutzen, da ist C++ einfach fehl am Platz.
Genau, wer nicht wirklich richtig Programmieren lernen will, der soll Java lernen.
Warum glaubt ihr Menschen denn immer, dass einfach=schlecht und kompliziert=gut?
-
Erhard Henkes schrieb:
Denkt z.B. an diesen kleinen Jungen, dem sein Vater Java empfiehlt, der aber C++ vieeeel mächtiger findet:
http://www.c-plusplus.net/forum/viewtopic-var-p-is-1537300.html#1537300
Schlussendlich schlägt jemand C# mit .NET vor, weil da alles so schön "windows-mäßig" resultiert.Da ich derjenige war der C#/.NET vorgeschlagen hat, fühl ich mich nun auch irgendwie angesprochen. Der Junge hat eindeutig klar gemacht, dass er sich sehr für GUI-Programmierung interessiert, und so wie es schien, ging es ihm damit auch ausschließlich um native Windows-Oberflächen. Und da empfinde ich nach wie vor C#/.NET als eine sehr gute Wahl. Soll heißen, dass es doch letztlich immer darauf ankommt was man machen will, und das sich das sowieso nicht pauschalisieren lässt (was ja auch letztlich immer das Resultat von solchen Threads ist, weswegen solche Threads auch immer stinken).
So und dazu auch noch meine pauschalisierte Meinung: Wie auch mal in nem hier verlinkten Artikel von so ner US-Uni bin ich auch der Ansicht, dass es z.B. im Studium bestimmt nicht verkehrt ist sich mit folgendem auseinanderzusetzen:
- C/C++ (man versteht nun mal einfach die ganzen Dinge die so im System ablaufen viel besser, auch wenn man evtl. später nie damit in Berührung kommen wird; zudem ist es ja immer noch sehr verbreitet)
- Java/C# (eine der zur Zeit modernen Hochsprachen halt, welche einem viel Arbeit abnehmen und insbesondere in der Anwendungsentwicklung nicht mehr wegzudenken sind)
- Prolog, oder eine andere funktionale Sprache, um einfach auch mal ein anderes Programmierkonzept kennen zu lernen.
-
Philosof schrieb:
so ist es schrieb:
Sprachfanatiker schrieb:
In der Schule müssen viele Leute das Programmieren lernen die sich oftmals gar nicht dafür interressieren, oder man hat es nur ein Jahr, also ist C++ wohl das dümmste was man nehmen kann.
Wer sich dafür interressiert kann sich C++ ja gerne selbst beibringen.Aber in einer großen Lehrveranstaltung die nur bedingt freiwillig ist sollte man eine einfache Sprache wie Java benutzen, da ist C++ einfach fehl am Platz.
Genau, wer nicht wirklich richtig Programmieren lernen will, der soll Java lernen.
Warum glaubt ihr Menschen denn immer, dass einfach=schlecht und kompliziert=gut?
Mit Java lernt man keine Grundlagen. Man lernt noch nicht mal wirklich Pointer von wirklichem Objekt zu unterscheiden, das kapiert man bei Java erst ganz spät (manche nie). Wer die Maschine verstehen und richtig Programmieren lernen will der sollte mit C anfangen, was man da lernt hilft einem für den Rest seines Programmiererlebens.
-
Vor einigen Jahrem hätte ich allgemein im PC-Bereich die Reihenfolge C -> C++ -> C/C++/WinAPI -> C++/MFC vorgeschlagen, heute muss man hier noch C#.NET hinzufügen, um im Strom der Zeit mit zu schwimmen. Im µP-Bereich Assembler -> C. Im MS Office-Bereich VBA und plattformübergreifend eher Java.
Ob man heute eher mit Java anstelle C beginnen sollte? Vielleicht sollte man mit beiden beginnen und sich dann mutig bei C++ treffen.
-
Das wäre schön. Dummerweise gibt es da immer die Fanatiker der einen oder anderen Sprache, die einen kritisieren an der "Waschmaschinensprache" Java rum, die andern haben was gegen C++ weil man damit nur "rumfrickeln kann" und C ist ja "eh veraltet". Ich wäre ja dafür, das jeder akzeptiert das die eine oder andere Sprache auf ihrem jeweiligen Gebiet Vorteile und auf einem anderen Nachteile hat und danach ausgewählt werden sollte. Ich gebe nep recht das C# mit .NET oder Mono ganz gut geeignet ist für jemanden der schnell mal seine eigene GUI-Oberfläche zusammenbasteln will, das geht unter .NET wahrscheinlich sogar noch einfacher als in Java, weil bei .NET ja alles aus einer Hand kommt, dafür ist Java ein wenig flexibler, was die Verwendung und die Auswahl an Frameworks angeht. Dafür muss man sich dann aber eben auch die Frameworks zusammensuchen.
In diesem Sinne
MfG
-
Jasc schrieb:
Das wäre schön. Dummerweise gibt es da immer die Fanatiker der einen oder anderen Sprache, die einen kritisieren an der "Waschmaschinensprache" Java rum, die andern haben was gegen C++ weil man damit nur "rumfrickeln kann" und C ist ja "eh veraltet". Ich wäre ja dafür, das jeder akzeptiert das die eine oder andere Sprache auf ihrem jeweiligen Gebiet Vorteile und auf einem anderen Nachteile hat und danach ausgewählt werden sollte. Ich gebe nep recht das C# mit .NET oder Mono ganz gut geeignet ist für jemanden der schnell mal seine eigene GUI-Oberfläche zusammenbasteln will, das geht unter .NET wahrscheinlich sogar noch einfacher als in Java, weil bei .NET ja alles aus einer Hand kommt, dafür ist Java ein wenig flexibler, was die Verwendung und die Auswahl an Frameworks angeht. Dafür muss man sich dann aber eben auch die Frameworks zusammensuchen.
In diesem Sinne
MfG
Das ist ja alles schön und gut und so sieht die reale Welt auch aus.
Aber mit einer Sprache wirst du nun einmal anfangen müssen. Bzw. es ist auch möglich mit mehreren gleichzeitig anzufangen, aber man muss es dann wie bei Kindern die bilingual aufwachsen strikt trennen. Im Falle einer Programmiersprache wäre es also sehr ungeschickt C und Java zu nehmen da sie sich einfach zu sehr ähneln. Dabei sind Java und Lisp so verschieden, dass der Einsteiger gar nicht durcheinander kommen kann.
Außerdem muss man Unterscheiden zwischen Leuten die motiviert sind und sich das privat beibringen und Leute die es mehr oder weniger müssen und bei letzterem ist der harte Weg über C und C++ (und die Zeit die man braucht wirklich C++ zu programmieren und nicht C mit Klassen) einfach nicht ratsam. Ich selbst habe C vor C++ gelernt und es dauert einfach eine recht lange Zeit bis man wirklich mit C++ und all seinen Paradigmen arbeiten kann. Wobei durch dieses Wissen auch der C-Skill steigt, das muss man klar sagen, ebenso was Sprachen wie Java angeht die fallen einem dann sehr leicht (wobei das jetzt nur auf die Sprache bezogen ist, die best practises muss man sich in jeder Sprache mit der Zeit aneignen, ebenso was die Standard-Bibliothek bietet und wie sie designed wurde).
-
ich hab mit qbasic angefangen
-
@Sprachfanatiker: Was willst Du damit sagen? Dass man immer mit Java anfangen soll?
-
Ich habe mit BASIC angefangen, später Pascal, Visual Basic, VBA, Javascript, C, C++, Java, C#, später Assembler. Mir liegt C++ immer noch am meisten, vielleicht nur, weil ich mich etwas intensiver damit auseinander gesetzt habe.
-
hehe, pascal war auch meine zweite
-
Ich hab mit M68K Assembler angefangen, bin dann nach 3 Jahren zu C und kurz darauf zu C++ gewechselt. Mit der Ausbildung kam dann WinAPI und MFC dazu, heute ist viel C# angesagt.
Die Sprache sollte an sich garnicht so die Rolle spielen. C++ würde ich jemanden nur empfehlen, wenn ich den Eindruck habe, das die Person auch in der Lage ist alleine zu lernen, sich Informationen zusammen zu suchen und sich auch mal mit einem Thema tiefergründig zu beschäftigen. Informationsbeschaffung ist einfach ein entscheidendes kriterium.
Wie in vielen Dingen auch wird es hier wohl keine eindeutige Empfehlung geben. Viel mehr sollte man schauen, was die Zielperson für interessen hat und sich darauf ein wenig einstimmen. Wichtig ist doch der anreiz, das jemand an dem was er da macht wirklich interesse hat um weiter zu machen und nicht einfach halbherzig an die Sachen herann geht.
Einen meiner Auszubildenden lasse ich C++ lernen - er möchte die dinge sehr genau wissen und setzt sich auch intensiv mit dem Thema auseinander.
Ein anderer Azubi macht lediglich Visual Basic. Sein interesse besteht mehr darin schnell Anwendungen zu entwickeln und wenig in die tiefen zu gehen.
Ein Kollege lässt sein Azubi mit Java anfangen, weil er ein hohes interesse an Programmen für sein Handy hat.
Der 4. Azubi bastelt (noch) mit PHP rum, er interessiert sich für Webseiten.
Somit bekommt jeder den Bereich, der für ihn besonders interessiert und die Azubis sind hoch motiviert ihre selbst gesteckten Ziele zu erreichen. Sie suchen sich die Informationen selbst zusammen und wollen bei Problemen nur einen kleinen Schubs in die richtige Richtung haben, auf keinen Fall aber eine fertige Lösung.
Das ganze lässt man sie ein bis zwei Jahre lang machen (wobei der VB Mensch ab und an mal eine Kunstaufgabe dazwischen geschoben bekommt weil er zu oberflächlich wird) und sorgt dafür, das die Ergebnisse immer mehr in den Firmenalltag passen. Die Jungs haben sich aber die Grundlagen angelernt und haben mit das wichtigste gelernt: Sich Informationen zu beschaffen, die Dokumentation und Referenzen zu lesen und nicht gleich das Handtuch zu werfen, wenn es mal etwas komplizierter wird.
Würde ich allen 4en z.B. C++ aufdrücken, würden 3 resignieren und auf dem Level "Ich will es nicht verstehen, ich will einfach nur eine funktionierende Lösung zum kopieren haben" bleiben, sich nie ernsthaft Informationen beschaffen.
Die Sprache ist dann richtig, wenn der Lernwillige sein interessen Gebiet zügig abdecken kann. Das bei den Grundlagen nichts verschüttet geht, bekommt man mit der Zeit schon hin. Die Aufgaben müssen halt ein wenig Modifiziert werden wenns zu einfach wird.
-
@Henkes, Knuddlbaer: so soll ich ja auch sein, wenn man auf das Individuum eingehen kann, dann sollte jeder die Möglichkeit haben die für ihn optimale Sprache zu wählen. Wie ich zuvor schon sagte finde ich für große Lehrveranstaltungen C++ ungeeignet, aus Gründen die ich schon erwähnt habe und würde dort Java einsetzen.
-
Ich denke auch, dass Interesse, Bewältigung von Herausforderungen und Erfolgserlebnisse im Zentrum stehen sollten. Es spricht allerdings Bände, dass der Azubi mit dem höchsten Tiefgang C++ programmieren darf.
Auf der anderen Seite muss man erkennen, dass C++ gewaltige didaktische Probleme hat. Es ist keine Sprache für die Masse.
-
für didaktische zwecke sind sprachen geeignet, die unter einem sehr rigiden paradigma entwickelt wurden. smalltalk zum beispiel. für die praxis ist es aber eigentlich wesentlich sinnvoller, eine sprache mit hohem verbreitungsgrad und nutzwert zu verwenden. und da bleiben meiner ansicht nach derzeit nur c++ und java übrig.
-
Wieso wird eigentlich nicht Ada gelehrt? Die Sprache bietet so ziemlich alles, was man braucht. Von einfachen Konstrukten, über OOP, eine sehr fortschrittliche Möglichkeit zum Erzeugen von multithreading Anwendungen sowie "gefährlichere" Dinge, wie das rumrödeln auf Pointern.
Dazu kommt, dass Anfängerprogramme die der Compiler übersetzt hat, sehr wahrscheinlich auch laufen werden. Außerdem zwingt einen die Sprache, sich schon sehr früh Gedanken über die Wahl der richtigen Typen zu machen.
Schade, dass die Sprache am aussterben ist, und dass daraus resultierend die zur Verfügung stehenden Tools leider ziemlich mäßig sind.
-
Job Trends (USA):
http://www.indeed.com/trendgraph/jobgraph.png?q=c%2B%2B%2C+c%23%2C+java%2C+ruby%2C+python%2C+smalltalk