Was kommt nach der Objektorientierung?



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



  • Shade Of Mine schrieb:

    Seine goto Sprache ist PL/M

    auf welcher Hardware?



  • buchstaben schrieb:

    Shade Of Mine schrieb:

    Seine goto Sprache ist PL/M

    auf welcher Hardware?

    Mikrokontroller. Welche genau - keine Ahnung. Die haben alle soviele Nummern im Namen. idR aber 8bitter, selten mal ein 16 bitter.



  • Shade Of Mine schrieb:

    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?

    Lies doch einfach mal, was ich schreibe... wieviele Postings beantworte ich hier schon einfach damit, auf bereits geschriebenes zu verweisen. Darunter
    a) dass ich nichts gegen andere Sprachen habe, sie aber nicht für relevante Projekte als sinnvoll erachte. Ein 10-Zeiler ist kein relevantes Projekt, sondern entspricht eher einer Telnet-Implementation, die man am einfachsten erreicht, in dem man telnet aufruft.

    b) Wieso schafft es kaum einer eine Aussage hier im Gesamtkonzept einzuordnen? Wenn ich meine Aussagen möglichst interpretationsfrei schreibe heißt es "tl;dr", versuche ich es knapp zu schreiben, wird jeglicher Kontext in dem ich schreibe vergessen und gegen die idiotischste Interpretation (entschuldigung - is abba so) gegenargumentiert.

    Shade Of Mine schrieb:

    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?

    Du wirst lachen, nichtmals Kaffee kochen kann mein Framework, welches weder ein Datenbank Framework und auch kein CMS Framework ist.

    Es kann, was ich brauche, deswegen ist es mein Framework. Daraus kannst Du Dir vielleicht schon ablesen, dass ich url rewriting nicht brauche, was hätte es für einen Sinn?

    Die Leute, die sich bei Apache etc. viel Arbeit gemacht haben, haben das auch nicht gemacht, weil sie nichts besseres zu tun hatten, sondern weil sie existierende Probleme gelöst haben, entsprechend löse ich in MEINEM Framework MEINE Probleme.
    Ich nutze auch unter Apache keine Reverse Proxies. Sollte ich sie brauchen, sehe ich aber auch kein Problem sie zu implementieren.

    Was Du im Verlauf dieses Thread auch nicht mitbekommen hast ist, dass ich nicht in Konkurrenz zu irgendwem stehe. Habe ich auch schon deutlich beschrieben. Ich stehe auch nicht unter Erfolgsdruck. Wenn es am Ende keinen außer mir interessiert, bricht mir nicht ein Standbein weg.

    Mein Framework löst meine Probleme und das tut es gut. Meine Sprache konzipiere ich darauf, dass sie allgemeine Probleme angenehm löst. Fertig.
    Weder muss ich Apache ablösen, noch C++ oder C#.
    Aber soll ich deswegen grundsätzlich ausschließen, dass meine Software erfolgreich werden könnte?

    Ich muss auch nicht alles können, um Dich glücklich zu machen oder Dich zu beeindrucken. Du bist keins meiner Probleme und ich mache auch niemanden hier zu meinem Problem. Wenn Du mir nicht glaubst oder meine Arbeit an diesem Framework als überflüssig empfindest, dann wüsste ich nicht, wen das interessiert. Für mich bedeutet das, dass ich Erfahrungen sammle und hocheffiziente Klassen wiederverwenden und kombinieren kann.

    Hier sind viele, die mir erklären können, dass meine Arbeit schlecht ist. War schon einer da, der was vorzuzeigen hat, der mehr gemacht hat als nur andere Frameworks benutzt?

    Das hier ist ein Forum und dieser Thread geht darum, wohin sich Programmiersprachen entwickeln könnten. Ich entwickle und implementiere eine Vision. Und ihr, die ihr so gerne von "wir" sprecht, seid glücklich und zufrieden mit dem was ihr habt.

    Schon komisch, dass ich falsch liegen muss, nur weil ich nicht glücklich und zufrieden bin.

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

    Gregor schrieb:

    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.

    Hmm... okay, nehmen wir an, ich mache hier konsequent einen kommunikativen Fehler, kannst Du mir ein Beispiel zeigen, wo jemand offen auf die Idee eingeht und ich ablehnend reagiere?

    Ich erlebe den Thread als eine Art "Es kann nicht sein, was nicht sein darf".

    Aber das ist nicht mein Problem, denn es kann. Mir wird seit Jahren erklärt, was ich alles falsch mache und was ich alles nicht umsetzen kann. Sogar bei Sachen, die ich schon umgesetzt habe, erklärt man mir, dass man/ich das nicht umsetzen kann. Ich habe zugegebenermaßen dann aber auch keine Skrupel eine detailliertes Codereview zu verweigern und zu akzeptieren, dass derjenige mir nicht glaubt, dass da eine echtes Softwareprodukt hinter steht.

    Und so sehe ich diesen Thread hier auch. Was immer ich tue, ist nicht gut genug, mein CMS hat noch keine Reverse Proxies, SSL habe ich auch nicht, alles scheiße. Und dann einige Unregistrierte, die mir noch erklären, was ich für ein Schwachmat bin. Das ist die Art, wie dieses Forum nunmal funktioniert. Das muss ich akzeptieren, wenn ich mich hier diesem Thema stelle.

    Ich schreibe meine Sprache aber trotzdem weiter. 🙂

    Gregor schrieb:

    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.

    Begründe ich Überzeugungen kommt 'tl;dr'. Hatten wir auch hier alles schon. Macht wenig bis keinen Sinn, wenn selbst Ansätze nicht interessieren. Ob ich meine Meinung auf die Probe stelle - hier nicht wirklich. Eins der in meinen Augen besten Konstrukte ist hier in diesem Forum in der Argumentation gegen diverse Leute entstanden, die auch heute wieder dabei sind.
    Alle waren sich einig, dass meine Meinung und meine Argumentation Unsinn ist. Ich implementiere also etwas, was laut diesem Forum Unsinn ist - und es löst eine ganze Reihe Probleme. Der Meinung war ich ja schon vorher, sonst hätte ich in dem Thread ja auch nicht gegen eine Wand argumentiert, die mich für geistesgestört hält. Es wäre absolut kontraproduktiv hier eine Meinung auf die Probe zu stellen und die Reaktion eines offenen Forums ernsthaft zu berücksichtigen, also von Leuten, die Argumentationen mit "zu viel Text" quittieren, Herangehensweisen als Unsinn beschreiben und sich als Feedback zwischen "Brauch ich nicht" und "Unsinn" oder der Kombination aus beidem entscheidet?
    Vollkommen falsche Zielgruppe.

    Ich denke, dass das Konzept meiner Sprache inzwischen rund ist.
    Wenn mir einer positiv auffällt, lade ich ihn manchmal ein, mit mir daran zu schleifen.

    Gregor schrieb:

    Stattdessen gehst Du praktisch davon aus, dass die Authoritaet Deiner Meinung ueberzeugend genug sein sollte. Du hast hier aber keine Authoritaet in dem Zusammenhang.

    Ich verlange auch nicht, dass irgendwer meine Meinung vertreten muss.
    Man kann das als Indiz nehmen, sich in die Richtung zu beschäftigen - oder es lassen.

    Gregor schrieb:

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

    Schade.
    Bis hierhin fand ich Deinen Beitrag durchaus konstruktiv denkend, aber "aber eigentlich etwas anderes denken" unterstellt gleich, dass "die Leute", die mit mir sprichen, nur abnicken, was ich sage und sich dabei denken, dass es Quatsch ist.

    Ich setze mich mit Kritik gerne auseinander und ich nehme auch Kritik an - genau deshalb fand ich Deinen Beitrag bisher auch konstruktiv. Du kennst mich nicht, aber Du schlägst Wege vor, die ich in meiner Kommunikation bedenken sollte. Das kann man beleidigend auffassen, aber ehrliche Kritik ist nicht dafür da, etwas schönzureden. Das ist durchaus konstruktives vorgehen, wenngleich ohne Begründung, da Du mich ja nicht kennst. Es ist Deine Meinung und jeder hat das Recht sich eine eigene Meinung zu machen.
    Abgeschlossen ist sie mit der Behauptung, dass mein Umfeld nur abnickt, was ich sage, aber eigentlich was anderes denkt. Das war keine Frage mehr. Kein konstruktiver Vorschlag. Das war eine bewusst ausgesprochene Beleidigung. Also nicht konstruktiv.
    Schade.

    Ich gebe einige Dinge zum Thema Programmiersprachen zu bedenken. Und richtig, vieles Begründe ich mit meiner Erfahrung. Ich programmiere seit 26 Jahren, seit 13 Jahren beschäftige ich mich auf professionellen Level mit Design von Programmiersprachen. Die erste funktionsfähige Sprache schrieb ich vor über 20 Jahren. Sie war scheiße, aber seitdem sammle ich in der Richtung Erfahrungen. Mir muss man nicht als Authorität Respekt zollen, den weder weiß ich alles, noch bin ich irgendein Mitglied der GoF oder sonstwie wichtig. Aber jeder für sich kann sich überlegen, ob diese Erfahrung vielleicht einen Wert haben könnte und sich drei Gedanken machen, ob eine Aussage zu diesem Thema vielleicht ein Indiz sein könnte, sich mit dieser Herangehensweise zu beschäftigen. Von solchen Leuten bekomme ich Kritik in der Form, wie Du es mit meiner Kommunikation versucht hast. Die Leute, die abnicken, sind zwar nett, aber nicht hilfreich.
    Ich werte Programmiersprachen ab. Aber keine Menschen, die andere Sprachen nutzen.

    Vom Rest bekomme ich gesagt, dass ich Unsinn mache oder noch deutlichere Abwertung.

    Dennoch danke ich Dir für Deine Kritik, es war einer der konstruktiveren Beiträge hier. Dennoch muss Dir sagen, dass meine scharfe Herangehensweise in dieser Sache durchaus auch Kalkül hat - nicht nur weil sie für die Thematik erforderlich ist.
    Die Unterscheidung, mit wem man sinnvoll reden kann, wer über bekanntes hinausdenkt und/oder konstruktiv kritisiert, kann man mir kaum leichter machen.

    Du wirst mich bei anderen Themen deutlich gelassener erleben. Aber das hier ist mein Thema in der Informatik, damit beschäftige ich mich fast seitdem ich programmieren kann. Und deswegen suche ich mir die Leute inzwischen sehr genau aus, bei denen ich meine Meinung auf die Probe stelle.



  • Xin schrieb:

    Lies doch einfach mal, was ich schreibe...

    Du schreibst sehr viel, effektiv sagen tust du aber sehr sehr sehr wenig.

    a) dass ich nichts gegen andere Sprachen habe, sie aber nicht für relevante Projekte als sinnvoll erachte. Ein 10-Zeiler ist kein relevantes Projekt, sondern entspricht eher einer Telnet-Implementation, die man am einfachsten erreicht, in dem man telnet aufruft.

    Ich habe schon verstanden, alles was du nicht in C++ schon gemacht hast, ist irrelevant und braucht man nicht. Soviel ist schon rüber gekommen 😉

    b) Wieso schafft es kaum einer eine Aussage hier im Gesamtkonzept einzuordnen? Wenn ich meine Aussagen möglichst interpretationsfrei schreibe heißt es "tl;dr", versuche ich es knapp zu schreiben, wird jeglicher Kontext in dem ich schreibe vergessen und gegen die idiotischste Interpretation (entschuldigung - is abba so) gegenargumentiert.

    Lies dir zB den Absatz nochmal durch. Du sagst hier nichts aus. Du rantest sehr viel gegen dieses und jenes, aber substanz fehlt etwas...

    Du wirst lachen, nichtmals Kaffee kochen kann mein Framework, welches weder ein Datenbank Framework und auch kein CMS Framework ist.

    Es kann, was ich brauche, deswegen ist es mein Framework. Daraus kannst Du Dir vielleicht schon ablesen, dass ich url rewriting nicht brauche, was hätte es für einen Sinn?

    Also sind wir vielleicht schon so weit gekommen, dass wir aktzeptieren können dass C++ doch nicht immer ideal ist? Weil ich brauche diese features sehr wohl.

    Mein Framework löst meine Probleme und das tut es gut. Meine Sprache konzipiere ich darauf, dass sie allgemeine Probleme angenehm löst. Fertig.
    Weder muss ich Apache ablösen, noch C++ oder C#.
    Aber soll ich deswegen grundsätzlich ausschließen, dass meine Software erfolgreich werden könnte?

    Das Problem ist, dass du "allgemeine Probleme" als Probleme definierst die du in C++ bereits für dich gelöst hast. Die Welt besteht aber aus mehr. Viel viel mehr.

    Und das ist was dir hier entgegen weht.

    Hier sind viele, die mir erklären können, dass meine Arbeit schlecht ist. War schon einer da, der was vorzuzeigen hat, der mehr gemacht hat als nur andere Frameworks benutzt?

    ...
    Bezweifelst du dass die meisten hier professionell Programmieren und damit schon deutlich mehr gemacht haben als "nur andere Frameworks zu benutzen"?

    Schon komisch, dass ich falsch liegen muss, nur weil ich nicht glücklich und zufrieden bin.

    Du fühlst dich irgendwie sofort angegriffen wenn jemand nicht deiner Meinung ist, oder? Weil diesen Satz (mehr oder weniger) schreibst du in jeden 2. Post.

    Ich denke nicht dass Jemand hier etwas gegen eine neue Sprache hat. Vielleicht auch eine die gute Ideen und vielleicht sogar neue Konzepte mitbringt. Da sind sicher die meisten sofort feuer und flamme für.

    Aber deine Argumentationen sind einfach sehr sehr komisch. Vorallem weil du, wenn du so ein Problem noch nicht lösen musstest, es sofort als uninteressant und trivial hinstellst. Wie zB die Diskussion über Decimal und Datenbanken.

    Oder zB dass du lieber ein CMS in C++ schreibst als in passenden Websprachen. Was ja OK wäre, wenn du dann nicht doch zugeben würdest dass dein "CMS" im vergleich mit den Industrie-leadern einfach nur Hinterwelt ist. Da frag ich mich dann: ist vielleicht C++ doch nicht ideal für diese Aufgabe?

    Denn genau das stößt auf. C++ ist eine tolle Sprache und die meisten hier sind sicher richtige Fans. Aber C++ hat defizite. Und es ist wichtig das zu aktzeptieren. Es gibt keine Eierlegende Wollmilchsau die in jeder Situation perfekt ist.

    zB ist ein Pluginsystem in Java viel toller und einfacher zu implementieren als in C++. Man kann easy über Reflection die relevanten Features auslesen, es ist easy neue Plugins zu integrieren, etc. Oder Serialisierung in C#. Das ist ein Traum. Klar kann ich mit boost auch halbwegs OK in C++ serialisieren - aber das ist einfach kein vergleich vom Aufwand her.

    Oder RMI in Java - super Sache, nativ unterstützt. Wenn ich das über DCOM mache *brr*. IPC mit .NET ist eine andere Liga als IPC mit COM. ORM mit automatischen Proxyklassen - sehr schwer in C++ umzusetzen, in PHP oder Ruby ist sowas trivial.

    Ich könnte das ewig weiter führen...

    C++ ist toll, aber es ist nicht der Weisheit letzter Schluss und in vielen Situationen ist C++ nicht erste Wahl.



  • Shade Of Mine schrieb:

    Ich könnte das ewig weiter führen...

    Ich habe mir jetzt Dein ganzes Posting durchgelesen.

    Und eigentlich bleibt mir nur, Dir eine Frage zu stellen: Hast Du eigentlich irgendetwas von dem, was ich geschrieben habe gelesen?


  • Administrator

    Xin schrieb:

    Und eigentlich bleibt mir nur, Dir eine Frage zu stellen: Hast Du eigentlich irgendetwas von dem, was ich geschrieben habe gelesen?

    Ich kann dir sagen, dass ich alle deine Beiträge vollständig durchgelesen habe und den Beitrag von Shade Of Mine voll unterstreiche.

    Tipp: Statt immer zu denken, dass die anderen dich nur nicht verstehen, solltest du dir mal überlegen, ob du dich einfach nicht richtig ausdrückst?

    Grüssli



  • Ich hab auf den ersten paar Seiten rumgeschaut, als der Thread erstellt wurde, und jetzt hier die letzten 2 Seiten mal überflogen. Frage: Hat Xin seine Idee mittlerweile verraten oder werden immer noch pseudokonstruktive Metadiskussionen gehalten?



  • Dravere schrieb:

    Xin schrieb:

    Und eigentlich bleibt mir nur, Dir eine Frage zu stellen: Hast Du eigentlich irgendetwas von dem, was ich geschrieben habe gelesen?

    Ich kann dir sagen, dass ich alle deine Beiträge vollständig durchgelesen habe und den Beitrag von Shade Of Mine voll unterstreiche.

    Tipp: Statt immer zu denken, dass die anderen dich nur nicht verstehen, solltest du dir mal überlegen, ob du dich einfach nicht richtig ausdrückst?

    Jetzt mal im Ernst...

    Shade Of Mine schrieb:

    Vorallem weil du, wenn du so ein Problem noch nicht lösen musstest, es sofort als uninteressant und trivial hinstellst. Wie zB die Diskussion über Decimal und Datenbanken.

    Zitat von mir: Für eine Klasse System.Decimal, die man auch in C++ repräsentieren kann auf sinnvolle Sprachfeatures zu verzichten, wie Const-Correctness, C++-Referenzen, Templates oder Mehrfachvererbung, halte ich für sehr fraglich. Diese Sachen sind in C# nicht repräsentierbar.

    Da steht nichts von uninteressant. Da steht in C++ machbar. Und ob das trivial ist, müssen wir da ernsthaft drüber streiten? Bitte Hand hoch, wer eine Klasse, die Dezimalzahlen repräsentiert, als nicht trivial einstuft.

    Shade Of Mine schrieb:

    Ich habe schon verstanden, alles was du nicht in C++ schon gemacht hast, ist irrelevant und braucht man nicht. Soviel ist schon rüber gekommen

    Zitat von mir zu einer solchen Behauptung: "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."

    Ich weiß nicht, wogegen ich hier noch anreden soll. Ich weiß auch nicht, was bei Shade of Mine so rüberkommt, denn entweder muss ich hier jedem einzelnen dreimal erklären dass ich hier niemanden schlachten will, nur weil er nicht Java hasst oder ich weiß es auch nicht.

    Shade Of Mine schrieb:

    Also sind wir vielleicht schon so weit gekommen, dass wir aktzeptieren können dass C++ doch nicht immer ideal ist?

    Zitat von mir: "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."

    Sorry, Leute... aber teilweise verlangt ihr von mir, dass ich mich für Sachen rechtfertigen muss, die von mir nicht in den Raum gestellt werden.
    Gleichzeitig fragte ich mich, wer hier eigentlich den Sinn des Threads versteht. Es geht hier nicht um einen Schwanzvergleich gegenwärtiger Techniken. Es geht um einen Schwanzvergleich in der der Zukunft. Welche Sprache hat die beste Chance auf eine Zukunft?

    Fassen wir vielleicht mal möglichst kurz zusammen, was meine Position ist.

    Ich habe nie behauptet, dass C++ für alles ideal ist. Ich behaupte, dass C++ für große Projekte aufgrund der semantischen Stärke ideal ist, selbst dann, wenn es in einigen Teilen Mehraufwand bedeutet. Darum implementiere ich mein CMS in C++. Ich erwarte, dass dieses Projekt ein großes Projekt wird.

    Dieser Thread dreht sich nicht um einen Schwanzvergleich von vorhandenen Techniken, sondern um die Frage, was morgen kommt. Es ist also durchaus legitim anzunehmen, dass C++ eine ähnlich ausgefeilte Library erhält, wie Java oder C# und diese Idee würde vermutlich nicht an einer Klasse für Dezimalzahlen scheitern.

    Dynamische Typbehandlung zur Laufzeit ist mit statischen Sprachen möglich. Diese Behauptung stelle ich jetzt mal unbegründet in den Raum. Damit sollte wohl auch niemand ein Problem haben, oder etwa doch? Hat jemand Probleme sich die Konsequenzen vorzustellen?

    Wir haben mit Java und C# zwei neue Linker erhalten. Sieht jemand ein Problem damit, das aktuelle Objektformat anzupassen und zu modernisieren? Oder zu ersetzen und mit einem Kompatiblitätslayer auszustatten? Wäre das eine Alternative gewesen zu zwei VMs, zwei JIT Compiler und den Verzicht auf bedeutende Sprach-Features?

    Meine Meinung wäre, dass das die Zukunft darstellt und wir das Thema schon abgehakt hätten, wenn Java nicht in die Quere gekommen wäre. Weil wichtige Features entfernt wurden, halte ich Java für große Projekte für bedenklich - unabhängig davon, dass es trotzdem große Projekte in Java gibt - und Java für einen Behinderung der Sprachevolution von etwa 15 Jahren.

    Diese Aussage steht so.

    Und bevor jetzt dazwischen gegrätscht wird: Die Behauptung, dass es in Java und inbesondere in C# deswegen keine parallele Weiterentwicklung gegeben hätte, steht da nicht. Da steht auch nicht, dass Entwicklungen, die in C# und Java stattgefunden haben, in C++ aktuell ohne Mehraufwand zu übernehmen sind. Da steht, dass diese Weiterentwicklungen in C++ nachgepflegt werden müssen und ich der Überzeugung bin, dass C++ mit diesen Weiterentwicklungen am längsten überleben wird und dass wir etwa 15 Jahre verloren haben.
    Da steht nicht, dass Normalfall-Projekte existieren, die in C# oder Java einfacher zu lösen sind. Derartige Schlussfolgerungen wurden von mir auch nicht provoziert - im mich da nochmal zu zitieren: "Lösungen für den Normalfall findest Du bei Java und C#."



  • TravisG schrieb:

    Ich hab auf den ersten paar Seiten rumgeschaut, als der Thread erstellt wurde, und jetzt hier die letzten 2 Seiten mal überflogen. Frage: Hat Xin seine Idee mittlerweile verraten oder werden immer noch pseudokonstruktive Metadiskussionen gehalten?

    Seinen Ansatz hat er bereits ganz am Anfang verraten. 🙂

    Ansonsten seine? Eine? Wie 1.0?

    Wenn ich eine Version als 1.0 bezeichne, dann wird die Laufen, aber nur ein grundlegendes Subset darstellen und eher die Basis für nachfolgende Versionen. Das Ziel für eine 1.0 ist lediglich es mir nicht dahingehend zu versauen, Dinge zu erweitern, die ich bis zur 1.0 noch nicht kenne. (PS: und natürlich den Boden für bekannte Ideen vorzubereiten - bevor da einer wieder "Subset" nicht versteht und loslegt, dass man keine neue Sprache braucht, die nur läuft... btw... Subset beinhaltet auch, dass Features bereits implementiert sind, die in anderen Sprachen so nicht aufkommen. Und ja, ich lasse das jetzt einfach so stehen, keiner muss irgendwas glauben, in dem Thread ging es nicht um eine Syntaxbeschreibung, sondern nur um die zukünftige Weiterentwicklung und den Ansatz ist ja schon beschrieben.)

    Für eine Idee fange ich doch kein neues Projekt in der Größe an...



  • funktionale Sprachen sind nicht neu eigentlich die Ideen sind älter als imperative sprachen die sind mit Assembler x86 verbunden, rescherschiere mal
    nach LISP sprache und maschine.

    Es könnte aber kommen:

    1)Echte Modelgetriebene Software Entwicklung: d.h. letzt endlich selbst IDE soll generiert und auf konkretes Domän angepasst werden. Bis jetzt beispiele von generierten IDES => keins :D. Dazu gehöhren auch GUI IDES 😃 auch nicht so viel geile Heute.

    2)(eventuell Macro)Funktionen/Methoden auf Modulen bzw grossen Container als ein Class.

    3)Implizierte Paralelisierung eventuell auf GPGPU oder verteilte (wie HAdoop)
    (du schreibst einfacher set... add... Code und es wird umgewandelt in paraleles

    Übrigens, Implizierte Paralelisierung von Haskell (dialect eden heisst es ) is gar nicht neu 😃 da geht: Eden => paraleller C code => verteilt auf maschienen

    Dies ist unglaublich grosse Problemen mit denen man wird beschäftigen über die ganz grosse Zeitraum.



  • Xin schrieb:

    Da steht nicht, dass Normalfall-Projekte existieren, die in C# oder Java einfacher zu lösen sind. Derartige Schlussfolgerungen wurden von mir auch nicht provoziert - im mich da nochmal zu zitieren: "Lösungen für den Normalfall findest Du bei Java und C#."

    Was ist eigentlich dieser Normalfall von dem du immer sprichst?

    Aber naja, ich habe zB auf meine Aussage hin, dass ein 10 Zeiler in einer Scriptsprache für Textersetzung besser ist als ein C++ Programm, von dir als Antwort bekommen dass mir einfach nur gute String Klassen in C++ fehlen.

    Was genau wolltest du damit dann ausdrücken? Ich habe das so verstanden, dass wenn ich eine bessere String Klasse als std::string hätte, C++ eine bessere Lösung gewesen wäre.

    uU reden wir aneinander vorbei?



  • Xin schrieb:

    Dynamische Typbehandlung zur Laufzeit ist mit statischen Sprachen möglich. Diese Behauptung stelle ich jetzt mal unbegründet in den Raum. Damit sollte wohl auch niemand ein Problem haben, oder etwa doch? Hat jemand Probleme sich die Konsequenzen vorzustellen?

    Technisch möglich ist alles. Aber ist auch alles immer sinnvoll?

    zB finde ich in C# die Trennung Value Typen und Referenz Typen richtig cool. Aber in der Praxis ist das nicht immer so toll. Ähnlich wie in C++/CLI wo es manchmal furchtbar unpraktisch ist, dass es unterschiede zwischen native und managed Klassen gibt - wobei die Idee ganz nett ist (und manchmal ja auch richtig toll ist).

    Ich denke nicht, dass man alles in eine Sprache stecken sollte. Ein gutes Beispiel hier ist C++/CLI. Es hat viele managed Features und dennoch alle C++ Features. Aber in der Praxis ist es meh...

    Wir haben mit Java und C# zwei neue Linker erhalten. Sieht jemand ein Problem damit, das aktuelle Objektformat anzupassen und zu modernisieren? Oder zu ersetzen und mit einem Kompatiblitätslayer auszustatten? Wäre das eine Alternative gewesen zu zwei VMs, zwei JIT Compiler und den Verzicht auf bedeutende Sprach-Features?

    Bedeutende Sprachfeatures? Nicht wirklich. C# geht nicht wirklich was wichtiges ab. C# und Java sind problemlos für Enterprise Projekte verwendbar.

    Du sagst zB die wichtigen Features die fehlen sind
    Const-Correctness -> wird ersetzt durch Immutable Types
    C++-Referenzen -> hier sehe ich nicht wirklich was relevantes. Referenzen sind Syntax Zucker. Einzig relevanter Vorteil ist, dass man damit defensive Kopien verhindert - was man in Java zB über Interfaces löst.
    Templates -> Generics. Natürlich sind Templates mächtiger als Generics, aber prinzipiell sind es wieder 2 Lösungen für 1 Problem. Je nach Situation ist das eine oder andere besser.
    Mehrfachvererbung -> dafür bietet Java eben Interfaces, die in einigen Situationen viel besser sind als Mehrfachvererbung. Alles in allem sehe ich hier keinen riesen Unterschied.

    Und was genau willst du haben? Binäre Kompatibilität von C# zu Java? Oder worauf genau zielst du ab? Das mit Linker habe ich nicht verstanden...

    Meine Meinung wäre, dass das die Zukunft darstellt und wir das Thema schon abgehakt hätten, wenn Java nicht in die Quere gekommen wäre. Weil wichtige Features entfernt wurden, halte ich Java für große Projekte für bedenklich - unabhängig davon, dass es trotzdem große Projekte in Java gibt - und Java für einen Behinderung der Sprachevolution von etwa 15 Jahren.

    Ich denke, dass Java sehr viel für die Computerwelt getan hat. Aber diese Diskussion ist rein hypothetisch. Niemand kann sagen was gewesen wäre wenn es Java nie gegeben hätte. Alleine der Blickwinkel den Java uns auf Softwareentwicklung eröffnet hat, ist mehr Wert als alles andere.

    Auch wenn ich viele Sachen in Java nicht gut gelöst finde, so ist es doch eine tolle Mainstream Sprache. Selbst wenn man die Einfachheit mit der sich Java Programme erstellen lassen als einzig positives aufführt, so wäre es das immernoch wert gewesen.

    C++ ist enorm komplex. Man braucht Jahre um es zu verstehen. Die Entwicklungskosten in C++ sind einfach hoch. Und mit C++0x ist es auch nicht wirklich besser geworden. Die Sprache ist ziemlich übersättigt mit Features und Sprachkonstrukten. Ich denke nicht dass es so toll wäre da noch eine Menge mehr Features reinzupacken.



  • Shade Of Mine schrieb:

    Xin schrieb:

    Da steht nicht, dass Normalfall-Projekte existieren, die in C# oder Java einfacher zu lösen sind. Derartige Schlussfolgerungen wurden von mir auch nicht provoziert - im mich da nochmal zu zitieren: "Lösungen für den Normalfall findest Du bei Java und C#."

    Was ist eigentlich dieser Normalfall von dem du immer sprichst?

    GUI, Datenbank, Dateizugriff, Kommunikation.
    Eben das worauf sich C# und Java spezialisierten, weil es Normalfall ist.

    Kein Normalfall: Systemprogrammierung, Echtzeitgrafik, hoch effiziente Algorithmen. Es ist schade, dass diese Normalfall-Frameworks in C++ eher verstreut sind als unter z.B. std::gui zu finden sind. Und auch std::string ist mehr Container als sinnvoll nutzbare String-Klasse.

    Hier kann man aber durchaus ansetzen und hätte man das vor 15 Jahren begonnen, hätte man die Zeit nicht verloren. Das Problem ist schließlich, dass solche Algorithmen von Entwicklern ausgelagert werden, die vielleicht Java fit sind, aber nicht in C++. Die Erfahrung reicht einfach nicht mehr für den Spezialfall. Der Normalfall sollte in meinen Augen aber Training für den Spezialfall sein und das funktioniert nur, wenn man eine Sprache hat, die Normalfall und Spezialfall abdecken kann.

    Zumal z.B. im Job C#, Fortran, Python und C++ verwendet werden und die Zwischenschichten ein Spezialfall für sich sind. Diesen Spezialfälle brauchen wir nur, weil jede Sprache angeblich für irgendwas besonders gut geeignet ist. Ich könnte auch gut drauf verzichten.

    Shade Of Mine schrieb:

    Aber naja, ich habe zB auf meine Aussage hin, dass ein 10 Zeiler in einer Scriptsprache für Textersetzung besser ist als ein C++ Programm, von dir als Antwort bekommen dass mir einfach nur gute String Klassen in C++ fehlen.

    Stimmt doch auch. Jede Skriptsprache hat doch bessere String-Verarbeitung als C++ mit den std::strings. Aber das sind Erweiterungen zu C++, die standardmäßig mitgeliefert werden. Ich halte es für legitim davon auszugehen, dass zukünftige std::strings eher an die Bedürfnisse von Strings angelehnt sind, dann würden meine Strings oder QStrings auch keinen Sinn mehr ergeben. Ich schreibe meine String-Klasse ja auch nicht, weil ich nichts besseres zu tun habe, sondern weil ich mit std::string nichts Sinnvolles anfangen kann, wenn ich Strings verarbeiten will.
    STL ist gut und schön, aber das will doch keiner für "Normalfall"-Aufgaben.

    Was auf den ersten Blick in C++ schwieriger wird ist Boiler-Plate zu entfernen. int main(void) für kleines Skript braucht kein Mensch. Ist bei mir nicht erforderlich, der erste Befehl leitet main() ein (sowie die Klasse, die main enthält und das Projekt, das wiederum die Klasse enthält) und main endet am Ende der Datei.

    emit "Hello World";
    

    Auch sowas kann man problemlos durch einen Compiler jagen. Das geht nicht nur bei Skriptsprachen. Es kann auch die vollständige Implementation eines Plugins darstellen, wenn man dem Compiler das von außen mitteilt.

    Das erfolgte aber weniger Aufgrund von Skripts, als durch die Tatsache, dass ich C-Schülern erstmal ein Hello World vorsetzen muss und dann erklären darf, was Datentypen (int, void), Funktionen, Rückgabewerte oder Includes sind und dass man diese komischen Klammern halt machen muss, weil irgendwer das in den 70ern für sinnvoll erachtete sind. Bei C++/C#/Java werfen wir dann noch Namensräume und Klassen rein. Bevor ich dann bei "Hallo Welt" angekommen sind verstehen die nur noch Bahnhof. Oder ich unterrichte in der Form "Das müsst ihr jetzt noch nicht verstehen", bei solchen Dozenten frage ich mich aber immer, warum ich dann da sitze.
    So kann man Step by Step aufbauen, was da im Hintergrund abgeht, bekommt man dann mit, wenn es interessant wird.

    Shade Of Mine schrieb:

    Was genau wolltest du damit dann ausdrücken? Ich habe das so verstanden, dass wenn ich eine bessere String Klasse als std::string hätte, C++ eine bessere Lösung gewesen wäre.

    Nein. C++ wäre eine Lösungsmöglichkeit gewesen. Und eine, die in der aktuellen Fassung reichlich BoilerPlate hervorruft.

    Aber dieser Thread geht um die Zukunft von Programmiersprachen, vielleicht habe ich schonmal daran erinnert 😉 Es gibt keinen Grund, warum C++18 nicht vielleicht sinnvolle Strings mitliefert. Eventuell spart man sogar die 5 Zeilen Boiler-Plate, aber die 5 Zeilen machen es dann auch nicht.

    Shade Of Mine schrieb:

    uU reden wir aneinander vorbei?

    Ich habe das Gefühl, dass aus meinen Aussagen Dinge interpretiert werden, die da nicht stehen und die auch nicht logisch daraus geschlossen werden können. Ich schreibe hier auch keinen Fachaufsatz, sodass ich auch nicht ausschließen kann, dass jeder Satz frei jeglicher Interpretation ist, aber in dem Fall kamen bisher eher weniger Rückfragen, als deutlicher Gegendruck zu den schlechtmöglichsten Interpretationen meiner Aussagen.

    Anders ausgedrückt, es ist sehr stark davon auszugehen, dass wir (und andere) komplett aneinander vorbei reden, deswegen rücke ich die Dinge ja auch immer auf den Standpunkt zurück, den ich hier vertrete.
    Würden ich nicht davon ausgehen, dass wir aneinander vorbeireden, würde ich diesen Thread tatsächlich als gezielten Angriff und beleidigend betrachten.



  • Ich bin zwar nur hobbymäßig an C++ interessiert, aber ich schalte mich hier trotzdem mal ein:

    > Es ist schade, dass diese Normalfall-Frameworks in C++ eher verstreut sind als unter z.B. std::gui zu finden sind.

    GUIs sind für ein allgemeines C++ viel zu speziell. Niemand wäre mit einer std::gui zufrieden, weil die einen Ribbons haben wollen, die anderen irgendein Linux-Widget, was Windows nicht hat.

    Stroustrup schrieb:

    I fear that GUI is too complex and too controversial topic for the standards committee. The committee consists of volunteers and we don't have the resources to build a major GUI library. Also, a standards committee can't compete with commercial (and non-commercial) vendors.

    Die 3rd-Party-Libraries für GUIs sind einfach immer besser, da kann eine standardisierte Library einfach nicht mithalten.

    > Und auch std::string ist mehr Container als sinnvoll nutzbare String-Klasse.

    Was erwartest du denn von einem String? Ich fand std::string bisher vollkommen okay. Viele mögen String nicht, weil sie nicht begreifen, dass stringstream (oder überhaupt Streams) diese Aufgaben hat, die sie string irgendwie ankleben wollen.
    Wenn dir ein Algorithmus für std::string fehlt, kannst du ganz einfach einen in Form einer freien Funktion hinzufügen. Ich halte std::string für vollkommen okay.

    Ich spreche evtl. im Interesse vieler, aber was ist überhaupt Xins Problem? Wir sind uns alle einig, dass C++ nicht die eierlegende Wollmichsau ist, dass aber C++ eher eierlegende Wollmichsau als Java oder C# ist. Alle Sprachen haben ihre Daseinsberechtigung. Wenn sie keine hätten, würden sich nicht mehr existieren. Für Aufgaben, die Java nun mal besser als C++ kann, ist Java auch geeignet. Das ist gesunder Menschenverstand.
    Wo ist das Problem?



  • Ich möchte mich mal von einer anderen Seite an das Problem annähern:

    ich glaube, dass wenn es noch eine Sprache gibt, die sich in einem Bereich durchsetzt, es keine All-Purpose-Language, sondern eine DSL sein wird. Sollte eine Sprache im All-Purpose-Language erfolg haben wollen, muss sie entweder
    a) ein Übersetzungsmodell in eine andere All-Purpose-Language
    oder b) komplette Abwärtskompatibilität zu einer etablierten All-Purpose-Language
    besitzen

    Warum?
    Die Programme werden immer Größer und komplexer. Programmiersprachen müssen daher Werkzeuge bieten, die diese Komplexität reduzieren. All-Purpose-Languages können dies aber nur in einem begrenzten Bereich, da für die Reduktion der Komplexität ab einem bestimmten Level spezifisches Wissen über das Problem erforderlich ist. Es ist zum Beispiel nicht davon auszugehen, dass eine Hochsprache jemals so gutes stringhandling bieten wird, wie Perl, oder andere Sprachen die extra dafür erschaffen wurden und keine anderen Probleme mehr lösen müssen.

    Wir werden daher mehr Diversität in den verwendeten Sprachen erleben und damit in den verschiedenen Bereichen auch unterschiedliche Programmierparadigma. Gleichzeitig wird der Einfluss von universellen Sprachen zurückgehen und auch hier wird sich jede Sprache eine eigene Nische suchen. Was wichtiger wird, ist aber die Anbindung an die DSLs. Hier liegt Java durch die JIT-Technologie momentan ziemlich weit vorn.

    Jede neue Sprache wird sich von nun an die Frage erlauben müssen, welches Problem sie lösen will. "Besser als andere Sprachen" zu sein, reicht nicht mehr aus.



  • Shade Of Mine schrieb:

    Du sagst zB die wichtigen Features die fehlen sind
    Const-Correctness -> wird ersetzt durch Immutable Types
    C++-Referenzen -> hier sehe ich nicht wirklich was relevantes. Referenzen sind Syntax Zucker. Einzig relevanter Vorteil ist, dass man damit defensive Kopien verhindert - was man in Java zB über Interfaces löst.

    Immutable Types sind eine Möglichkeit, kosten aber. Was kostet und nicht abschaltbar ist, wird keine andere Nische besetzen können.

    Referenzen sind alles andere als Zucker... sonst wären sie so handlich wie es Zeiger sind.

    Shade Of Mine schrieb:

    Templates -> Generics. Natürlich sind Templates mächtiger als Generics, aber prinzipiell sind es wieder 2 Lösungen für 1 Problem. Je nach Situation ist das eine oder andere besser.

    Stimmt und beide haben Berechtigung. Es ist eben nicht zwei Lösungen für ein Problem, sondern es sind semantisch vollkommen unterschiedliche Konstrukte.

    Shade Of Mine schrieb:

    Mehrfachvererbung -> dafür bietet Java eben Interfaces, die in einigen Situationen viel besser sind als Mehrfachvererbung. Alles in allem sehe ich hier keinen riesen Unterschied.

    Ich programmiere jetzt seit 18 Jahren C++. Was mir bisher niemand erklären konnte war, wo eigentlich Interfaces besser sein sollen als Mehrfachvererbung. Das interessiert mich ehrlich, denn bisher sehe ich in Interfaces nur Nachteile.

    Shade Of Mine schrieb:

    Und was genau willst du haben? Binäre Kompatibilität von C# zu Java? Oder worauf genau zielst du ab? Das mit Linker habe ich nicht verstanden...

    Die Objectfiles sind nicht geeignet Klassen abzubilden, was zu überflüssigem Aufwand führt, den man mit C# oder Java so nicht hat.

    Shade Of Mine schrieb:

    C++ ist enorm komplex. Man braucht Jahre um es zu verstehen. Die Entwicklungskosten in C++ sind einfach hoch. Und mit C++0x ist es auch nicht wirklich besser geworden. Die Sprache ist ziemlich übersättigt mit Features und Sprachkonstrukten. Ich denke nicht dass es so toll wäre da noch eine Menge mehr Features reinzupacken.

    Womit wir an dem Punkt wären, wo ich vor Seiten schon schrieb, dass C++ scheiße ist - aber trotzdem das beste, was wir haben.

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

    Jodocus schrieb:

    Ich bin zwar nur hobbymäßig an C++ interessiert, aber ich schalte mich hier trotzdem mal ein:

    > Es ist schade, dass diese Normalfall-Frameworks in C++ eher verstreut sind als unter z.B. std::gui zu finden sind.

    GUIs sind für ein allgemeines C++ viel zu speziell. Niemand wäre mit einer std::gui zufrieden, weil die einen Ribbons haben wollen, die anderen irgendein Linux-Widget, was Windows nicht hat.

    Normal, die meisten wollen einfach ein Fenster haben und das ist abbildbar.

    Ich bin mit Stroustrups Vision durchaus ganz gut vertraut. Und ich bin in vielen Dingen sogar sehr ähnlich gepolt wie Stroustrup. Aber nicht in allen. Ich weiß, dass grundlegende GUI realisierbar ist - das beweist Qt, wxWidgets und gtk.
    Wer Ribbons will, muss sich dann ggfs. außerhalb des Standards bedienen. std::gui wäre eine naheliegende Möglichkeit, keine Pflicht.
    Erklären wir einfach mal wxWidgets zu std::gui. Viele Fälle könnte man damit bereits abdecken, insbesondere den Normalfall. Mal eben ein kleines Tool hier... Mal fünf Buttons und ein Listview... wie man es in WinForms auch zusammenklatscht.

    Jodocus schrieb:

    > Und auch std::string ist mehr Container als sinnvoll nutzbare String-Klasse.

    Was erwartest du denn von einem String? Ich fand std::string bisher vollkommen okay.

    Zu weit weg aus der Sprache - Strings sind nicht nur Normalfall, sondern absolut grundlegend und sollten entsprechend grundlegend von der Sprache unterstützt werden, wie in Perl oder Python.

    Jodocus schrieb:

    Ich spreche evtl. im Interesse vieler, aber was ist überhaupt Xins Problem?

    Wie kommst Du darauf, dass ich ein Problem hätte? Wir diskutieren hier Möglichkeiten der Zukunft. Das wäre eine Lösung, aber kein Problem. Wenn Du alles okay findest, hast Du erst recht kein Problem.

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

    otze schrieb:

    ich glaube, dass wenn es noch eine Sprache gibt, die sich in einem Bereich durchsetzt, es keine All-Purpose-Language, sondern eine DSL sein wird. Sollte eine Sprache im All-Purpose-Language erfolg haben wollen, muss sie entweder
    a) ein Übersetzungsmodell in eine andere All-Purpose-Language
    oder b) komplette Abwärtskompatibilität zu einer etablierten All-Purpose-Language
    besitzen

    So sieht's aus. 👍

    otze schrieb:

    Wir werden daher mehr Diversität in den verwendeten Sprachen erleben und damit in den verschiedenen Bereichen auch unterschiedliche Programmierparadigma. Gleichzeitig wird der Einfluss von universellen Sprachen zurückgehen und auch hier wird sich jede Sprache eine eigene Nische suchen. Was wichtiger wird, ist aber die Anbindung an die DSLs. Hier liegt Java durch die JIT-Technologie momentan ziemlich weit vorn.

    Und hier gehen wir ganz entschieden wieder auseinander. Ich sehe in Java bestenfalls einen Übergang und den auch weniger in Java als der der mitgelieferten VM.

    otze schrieb:

    Jede neue Sprache wird sich von nun an die Frage erlauben müssen, welches Problem sie lösen will. "Besser als andere Sprachen" zu sein, reicht nicht mehr aus.

    👍

    Und genau das versuche ich umzusetzen. Mit einigen hundert Detailverbesserung in der Basissprache, wo ich gerade schonmal dabei bin...



  • @Xin: keine Lust zu quoten, zu viel Text. tl;dr wäre hier nicht ganz verkehrt, aber ich find den Thread doch irgendwie lustig deswegen hab ichs gelesen...

    Kurz nochmal wegen Qt vs. Winforms. Ich wills ja nicht so hinstellen, als ob ich Qt nicht mögen würde, ich mags ja. Aber es kann wirklich nichts, was Winforms nicht auch kann, bzw. ich vermisse da nichts. Internationalisierung in Winforms ist doch völlig ok gelöst. Das ist nicht viel Aufwand, dafür ist es flexibel und du kriegst perfekte Ergebnisse hin, wenn du etwas Arbeit reinsteckst. Qt ist sprachbedingt (;)) etwas unflexibel. z.B. dieses MVC Modell. Es ist ja an sich toll und ich finds echt super im C++ Umfeld, sowas ist MFC Lichtjahre voraus. Aber es ist doch irgendwo auch unflexibel und funktioniert nur in den Fällen gut, an die die Qt Entwickler auch gedacht haben. In anderen Fällen mag es mit viel Aufwand und Workarounds halbwegs funktionieren, und es gibt Fälle, da wirds richtig übel... Aber ich will mich nicht beschweren, ich bin damit auch soweit auch ziemlich zufrieden und es ist das beste, was ich in C++ kenne. Nur sehe ich keinen Grund zu sagen, es wäre besser als Winforms oder gar WPF. Und was Layouts in Qt angeht, habe ich sie in Winforms nie vermisst. Es ist ein anderes Layouting Konzept, aber es funktioniert genauso gut, nur nicht so umständlich und fehleranfällig. Ist nicht immer ganz einfach mit den ganzen QLayouts durchzublicken, wo man sich vertan hat, wo eine falsche SizePolicy gesetzt ist usw.

    Du hast auch mal geschrieben, dass C++ für große Projekte wegen der semantischen Stärke ideal ist. Hier sind wir einer Meinung. Ich wollte auch unbedingt an einem großen Projekt in C++ mitarbeiten und tu es auch. Bei großen Projekten spielen die meisten Probleme von C++ keine so entscheidende Rolle mehr und C++ kann seine Stärken besser ausspielen. Hier hat dir ja auch niemand widersprochen. Was die meisten hier versuchen klar zu machen ist, dass es sehr viele Projekte gibt (wahrscheinlich 90% oder mehr), wo C++ einfach nicht die beste Wahl ist. Die meisten Entwickler verdienen ihr Geld mit deutlich kleineren Projekten (wozu ich auch mittelgroße Projekte zähle, die widerum auch deutlich in der Unterzahl sind verglichen mit den ganz kleinen Projekten). Und bei solchen Projekten passt C++ einfach nicht, bzw. sie wären in anderen Sprachen 10x schneller und eleganter gelöst.

    Echtzeitgrafik und "hocheffiziente Algorithmen" sind auch so ein Thema... Die sind in C++ nicht automatisch schneller. Sehe ich leider an unserer Software. Da gibt es sowohl hochkomplexe und hocheffiziente Algorithmen als auch Echtzeitgrafik. Ist alles in C++ geschrieben. Trotzdem ist sehr vieles sehr ineffizient und könnte man auch in Java 10x performanter schreiben. Weil die Software sehr stark gewachsen ist, sehr viel kann, sehr viele Sonderfälle berücksichtigen muss usw... Obwohl das Design insgesamt durchaus nicht katastrophal ist und viele Komponenten eigentlich richtig gut sind, ist das Gesamtgebilde nicht sehr gut wartbar/erweiterbar und überhaupt nicht performant. Komplettes Redesign (unter Berücksichtigung aller nun bekanten Anforderungen) wäre angebracht, ist aber von Kosten und vom Aufwand her überhaupt nicht drin. Deswegen bringen da auch einzelne hocheffizient (und Assembler-optimierte) implementierte Algorithmen gar nichts, wenn außen rum noch tausend andere Sachen ausgeführt werden und das ganze dann ewig dauert. Also, C++ ist noch lange nicht automatisch performant. Und ein Performance Unterschied von 10% lässt sich ganz leicht und billig durch einen etwas schnelleren Rechner ausgleichen.



  • Xin schrieb:

    Und genau das versuche ich umzusetzen. Mit einigen hundert Detailverbesserung in der Basissprache, wo ich gerade schonmal dabei bin...

    Ich glaube, dass wir immer noch aneinander vorbei reden. Ich glaube, dass der Markt nur noch Platz für sehr spezielle Sprachen hat. Sprachen wie matlab, die auf eine einzige Problemkategorie ausgelegt sind (in dem Fall: mathematische Probleme) und bei allen anderen Problemstellungen beliebig schlecht sind. Das heißt, das sich Platz für kleine Sprachen sehe, die sich einfach in andere Hochsprachen einbetten lassen. Meinetwegen auch durch direkte Codeübersetzung. Compilerzeit ist mir egal, was teuer ist ist meine Entwicklungszeit(und die Bugsuche durch zu hohe Komplexität).

    Was ich mir zum Beispiel wünschen würde, ist eine funktionale Sprache basierend auf Prinzipien des data-oriented-programming* die für (nicht)-lineare Algebra ausgelegt ist. Mein jetziges Projekt ließe sich sicherlich mit so etwas in einem 10tel des Codes verglichen mit C++ implementieren.



  • @Xin

    Was mich interessieren würde, ist, in welchen genauen Anwendungsbereich Genesys passen soll. Soll die Sprache im großen und ganzen eine bessere Alternative zu C++ und dessen Stärken sein (z.B. Performance) oder auch in Teilbereiche passen in denen andere Programmiersprachen stärker sind (z.B. hohe Abstraktionen und statische Typsicherheit wie bei Haskell oder Scala)?

    Bisher meine ich herauslesen zu können, dass Genesys dabei helfen soll performant implementierte Algorithmen statisch sicherer umsetzen zu können oder deren Wiederverwendung durch mehr Generizität verbessern soll. Ist das korrekt? Wenn ja, soll man diese Generizität auch in abstrakterer Form (deklarative Beschreibung von Algorithmen wie in der funktionalen Programmierwelt) einsetzen können?


Anmelden zum Antworten