Mehr als eine Programmiersprache. segen oder qual?



  • kantaki schrieb:

    wo läge denn der vorteil wenn ich java und c++ könnte.

    Mit Java lernst du, dass man Sachen ganz einfach, klar und sauber programmieren kann und nicht so kompliziert wie mit C++. Mit C++ lernst du, dass man manche Sachen einfacher als mit Java machen kann. 😃



  • +Mit C++ lernst du, dass man manche Sachen einfacher als mit Java machen kann und nicht alles OOP sein muss.



  • volkard schrieb:

    Wenn ich schnell zwischen VB und C++ wechsle, verwechsle ich oft != und <>.

    VB gehört aber zu den Programmiersprachen, die man nicht kennen muß.

    Welches ernsthafte Softwarestudio entwickelt schon in VB?



  • kantaki schrieb:

    314159265358979 schrieb:

    Ich finde, mindestenst 2-3 Programmiersprachen sollte man können. Wenn nicht mehr. Bei mir wären das PHP, Javascript, ein bisschen Python, Java, C# und natürlich C++.

    wo läge denn der vorteil wenn ich java und c++ könnte. gibt es bestimmte sachen die mit java besser realisierbar sind als mit c++ ?

    Java zusätzlich zu C++ ist schon ne sehr gute Idee.
    In Java (und den meisten "GC Sprachen") macht man so ziemlich alles ziemlich anders.
    Beides zu können macht IMO viel Sinn.

    Nur muss man aufpassen, dass man nicht versucht sämtliche Denkmuster/Problemlösungsstrategien/... die man sich mit einer Sprache angeeignet hat auf Teufel-komm-raus auch in der anderen Sprache anwenden zu wollen. Das geht nämlich bekanntermassen in die Hose.

    Sogesehen aber auch gut, wenn du bereits vor Abschluss deiner Ausbildung mit beiden Welten konfrontiert wirst.

    Die dritte wichtige Welt wären dann funktionale Sprachen (LISP etc.).



  • hustbaer schrieb:

    Java zusätzlich zu C++ ist schon ne sehr gute Idee.
    In Java (und den meisten "GC Sprachen") macht man so ziemlich alles ziemlich anders.

    Beispiele?

    Pointerarithmetik in C++, ok, aber OOP?



  • vau schrieb:

    kantaki schrieb:

    wo läge denn der vorteil wenn ich java und c++ könnte.

    Mit Java lernst du, dass man Sachen ganz einfach, klar und sauber programmieren kann und nicht so kompliziert wie mit C++. Mit C++ lernst du, dass man manche Sachen einfacher als mit Java machen kann. 😃

    In erster Linie lernt man doch Destruktoren und Kopierkonstruktoren zu lieben. 😉



  • µ schrieb:

    314159265358979 schrieb:

    Ich finde, mindestenst 2-3 Programmiersprachen sollte man können. Wenn nicht mehr. Bei mir wären das PHP, Javascript, ein bisschen Python, Java, C# und natürlich C++.

    Können != Können.

    Für mich gehört weit mehr als ein wenig Syntax dazu, um eine Sprache wirklich zu "können". Ich zähle auch gerne die wesentlichen Frameworks, Bibliotheken, Idiome und Muster dazu. Und dann sind wir bei einem Lernaufwand von mehreren Jahren für jede "Sprache".

    Ack. Es gehört für mich schon auch ein bisschen mehr dazu, als bei einer Sprache die grundlegende Syntax zu kennen und mit der offenen Doku was zusammenzustricken.
    Aber grundsätzlich ist es ja eh so, dass man sich relativ schnell in eine vom Denkmuster zumindest ähnliche Sprache einarbeiten kann, wenn man eine andere bereits gut bis sehr gut beherrscht. Bis man dann aber die Feinheiten, Tricks usw. alle verinnerlicht hat, vergeht sehr viel Zeit.



  • µ schrieb:

    Können != Können.

    Für mich gehört weit mehr als ein wenig Syntax dazu, um eine Sprache wirklich zu "können". Ich zähle auch gerne die wesentlichen Frameworks, Bibliotheken, Idiome und Muster dazu. Und dann sind wir bei einem Lernaufwand von mehreren Jahren für jede "Sprache".

    👍



  • InTheDing schrieb:

    Wer nur eine Sprache kann, wird nie vernünftig programmieren können.

    Selten so einen Blödsinn gelesen. Beim Programmieren/Softwareentwicklung geht´s um Methodik, das Können besteht darin, das mit der vorgegebenen Programmiersprache umzusetzen.



  • Ja, und die Methodik ist von Sprache zu Sprache unterschiedlich. Wer natuerlich nur Sprachen aus dem OO-Umfeld benutzt, wird nur diese Methodik lernen. Deswegen sind fuer mich beispielsweise C++ und Java in einer Gruppe und zaehlen nicht wirklich als verschieden.



  • knivil schrieb:

    Ja, und die Methodik ist von Sprache zu Sprache unterschiedlich. Wer natuerlich nur Sprachen aus dem OO-Umfeld benutzt, wird nur diese Methodik lernen. Deswegen sind fuer mich beispielsweise C++ und Java in einer Gruppe und zaehlen nicht wirklich als verschieden.

    Sehe ich ähnlich. Neben einer OOP-Sprache z.B. noch eine funktionale kennenzulernen, hat möglicherweise größeren Mehrwert, als Sprachen aus derselben Gruppe zu kennen. Im besten Fall reflektiert man dadurch ein wenig über seinen Stil in seiner "Muttersprache" und findet bestimmte Konzepte aus der anderen Welt, die einem in dieser Sprache helfen.

    Was aber eben nicht bedeutet, auf biegen und brechen alles das, was man in Haskell kennengelernt hat, jetzt in C++ umsetzen zu wollen.



  • Was macht man anders schrieb:

    hustbaer schrieb:

    In Java (und den meisten "GC Sprachen") macht man so ziemlich alles ziemlich anders.

    Beispiele?

    In diesem Thread habe ich ein paar wichtige Unterschiede aufgelistet.



  • knivil schrieb:

    Ja, und die Methodik ist von Sprache zu Sprache unterschiedlich. Wer natuerlich nur Sprachen aus dem OO-Umfeld benutzt, wird nur diese Methodik lernen. Deswegen sind fuer mich beispielsweise C++ und Java in einer Gruppe und zaehlen nicht wirklich als verschieden.

    Das steht in keinem Widerspruch zu meiner Aussage. Viele Wege führen zum Ziel, wenn ich die mir zur Verfügung stehenden Mittel und Methoden benutze, um zum Ziel zu kommen, brauche ich keine weiteren. Die Rahmenbedingungen müssen allerdings schon stimmen, ich würden mit Logo keinen Treiber programmieren wollen (vermutlich auch nicht können).

    Mit Methodik meinte ich eigentlich Dinge wie Zerlegung des Gesamtproblems in Teilprobleme oder die Auswahl und Implementation der korrekten Algorithmen. Das alles ist sprachunabhängig und lässt durch die Paradigmen der konkreten Sprache realisieren.



  • DocShoe schrieb:

    Mit Methodik meinte ich eigentlich Dinge wie Zerlegung des Gesamtproblems in Teilprobleme oder die Auswahl und Implementation der korrekten Algorithmen. Das alles ist sprachunabhängig und lässt durch die Paradigmen der konkreten Sprache realisieren.

    Der beste Entwurf berücksichtigt auch die Implementierungssprache. Ohne diese im Auge zu haben, wird es leider nur zweitbestig (, was meistens vollkommen ausreichend ist).



  • gut =),
    und ich dachte schon java zu lernen wäre überflüssig



  • kantaki schrieb:

    und ich dachte schon java zu lernen wäre überflüssig

    Mit deiner Erfahrung wuerde ich etwas vorsichtiger mit Aussagen wie "ueberfluessig" sein.



  • Was macht man anders schrieb:

    hustbaer schrieb:

    Java zusätzlich zu C++ ist schon ne sehr gute Idee.
    In Java (und den meisten "GC Sprachen") macht man so ziemlich alles ziemlich anders.

    Beispiele?

    Pointerarithmetik in C++, ok, aber OOP?

    Guck mal wo in Java/C# überall Interfaces, Factories oder ganz allgemein dynamische Polymorphie eingesetzt wird. In typischem Java-Code findet man kaum einen Abschnitt mit ein paar hundert Zeilen, wo nicht irgendwo mit Interface- oder Basisklassen-Referenzen rumhantiert wird. In C++ ist es eher umgekehrt, da muss man in vielen Programmen die Stellen suchen wo mit abstrakten Klassen gearbeitet wird.

    Patterns wie RAII sind bei Java/C# wenig verbreitet, RRID quasi nicht-existent. In C++ ist RAII/RRID "Standard".

    Shared-Ownership von Objekten die "unmanaged" Resourcen verwalten ist etwas, was man in Java/C# meidet wie die Pest. In C++ ist es dank shared_ptr kein Thema, und wird auch häufig gemacht.

    In C#/Java legt man (gezwungenermassen) fast alles mit "new" an, in C++ ist "new" eher was seltenes.

    In C++ sind Singletons und class-static Variablen einigermassen verpönt, da die korrekte Umsetzung alles andere als trivial ist. In Java/C# wird damit recht freizügig umgegangen, da die Umsetzung viel einfacher ist (Initialisierung kann man threadsafe mit lock/synchronized machen, und freigeben tut man einfach nix).

    ...



  • abstract polymorphe basisklasse halbherzig zusammengeschustert durch weltfremden langzeitfrickler



  • hustbaer schrieb:

    RRID

    Das Acronym musste ich erstmal googlen ...



  • knivil schrieb:

    hustbaer schrieb:

    RRID

    Das Acronym musste ich erstmal googlen ...

    Resource Reclamation Is Destruction. Ist sozusagen das Gegenteil von RAII - oftmals wird RAII aber für beides zusammen gebraucht, für RAII/RRID.


Anmelden zum Antworten