Was kommt nach der Objektorientierung?



  • Xin schrieb:

    Statt die Zeit also doppelt zu nehmen, hätte man das auch einmalig für C++ formulieren können. Das wäre billiger.

    Sorry aber ist das wirklich deine Meinung?

    Wenn wir immer nur in bestehende Systeme investieren würden, hätten wir keine besseren Systeme. C++ ist für dynamische Elemente einfach schlecht geeignet. Ich halte C++ für eine der tollsten Sprachen überhaupt, aber gerade zB Datenbanklastige Anwendungen würde ich in C#/Java schreiben.

    Es ist zwar schön dass in C++ vieles theoretisch gehen würde, aber das ist nicht der Punkt. Es bringt mir nichts wenn eine Lösung in der Theorie zwar funktionieren würde, aber der Aufwand dorthin zukommen einfach zu groß ist.

    Im Web sieht man das aktuell sehr gut. Durch Ruby sind viele neue Tools entstanden ohne die es nicht mehr geht - auch wenn Rails selber nur mittelmäßig erfolgreich war.

    Das ist etwas tolles, denn mit PHP geht ja auch alles (um deine pro C++ Diskussion aufzufangen) aber manchmal sind andere Tools einfach besser. Es ist toll dass nicht aller Aufwand in PHP gesteckt wird sondern wir von Ruby Tools wie SASS oder capistrano bekommen haben.

    Stell dir mal vor Niemand hätte die Zeit in Java oder .NET gesteckt - dann hätten wir heute kein LINQ, keine Annotations keine Enterprise Beans und wahrscheinlich auch kein SOAP oder WSDL, etc.

    Nur weil es technisch möglich ist fast alles in C++ zu lösen (und ich bin ein richtig großer C++ Fan) ist es noch lange nicht sinnvoll dies auch zu tun. Mir fallen unzäglige Situationen ein wo C++ einfach schlechter ist als zB Java.

    PS:
    Die Lösung bei deinem Codebeispiel lautet: Funktionen verwenden.

    PPS:

    Bleibt die Frage, welche Features wichtiger sind. Meiner Meinung nach wiegt Const-Correctness, Referenzen, Templates und Mehrfachvererbung schwerer als Reflection und "out" - imho.
    Das wird also entweder - entgegen der Aussage des C#-Entwicklers nachgereicht - oder C# wird sich auf Dauer nicht halten können und ähnlich wie Java mit der Zeit erst weggeschoben und später verdrängt werden.

    Auch wenn Java durch den Sun verkauf Lizenzprobleme hat, so ist Java noch lange nicht weggeschoben oder sonstwas.

    Diese Aussage halte ich für sehr gewagt - denn die Codebasen von Java und .NET steigen rapide an. Aktuell sind das also Sprachen die im Vergleich zu C++ boomen.

    Natürlich werden sie irgendwann überholt sein - das stelle ich ausser Frage - aber soweit sind wir noch lange nicht. Gerade was die Abstraktion von der Hardware betrifft bieten Java und .NET soviel tolles an. Und Microsoft pusht .NET - also keines von beiden wird so schnell verschwinden... Am ehesten wird Java vielleicht durch Scala oder sowas ersetzt werden, aber die Plattformen Java und .NET werden uns noch sehr sehr lange begleiten.



  • Shade Of Mine schrieb:

    Xin schrieb:

    Statt die Zeit also doppelt zu nehmen, hätte man das auch einmalig für C++ formulieren können. Das wäre billiger.

    Sorry aber ist das wirklich deine Meinung?

    Narf... nein, natürlich nicht, ich lasse das halbe Forum über mich herziehen, weil meine wahre Meinung so angepasst und langweilig ist.

    SCNR ;->

    Natürlich ist das meine Meinung. - SORRY, ich war schon immer unbequem. 😉

    Shade Of Mine schrieb:

    Wenn wir immer nur in bestehende Systeme investieren würden, hätten wir keine besseren Systeme. C++ ist für dynamische Elemente einfach schlecht geeignet. Ich halte C++ für eine der tollsten Sprachen überhaupt, aber gerade zB Datenbanklastige Anwendungen würde ich in C#/Java schreiben.

    Okay... und warum ist es so schwierig die Frage zu erlauben, weshalb "wir" nicht in eine der tollsten Sprachen überhaupt investieren, um z.B. datenbanklastige Anwendungen zu vereinfachen, statt mit Java und C# zwei neue Räder zu erfinden?

    Womit sich die folgende Frage dann erledigen würde:

    Shade Of Mine schrieb:

    Es ist zwar schön dass in C++ vieles theoretisch gehen würde, aber das ist nicht der Punkt. Es bringt mir nichts wenn eine Lösung in der Theorie zwar funktionieren würde, aber der Aufwand dorthin zukommen einfach zu groß ist.

    Ich investiere in C++ - und halt in etwas, was ich als Alternative aufbauen möchte. Als ich studierte, sollte ich C++ vergessen und in Delphi investieren. Dann in Java. Derzeit C#.

    Ich investiere weiter, bis ich der Meinung bin, dass eine andere Sprache mehr Potential als C++ hat. Bis dahin akzeptiere ich hier und da etwas Mehraufwand. Mein privates C++-Framework war und ist viel Aufwand. Aber es existiert - auch für Datenbanken. Ein Framework ist für mich kein Argument gegen C++.
    Es ist ein Grund sich zu überlegen, eine Anwendung in C# oder Java zu überlegen, aber die Frage lautet nicht, was das Framework der Zukunft ist, sondern es geht um die Sprache in der dann z.B. Frameworks implementiert werden.

    Shade Of Mine schrieb:

    Stell dir mal vor Niemand hätte die Zeit in Java oder .NET gesteckt - dann hätten wir heute kein LINQ, keine Annotations keine Enterprise Beans und wahrscheinlich auch kein SOAP oder WSDL, etc.

    Warum sollten wir das denn nicht haben? SOAP ist doch uralt... <wikipedia anwerf> SOAP kam 1999 von MS, also vor C# und nicht von Sun.

    So what?

    Shade Of Mine schrieb:

    Die Lösung bei deinem Codebeispiel lautet: Funktionen verwenden.

    Danke, womit Du voll in die Kerbe geschlagen hast, wo ich den typischen Entwickler sehe, Du hast leider das falsche Problem gelöst. Es geht eben nicht darum, einen Workaround zu finden.

    Gehe zurück zum Posting, ziehe keine 4000 Treuepunkte ein und lies das Posting nochmal. 😉

    Zu PPS: Den Eindruck habe ich so nicht. Dass Codebasen nicht schrumpfen ist normal, aber mein Eindruck ist, dass Java stagniert mit Tendenz nach unten, gehalten durch Android, C# ohne Tendenz steigt und C++ stagniert mit Tendenz nach oben.
    Aber das ist alles sowieso nicht wirklich messbar. Mein Eindruck ist allerdings Basis meiner Projektplanung und liegt bisher recht gut. Java hält sich ziemlich genau an das, was ich vor 10 Jahren vorausgesagt habe. Hype, lange Stagnation, absinken (2015), verschwinden (Cobol/Fortran-Level) gegen 2025.
    In meinen Augen ist Java damit tot.
    PS: .NET traue ich mehr Zukunft zu, da Du natürlich richtig liegst, dass MS .NET mehr pusht.



  • Xin schrieb:

    Okay... und warum ist es so schwierig die Frage zu erlauben, weshalb "wir" nicht in eine der tollsten Sprachen überhaupt investieren, um z.B. datenbanklastige Anwendungen zu vereinfachen, statt mit Java und C# zwei neue Räder zu erfinden?

    Habe ich denke ich schon in dem Posting erklärt. Nur in einer Welt zu leben ist furchtbar eintönig und hemmt den Fortschritt.

    Und ich habe nicht gesagt dass Java alles coole erfunden hat, nur dass ein reines fokussieren auf eine Technik (zB C++) den Fortschritt enorm hemmt. Aber bitte: schau dir mal so coole Sachen an wie JIT. Sowas gäbe es nicht, wenn wir immer nur in C++ denken würden.

    Tunnelblick kommt dabei raus. Wir wären ja nie über Basic hinweggekommen wenn wir die bestehenden Sprachen als Perfekt angesehen hätten. C++ gäbe es mit deinem Ansatz ja garnicht.

    Danke, womit Du voll in die Kerbe geschlagen hast, wo ich den typischen Entwickler sehe, Du hast leider das falsche Problem gelöst. Es geht eben nicht darum, einen Workaround zu finden.

    Gehe zurück zum Posting, ziehe keine 4000 Treuepunkte ein und lies das Posting nochmal. 😉

    Nein. Du hast einfach ein Prinzip der Programmierung missachtet: Eine Funktion - Eine Aufgabe. Deine Funktion macht mehrere Sachen, ergo hast du Probleme.

    Da hilft dir keine Sprache.



  • Shade Of Mine schrieb:

    Und ich habe nicht gesagt dass Java alles coole erfunden hat, nur dass ein reines fokussieren auf eine Technik (zB C++) den Fortschritt enorm hemmt. Aber bitte: schau dir mal so coole Sachen an wie JIT. Sowas gäbe es nicht, wenn wir immer nur in C++ denken würden.

    Öhm... JIT kommt aus den 60ern... da gab's nichtmals C++. ^^

    Ich stimme Dir zu, dass wir unterschiedliche Blickwinkel haben. Und während ich meine Meinung meistens nicht gegen den Zeitgeist verteidigen kann, ist Java nicht die erste Sprache, die ich zu ihrer Hochzeit für tot erkläre. Dazu gehört auch beispielsweise Pascal und Delphi.

    Auch damals hatte ich keine Ahnung und Tunnelblick. Und recht. 😉

    Hätte ich damals auf die Leute gehört, hätte jetzt eine größere Delphi-Codebasis. Oder eine halb so große Java-Codebasis. Ich setze seit 94 auf C++ only, lerne neue Programmiersprachen, aber fand nichts, was C++ das Wasser reichen kann. Daher habe ich angefangen, mir selbst was auszudenken.
    Sorry, das ist nicht von heute auf morgen fertig und wird noch Jahre in Anspruch nehmen. Aber ich entdecke auch in den Weiterentwicklungen von C++ und C#, dass die Entwickler ähnliche Wege gehen und ich im Design der Sprache noch ein paar Jahre Vorsprung habe. Ich muss nur mit der Implementation hinterherkommen.



  • Xin schrieb:

    Auch damals hatte ich keine Ahnung und Tunnelblick. Und recht. 😉

    Der Punkt ist, dass wenn alle so denken würden wie du - es C++ nie gegeben hätte. Denk einfach mal daran.

    Aber ich entdecke auch in den Weiterentwicklungen von C++ und C#, dass die Entwickler ähnliche Wege gehen und ich im Design der Sprache noch ein paar Jahre Vorsprung habe. Ich muss nur mit der Implementation hinterherkommen.

    Theorie und Praxis... Eine tolle Sprache in der Theorie zu haben ist trivial. Die Praxis ist das Problem. Wenn du aber wirklich so gute Ideen hast, warum nicht zB den Google Summer of Code und ähnliches nutzen um Resourcen zu bekommen? Oder auch hier im Forum meinetwegen... Wenn es nur um Implementierung geht, sollte das ja nicht das Problem sein. Notfalls an llvm dran hängen, dann hat man auch gleich ne ordentliche Basis.



  • Shade Of Mine schrieb:

    Xin schrieb:

    Auch damals hatte ich keine Ahnung und Tunnelblick. Und recht. 😉

    Der Punkt ist, dass wenn alle so denken würden wie du - es C++ nie gegeben hätte. Denk einfach mal daran.

    Wir kommst Du darauf?

    Ich nehme gutes und verbessere es. Im Gegensatz zu "Ich mache eine Sparversion und erkläre es für gut." - so würde ich Java und C# einordnen. Zu der Spar-Sprache kommt dann natürlich das Framework. Dass es sich um Sparversionen handelt, liest sich sehr schon an der Begründung, warum C# kein Const-Correctness hat. Wenn Du im Gegenzug Dich damit beschäftigst, was es bedeutet Const-Correctness zu implementieren, dann verstehst Du noch besser, warum ich hier schrieb, dass C# im Vergleich zu C++ ein Witz wäre. 😉

    Ich habe angefangen als Erweiterung zu C++. Dafür schrieb ich einen C-Compiler und erkannte, wieviele Hebel einem da zur Verfügung stehen, an denen niemand ziehen kann. Dann erkannte ich, wie sch... C/C++ eigentlich ist und fing von vorne an und plante die Syntax neu, ohne den Wunsch zu C++ kompatibel zu bleiben weiter zu verfolgen.

    Trotzdem ist C++ das Beste, was derzeit verfügbar ist.

    Shade Of Mine schrieb:

    Theorie und Praxis... Eine tolle Sprache in der Theorie zu haben ist trivial.

    ÄÄhh... nein. Das sind jetzt 13 Jahre experimentieren, planen, schreiben, verwerfen... teilweise in Vollzeit.
    Das ist definitiv nicht trivial.

    Shade Of Mine schrieb:

    Die Praxis ist das Problem. Wenn du aber wirklich so gute Ideen hast, warum nicht zB den Google Summer of Code und ähnliches nutzen um Resourcen zu bekommen?

    Weil ich keine Anfänger brauchen kann und Profis nicht kostenlos arbeiten.

    Solange die Basis nicht steht, bringt es auch nichts 10 Jahre Quelltexte rauszugeben, um dann "tl;dr" und "Ich will aber Blasmusik" zu hören. Erst ist das Konzept umgesetzt, dann überlege ich, ob ich mir reinreden lasse und von wem.

    Shade Of Mine schrieb:

    Oder auch hier im Forum meinetwegen... Wenn es nur um Implementierung geht, sollte das ja nicht das Problem sein.

    Die Implementierung wird tatsächlich langsam überschaubarer, aber trotzdem noch viel Arbeit und halt derzeit ein Freizeitprojekt, weil ich ja auch irgendwovon leben muss.

    Shade Of Mine schrieb:

    Notfalls an llvm dran hängen, dann hat man auch gleich ne ordentliche Basis.

    Das ist nicht die Basis, die ich brauchen kann. Ansonsten funktionieren in meinem Compiler schon Sprachfeatures, die llvm-Sprachen nicht können. Was genau zeige ich gerne, wenn es soweit ist.
    Ein Wechsel der Basis erscheint mir nicht mehr sinnvoll, ich würde quasi wieder bei Null anfangen - alleine die Einarbeitung würde mich Unmengen an Zeit kosten.


  • Administrator

    Ich will hier nicht mehr gross mitdiskutieren, da ich den Sinn ebenfalls nicht mehr sehe. Daher nur drei kleine Anmerkungen, welche mir aufgefallen sind:

    1. Du findest, ich müsste alle Inkompatibilitäten in den 17 Jahren der Weiterentwicklung von Java kennen, wenn man sich Java Entwickler nennen darf? Aber du weisst nicht mal, was DI im Kontext von Java EE und Container bedeutet? Gut, ich gebe zu, Java war nicht immer zu 100% binär abwärtskompatibel. Teilweise waren es nur 99.6%. Und von 1.4 auf 1.5 tatsächlich nur ca. 90%. Ich habe gerundet. C++ dagegen hat eine binäre Abwärtskompatibilität von 0%. Es ist nicht mal binär kompatibel in der gleichen Version 😉

    2.

    Xin schrieb:

    Öhm... JIT kommt aus den 60ern... da gab's nichtmals C++. ^^

    Die Idee war schon in den 60ern vorhanden, korrekt. Aber meinst du wirklich, dass die Idee seither nicht weiterentwickelt wurde und Java zu dieser Weiterentwicklung keinen wertvollen Beitrag geleistet hat?

    3.

    Xin schrieb:

    Ich nehme gutes und verbessere es.

    Sag mir aber bitte nicht, dass du dieses "gutes" von irgendeiner anderen Sprache als C++ nimmst?

    Und vielleicht noch eine Frage:
    Wenn deine Sprache dann mal soweit ist, dass du sie tatsächlich umsetzt und veröffentlichst, was erwartest du dann? Wie werden die Leute darauf reagieren? Wird deine neue Sprache alle anderen in den Schatten stellen und diese verdrängen?

    Grüssli



  • Dravere schrieb:

    1. Du findest, ich müsste alle Inkompatibilitäten in den 17 Jahren der Weiterentwicklung von Java kennen, wenn man sich Java Entwickler nennen darf? Aber du weisst nicht mal, was DI im Kontext von Java EE und Container bedeutet? Gut, ich gebe zu, Java war nicht immer zu 100% binär abwärtskompatibel. Teilweise waren es nur 99.6%. Und von 1.4 auf 1.5 tatsächlich nur ca. 90%. Ich habe gerundet.

    90%... tatsächlich? Ähh... jetzt aber nicht ernsthaft, so katastrophal hätte ich das jetzt nicht eingeschätzt.

    Du hast Recht, ich habe keinen Plan worauf sich DI bezieht. Erstens kann ich mir Namen und Abkürzungen eh schlecht merken und zweitens hat jedes Konzept in der Informatik eh mindestens zwei Namen. Wenn Du mir also DI an den Kopf wirfst und ich es nicht kenne, verbuche ich es vielleicht unter einem anderen Namen.

    Also nochmal... Auf Platz 7 zu "Java DI" findet sich "dependency injection". Wikipedia: "Sie kann als Verallgemeinerung der Fabrikmethoden verstanden werden." - "Dependency Injection überträgt die Verantwortung für das Erzeugen und die Verknüpfung von Objekten an ein extern konfigurierbares Framework, entsprechend einem Komponentenmodell."

    Das ist ja der Wahnsinn. Damit ist Windows das extern konfigurierte Framework und die Plugin-DLL erzeugt das Objekt. Joah... wenn das alles war, was DI darstellt, dann wären mehr Buchstaben auch wirklich Verschwendung gewesen. 😉

    Dravere schrieb:

    C++ dagegen hat eine binäre Abwärtskompatibilität von 0%. Es ist nicht mal binär kompatibel in der gleichen Version 😉

    Den Witz verstehe ich jetzt nicht.

    Dravere schrieb:

    2.

    Xin schrieb:

    Öhm... JIT kommt aus den 60ern... da gab's nichtmals C++. ^^

    Die Idee war schon in den 60ern vorhanden, korrekt. Aber meinst du wirklich, dass die Idee seither nicht weiterentwickelt wurde und Java zu dieser Weiterentwicklung keinen wertvollen Beitrag geleistet hat?

    Keine Ahnung, was Java dazu beigetragen hat. Ich sehe ehrlich gesagt auch nicht den Zusammenhang zwischen der Sprache Java und der Übersetzung von Bytecode zu nativen Code. Das gab's alles vor Java. Ich habe JIT übrigens durch NativeCode-JIT-Compiler kennengelernt, die native Programme anderer Computer auf Standard-PCs ausführten.

    Das sich mit der Beschäftigung mit JIT-Compilern JIT-Compiler weiterentwickelt haben, ist jetzt auch logisch, aber auch da sehe ich nicht, wieso man dafür Java gebraucht hätte.

    Dravere schrieb:

    3.

    Xin schrieb:

    Ich nehme gutes und verbessere es.

    Sag mir aber bitte nicht, dass du dieses "gutes" von irgendeiner anderen Sprache als C++ nimmst?

    Klar. Ich habe nie gesagt, dass andere Sprachen grundsätzlich schlecht sind - im Gegenteil. Ich sage, dass unterm Strich, wenn ich eine Sprache wählen muss, die Wahl auf C++ fällt, weil der Rest nicht an C++ rankommt. Und ich wünschte, dass man die Resourcen auf C++ gelenkt hätte, damit Features wie override und out früher in C++ zu finden wären. Ich habe auch kein Problem mit Annotations und Reflection in C++ oder C++ auf eine Java oder .NET VM zu kompilieren.
    Ich kritisiere Java und C#. Es geht hier um Programmiersprachen, also die Möglichkeit Gedanken zu Quelltext zu transformieren - nicht um Frameworks, nicht um VMs.

    Dravere schrieb:

    Und vielleicht noch eine Frage:
    Wenn deine Sprache dann mal soweit ist, dass du sie tatsächlich umsetzt und veröffentlichst, was erwartest du dann? Wie werden die Leute darauf reagieren? Wird deine neue Sprache alle anderen in den Schatten stellen und diese verdrängen?

    Hehehe, das wäre das Ziel, sicher. Wenn ich nicht danach streben würde, wäre der Aufwand ja unsinnig.

    Ich bin mir aber bewusst, dass da nicht ein Xin vorbei kommt und mal eben die eine einzig wahre Programmiersprache hinlegt und alles andere vom Markt ist. Meine Erwartung ist, dass die Sache erst über Mundpropaganda läuft und sich dann hoffentlich langsam verbreitet.

    Wenn ich Pech habe, interessiert es außer mir keine Sau. Das kann ich nicht beeinflussen. Ich kann nur mein möglichstes tun, gute Gründe zu liefern, sich näher mit der Sprache zu beschäftigen.
    Ich entwickle seit 1986 Software und habe seitdem viel Mist gesehen, den ich angehe. Darum ist eine Diskussion über ein Feature auch aufwendig und nicht mal eben auf gut Glück implementiert. Wäre ich nicht optimistisch, hätte ich längst aufgegeben, aber Erwartungen...?
    Ich lasse mich überraschen. 🙂


  • Administrator

    @Xin,
    Ok, hat wirklich keinen Sinn mehr. Ich warte mal auf deine alles veränderte Sprache, welche wahrscheinlich in etwa 200 Jahren kommen und sich dann in einem weiteren Bereich neben allen bereits etablierten Sprachen einnisten wird.

    Grüssli



  • Xin schrieb:

    Shade Of Mine schrieb:

    Xin schrieb:

    Auch damals hatte ich keine Ahnung und Tunnelblick. Und recht. 😉

    Der Punkt ist, dass wenn alle so denken würden wie du - es C++ nie gegeben hätte. Denk einfach mal daran.

    Wir kommst Du darauf?

    Ich nehme gutes und verbessere es. Im Gegensatz zu "Ich mache eine Sparversion und erkläre es für gut." - so würde ich Java und C# einordnen.

    Also C# und Java haben mit C++ nun echt nichts zu tun, bis auf dass die Syntax aehnlich ist.

    Sie verwenden eine vollkommen andere herangehensweise an Probleme.

    Und deshalb ist es wichtig in sowas Energie rein zustecken. Hotspot optimizer, starke VMs, schnelle JITer - das sind alles rein technische Entwicklungen die sich daraus ergeben dass Energie in Java gesteckt wurde. Davon haben dann auch andere Technologien profitiert - zB gaebe es JavaScript in der heutigen Form nicht wenn nicht soviel Energie in starke VMs gesteckt worden waere...

    Deshalb waere es fatal zu sagen C++ ist das Mass aller Dinge und wir vergessen alles andere. Viele Entwicklungen gaebe es dann ja nicht.

    Aber das ist nicht alles. Java hat andere Denkweisen etabliert. zB hat man in C++ flache Vererbungshierachien und in Java tiefe. zB das ignorieren von Resourcen Management in Java ist ein interessanter Ansatz. Schnelle GCs die es erlauben viel schneller zu allokieren als es C++ kann. Dazu Memory Fragmentation eliminieren... Das ist spannend weil es in C++ nicht wirklich geht. Annotations, Mixins oder andere Sprachen wie zB Prototype basierende Konzepte - totale asynchronitaet wie Node.js - viele viele spannende Konzepte ausserhalb der C++ Welt.

    Nicht jedes Konzept ist perfekt, aber es ist wichtig sie zu erforschen. Neue Sprachen koennen so wieder mehr Konzepten waehlen und bessere Mixes entstehen lassen.

    Wenn wir alles stehen und liegen lassen nur um C++ zu verbessern (oder eine andere Sprache) dann wuerden wir soviel verlieren.

    Warum steckst du zB nicht deine Arbeit in einen C++ Compiler der deine Sprachfeatures anbietet anstatt eine neue Sprache zu entwickeln?

    Trotzdem ist C++ das Beste, was derzeit verfügbar ist.

    Ich habe heute vCards verarbeiten muessen - es ging dabei um Textersetzungen innerhalb eines gewissen Kontexts. C++ haette komplett gesuckt. Ich habe das zB in PHP in 10 Zeilen Code gemacht. Ich haette es auch in 10 Zeilen Perl oder 10 Zeilen Python oder 10 Zeilen Ruby hinbekommen. Aber in C++ waere das ausgeartet.

    Ergo: C++ ist nicht immer das beste.

    Ich bin immer an neuen Sprachen interessiert und wenn du gute Ideen hast ist das sicherlich nicht verkehrt darueber zu diskutieren. Alleine schon weil es unterschiedliche Blickwinkel auf Problemloesungen gibt.



  • Es kann doch jeder nehmen, was er will. Die meisten Java Entwickler, die C++ nicht können, sind mit Java völlig zufrieden und leisten deswegen nicht automatisch schlechte Arbeit. Und einige wenige Entwickler, die beides können (oder auch paar Sprachen/Konzepte mehr) könnnen dann auch tatsächlich je nach Aufgabe entscheiden, was grad besser geeignet ist und nicht immer DIE Sprache nehmen.

    Was mich bei C++ z.B. ganz massiv stört (und wo ich nicht so viele Verbesserungsmöglichkeiten sehe), sind 3rd Party Bibliotheken. Die meisten sind völlig unterschiedlich und zueinander inkompatibel. Ganz abgesehen davon, dass sehr viele einfach nur grottenschlecht sind. Es gibt etliche Bibliotheken, die in Java gut gemacht sind, und wo es in C++ nichts vergleichbares gibt. Aber das lass ich mal außen vor. Es kostet einfach sehr viel Aufwand, all diese unterschiedlichen Bibliotheken irgendwie zu integrieren. So ziemlich jede Bibliothek verwendet irgendwas eigenes, eigene String Klassen, eigenes Maps/Hashes, Smartpointer usw. Viele Bibliotheken basieren auf C und verwenden z.B. apr oder eins von tausend ähnlichen libs. Andere Libs basieren auf boost oder gleich auf Qt oder GTK oder sonst was. Und dann findet man auch ganz leicht zwei Libs die man verwenden möchte, die aber unterschiedliche Versionen derselben Lib als Abhängigkeit haben... Allein das würde bei kleinen Projekten 10 mal mehr Aufwand verursachen, als das Projekt in C# oder Java zu machen.

    p.s. Und natürlich bringst du auch diese typische Einstellung an den Tag "was andere gut finden, interessiert mich nicht und ist nicht wichtig". Dir mag Reflection und DI und ähnlich nicht wichtig sein, aber anderen durchaus schon und es kann auch extrem dazu beitragen, die Code Qualität zu steigern. Richtiges ORM gibt es in C++ einfach nicht. Nein, Basisklassen sind kein Ersatz für Reflection. Reflection geht automatisch und richtig, "Basisklassen" geht umständlich von Hand und fehleranfällig. Man kann sehr komplexe Datenbankstrukturen über ORM einfach schnell konfigurieren und braucht sich nie wieder um das Laden und Speichern zu kümmern. Und Erweiterungen oder Änderungen gehen dann auch schnell und fehlerfrei, wenn man sich nicht blöd anstellt. Damit hat man bei einem kleinen/mittleren Projekt auch schon einen großen Teil quasi automatisch erledigt und kann sich darauf verlassen, dass es richtig funktioniert, wo man in C++ erstmal Tage oder Wochen beschäftigt wäre, und dann nochmal Tage oder Wochen mit Fehlersuche verbringen würde.
    Also, nicht einfach die Augen vor allem verschließen, was du nicht gewohnt bist udn was dir nicht wichtig erscheint.



  • Shade Of Mine schrieb:

    Deshalb waere es fatal zu sagen C++ ist das Mass aller Dinge und wir vergessen alles andere. Viele Entwicklungen gaebe es dann ja nicht.

    Ich weiß nicht, wie oft mir das jetzt alleine in diesem Thread in die Tastatur gelegt wird.
    Das wurde nirgendwo geschrieben und schon mehrfach klargestellt.

    Shade Of Mine schrieb:

    Nicht jedes Konzept ist perfekt, aber es ist wichtig sie zu erforschen. Neue Sprachen koennen so wieder mehr Konzepten waehlen und bessere Mixes entstehen lassen.

    Hier kommen wir dann wieder zusammen.

    Shade Of Mine schrieb:

    Warum steckst du zB nicht deine Arbeit in einen C++ Compiler der deine Sprachfeatures anbietet anstatt eine neue Sprache zu entwickeln?

    Auch das habe ich zwei oder drei Postings zuvor beschrieben.

    Aus genau diesem Grund macht die Diskussion in solchen Foren wenig Sinn. Man dreht sich beliebig im Kreis und kaum einer liest, was eigentlich gesagt wurde oder es werden Aussagen nach belieben zurecht gelegt. C++ ist das beste, was wir haben. Daraus schließt Du, dass ich C++ als das Maß aller Dinge hochhalte, obwohl Du mich bei genau der Frage hier zitieren kannst, wie sch... C++ eigentlich ist. Ist so. Trotzdem ist C++ das beste, was wir haben.

    Shade Of Mine schrieb:

    Ich habe heute vCards verarbeiten muessen - es ging dabei um Textersetzungen innerhalb eines gewissen Kontexts. C++ haette komplett gesuckt. Ich habe das zB in PHP in 10 Zeilen Code gemacht. Ich haette es auch in 10 Zeilen Perl oder 10 Zeilen Python oder 10 Zeilen Ruby hinbekommen. Aber in C++ waere das ausgeartet.

    Ergo: C++ ist nicht immer das beste.

    Dir fehlen entsprechende String-Klassen. Ich benutze std::string auch nur unfreiwillig. Meine eigene Stringklasse ist deutlich flexibler. Ich kann PHP, Java, C#.
    Ich bleibe da lieber bei meiner eignen Klasse.

    Wie steht's mit QString, die ist auch nicht ganz verkehrt?

    Shade Of Mine schrieb:

    Ich bin immer an neuen Sprachen interessiert und wenn du gute Ideen hast ist das sicherlich nicht verkehrt darueber zu diskutieren. Alleine schon weil es unterschiedliche Blickwinkel auf Problemloesungen gibt.

    Grundsätzlich: 👍

    Aber dies ist weder der richtige Thread, noch das richtige Forum dafür.

    ----------------------------

    Mechanics schrieb:

    Was mich bei C++ z.B. ganz massiv stört (und wo ich nicht so viele Verbesserungsmöglichkeiten sehe), sind 3rd Party Bibliotheken. .... Es kostet einfach sehr viel Aufwand, all diese unterschiedlichen Bibliotheken irgendwie zu integrieren. ... Allein das würde bei kleinen Projekten 10 mal mehr Aufwand verursachen, als das Projekt in C# oder Java zu machen.

    Du hast meine vollkommene Zustimmung. Und genau hier ist der Punkt. Statt Java-Framework oder .NET-Framework hätte man auch ein gutes C++-Framework schreiben können.

    Mechanics schrieb:

    p.s. Und natürlich bringst du auch diese typische Einstellung an den Tag "was andere gut finden, interessiert mich nicht und ist nicht wichtig".

    Da irrst Du Dich.

    Ich werte lediglich nicht nach Masse. Wenn mir 300 Leute sagen, dass ihnen etwas wichtig ist, dann kann ich das aber problemlos ignorieren, wenn ich das Vorgehen für falsch halte. Wenn mir einer sagt, dass er etwas wichtig findet, was mich nicht aber nicht interessiert, aber wichtig ist, dann bleibt das wichtig.
    Meine Sprache ist natürlich eine Auswahl von dem, was ich für wichtig halte. Aber ich mache mir da schon sehr ausführlich Gedanken darüber und kann das auch von meinen persönlichen Interessen trennen. Was die Standard-Lib angeht, ist allerdings damit zu rechnen, dass ich mich erstmal auf die Dinge konzentrieren werde, die mich interessieren. Aber ich kann eh nicht ein ganzes Framework liefern und hoffe dann auf Hilfe.

    Es gilt darum gute Lösungen für Probleme zu finden. Eine beliebte Lösung muss deswegen nicht richtig sein. Ein für mich uninteressantes Problem bleibt aber wichtig.

    Mechanics schrieb:

    Dir mag Reflection und DI und ähnlich nicht wichtig sein

    BITTE lest die Postings bevor ihr dagegen seid. Es wurde von meiner Seite nie geäußert, dass Reflection oder DI unwichtig wäre!

    Mechanics schrieb:

    Richtiges ORM gibt es in C++ einfach nicht. Nein, Basisklassen sind kein Ersatz für Reflection. Reflection geht automatisch und richtig, "Basisklassen" geht umständlich von Hand und fehleranfällig. Man kann sehr komplexe Datenbankstrukturen über ORM einfach schnell konfigurieren und braucht sich nie wieder um das Laden und Speichern zu kümmern.

    Hmm... keine Ahnung, ich finde den Aufwand meiner Basisklasse sehr überschaubar.

    Weder muss ich Datenbanken von Hand anlegen, noch sonst irgendwas.
    Mal ein Beispiel aus meinem MySQL-Test:

    MySQL db( "localhost", "test", "testtest" );
      Database::ErrorCode ec = db.Connect( "de_xsd_test_user" );
    
      User * newUser = User::SelectId( db, primaryKey );
    

    User muss lediglich von meiner Basisklasse abgeleitet werden und es müssen einmalig die Elemente aufgezählt werden, die aus der Klasse persistiert werden sollen. Und der Tabellenname muss konfiguriert werden, wenn in eine Datenbank persistiert wird.

    Der User kann Beispielsweise eine Adresse haben, die in einer Adresstabelle assoziiert wird oder gleich mit in die Usertabelle geschrieben wird. Das klappt mit jedem eingebetteten oder referenzierten Objekt, dass von besagter Basisklasse abgeleitet ist und funktioniert mit Containern, z.B. ein Array von Adressen - dann natürlich ausschließlich in eine eigene Tabelle für Adressen.
    Ich kann den User nun ohne Einschränkungen ändern, genauso wie jedes andere Objekt auch und mit

    db.Write( *newUser )
    

    wieder updaten. Ist der User nicht gelesen worden, sondern mit new angelegt, so wird in er in der Datenbank angelegt.

    Für die Webprogrammierung kann ich die Objekte auch einfach als JSON an den Browser schicken. Oder als XML. Oder auf die Festplatte auslagern und wieder einlesen.
    Wenn das in Java oder C# heute einfacher geht, dann bin ich neugierig.
    Ich bin nicht nur in einem Bereich tätig, entsprechend flexibel ist das Framework.

    Aber ich bin weiterhin der Meinung, dass Reflection in C#, wie auch die Basisklasse in C++, falsch sind. Hier versagen beide Sprachen und beides sind nur schlechte Workarounds. Die Sprachen müssen ORM offerieren.

    Mechanics schrieb:

    Also, nicht einfach die Augen vor allem verschließen, was du nicht gewohnt bist udn was dir nicht wichtig erscheint.

    Ich denke, ich habe einen recht klaren Blick dafür, was wichtig ist, ich programmiere auch schon was länger. Derzeit 26 Jahre, davon 18 in C++.



  • Xin schrieb:

    Du hast meine vollkommene Zustimmung. Und genau hier ist der Punkt. Statt Java-Framework oder .NET-Framework hätte man auch ein gutes C++-Framework schreiben können.

    Aber man hätte auch ein gutes Lisp-Framework schreiben können. Fragst du Lisp-Entwickler, ob man Zeit in C++ stecken sollte, würden die sagen, dass bereits viel zu viel Zeit in diese dumme Idee investiert wurde und besser alle wieder in den Garten Eden zurückkehren sollten. Und sie hätten allen Grund dazu. Denn Lisp nimmt für sich in Anspruch, eine programmeirbare Programmiersprache zu sein. Wenn man sich C++ anschaut, ist template-metaprogrammierung das was C++ am Leben hält. Warum also C++ und nicht Lisp?

    Eventuell steckt einfach doch mehr dahinter und wir müssen akzeptieren, dass nicht alle Probleme mit dem selben Werkzeug gleich gut gelöst werden können. Und bislang weiß niemand, welche Programmiersprache bei den meisten Problemen besser abschneidet. Deswegen gibt es Lisp, Java, C#, Php, python, C++, Haskell,...



  • otze schrieb:

    Deswegen gibt es Lisp, Java, C#, Php, python, C++, Haskell,...

    c ist hier aus der liste schon raus? sind alle c programmierer schon tot, oder woran liegt das 😕



  • Xin schrieb:

    Du hast meine vollkommene Zustimmung. Und genau hier ist der Punkt. Statt Java-Framework oder .NET-Framework hätte man auch ein gutes C++-Framework schreiben können.

    Das ist natürlich richtig, und da ich auch hauptsächlich C++ programmiere wäre ich auch voll dafür, dass hier mehr Arbeit reingesteckt wird und die Bibliotheken besser werden. Aber zum einen kann das aus meiner Sicht nur teilweise funktionieren. Es gibt einfach noch sehr viele Bibliotheken, die eher an C orientiert sind oder direkt in C geschrieben, weil damit Binding zu anderen Sprachen einfacher zu machen sind. Und da es in C keine "richtige" Klassenbibliothek mit strings, Listen, Containern usw. gibt, wird da alles mögliche verwendet und muss für die Verwendung im eigenen Programm erst gewrappt und angepasst werden. Und da es viele Technologien gibt, aber nur begrenzt viele Entwickler, die sich für eine konkrete Thematik interessieren, dann gibt es in bestimmten Bereichen vielleicht nur eine brauchbare Bibliothek, und die basierten dann auf eine exotischen anderen Bibliothek, die dem Autor zufällig gut gefällt. Ich wüsste jetzt nicht, wie man das sauber unter einen Hut bringen soll. In Java kommt hingegen niemand auf die Idee, eigene String oder List Klassen zu schreiben. Auch der Stil ist meist einheitlicher und bei guten Bibliotheken (und davon gibts genug) kann man sich auch halbwegs darauf verlassen, dass das ganze irgendwie durchdacht ist und nicht nur eine lose Sammlung von wirren Funktionen.
    Das andere Problem dabei ist, dass Leute, die Arbeit in gute Java Bibliotheken stecken zu 99% grundsätzlich kein Interesse an C++ haben. Es ist ja nicht so, dass es sie davon abhält, mehr Zeit in C++ reinzustecken. Sie würden es einfach nicht machen. Und heute ist C++ sowieso mehr oder weniger am Aussterben. Wird an Unis/FHs so gut wie gar nicht mehr unterrichtet. Vor paar Jahren konnten wir noch paar neue Entwickler finden, aber mittlerweile wird es in unserer Stadt an keiner Hochschule mehr gelehrt und wird langsam knapp mit neuen Entwicklern...

    Wegen deinem Datenbank Framework (ist es überhaupt von dir oder hab ich das falsch verstanden?). Das sieht jetzt so an sich nicht verkehrt aus und wär für C++ Verhältnisse auch sicher nicht schlecht. Aber es reißt sicher keinen Java oder C# Entwickler vom Hocker. Wie muss man deine Klasse konfigurieren? Über Strings? Strings sind fehleranfällig und schwer zu warten. Wie schaut es mit komplexen Joins und Mappings aus, wird das auch komplett transparent abgewickelt? Was ist mit der Datenbankunabhängigkeit, kann man die drunterliegende Datenbank einfach austauschen? Was ist mit Lazy Loading und Caching? Was ist mit einer datenbankunabhängigen Abfragesprache? Transaktionssteuerung? Von sowas wie Linq fang ich lieber nicht an, kann Java ja auch nicht. Sicher kann man einiges davon auch in C++ ohne Reflection realisieren. Aber eben nicht alles und bisher hat es aus irgendeinem Grund keiner gemacht.

    Xin schrieb:

    Ich werte lediglich nicht nach Masse. Wenn mir 300 Leute sagen, dass ihnen etwas wichtig ist, dann kann ich das aber problemlos ignorieren, wenn ich das Vorgehen für falsch halte.

    Ich versteh schon was du meinst. Aber du brauchst bei sowas ja auch nicht dagegen zu diskutieren. Wenn Leute viel Erfahrung mit DI gesammelt haben und das gut finden, dann kommt es etwas komisch rüber, wenn du eine Minute bei Wikipedia schaust und sagst, das Konzept kommt mir bekannt vor, bringt nichts, interessiert mich nicht. Du kannst bei deiner Sprache natürlich machen was du willst und dich darauf konzentrieren, was du für wichtig hälst, und vielleicht kriegst du auch eine gute und nützliche Sprache zustande. Aber ich seh gar keinen Sinn darin, so abwertend über andere Sprachen und Technologien zu reden und sie schlecht zu machen.



  • Ich möcht übrigens noch was zu Qt vs. Winforms sagen. Da kann ich deinen Eindruck auch nicht nachvollziehen. Ich habe intensiv mit Winforms gearbeitet und ich arbeite intensiv mit Qt. Qt ist schon ganz nett. Aber es gibt da überhaupt nichts, was ich bei Winforms vermisst häbe. Natürlich sind beide nicht perfekt und beide muss "erweitern". Aber insgesamt finde ich Winforms doch umfangreicher und mächtiger und mindestens genauso gut erweiterbar. Dann kommt noch so ein riesiger Bereich wie Databinding hinzu, der bei Qt komplett fehlt und den viele (ich persönlich aber weniger) für sehr wichtig halten und der bei wPF nochmal sehr stark erweitert wurde.
    Was WPF angeht... Ja, das kann sehr viel und damit kann man vieles elegant lösen... Aber mir gehr das iregndwie zu weit. Ich bin mit Winforms eigentlich völlig zufrieden und WPF ist mir fast schon zu kompliziert und umfangreich.



  • otze schrieb:

    Xin schrieb:

    Du hast meine vollkommene Zustimmung. Und genau hier ist der Punkt. Statt Java-Framework oder .NET-Framework hätte man auch ein gutes C++-Framework schreiben können.

    Aber man hätte auch ein gutes Lisp-Framework schreiben können. Fragst du Lisp-Entwickler, ob man Zeit in C++ stecken sollte, würden die sagen, dass bereits viel zu viel Zeit in diese dumme Idee investiert wurde und besser alle wieder in den Garten Eden zurückkehren sollten.

    Schon klar.

    Wobei die Frage, ob man Listen oder Arraybasierte Programmiersprachen bevorzugen sollte, sicherlich leicht zu klären ist.

    Ich bin kein Fanatiker, nur weil ich eine feste Meinung habe. Ich bin auch nicht Fan von C++. Finde ich eine Sprache, die semantisch stärker ist als C++ und benutzbar, dann bin ich weg. Ich bin C++-Favorisierer aus Mangel einer Alternative. 🙂

    otze schrieb:

    Eventuell steckt einfach doch mehr dahinter und wir müssen akzeptieren, dass nicht alle Probleme mit dem selben Werkzeug gleich gut gelöst werden können.

    Das zu akzeptieren, ist sehr einfach. So programmiert man ein Telnet-Tool am besten, in dem man Telnet aufruft. Da kommt keine andere Programmiersprache mit. Telnet kann zwar nur Telnet, aber für Telnet ist Telnet einfach top.

    Womit ich mich schwerer tue ist zu akzeptieren, dsss ich für Webanwendungen eine andere Sprache verwenden soll als für Systemprogrammierung oder Applikationsentwicklung. Ich konzentriere mich auf eine Sprache, die kann ich richtig gut. Das halte ich für besser, als drei Sprachen halbwegs zu können.

    Mechanics schrieb:

    Das ist natürlich richtig, und da ich auch hauptsächlich C++ programmiere wäre ich auch voll dafür, dass hier mehr Arbeit reingesteckt wird und die Bibliotheken besser werden. Aber zum einen kann das aus meiner Sicht nur teilweise funktionieren. Es gibt einfach noch sehr viele Bibliotheken, die eher an C orientiert sind oder direkt in C geschrieben, weil damit Binding zu anderen Sprachen einfacher zu machen sind.

    Und da hätte man nicht bereits Zeit für investieren können, die Linker mal zu modernisieren?

    Mechanics schrieb:

    Und da es in C keine "richtige" Klassenbibliothek mit strings, Listen, Containern usw. gibt...Ich wüsste jetzt nicht, wie man das sauber unter einen Hut bringen soll.

    Man müsste wohl man anfangen. Es tut aber kaum einer, es gibt alles ja schon und es findet sich niemand, der sich mit anderen zusammentut und vorhandene Libs zusammenführt und vereinheitlicht.

    Mechanics schrieb:

    Das andere Problem dabei ist, dass Leute, die Arbeit in gute Java Bibliotheken stecken zu 99% grundsätzlich kein Interesse an C++ haben. Es ist ja nicht so, dass es sie davon abhält, mehr Zeit in C++ reinzustecken. Sie würden es einfach nicht machen. Und heute ist C++ sowieso mehr oder weniger am Aussterben. Wird an Unis/FHs so gut wie gar nicht mehr unterrichtet. Vor paar Jahren konnten wir noch paar neue Entwickler finden, aber mittlerweile wird es in unserer Stadt an keiner Hochschule mehr gelehrt und wird langsam knapp mit neuen Entwicklern...

    Das ist ein Schulproblem. Java ist Lehrsprache und damit auch Einstieg in die Berufswelt.
    Wie gesagt, es geht darum billige Entwickler zu bekommen.
    Zukunft hat das aber nicht wirklich.

    Mechanics schrieb:

    Wegen deinem Datenbank Framework (ist es überhaupt von dir oder hab ich das falsch verstanden?).

    Es ist kein Datenbank-Framework. Da ist so ziemlich alles drin. Vom Compiler zu 3D-Grafik, von Containern zu Datenbanken zu Webservice. Und ja, es ist von mir.

    Ich programmiere keine großen Anwendungen. Ich schaffe generische Grundlagen. Nehmen wir den Webserver und ein Content-Management-System.

    XSD::CMS::Configuration config;
    
      HttpService http( 80 );
      http.serve( config );
    

    Anwendung fertig. Der Rest steht im Framework und kann wiederverwendet werden. Willst Du nur Daten übertragen verschicken, nehme man eine entsprechende Config, die 1:1 überträgt. Willst Du Seiten mit meiner Sprache generieren, nimmst du die entsprechende Config.
    Das CMS lässt sich je Seite konfigurieren und führt vorhandene Komponenten zusammen. Möchtest Du unter der URL eine HTML-Seite ausliefern, oder Binärdaten, oder stellt das Wiki-Text dar? Da ich 3D-Objekten auch per OpenGL abgebe, wird ein WebGL-Renderer wohl absehbar sein.
    Alles ein Framework, das nahezu von mir alleine in meiner Freizeit gestaltet wird.
    Was könnte ich wohl tun, wenn ich in Vollzeit daran arbeiten könnte. Oder noch 10 Mann dazu hätte?

    Mechanics schrieb:

    Das sieht jetzt so an sich nicht verkehrt aus und wär für C++ Verhältnisse auch sicher nicht schlecht. Aber es reißt sicher keinen Java oder C# Entwickler vom Hocker. Wie muss man deine Klasse konfigurieren? Über Strings? Strings sind fehleranfällig und schwer zu warten.

    Der Spaltenname muss als String angegeben werden - schon alleine, weil ich Datenbanken lese, die ich nicht selbst erstellt habe. Man erstellt für jedes zu persistierende Datenmember eine Konfigurationsstruktur, die den Spaltenname in der Tabelle, bzw. das XML-Tag benennt, das Element an sich, einen Defaultwert und die Angabe, ob Assoziativ/Aggregativ bzw. das (XML-)Tag grundsätzlich gespeichert wird oder nur bei Unterschied zum Defaultwert.
    Glücklich bin ich damit noch nicht, aber das Projekt für das ich die MySQL-Anbindung ursprünglich geschrieben habe, ist gestorben und damit auch die Notwendigkeit, sich hier zu verkünzeln.

    Mechanics schrieb:

    Wie schaut es mit komplexen Joins und Mappings aus, wird das auch komplett transparent abgewickelt? Was ist mit der Datenbankunabhängigkeit, kann man die drunterliegende Datenbank einfach austauschen? Was ist mit Lazy Loading und Caching? Was ist mit einer datenbankunabhängigen Abfragesprache? Transaktionssteuerung? Von sowas wie Linq fang ich lieber nicht an, kann Java ja auch nicht. Sicher kann man einiges davon auch in C++ ohne Reflection realisieren. Aber eben nicht alles und bisher hat es aus irgendeinem Grund keiner gemacht.

    Das Framework entwickle ich nach meinem Bedarf. Nicht alles ist Transparent, weil ich es zu selten brauche, was nicht regelmäßig gebraucht wird, geht als SQL-String rüber. Die Datenbankunabhängigkeit ist soweit gegeben (Sofern man nicht SQL-Strings sendet), wenngleich ist an SQL-Datenbank bisher nur MySQL angebunden habe.

    Lazy-Loading habe ich bisher nicht für C++ umgesetzt, schon alleine weil ich es nicht ohne weiteres generieren kann - jedenfalls nicht, ohne krumme Tricks anzuwenden. Über LazyLoading habe ich mir noch wenige Gedanken gemacht, schon alleine weil ich es bisher nicht brauchte.
    In C# habe ich das über Properties gemacht... so ganz frei von BoilerPlate war das damals aber wohl auch nicht...

    Zum dritten Mal: Ich halte ORM in C#, wie auch in C++, für Schwächen der Programmiersprachen, wo Handlungsbedarf besteht. Datenbanken in Java ist bei mir noch länger her (2002?) und das war mal so richtig schlecht.

    Mechanics schrieb:

    Xin schrieb:

    Ich werte lediglich nicht nach Masse. Wenn mir 300 Leute sagen, dass ihnen etwas wichtig ist, dann kann ich das aber problemlos ignorieren, wenn ich das Vorgehen für falsch halte.

    Ich versteh schon was du meinst. Aber du brauchst bei sowas ja auch nicht dagegen zu diskutieren. Wenn Leute viel Erfahrung mit DI gesammelt haben und das gut finden, dann kommt es etwas komisch rüber, wenn du eine Minute bei Wikipedia schaust und sagst, das Konzept kommt mir bekannt vor, bringt nichts, interessiert mich nicht.

    ICH - HABE - NIE - GESAGT - DASS - MICH - DI - NICHT - INTERESSIERT - MANN!
    Muss ich jetzt in jedem Posting Dinge dementieren, die ich nie gesagt habe?

    Ich kannte "DI" nicht, habe in Wikipedia geguckt, aber das behandelte Problem erkannt und gesagt, dass das DI nichts ist, was mit Java kam.
    Das ist nicht gleichbedeutend mit 'bringt nichts, interessiert mich nicht'.

    Mechanics schrieb:

    Du kannst bei deiner Sprache natürlich machen was du willst und dich darauf konzentrieren, was du für wichtig hälst, und vielleicht kriegst du auch eine gute und nützliche Sprache zustande. Aber ich seh gar keinen Sinn darin, so abwertend über andere Sprachen und Technologien zu reden und sie schlecht zu machen.

    Okay, Kuschelstunde.

    Um Eigenschaften und Vorgehen für gut oder schlecht nicht gut zu bewerten einzustufen, muss ich eine Entscheidung treffen. Manche Programmiersprachen haben weniger gute Eigenschaften als andere Programmiersprachen. Darum sind die einen Programmiersprachen gut und die anderen besser. Nun ist niemand abgewertet, wir haben uns alle lieb und weil alles gut ist, muss auch keiner sich Gedanken machen, ob man was verbessern kann.

    Zurück zur Realität. Was gut ist - egal von welcher Sprache - will ich übernehmen, was schlecht ist entfernen, unbequem oder wenigstens hässlich (nach Stroustrup) machen.

    Dazu gehört z.B. auch, dass ich den Programmierern Möglichkeiten nehme ohne hässliche Dinge, uneinheitliche Libraries zu schreiben. Die Sprache muss darauf ausgerichtet sein, gutes Verhalten zu provozieren und schlechtes Verhalten hässlich, unbequem und trotzdem machbar zu gestalten.

    Mechanics schrieb:

    Ich bin mit Winforms eigentlich völlig zufrieden und WPF ist mir fast schon zu kompliziert und umfangreich.

    Gut, ich bin mit WinForms überhaupt nicht zufrieden, schon alleine, weil ich die GUIs je nach Sprache überarbeiten muss und ich nichts von der festen Positionierung von Widgets halte. Da hilft mir auch Docking nicht wirklich. Das konnte MUI vor 20 Jahren schon besser.

    Databindings gehen als Argument wohl an Dich. Ich selbst habe aber wenig Lust, mich für das eine oder das andere zu entscheiden. Und wann immer es soweit ist, mache ich eine neue Klasse in meinem Framework und schreibe eine Lösung für mein Problem. Nach 10 Jahren habe ich einiges an fertigen Lösungen im Angebot, sehr vieles generisch. Die String-Klasse ist auch nur ein Sonderfall vom Array, das nebenher die meisten Funktionen generisch anbietet. Suchalgorithmen etc... wurde für String gebraucht, läuft aber auch für eine indexbasierte Suchmaschine.

    Damit kam einer in meinem Forum an und erklärte das sei seine Masterarbeit. Das hatte ich ein paar Wochen zuvor ich an einem Tag aus meinem Framework zusammengewürfelt - aus der Oberklasse für Strings und einem Template, dass ich für die Verwaltung von 3D-Koordinaten geschrieben habe.
    Fertig ist die Master-Arbeit.



  • Xin schrieb:

    Womit ich mich schwerer tue ist zu akzeptieren, dsss ich für Webanwendungen eine andere Sprache verwenden soll als für Systemprogrammierung oder Applikationsentwicklung. Ich konzentriere mich auf eine Sprache, die kann ich richtig gut. Das halte ich für besser, als drei Sprachen halbwegs zu können.

    Mit anderen Worten: Du konzetrierst dich darauf, richtig gut in der Bedienung von Telnet zu sein!? 😉

    Xin schrieb:

    Und da hätte man nicht bereits Zeit für investieren können, die Linker mal zu modernisieren?

    Was genau ist denn das Problem mit "den Linkern"!?

    Xin schrieb:

    Ich programmiere keine großen Anwendungen. Ich schaffe generische Grundlagen. Nehmen wir den Webserver und ein Content-Management-System.

    Wenn du keine Erfahrung in der Erstellung von großen Anwendungen hast, woher weißt du, dass die von dir geschaffenen "generischen Grundlagen" für die Erstellung großer Anwendungen geeignet sind?

    http://xkcd.com/927/



  • Xin schrieb:

    Shade Of Mine schrieb:

    Ich habe heute vCards verarbeiten muessen - es ging dabei um Textersetzungen innerhalb eines gewissen Kontexts. C++ haette komplett gesuckt. Ich habe das zB in PHP in 10 Zeilen Code gemacht. Ich haette es auch in 10 Zeilen Perl oder 10 Zeilen Python oder 10 Zeilen Ruby hinbekommen. Aber in C++ waere das ausgeartet.

    Ergo: C++ ist nicht immer das beste.

    Dir fehlen entsprechende String-Klassen. Ich benutze std::string auch nur unfreiwillig. Meine eigene Stringklasse ist deutlich flexibler. Ich kann PHP, Java, C#.
    Ich bleibe da lieber bei meiner eignen Klasse.

    Wie steht's mit QString, die ist auch nicht ganz verkehrt?

    Wie kann man argumentieren dass C++ in so einer Situation besser ist als ein 10 Zeiler in einer Scriptsprache?
    So kommen wir nie auf einen grünen Nenner. Denn Entwicklungszeit ist bei mir halt doch ein relevanter Faktor. Alleine die Zeit die fürs kompilieren der C++ Lösung draufgeht reicht aus um das Programm in einer Scriptsprache zu implementieren.

    Sprachen sind nur Werkzeuge. Das richtige Werkzeug zu wählen spart enorm viel Zeit und Geld.

    Mein Vater sieht das aber ähnlich wie du. Seine goto Sprache ist PL/M und wenn die nicht geht dann zähneknirschend Pascal (aber nur Stony Brook).

    Ich denke aber, dass unterschiedliche Anwendungen unterschiedliche Werkzeuge verlangen um sie effektiv zu Implementieren. Klar kann man alles in PL/M machen - aber sinnvoll ist es nicht 😉

    zB was mir bei deinen Codebeispielen mit Datenbanken auffällt ist, dass deine Codes aussehen wie vor 10 Jahren. Heutzutage hat man mit Databinding, ORM, Active Records, etc. komplett andere Ansätze und gerade hier ist C++ einfach zu statisch um richtig Cool zu sein.

    Und dein CMS Framework kann mit Sachen wie Typo3, Joomla!, etc. locker mithalten? Ich kann SSL verwenden, reverse proxies, url rewriting, etags, etc.? Also Sachen wofür viele Leute viel Arbeit in Apache, Lighty, etc. gesteckt haben - hast du einfach mal so schnell selber gemacht und auch noch gleich gut/besser? Und das soll man dir glauben?



  • Xin schrieb:

    Dravere schrieb:

    Und vielleicht noch eine Frage:
    Wenn deine Sprache dann mal soweit ist, dass du sie tatsächlich umsetzt und veröffentlichst, was erwartest du dann? Wie werden die Leute darauf reagieren? Wird deine neue Sprache alle anderen in den Schatten stellen und diese verdrängen?

    Hehehe, das wäre das Ziel, sicher. Wenn ich nicht danach streben würde, wäre der Aufwand ja unsinnig.

    Ich bin mir aber bewusst, dass da nicht ein Xin vorbei kommt und mal eben die eine einzig wahre Programmiersprache hinlegt und alles andere vom Markt ist. Meine Erwartung ist, dass die Sache erst über Mundpropaganda läuft und sich dann hoffentlich langsam verbreitet.

    Wenn ich Pech habe, interessiert es außer mir keine Sau. Das kann ich nicht beeinflussen. Ich kann nur mein möglichstes tun, gute Gründe zu liefern, sich näher mit der Sprache zu beschäftigen.
    Ich entwickle seit 1986 Software und habe seitdem viel Mist gesehen, den ich angehe. Darum ist eine Diskussion über ein Feature auch aufwendig und nicht mal eben auf gut Glück implementiert. Wäre ich nicht optimistisch, hätte ich längst aufgegeben, aber Erwartungen...?
    Ich lasse mich überraschen. 🙂

    @Xin: Du hebst hin und wieder hervor, dass Du praktisch kein Mitlaeufer bist, sondern eigene Ideen hast, die Du auch offensiv vertrittst. Es ist natuerlich gut, eigene Ideen zu entwickeln und eigene Projekte zu starten, aber ganz ehrlich: Du solltest an der Art und Weise arbeiten, wie Du diese gegenueber anderen kommunizierst. Ueberleg mal, was Du da hast... Du hast ein Projekt und moechtest, dass sich andere irgendwann mal ernsthaft damit auseinandersetzen. Aus meiner Sicht heisst das, dass Du andere fuer Dein Projekt begeistern musst. Du musst dafuer sorgen, dass sich andere fuer Dein Projekt interessieren. Aber jetzt guck mal, wie der Thread hier laeuft: Du gehst auf totalen Konfrontationskurs mit allen Diskussionsteilnehmern, die auf Dein Projekt eingehen. Das ist eine Kommunikationskatastrophe. So wirst Du nie Leute finden, die dem Projekt offen gegenueber stehen.

    Es gibt hier im Forum auch noch ein anderes grosses Projekt... wenn Du Dich umschaust, wirst Du ein Unterforum finden, in dem es um die Entwicklung eines Betriebssystems geht. Ich weiss nicht, inwiefern da etwas bei rum kommt, aber zumindest hat sich da eine Gruppe zusammengefunden, die ein gemeinsames Interesse an einem Projekt hat. Ich glaube, Du wuerdest mehr Erfolg haben, wenn Du Dich an solchen Beispielen orientierst und offen und sachlich mit anderen ueber die unterschiedlichen Aspekte Deines Projekts diskutierst. So eine Metadiskussion wie hier fuehrt zu nichts. Du untermauerst Deine Ideen praktisch nur mit Deiner eigenen Meinung, die Du nicht wirklich auf die Probe stellst. Stattdessen gehst Du praktisch davon aus, dass die Authoritaet Deiner Meinung ueberzeugend genug sein sollte. Du hast hier aber keine Authoritaet in dem Zusammenhang. Wenn Du sagst "Ich habe mich mit XYZ beschaeftigt und es ist der falsche Weg", dann hat das erstmal kein Gewicht. Das ist praktisch eine Nullaussage. Du musst sachlich argumentieren, warum es der falsche Weg ist. Ansonsten schaffst Du Dir nur Gegenspieler in einer Diskussion.

    ...und im echten Leben werden die Leute vermutlich Dein Diskussionsverhalten kennen, und deshalb alles gleich ganz toll finden, aber eigentlich etwas ganz anderes denken.


Anmelden zum Antworten