Was kommt nach der Objektorientierung?
-
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
schlechtnicht gut zubewerteneinzustufen, 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?
-
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.
-
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?
-
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 maschienenDies 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
besitzenWarum?
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.