Empfehlung für eine Programmiersprache?



  • 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.





  • http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html

    @byto: Informatik lernt man nicht, um danach Codemonkey zu werden.



  • .filmor schrieb:

    @byto: Informatik lernt man nicht, um danach Codemonkey zu werden.

    Korrekt, aber was hat das mit dem von mir geposteten Link zu tun?



  • Hi,

    was spricht eigentlich dagegen, wenn ein Anfänger C++ in der Form C mit Klassen lernt?
    Das Ziel bei einem Anfänger der beim Studium oder in der Schule eine Programmiersprache lernt ist doch nicht, daß er eine Sprache komplett von vorne bis hinten lernt. Diese Notwendigkeit besteht doch eigentlich nur für Compilerbauer.
    Das Ziel muß doch sein, daß der Anfänger die wesentlichen Grundstrukturen und Konstrukte von Sprachen lernt, daß er auch mit Zeigern was anfangen kann und daß er die Grundlagen von OOP lernt. Wenn man ihm dann noch die wichtigsten Grundlagen von Templates beibringt, dann hat er eine Grundlagem, mit der er selbst weitermachen kann.
    Vor allem muß er absolut sicher sein was die Unterschiede zwischen einem Zeiger, einer Referenz und einer Variable sind, und er muß genau wissen, wann er was als Resultat einer Funktion zurückgeben muß.
    Wichtiger als alle Feinheiten der Sprache zu kennen ist doch, ein gewisses Subset der Sprache zu kennen, mit denen man sich ergebende Aufgaben meistern kann. Die ganzen vielen Feinheiten von C++ sind doch letztlich nur Mittel zum Zweck, um etwas übersichtlicher oder effizienter zu machen. Aber nötig um ein Problem zu lösen sind sie nicht (das beste Beispiel dafür ist die Tatsache, daß es C++Präcompiler gab die aus C++ erst C gemacht haben.
    Wichtiger als syntaktische Feinheiten ist ein solides Handwerkszeug. Kunst kommt immer noch von Können, auch Programmierkunst. Was nützt es wenn einer alle Feinheiten von C++ beherrscht, aber scheitert, wenn er einen Zeiger auf ein Feld von Zeigern findet.
    C++ und Java sind auf Grund ihrer Ähnlichkeit zu verwechslungsträchtig, das bringt kein Anfänger sicher gebacken, was nun was ist.
    Was sich aus meiner Sicht aber als Multiparadigmensprache zur Ergänzung zu Java recht gut eignen würde ist Delphi. Da ist eine gute Sprachunterstützung vorhanden, es gibt die Programmierumgebungen als Turbo-Explorer zum Nulltarif und es gibt eine sehr gute GUI mit kompletten Quellcode und der Möglichkeit, davon eigene Klassen abzuleiten und dabei viel über OOP zu lernen.

    Gruß Mümmel



  • Tachyon schrieb:

    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.

    Du propagierst hier doch nur Ada weil Knuth Ada benutzt 😃 😉



  • Ich kenn dich! schrieb:

    Tachyon schrieb:

    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.

    Du propagierst hier doch nur Ada weil Knuth Ada benutzt 😃 😉

    Wer ist Knuth? Ich programmiere Ada nur für Uschi! :p


Anmelden zum Antworten