POLL (Programmiersprachen)



  • mathik schrieb:

    in java greift man auf container auch über iteratoren zu. folgendes kannste in c++ nicht machen (oder eher umständlich):

    container* c;
    if (viele löschoperationen)
    {
     c = new list;
    }
    else
    {
    c = new vector;
    }
    
    iterator beg = c->begin();
    

    Natürlich kannst du das in C++ machen, siehe Traits-Klassen.


  • Mod

    Ich kann C++ doch leiden, aber mir gehen die Leute auf den Sack die behaupten Java wäre für Anwendungsentwicklung und Mid-Tier-Entwicklung die falsche Sprache. Die haben schlichtweg keine Ahnung. Ich warte eigentlich nur noch darauf, dass Adobe auf C# und .NET umsteigt damit die Jünger der Gläubigen hier nicht dauernd ihr Paradebeispiel rauswerfen können.

    [quotw]
    In dem ich in Java entweder noch XML-Beschreibungsdateien oder Annotations einbauen muß???[/quote]
    Keine Ahnung wovon du redest. Programmierst du Java in einer komplett veralteten Version von vor 5 Jahren? Mit einem Editor ala Notepad? Also das maximale was ich noch schreibe ist eine Annotation für ein weiteres Query, den Rest macht die IDE.

    Sonst kann ich mal die ellen langen XMLs und Annotations posten.

    Immer her damit. Kennzeichne die Stellen die du selbst geschrieben hast und nicht von der IDE generiert wurden.

    MfG SideWinder


  • Mod

    THX 1138 schrieb:

    Natürlich kannst du das in C++ machen, siehe Traits-Klassen.

    Sample für std::vector und std::list bitte, danke.

    Auch ein Lehrbuch über TR1 kann man bei Amazon kaufen.

    Eins? Tatsächlich? Wow.

    Komitee-Abstimmung in C++2009 reinkommen

    2009 schon, da hat man sich dann aber schnell geeinigt drauf. Dauert ja nur noch 2 Jahre um eine offenbar fertige Erweiterung zu standardisieren. Ist ja auch kein Problem, was sind schon 2 Jahre in der IT-Welt. Erstmal Kaffee holen...

    MfG SideWinder



  • SideWinder schrieb:

    Ich kann C++ doch leiden, aber mir gehen die Leute auf den Sack die behaupten Java wäre für Anwendungsentwicklung und Mid-Tier-Entwicklung die falsche Sprache. Die haben schlichtweg keine Ahnung. Ich warte eigentlich nur noch darauf, dass Adobe auf C# und .NET umsteigt damit die Jünger der Gläubigen hier nicht dauernd ihr Paradebeispiel rauswerfen können.

    Hallo? Die einzigen die hier immer Motzen, sind die Javaisten und C#ler!!! Die fangen immer solche Threads an, das C++ dies und das nicht kann. Ohne Javaisten oder C#ler würden solche Threads garnicht entstehen. Was interessiert uns denn, ob jemand Java auf nem AppServer einsetzt? Aber wenn tntnet seine C++Webserver Kit mal empfiehlt, kommen die Javaner angekrochen und heulen rum. Da fragt man sich echt, wer Angst hat?



  • SideWinder schrieb:

    Ich warte eigentlich nur noch darauf, dass Adobe auf C# und .NET umsteigt damit die Jünger der Gläubigen hier nicht dauernd ihr Paradebeispiel rauswerfen können.

    Naja, was zeigen würde wie brauchbar Java für Desktopanwendungen ist. Aber bloss aufpassen, dass die nicht auf das komplexe C++/CLI umsteigen, gell? 😉


  • Mod

    TactX schrieb:

    SideWinder schrieb:

    Ich warte eigentlich nur noch darauf, dass Adobe auf C# und .NET umsteigt damit die Jünger der Gläubigen hier nicht dauernd ihr Paradebeispiel rauswerfen können.

    Naja, was zeigen würde wie brauchbar Java für Desktopanwendungen ist. Aber bloss aufpassen, dass die nicht auf das komplexe C++/CLI umsteigen, gell? 😉

    Java und C#/.NET sind andere Namen für das Gleiche. C++/CLI ist so wie C++ seit 2 Jahren sein sollte wenn es sich mit Java und C# messen will. Ich würde C++ einfach gar nicht mit diesen Sprachen messen weil ich immer noch überzeugt bin, dass beide für andere Zwecke gedacht sind. Aber ihr erzählt mir immer das Gegenteil.

    @Artchi: Zum Thema "Streiterei anfangen", du landest deswegen immer in solchen Diskussionen weil du sie meistens beginnst. Wie in diesem Thread übrigens mit folgendem Posting:

    Naja, manchmal zweifel ich auch an manchen Forenusern. Manchmal sollte man das Forum in www.anti-c-plusplus.net/forum umbenennen. Ich will jetzt keine Namen nennen, sonst kann ich nicht mehr auf die Strasse.

    MfG SideWinder



  • 2009 schon, da hat man sich dann aber schnell geeinigt drauf. Dauert ja nur noch 2 Jahre um eine offenbar fertige Erweiterung zu standardisieren. Ist ja auch kein Problem, was sind schon 2 Jahre in der IT-Welt. Erstmal Kaffee holen...

    Na, dich zwingt ja keiner so lange zu warten. Kannst ja eine andere moderne Sprache benutzen. Also, ich meine nur, mir ist das doch schnuppe, was jeder benutzt. Du mußt wirklich nicht noch bis 2009 warten. Ehrlich. Ich halte dich nicht auf. 🙂



  • SideWinder schrieb:

    TactX schrieb:

    SideWinder schrieb:

    Ich warte eigentlich nur noch darauf, dass Adobe auf C# und .NET umsteigt damit die Jünger der Gläubigen hier nicht dauernd ihr Paradebeispiel rauswerfen können.

    Naja, was zeigen würde wie brauchbar Java für Desktopanwendungen ist. Aber bloss aufpassen, dass die nicht auf das komplexe C++/CLI umsteigen, gell? 😉

    Java und C#/.NET sind andere Namen für das Gleiche.

    Echt?



  • Ist mal wieder so sinnlos das ganze. Naja 2 Punkte von mir:

    Visual Assist X vs Eclipse:
    Das Visual Assist X nichts kann ist schon ziemlich daneben. Das kann schon einiges, aber perfekt ist es eben auch nicht, und es reicht tatsächlich nicht an Eclipse ran. Aber ich persönlich finde, dass es für viele alltägliche Dinge doch sehr gut funktioniert und dadurch schon sehr nahe an Eclipse kommt.

    Bibliotheken:
    Also das Argument von Leuten, dass man keine zusätzlichen Bibliotheken einbinden will (z.B. Boost), weil dadurch z.B. die Programme größer werden oder sonst was, ist ja mal sowas von daneben. Das ist doch in Java nicht anders, nur dass man hier nicht mal die Wahl hat, sondern dass man automatisch oft "Ballast" mitschleppt den man so gar nicht benötigt. Und um nicht falsch verstanden zu werden, ich finde das auch nicht sonderlich schlimm, nur kann man doch dann nicht C++ ankreiden, dass man hier im Prinzip die freie Wahl hat...

    Und ich stell jetzt mal ne These auf, auch wenn sie noch so blöd ist:
    Wenn C++ eine komplett neue Sprache wäre, und nicht C kompatibel wäre (was ja aber natürlich schon gut ist), dann gäbe es solche Threads wie diesen hier gar nicht. Den "Frickel"-Ruf hat C++ doch nicht zuletzt deswegen, weil eben immer wieder veraltete C Konstrukte eingesetzt werden, anstatt die moderneren C++-Mittel zu verwenden. Und das nicht nur von Anfängern, sondern auch im professionellen Bereich. Liegt einfach auch daran, dass man nicht gezwungen ist, sich mit den ganzen C++-Sachen auseinanderzusetzen, merke ich ja auch selbst manchmal bei mir.


  • Mod

    @Artchi: Keine Sorge, im Gegensatz zu manch anderen hier oder sonstwo (thomas001 im Chat zB) stelle ich zuerst fest welche Aufgabe ansteht, dann welche Umweltbedingungen (vorhandener Code, etc.) ich habe und erst dann welche Programmiersprache ich dafür benutze. Danach welche Libraries ich verwende (Logging, DB-Anbindung, etc.).

    Manche hier sind aber von vornherein auf jeden Fall von C++ überzeugt, überlegen dann wie sie die Aufgabe umdichten können damit sie optimal passt. Fangen erst einmal an das Logging-System oder das Konfiguration-System zu schreiben. Arbeiten sich bei Minimalproblemen stark ins detail und übersehen dann, dass ihr ehrgeiziges Projekt bereits tot ist bevor es richtig angefangen hat.

    @TactX: Nein, nicht unencht.

    MfG SideWinder



  • SideWinder schrieb:

    THX 1138 schrieb:

    Natürlich kannst du das in C++ machen, siehe Traits-Klassen.

    Sample für std::vector und std::list bitte, danke.

    Einfach mal google verwenden und selbst nachlesen bitte, danke.


  • Mod

    Und ich stell jetzt mal ne These auf, auch wenn sie noch so blöd ist:
    Wenn C++ eine komplett neue Sprache wäre, und nicht C kompatibel wäre (was ja aber natürlich schon gut ist), dann gäbe es solche Threads wie diesen hier gar nicht. Den "Frickel"-Ruf hat C++ doch nicht zuletzt deswegen, weil eben immer wieder veraltete C Konstrukte eingesetzt werden, anstatt die moderneren C++-Mittel zu verwenden. Und das nicht nur von Anfängern, sondern auch im professionellen Bereich. Liegt einfach auch daran, dass man nicht gezwungen ist, sich mit den ganzen C++-Sachen auseinanderzusetzen, merke ich ja auch selbst manchmal bei mir.

    Da steckt viel Wahres drin. Leider ist in dem Fall die Hybridität absolutes Problem statt Vorteil. Da man in C++ zu nichts gezwungen ist kann man kaum Leute einsetzen die sich nur halb oder wenig auskennen. Hier im Forum findet man ja maximal 50 Leute denen man einen Job im C++-Bereich geben sollte ohne das Projekt in schlimme Probleme zu reiten.

    MfG SideWinder



  • SideWinder schrieb:

    otze schrieb:

    gibt es denn einen sinnvollen grund, wieso container polymorph sein müssen, wenn die sprache ein funktionierendes iteratorkonzept(also nicht sowas wie in java) unterstützt?

    Z.B. kann ich je nach Einstellung zur Laufzeit entscheiden welche konkrete Implementierung ich verwenden will. Meine Funktion verarbeitet Daten in einer Liste. Ob sich jetzt für eine ArrayList entschieden wurde oder eine LinkedList ist abhängig von dem wie der Benutzer die Daten einfügen konnte. Was ist übrigens deiner Meinung nach am Java-Iteratorkonzept soviel schlecheter als am C++-Konzept?

    java iteratoren sind nicht vergleichbar, man kann also nicht zwischen 2 iteratoren hin und her iterieren. Geht halt maximal bei ner list, wenn man start und end index kennt, aber jede operation auf dem container(wie zb remove) würde die indices ungültig machen(was zb bei C++ nicht unbedingt sein muss). dazu kommt halt noch, dass man die rückgabewerte immer casten muss, aber da bin ich wohl zu sehr C++ verwöhnt, da passt das alles irgendwie besser, wirkt ntürlicher.


  • Mod

    Rückgabewerte casten? Du redest von <= 1.4.2 und wir sind bei 1.6. Da kannst du nichtmal mehr mit TRs kommen. 1.5 ist mehr als nur Standard. Es ist bereits 1.7 in Entwicklung. Selbst die letzte Entwicklungsumgebung hat schon auf 1.5 umgestellt.

    for(Entity e : c)
        e.doSmth();
    
    // oder von mir aus das:
    Iterator iter = c.iterator();
    while(iter.hasNext())
    {
        Entity e = iter.next()
        e.doSmth();
    }
    

    Das soll "nicht natürlich" wirken im Gegensatz zu:

    list_iter iter = c.begin();
    while(iter != c.end())
        iter->doSmth();
    

    Junge junge...

    MfG SideWinder


  • Mod

    Oder gar extröm:

    std::list<Entity>::iterator iter = list.begin();
    const std::list<Entity>::const_iterator ende = list.end();
    while(iter != ende)
        iter->doSmth();
    

    Jippie.

    MfG SideWinder



  • Ab C++2009 wird das so aussehen:

    auto iter = list.begin();
    auto ende = list.end();
    while(iter != ende)
        iter->doSmth();
    

    Aber stimmt ja, so lange kannst du ja nicht warten. 🙂


  • Mod

    Artchi schrieb:

    Ab C++2009 wird das so aussehen:

    auto iter = list.begin();
    auto ende = list.end();
    while(iter != ende)
        iter->doSmth();
    

    Aber stimmt ja, so lange kannst du ja nicht warten. 🙂

    Beim iterieren interessiert mich der Containertyp nicht wirklich, deswegen scheint mir das auto nicht so unpraktisch. Aber der Inhaltstyp wär schon interessant. Was hat eigentlich gegen die Einführung einer foreach-Schleife gesprochen? Alles was Iterable implementiert kann in der foreach angewandt werden und schwups wärs noch kürzer und noch schöner geworden:

    for(Entity e : c)
        e.doSmth();
    

    MfG SideWinder



  • SideWinder schrieb:

    Rückgabewerte casten? Du redest von <= 1.4.2 und wir sind bei 1.6. Da kannst du nichtmal mehr mit TRs kommen. 1.5 ist mehr als nur Standard. Es ist bereits 1.7 in Entwicklung. Selbst die letzte Entwicklungsumgebung hat schon auf 1.5 umgestellt.

    Stimmt, aber die IBM-Webspheres gurken leider noch auf 1.4 rum, so das die RMI-Java-Binary-Kompatibilität mit dem Client >1.4 nicht stimmt. Ergo muß der Client noch 1.4 laufen. Aber wenigstens sind vor knapp 2 Jahren die Serverfarmen von IBM von 1.3 auf 1.4 migriert worden. Müssen wir wenigsten keine 1.3-Clients mehr benutzen.



  • SideWinder schrieb:

    Artchi schrieb:

    Ab C++2009 wird das so aussehen:

    auto iter = list.begin();
    auto ende = list.end();
    while(iter != ende)
        iter->doSmth();
    

    Aber stimmt ja, so lange kannst du ja nicht warten. 🙂

    Beim iterieren interessiert mich der Containertyp nicht wirklich, deswegen scheint mir das auto nicht so unpraktisch. Aber der Inhaltstyp wär schon interessant. Was hat eigentlich gegen die Einführung einer foreach-Schleife gesprochen? Alles was Iterable implementiert kann in der foreach angewandt werden und schwups wärs noch kürzer und noch schöner geworden:

    for(Entity e : c)
        e.doSmth();
    

    MfG SideWinder

    foreach soll auch drin sein, kenne deren Syntax aber nicht... sieht aber glaub ich so aus wie deine gepostete. In Kombination mit den Concepts müsste das dann auch funktionieren.


  • Mod

    Kannst ja einen Proxy mit 1.4.2 vorschalten. Bzw. anderen AppServ verwenden. Selbst JBoss ist ja schon bei 1.5 angelangt 😉

    MfG SideWinder


Anmelden zum Antworten