Wie du schon selbst feststellt kann man Probleme mit C++ bekommen. Der Programmierer muss darauf achten dass sie nicht entstehen. Sprachen wie Rust garantieren dass Probleme die bei C++ auftauchen können nicht passieren und erlauben es einem auf die wirklich wichtigen Dinge zu konzentrieren.
Das erlaubt auch Dinge anzustellen die mit Sprachen wie C oder C++ effektiv unmöglich sind. Ein gutes Beispiel dafür wären komplexe Algorithmen die ohne Kopien oder Speicher Allokation auskommen auskommen wie Parser. Das ist in Rust kein Problem wäre aber in C oder C++ mit einem riesigen Aufwand verbunden.
Vorstellung [Hier ist Scann0r]
https://github.com/matt-42/iod#a-fast-m ... r--encoder :KDasIch hat geschrieben:komplexe Algorithmen die ohne Kopien oder Speicher Allokation auskommen auskommen wie Parser.
Nachtrag: Ach so, der Nachsatz. Mein Fehler. Eine eigene Bibliothek ist natürlich eine gewisse Komplexität. Für Parser würde ich aber auch zu Bison und nicht zu einer vollwertigen Sprache greifen - auch nicht zu Rust.

Wie gesagt: Das richtige Werkzeug für die richtige Aufgabe... und die richtige Aufgabe für Rust sehe ich nicht.
Es geht den beiden aber offenbar nicht darum, dass jemand nach 10 Jahren C++ Erfahrung irgendwann mal guten C++ Code schreibt, sondern dass guter C++ Code auch relativ schnell für Einsteiger machbar ist. Und in dem Punkt macht C++ dem Neuling meistens mehr Probleme als eine Sprache, die mit weniger Komplexität für alltägliche Aufgaben auskommt.grum.py hat geschrieben:Nur, wenn du unsauberes C++ schreibst. Sauberes C++ schießt dir nirgends hin. Da sitzt das Problem wie üblich vor dem Bildschirm.BlackJack hat geschrieben:Ich habe behauptet man kann sich mit Rust nicht so leicht in den Fuss schiessen wie mit C++.
Naja. Auch hier: Doofer Benutzer = großes Problem.DasIch hat geschrieben:Wenn man so einen Parser in Rust schreibt weiß ich dass was die Speicherverwaltung angeht nichts schief geht
Ich behaupte, das ist möglich. Wenn man halt nicht gerade mit einer völlig anderen Sprache (Python?) anfängt, ist es erstaunlich leicht, C++ zu begreifen. Vollständiges Auswendiglernen der Spezifikation halte ich allerdings für überflüssig.snafu hat geschrieben:Es geht den beiden aber offenbar nicht darum, dass jemand nach 10 Jahren C++ Erfahrung irgendwann mal guten C++ Code schreibt, sondern dass guter C++ Code auch relativ schnell für Einsteiger machbar ist.

@grum.py: Mit der Argumentation sitzt das Problem *immer* vor dem Bildschirm. Das entkräftet in keiner Weise das man in C++ viel leichter unsauberen Code schreiben kann, auch wenn man sich wirklich Mühe gibt das nicht zu tun, als in anderen Programmiersprachen. Was diese anderen Programmiersprachen besser macht, weil man da ganz einfach nicht so viel zusätzlich im Kopf behalten muss was mit dem eigentlichen Problem welches man lösen will, gar nichts zu tun hat.
War ja kar das Du das Argument bringst das C (ohne ++) die Sprache ist in der man alles programmieren sollte. Bin ich auch stark dafür. Ist einfach das schnellste. C++ braucht man dafür nicht. Geschwindigkeit ist halt nicht alles, und wenn es einen Teil gibt der Geschwindigkeit braucht, gibt es immer noch C, Fortran, und Assembler.
Ich würde keinen Kernel in Python schreiben, aber auch nicht in C++. Die meisten nehmen auch C dafür. Andererseits wäre RPython vielleicht ein Kandidat. Rust wäre möglich. So oft schreiben Leute aber auch keinen eigenen Kernel.
Genau Rust ist die Sprache für die Leute die zu doof für C++ sind. Also sehr viele. Schlau genug für C++ zu sein ist kein Kompliment. Das sind Leute die stolz darauf sind unnützes Zeug zu können, womit man sich in anderen Sprachen gar nicht erst beschäftigen muss.
Dann bin ich gerne zu doof und zahle auch gerne mit ein bisschen Laufzeit, die in den meisten Fällen eh nicht wirklich wichtig ist, und falls dann doch halt mit C gelöst werden kann.
Warum schrecken Dich Organisationen ab? Hinter C++ stehen sogar mehrere Organisationen. Es hat nicht primär mit der Sprache selbst zu tun, sondern mit dem Vertrauen das die Sprache eine kritische Masse erreicht und weiter gepflegt wird. D ist nett, aber wenn Digital Mars alle viere von sich streckt ist halt die Zukunft der Sprache ungewiss. Python wäre sicher auch weniger erfolgreich wenn da nicht grosse Namen als Anwender hinter stehen würden. Es reicht halt nicht wenn eine Sprache gut ist (dann würden alle Lisp programmieren
), die Leute müssen da auch irgendwelche Vorbilder sehen und darauf vertrauen das die Sprache gepflegt wird.
Doch Google selbst benutzt Go und ich kenne auch Programmierer die beruflich Go programmieren.
Na mit welcher Sprache komme ich wohl so überhaupt nicht klar. Rate doch mal.
C++17 ist doch noch Zukunft. Wurden da alte Sachen rausgeworfen? Ist der Code mit dem man da draussen in der Wildnis klarkommen muss schon auf idiomatisches C++17 umgeschrieben? Falls nicht, bis wann ist das der Fall?
Der Preis für die angeblich optimale Ressourcennutzung ist mir halt zu hoch. Vor allem werden da Ressourcen optimal genutzt, von denen in der Regel genug da sind. Ich stecke lieber mehr RAM in den Rechner als das ich mir Gedanken mache die ich mir nicht machen muss wenn sich das nur durch einen kleinen Faktor in Speicherverbrauch und Rechenleistung niederschlägt. Ich als Programmierer und meine Zeit bei der Programmierung und Fehlersuche sind Ressourcen und die werden von C++ definitiv nicht optimal genutzt. Mir ist in den allermeisten Fällen Python schnell genug. Punktuell an den Stellen wo es das nicht ist, greife ich zu Cython oder der Einbindung einer C-Bibliothek.
Oh Mann, da schreibe ich absichtlich immer das C fast eine Untermenge von C++ ist, und dann schreibe ich das einmal nicht so präzise…
Mir ist jetzt nicht klar wie Du auf „unnötig komplexer Assembler“ kommst. Falls Du auf das ”nightly”-Feature inline Assembler abzielst, das ist noch experimentell und steht ausserdem nicht direkt zur Verfügung, sondern muss erst freigeschaltet werden. Wenn das in die Sprache übernommen wird, dann kann man mit Rust vielleicht tatsächlich etwas machen was man mit Standard-C++ nicht machen kann: Kernel programmieren.
Du kennst Dich anscheinend mit Java nicht so gut aus. Was mich da unter anderem gestört hat ist das die nicht wie zum Beispiel in Python, vorhandene Bibliotheken in C verwenden, sondern wirklich alles in Java neu Programmiert hat. Nö Danke. Das ist auch wieder Ressourcenverschwendung alles noch mal zu programmieren.
Und natürlich ist zusammenkleben Programmieren. Nichts anderes macht man ständig auf den verschiedensten Ebenen. Es sei denn man schreibt wirklich Assembler und greift direkt auf die Hardware zu.
Ja, doofer Benutzer = grosses Problem. Und in anderen Sprachen halt doofer Benutzer = weniger grosses Problem. Darum C++ schlechter als Sprachen in denen das kein so grosses Problem ist. Du bist halt stolz darauf das Du die Komplexität gemeistert hast und bist nun angepisst, dass das nicht nötig ist, weil es bessere Sprachen gibt.
War ja kar das Du das Argument bringst das C (ohne ++) die Sprache ist in der man alles programmieren sollte. Bin ich auch stark dafür. Ist einfach das schnellste. C++ braucht man dafür nicht. Geschwindigkeit ist halt nicht alles, und wenn es einen Teil gibt der Geschwindigkeit braucht, gibt es immer noch C, Fortran, und Assembler.
Ich würde keinen Kernel in Python schreiben, aber auch nicht in C++. Die meisten nehmen auch C dafür. Andererseits wäre RPython vielleicht ein Kandidat. Rust wäre möglich. So oft schreiben Leute aber auch keinen eigenen Kernel.
Genau Rust ist die Sprache für die Leute die zu doof für C++ sind. Also sehr viele. Schlau genug für C++ zu sein ist kein Kompliment. Das sind Leute die stolz darauf sind unnützes Zeug zu können, womit man sich in anderen Sprachen gar nicht erst beschäftigen muss.

Warum schrecken Dich Organisationen ab? Hinter C++ stehen sogar mehrere Organisationen. Es hat nicht primär mit der Sprache selbst zu tun, sondern mit dem Vertrauen das die Sprache eine kritische Masse erreicht und weiter gepflegt wird. D ist nett, aber wenn Digital Mars alle viere von sich streckt ist halt die Zukunft der Sprache ungewiss. Python wäre sicher auch weniger erfolgreich wenn da nicht grosse Namen als Anwender hinter stehen würden. Es reicht halt nicht wenn eine Sprache gut ist (dann würden alle Lisp programmieren

Doch Google selbst benutzt Go und ich kenne auch Programmierer die beruflich Go programmieren.
Na mit welcher Sprache komme ich wohl so überhaupt nicht klar. Rate doch mal.

C++17 ist doch noch Zukunft. Wurden da alte Sachen rausgeworfen? Ist der Code mit dem man da draussen in der Wildnis klarkommen muss schon auf idiomatisches C++17 umgeschrieben? Falls nicht, bis wann ist das der Fall?
Der Preis für die angeblich optimale Ressourcennutzung ist mir halt zu hoch. Vor allem werden da Ressourcen optimal genutzt, von denen in der Regel genug da sind. Ich stecke lieber mehr RAM in den Rechner als das ich mir Gedanken mache die ich mir nicht machen muss wenn sich das nur durch einen kleinen Faktor in Speicherverbrauch und Rechenleistung niederschlägt. Ich als Programmierer und meine Zeit bei der Programmierung und Fehlersuche sind Ressourcen und die werden von C++ definitiv nicht optimal genutzt. Mir ist in den allermeisten Fällen Python schnell genug. Punktuell an den Stellen wo es das nicht ist, greife ich zu Cython oder der Einbindung einer C-Bibliothek.
Oh Mann, da schreibe ich absichtlich immer das C fast eine Untermenge von C++ ist, und dann schreibe ich das einmal nicht so präzise…
Mir ist jetzt nicht klar wie Du auf „unnötig komplexer Assembler“ kommst. Falls Du auf das ”nightly”-Feature inline Assembler abzielst, das ist noch experimentell und steht ausserdem nicht direkt zur Verfügung, sondern muss erst freigeschaltet werden. Wenn das in die Sprache übernommen wird, dann kann man mit Rust vielleicht tatsächlich etwas machen was man mit Standard-C++ nicht machen kann: Kernel programmieren.

Du kennst Dich anscheinend mit Java nicht so gut aus. Was mich da unter anderem gestört hat ist das die nicht wie zum Beispiel in Python, vorhandene Bibliotheken in C verwenden, sondern wirklich alles in Java neu Programmiert hat. Nö Danke. Das ist auch wieder Ressourcenverschwendung alles noch mal zu programmieren.
Und natürlich ist zusammenkleben Programmieren. Nichts anderes macht man ständig auf den verschiedensten Ebenen. Es sei denn man schreibt wirklich Assembler und greift direkt auf die Hardware zu.
Ja, doofer Benutzer = grosses Problem. Und in anderen Sprachen halt doofer Benutzer = weniger grosses Problem. Darum C++ schlechter als Sprachen in denen das kein so grosses Problem ist. Du bist halt stolz darauf das Du die Komplexität gemeistert hast und bist nun angepisst, dass das nicht nötig ist, weil es bessere Sprachen gibt.

Beim Programmieren: Ja. Wenn eine Sprache Funktionen hast, die du nicht verstehst, dann ist es nicht die Aufgabe der Sprache, damit aufzuhören.BlackJack hat geschrieben:Mit der Argumentation sitzt das Problem *immer* vor dem Bildschirm.
Ich habe auch schon mal gelesen, man könne in Python nur sauberen Code schreiben. Ist genau so falsch. Wie sauber dein Code ist, hängt allein von deinem Programmierstil ab. In jeder Sprache.BlackJack hat geschrieben:Das entkräftet in keiner Weise das man in C++ viel leichter unsauberen Code schreiben kann, auch wenn man sich wirklich Mühe gibt das nicht zu tun, als in anderen Programmiersprachen.

Um beim Bild zu bleiben: Wer mit COBOL angefangen hat, der wird ganz schön viel Python schreiben.

Nur, weil du mehr Möglichkeiten hast, heißt das nicht, dass du sie nutzen musst. Du kannst in C++(17) wunderbar prozedural und ohne einen einzigen expliziten Pointer, ohne Casten und ohne Dateitypen runterprogrammieren, wenn dir danach ist. Was musst du da zusätzlich im Kopf behalten? Selbst die Validität erklärt dir im Zweifelsfall der Compiler, dafür musst du nicht selber denken.BlackJack hat geschrieben:Was diese anderen Programmiersprachen besser macht, weil man da ganz einfach nicht so viel zusätzlich im Kopf behalten muss was mit dem eigentlichen Problem welches man lösen will, gar nichts zu tun hat.
Fortran habe ich bisher nicht benutzt, aber sein alter Konkurrent COBOL ist ziemlich träge. :KBlackJack hat geschrieben:wenn es einen Teil gibt der Geschwindigkeit braucht, gibt es immer noch C, Fortran, und Assembler.
Warum nicht? Bei C musst du deutlich mehr beachten. Ich dachte, das missfällt dir?BlackJack hat geschrieben:Ich würde keinen Kernel in Python schreiben, aber auch nicht in C++.

Unter Umständen ist C++ auch schneller, moderne Compiler haben durchaus interessante Optimierungsmechanismen.
Du meinst: Komplexe Strukturen zu begreifen, im Gegensatz zu denen, die von ihnen heillos überfordert sind und, statt genug Lernwillen aufzubringen, lieber in Foren dagegen wettern, wie doof C++ ist, weil es so viele Möglichkeiten hat?BlackJack hat geschrieben:Schlau genug für C++ zu sein ist kein Kompliment. Das sind Leute die stolz darauf sind unnützes Zeug zu können, womit man sich in anderen Sprachen gar nicht erst beschäftigen muss.
Mal über BASIC nachgedacht?

Darf ich das in meine Signatur aufnehmen?BlackJack hat geschrieben:Dann bin ich gerne zu doof

Du möchtest lieber in der Sternchensprache C schreiben, in der Sich-in-den-Fuß-schießen eigentlich notwendige Voraussetzung für ein lauffähiges Programm ist, und wetterst gleichzeitig gegen C++, das einige dieser Fallstricke umgeht oder ganz entfernt, weil es "zu gefährlich" ist? Das ist mir gerade zu kompliziert.BlackJack hat geschrieben:und zahle auch gerne mit ein bisschen Laufzeit, die in den meisten Fällen eh nicht wirklich wichtig ist, und falls dann doch halt mit C gelöst werden kann.
Hinter C++ steht vor allem ein ISO-Komitee.BlackJack hat geschrieben:Warum schrecken Dich Organisationen ab? Hinter C++ stehen sogar mehrere Organisationen.
Das würde ich übrigens durchaus befürworten. Ein bisschen mehr Standardbibliotheken könnten diesem Ökosystem nicht schaden, Quasistandards (zum Beispiel ASDF/UIOP) sind immer ein wenig misstrauisch zu betrachten.BlackJack hat geschrieben:Es reicht halt nicht wenn eine Sprache gut ist (dann würden alle Lisp programmieren)
"Ändert dauernd sein API" ist nun nicht unbedingt eine gute Voraussetzung, um damit zu programmieren.BlackJack hat geschrieben:ie Leute müssen da auch irgendwelche Vorbilder sehen und darauf vertrauen das die Sprache gepflegt wird.
Wo?BlackJack hat geschrieben:Doch Google selbst benutzt Go
Alle namhaften Compiler unterstützen den aktuellen Technical Report bereits seit längerer Zeit.BlackJack hat geschrieben:C++17 ist doch noch Zukunft.
Ja, zum Beispiel Trigraphen (schade eigentlich) und auto_ptr.BlackJack hat geschrieben:Wurden da alte Sachen rausgeworfen?
Mein C++17-Compiler kann C++98-Code kompilieren, wenn ich ihn nicht explizit darauf hinweise, dass er das nicht tun soll. In diesen C++98-Code Funktionen aus C++17 einzufügen wird keinen halbwegs brauchbaren Compiler daran hindern, ein lauffähiges Programm zu erzeugen.BlackJack hat geschrieben:Ist der Code mit dem man da draussen in der Wildnis klarkommen muss schon auf idiomatisches C++17 umgeschrieben?
Bei - zum Beispiel - Python 2 und 3 sieht das schon anders aus, nicht?

"Ich hab' ja 32 GB RAM, da kann mein Webbrowser ruhig 16 benutzen" und andere Ärgernisse der modernen Softwareindustrie...BlackJack hat geschrieben:Der Preis für die angeblich optimale Ressourcennutzung ist mir halt zu hoch. Vor allem werden da Ressourcen optimal genutzt, von denen in der Regel genug da sind.
Ich finde das rücksichtslos und Software, die so verschwenderisch mit Ressourcen umgeht, hat zumindest auf meinem Rechner keine große Zukunft.
Das ist übrigens einer der Gründe für den schleichenden Tod Javas: Diese völlige Ignoranz gegenüber der Ressourcenbelegung.BlackJack hat geschrieben:Ich stecke lieber mehr RAM in den Rechner als das ich mir Gedanken mache die ich mir nicht machen muss wenn sich das nur durch einen kleinen Faktor in Speicherverbrauch und Rechenleistung niederschlägt.
Dann bist du nicht ausreichend im Umgang mit der Debugger-Toolchain geschult, wofür die Sprache aber herzlich wenig kann.BlackJack hat geschrieben:Ich als Programmierer und meine Zeit bei der Programmierung und Fehlersuche sind Ressourcen und die werden von C++ definitiv nicht optimal genutzt.
Viel praktischer als C++-BlackJack hat geschrieben:Mir ist in den allermeisten Fällen Python schnell genug. Punktuell an den Stellen wo es das nicht ist, greife ich zu Cython oder der Einbindung einer C-Bibliothek.

Assemblersprache ist eine Teilmenge jeder mir bekannten Hochsprache. "Da ist ja eine andere Sprache mit drin, deswegen ist die Sprache scheiße" ist insofern ein eher unzureichendes Argument. Du musst die unterliegenden Funktionen ja nicht nutzen.BlackJack hat geschrieben:Mir ist jetzt nicht klar wie Du auf „unnötig komplexer Assembler“ kommst.
Wieso sollte man das nicht können?BlackJack hat geschrieben:dann kann man mit Rust vielleicht tatsächlich etwas machen was man mit Standard-C++ nicht machen kann: Kernel programmieren.
Wieso? Was war an meiner Aussage nicht zutreffend?BlackJack hat geschrieben:Du kennst Dich anscheinend mit Java nicht so gut aus.
Nö. Dafür musste nicht programmieren können. Können die meisten auch nicht, die so was machen. Sonst würden sie es nicht machen.BlackJack hat geschrieben:Und natürlich ist zusammenkleben Programmieren.
Ich schreibe mein Zeug eigentlich ganz gern mal selber. Dann weiß ich wenigstens, wo was steht.
Ich benutze ja keineswegs nur C++.BlackJack hat geschrieben:Du bist halt stolz darauf das Du die Komplexität gemeistert hast und bist nun angepisst, dass das nicht nötig ist, weil es bessere Sprachen gibt.

@grum.py: Ich kann nicht C++17 programmieren wenn ich nicht völlig isoliert alleine vor mich hinprogrammieren möchte. Ein bedeutender Anteil am Programmieren besteht darin Quelltext von anderen zu lesen. Also muss ich alles lesen und verstehen können was mir da so über den Weg läuft, und das wird ziemlich sicher nicht nur C++17 sein. Wahrscheinlich eher wenig, wenn man bedenkt wie neu C++17 ist.
Und dann muss ich mir über Speicherverwaltung gedanken machen und so Sachen wie „exception safety“ (oder ich kann keine Ausnahmen verwenden, was ich als Rückschritt empfinden würde).
Fortran wird auch heute noch benutzt weil der Compiler teilweise mehr Rückschlüsse ziehen kann als bei C und deshalb effizienteren Code erstellen kann. Allerdings möchte man Fortran eher nicht für etwas anderes als Rechenoperationen mit/auf Arrays verwenden. Deshalb wird sie auch genau dafür hauptsächlich verwendet und diese Bibliotheken dann in Programmen eingebunden die in anderen Sprachen geschrieben sind.
In C muss ich bei der Sprache auf weniger achten als bei C++. Eben weil die Sprache einfacher ist.
Nochmal: Das Problem bei C++ sind nicht die vielen Möglichkeiten, sondern die vielen Möglichkeiten sich damit in den Fuss zu schiessen. Kann mit komplexen Strukturen umgehen. Mein Lernunwillen kommt von unnützer Komplexität die mir am Ende mehr Arbeit und Fehlerquellen liefert als das sie nützlich ist.
Was soll ich über BASIC nachdenken? Die Sprache ist nicht ausdrucksstark genug. Für den C64 okay wenn die Leistung ausreicht und das Programm nicht zu komplex ist. Oder es ist ein Dialekt der im Grunde nur eine moderne Sprache wie C# oder Java in anderer Syntax ist.
Ich möchte weder in C noch in C++ schreiben. Nur wenn etwas zu langsam oder zu hardwarenah ist, dann würde ich lieber einen kleinen übersichtlichen Teil in C schreiben statt in C++. Was ich nicht kann und auch nicht lernen kann. Da bin ich zu blöd zu. Kannst Du gerne in Deine Signatur aufnehmen. Ich kann verschiedene Maschinensprachen, C, Java, Python, Haskell, Prolog, Smalltalk, JavaScript, Scheme, und noch so einiges andere. Einzig C++ geht nicht. Ich habe es mehrfach versucht, diese Sprache ist einfach nur schrecklich.
Wo Google Go benutzt? Auf Rechnern!? Komische Frage.
Der Punkt ist das *ich* C++98-Code lesen und verstehen können muss, auch wenn ich selbst nur C++17 schreibe. Das hat nichts mit dem Compiler zu tun.
Die Browser die soviel Speicher verbrauchen sind alle in C++ geschrieben. Das hat also weniger mit der Programmiersprache zu tun, sondern mit dem Programmierer. Geschwindigkeit wird da offenbar durch exzessives Cachen von gerenderten Seiten(teilen) als Grafik erreicht. Chrome verwende ich unter anderem deswegen nicht. Aber die Abwägung Geschwindigkeit vs. Speicherplatz ist sprachunabhängig. Entweder mach berechnet etwas (immer wieder) oder man hat vorberechnete Tabellen und schaut nur schnell nach. Das war auch schon auf dem C64 so.
Bei Java kann man viel spekulieren. Es kann auch sein das sie beim rauswerfen von schlechten Sachen bei C++ ein wenig zu stark übertrieben haben und es zu strikt gemacht haben. „Checked exceptions“ waren IMHO ein Fehler. Und die geschwätzige Syntax. Was sie ja jetzt in Java 8 durch lambda-Funktionen etwas abmildern und mit Streams mehr funktionale Programmierung versuchen. Und es gibt mit C# Konkurrenz die am Anfang nicht da war. Schleichenden Tod sehe ich übrigens nicht. Es ist ein Rückgang, aber der wird sich irgendwo einpendeln. Zumal es für die JVM noch andere Sprachen gibt, die dem Ökosystem frisches Leben geben. Clojure und Scala sind Sprachen die eine gewisse Verbreitung haben und auch nicht so schnell wieder verschwinden.
Die Sprache kann dafür das ich eine Debugger-Toolchain brauche die mir nicht viel nützt, weil ich die Sprache ja schon nicht kann. Wie soll mir dann die Debugger-Toolchain was nützen. Und dafür muss das ja auch erst einmal kompilieren bevor ich den Debugger verwenden kann. Der nützt mir bei 5 Bildschirmseiten Fehlerausgabe wegen eines Templates so rein gar nichts.
Ja, Cython oder `ctypes` oder `cffi` finde ich viel praktischer als alles in C++ zu schreiben. Vor allem weil ich es *sehr* selten brauche, denn das meiste ist Python, und das man eine Anbindung an eine Bibliothek benötigt für die es noch keine fertige gibt, ist auch eher selten.
Assembler ist nicht Teilmenge von C oder C++. Oder wurde das in C++ mittlerweile tatsächlich mit aufgenommen? Es ist Untermenge von D. Und bei Rust ist es in den experimentellen Builds. Ansonsten ist es für Hochsprachen doch eher ungewöhnlich. Das oft Compiler von den ”unteren Hochsprachen” auch eine nicht-standardisierte Möglichkeit bieten Assembler in den Quelltext zu schreiben zählt nicht.
Genau deswegen kann man zumindest in reinem C zum Beispiel keine Kernel programmieren. Denn in aller Regel braucht man dafür Maschinencode der nicht mit Standard-C erreichbar ist. Zum Beispiel wenn es spezielle Maschinenbefehle gibt um von einer Unterbrechungsbehandlung zurück zu springen, oder gezielt Prozessorregister für MMUs oder Traps oder ähnliches zu setzen oder abzufragen, oder wenn I/O nicht in den Speicher in den normalen Adressraum abgebildet wird, sondern über spezielle Maschinenbefehle angesprochen werden muss.
Ein Programmierer der alles selber programmieren will, auch wenn es das schon fertig und getestet als Bibliothek gibt ist kein Programmierer der Wert auf seine Zeit und robuste Programme legt. Aber das ist er ja schon dann nicht wenn er C++ dafür verwendet.
Und dann muss ich mir über Speicherverwaltung gedanken machen und so Sachen wie „exception safety“ (oder ich kann keine Ausnahmen verwenden, was ich als Rückschritt empfinden würde).
Fortran wird auch heute noch benutzt weil der Compiler teilweise mehr Rückschlüsse ziehen kann als bei C und deshalb effizienteren Code erstellen kann. Allerdings möchte man Fortran eher nicht für etwas anderes als Rechenoperationen mit/auf Arrays verwenden. Deshalb wird sie auch genau dafür hauptsächlich verwendet und diese Bibliotheken dann in Programmen eingebunden die in anderen Sprachen geschrieben sind.
In C muss ich bei der Sprache auf weniger achten als bei C++. Eben weil die Sprache einfacher ist.
Nochmal: Das Problem bei C++ sind nicht die vielen Möglichkeiten, sondern die vielen Möglichkeiten sich damit in den Fuss zu schiessen. Kann mit komplexen Strukturen umgehen. Mein Lernunwillen kommt von unnützer Komplexität die mir am Ende mehr Arbeit und Fehlerquellen liefert als das sie nützlich ist.
Was soll ich über BASIC nachdenken? Die Sprache ist nicht ausdrucksstark genug. Für den C64 okay wenn die Leistung ausreicht und das Programm nicht zu komplex ist. Oder es ist ein Dialekt der im Grunde nur eine moderne Sprache wie C# oder Java in anderer Syntax ist.
Ich möchte weder in C noch in C++ schreiben. Nur wenn etwas zu langsam oder zu hardwarenah ist, dann würde ich lieber einen kleinen übersichtlichen Teil in C schreiben statt in C++. Was ich nicht kann und auch nicht lernen kann. Da bin ich zu blöd zu. Kannst Du gerne in Deine Signatur aufnehmen. Ich kann verschiedene Maschinensprachen, C, Java, Python, Haskell, Prolog, Smalltalk, JavaScript, Scheme, und noch so einiges andere. Einzig C++ geht nicht. Ich habe es mehrfach versucht, diese Sprache ist einfach nur schrecklich.
Wo Google Go benutzt? Auf Rechnern!? Komische Frage.

Der Punkt ist das *ich* C++98-Code lesen und verstehen können muss, auch wenn ich selbst nur C++17 schreibe. Das hat nichts mit dem Compiler zu tun.
Die Browser die soviel Speicher verbrauchen sind alle in C++ geschrieben. Das hat also weniger mit der Programmiersprache zu tun, sondern mit dem Programmierer. Geschwindigkeit wird da offenbar durch exzessives Cachen von gerenderten Seiten(teilen) als Grafik erreicht. Chrome verwende ich unter anderem deswegen nicht. Aber die Abwägung Geschwindigkeit vs. Speicherplatz ist sprachunabhängig. Entweder mach berechnet etwas (immer wieder) oder man hat vorberechnete Tabellen und schaut nur schnell nach. Das war auch schon auf dem C64 so.
Bei Java kann man viel spekulieren. Es kann auch sein das sie beim rauswerfen von schlechten Sachen bei C++ ein wenig zu stark übertrieben haben und es zu strikt gemacht haben. „Checked exceptions“ waren IMHO ein Fehler. Und die geschwätzige Syntax. Was sie ja jetzt in Java 8 durch lambda-Funktionen etwas abmildern und mit Streams mehr funktionale Programmierung versuchen. Und es gibt mit C# Konkurrenz die am Anfang nicht da war. Schleichenden Tod sehe ich übrigens nicht. Es ist ein Rückgang, aber der wird sich irgendwo einpendeln. Zumal es für die JVM noch andere Sprachen gibt, die dem Ökosystem frisches Leben geben. Clojure und Scala sind Sprachen die eine gewisse Verbreitung haben und auch nicht so schnell wieder verschwinden.
Die Sprache kann dafür das ich eine Debugger-Toolchain brauche die mir nicht viel nützt, weil ich die Sprache ja schon nicht kann. Wie soll mir dann die Debugger-Toolchain was nützen. Und dafür muss das ja auch erst einmal kompilieren bevor ich den Debugger verwenden kann. Der nützt mir bei 5 Bildschirmseiten Fehlerausgabe wegen eines Templates so rein gar nichts.
Ja, Cython oder `ctypes` oder `cffi` finde ich viel praktischer als alles in C++ zu schreiben. Vor allem weil ich es *sehr* selten brauche, denn das meiste ist Python, und das man eine Anbindung an eine Bibliothek benötigt für die es noch keine fertige gibt, ist auch eher selten.
Assembler ist nicht Teilmenge von C oder C++. Oder wurde das in C++ mittlerweile tatsächlich mit aufgenommen? Es ist Untermenge von D. Und bei Rust ist es in den experimentellen Builds. Ansonsten ist es für Hochsprachen doch eher ungewöhnlich. Das oft Compiler von den ”unteren Hochsprachen” auch eine nicht-standardisierte Möglichkeit bieten Assembler in den Quelltext zu schreiben zählt nicht.
Genau deswegen kann man zumindest in reinem C zum Beispiel keine Kernel programmieren. Denn in aller Regel braucht man dafür Maschinencode der nicht mit Standard-C erreichbar ist. Zum Beispiel wenn es spezielle Maschinenbefehle gibt um von einer Unterbrechungsbehandlung zurück zu springen, oder gezielt Prozessorregister für MMUs oder Traps oder ähnliches zu setzen oder abzufragen, oder wenn I/O nicht in den Speicher in den normalen Adressraum abgebildet wird, sondern über spezielle Maschinenbefehle angesprochen werden muss.
Ein Programmierer der alles selber programmieren will, auch wenn es das schon fertig und getestet als Bibliothek gibt ist kein Programmierer der Wert auf seine Zeit und robuste Programme legt. Aber das ist er ja schon dann nicht wenn er C++ dafür verwendet.

BlackJack hat geschrieben:Ich kann nicht C++17 programmieren wenn ich nicht völlig isoliert alleine vor mich hinprogrammieren möchte.
Doch, außer, du machst das für Geld.

Und selbst dann ist allein die Schuld deines Arbeitgebers, an veralteten Standards festzuhalten. Richtig, älteren Quellcode muss man gelegentlich lesen. Macht aber nichts, neue Compiler können auch mit uralten Standards umgehen. Python 3 hingegen hat große Probleme, Code aus Python 2 zu verstehen. Kompatibilität ist in diesem Forum vermutlich ein ganz schlechtes Argument.
Speicherverwaltung ist in modernem C++ tatsächlich optional. Möglich, aber nicht notwendig.
C soll einfacher sein als C++? Mal versucht, in C Text zu manipulieren?

Ich kann verschiedene Maschinensprachen, C, Java, Python, Haskell, Prolog, Smalltalk, JavaScript, Scheme, und noch so einiges andere. Einzig C++ geht nicht.
Respekt. Mit Haskell komme wiederum ich nicht klar. Zu viele Klammern.

Ja, Go auf Rechnern. Aber für welche Software? Von Google kenne ich da keine.
Browser sind auch deshalb so lahmarschig, weil irgendwelche BWLer nicht verstanden haben, wofür ein Browser da ist. Eine schlanke Version von Firefox wäre mal was...
Java kann jetzt Lambda? Wie die meisten anderen Sprachen, C++ eingeschlossen? Hui...


Ja, du kannst in Python wie in Java, Lisp, C++, Node.js, Ruby... eine ganze Menge Code einfach aus Vorhandenem zusammenklicken. Aber davon begreifst du deine eigene Software nicht. Viel Spaß beim Debuggen.

Assembler ist nicht Teilmenge von C oder C++.
Doch, natürlich. Am Ende kommt genau das heraus. Auch in Rust.
Und natürlich ist das Schlüsselwort asm keine Besonderheit von Pascal.

Zu viele Klammern in Haskell? Du hast wohl die ($)-Funktion übersehen 
C++ wirkt in vielen Fällen kryptisch. Das ist dem Sprachumfang geschuldet. Haskell wirkt auch kryptisch. Hier ist das Paradigma ursächlich.
Sprachen sind einer Marktwirtschaft unterworfen. Sie müssen mir anderen konkurrieren und sich weiterentwickeln. Viele tun das auch, unterwerfen sich jedoch der Abwärtskompatibilität. Werden hier nun neue Sprachbestandteile hinzugefügt, wächst zwangsläufig der Umfang.
Bildlich geschrieben: Jede Sprache bietet Möglichkeiten, sich in die Füße zu schießen. Manche Sprachen ließen gar einen NRA-Kongress sprachlos werden.

C++ wirkt in vielen Fällen kryptisch. Das ist dem Sprachumfang geschuldet. Haskell wirkt auch kryptisch. Hier ist das Paradigma ursächlich.
Sprachen sind einer Marktwirtschaft unterworfen. Sie müssen mir anderen konkurrieren und sich weiterentwickeln. Viele tun das auch, unterwerfen sich jedoch der Abwärtskompatibilität. Werden hier nun neue Sprachbestandteile hinzugefügt, wächst zwangsläufig der Umfang.
Bildlich geschrieben: Jede Sprache bietet Möglichkeiten, sich in die Füße zu schießen. Manche Sprachen ließen gar einen NRA-Kongress sprachlos werden.
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Dem Markt sind Programmiersprachen weitgehend egal, sie sind ja selten die Produkte. Entscheidend ist, was in ihnen programmiert wird, würde ich sagen.
Und da gibt es bei C++ aus guten Gründen recht viel.
Und da gibt es bei C++ aus guten Gründen recht viel.

@gumpy: So viel unqualifizierte Kommentare, das halt ich jetzt nicht mehr aus. Klar löscht man alle zwei Jahre seinen kompletten Code, weil eine neue C++-Version rauskommt, und man ja immer nur mit dem neusten Standard schreibt. Und auf einen Schlag sind auch alle Bibliotheken, die man so braucht auch nur noch mit dieser Version geschrieben.
Nur weil C von der Komplexität einfach ist, heißt das noch nicht, dass man deshalb alles von Grund auf selbst schreiben muß. Stringmanipulation macht man gar nicht, weil man dafür Python verwendet oder nimmt eine Bibliothek, die die entsprechenden Funktionen bereitstellt. Ich weiß jetzt nicht, wie es mit C++17 aussieht, aber Unicode-Unterstützung war zumindest bis vor kurzem quasi nicht vorhanden.
Von dem, was ein Browser macht, hast Du keine Ahnung. Alle Programmierer außer Dir als unfähig hinzustellen, weil sie ach so viel Speicher verschwenden, ...
Dass es einen Unterschied macht, ob man Assembler-Befehle nativ unterstützt, oder einfach nur Textzeilen blind in den fertig compilierten Code kopiert, hast Du noch nicht verstanden. C++ macht nichts anderes und es gibt keine zwei Compiler-Varianten, die das auf die selbe Art und Weise tun.
C++ geht den Weg, immer etwas neues Draufzupacken, um ja nicht die Rückwärtskompatibilität zu zerstören. Dass Code der in der Variante 98 geschrieben wurde, dann doch nicht mit 17 zusammenarbeitet, ist dann die andere Seite der Geschichte. Der Python-Guru hat sich für einen radikal anderen Weg entschieden und hat nach langer Planung alte Zöpfe abgeschnitten. Was dabei rauskam, ist eine neue Sprache mit sehr ähnlicher Syntax.
C++ ist die gleiche Sprache, man muß aber komplett anders programmieren.
Beim Umstieg wird man in Python also gezwungen ein bißchen etwas anzupassen, sonst läuft gar nichts. Bei C++ zwingt einen nur eine alte Bibliothek, die nicht komplett neu geschrieben wurde, dazu, alles bisherige wegzuwerfen und wieder C++98 zu programmieren, obwohl man denkt, man könnte das doch mischen.
Nur weil C von der Komplexität einfach ist, heißt das noch nicht, dass man deshalb alles von Grund auf selbst schreiben muß. Stringmanipulation macht man gar nicht, weil man dafür Python verwendet oder nimmt eine Bibliothek, die die entsprechenden Funktionen bereitstellt. Ich weiß jetzt nicht, wie es mit C++17 aussieht, aber Unicode-Unterstützung war zumindest bis vor kurzem quasi nicht vorhanden.
Von dem, was ein Browser macht, hast Du keine Ahnung. Alle Programmierer außer Dir als unfähig hinzustellen, weil sie ach so viel Speicher verschwenden, ...
Dass es einen Unterschied macht, ob man Assembler-Befehle nativ unterstützt, oder einfach nur Textzeilen blind in den fertig compilierten Code kopiert, hast Du noch nicht verstanden. C++ macht nichts anderes und es gibt keine zwei Compiler-Varianten, die das auf die selbe Art und Weise tun.
C++ geht den Weg, immer etwas neues Draufzupacken, um ja nicht die Rückwärtskompatibilität zu zerstören. Dass Code der in der Variante 98 geschrieben wurde, dann doch nicht mit 17 zusammenarbeitet, ist dann die andere Seite der Geschichte. Der Python-Guru hat sich für einen radikal anderen Weg entschieden und hat nach langer Planung alte Zöpfe abgeschnitten. Was dabei rauskam, ist eine neue Sprache mit sehr ähnlicher Syntax.
C++ ist die gleiche Sprache, man muß aber komplett anders programmieren.
Beim Umstieg wird man in Python also gezwungen ein bißchen etwas anzupassen, sonst läuft gar nichts. Bei C++ zwingt einen nur eine alte Bibliothek, die nicht komplett neu geschrieben wurde, dazu, alles bisherige wegzuwerfen und wieder C++98 zu programmieren, obwohl man denkt, man könnte das doch mischen.
Moment, Moment: Diese Implikation habe ich nirgends getroffen. C++ ist es egal, welchen seiner Standards du verwendest.Sirius3 hat geschrieben:Klar löscht man alle zwei Jahre seinen kompletten Code, weil eine neue C++-Version rauskommt, und man ja immer nur mit dem neusten Standard schreibt.
Also ich kann in C++ durchaus zehn Jahre alte Bibliotheken mit neuen Sprachfeatures kombinieren. Wo liegt das Problem?Sirius3 hat geschrieben:Und auf einen Schlag sind auch alle Bibliotheken, die man so braucht auch nur noch mit dieser Version geschrieben.
Ich habe noch nie eine C-Anwendung geschrieben, bei der ich das unbedingte Bedürfnis hatte, Pythoncode einzubinden. :K Und natürlich kannst du versuchen, Probleme zu lösen, indem du einfach mehr Bibliotheken einbindest, aber das erscheint doch aus meiner Perspektive eher als Holzweg.Sirius3 hat geschrieben:Stringmanipulation macht man gar nicht, weil man dafür Python verwendet oder nimmt eine Bibliothek, die die entsprechenden Funktionen bereitstellt.
In C hingegen ...Sirius3 hat geschrieben:Ich weiß jetzt nicht, wie es mit C++17 aussieht, aber Unicode-Unterstützung war zumindest bis vor kurzem quasi nicht vorhanden.

C++17 hat u8-String-Literals als Neuerung bekommen, verhält sich damit ungefähr wie Python.

Ich weiß, dass es auch anders geht, weil ich weiß, was ein Browser macht. Das Problem ist, dass er mehr machen soll als bloß Websites anzuzeigen. (Vgl. NetSurf, der kann nix anderes, startet schnell, ist kompakt, verzichtet aber auf komplexe CSS- oder JavaScript-Funktionen. (Die JavaScript-Engine dort ist noch eher neu, aber eben auch auf Ressourcenschonung optimiert.)Sirius3 hat geschrieben:Von dem, was ein Browser macht, hast Du keine Ahnung. Alle Programmierer außer Dir als unfähig hinzustellen, weil sie ach so viel Speicher verschwenden, ...
Ob ich Assemblerbefehle "übernehme" oder "irgendwo hin kopiere", erscheint mir jetzt nicht wie ein gewaltiger Unterschied. Vom Prozessor werden sie in jedem Fall genau so ausgeführt, wie sie reinkommen. :K In diesem Fall wäre etwas Erläuterung tatsächlich super.Sirius3 hat geschrieben:Dass es einen Unterschied macht, ob man Assembler-Befehle nativ unterstützt, oder einfach nur Textzeilen blind in den fertig compilierten Code kopiert, hast Du noch nicht verstanden.
Das stimmt nicht, C++ entfernt häufiger "alte" Features. Nur halt nicht alles auf einmal.Sirius3 hat geschrieben:C++ geht den Weg, immer etwas neues Draufzupacken, um ja nicht die Rückwärtskompatibilität zu zerstören.
Python2, Python3... Perl5, Perl6... auf dass sich die Lager einander um die Weltherrschaft streiten mögen. Und das soll jetzt irgendwie besser sein?Sirius3 hat geschrieben:Der Python-Guru hat sich für einen radikal anderen Weg entschieden und hat nach langer Planung alte Zöpfe abgeschnitten. Was dabei rauskam, ist eine neue Sprache mit sehr ähnlicher Syntax.
Immer, naja: häufig, wenn ich versuche, eine ausreichend komplexe Anwendung in Python zu schreiben (ich bin gern bereit zuzugeben, dass Python eine der besten Sprachen für Prototyping ist), scheitere ich eher früher als später daran, dass die meisten Bibliotheken mit meiner jeweils ausgesuchten Pythonversion nicht zusammenarbeiten. Ein Hurra der Kompatibilität.
Konkretes Beispiel? Die libcurl zum Beispiel ist nicht mal in C++ geschrieben, sondern gut abgehangener C-Code, und meinem C++17-Compiler ist es völlig egal, dass ich sie trotzdem einbinde.Sirius3 hat geschrieben:Bei C++ zwingt einen nur eine alte Bibliothek, die nicht komplett neu geschrieben wurde, dazu, alles bisherige wegzuwerfen
@grum.py: Ich denke ich verstehe jetzt warum Du das Problem nicht verstehst: Wenn man immer alles selber schreibt, dann muss man natürlich keinen Code lesen und verstehen den andere geschrieben haben. In der realen Welt sieht es halt anders aus. Da muss man vorhandenen Code verwenden und mit anderen Leuten zusammenarbeiten. Das ist wahrscheinlich auch die Schuld des Arbeitgebers, das der Teams von mehreren Programmierern an Programme setzt, und nicht will das Zeit und Geld damit verschwendet wird, dass jeder von Null mit der Standardbibliothek und nichts anderen anfängt. Oder sollte man sich die STL auch selbst programmieren, damit man auch wirklich versteht was man da macht? Sind Betriebssystemaufrufe erlaubt, oder schreibt man sich den Kernel auch besser selbst? Firmware in Peripheriegeräten?
Was soll „Speicherverwaltung ist in modernem C++ tatsächlich optional“ bedeuten? Ich kann C++-Programme schreiben ohne mir über Speicherverwaltung Gedanken machen zu müssen? Also grössere Programme die tatsächlich dynamisch Objekte anlegen und die in der Gegend herum reichen? So wie das in Sprachen mit automatischer Speicherverwaltung geht?
Die Sprache C *ist* einfacher und weniger komplex als C++. Vergleiche einfach mal den Umfang von Syntaxkonstrukten und zugehöriger Semantik. Das sollte eigentlich offensichtlich sein. Und ja, ich habe schon Programme in C geschrieben die Texte manipulieren.
Warum BASIC die logische Konsequenz sein soll wenn einem C++ zu komplex ist, verstehe ich nicht. Warum nicht Python? Io? Smalltalk? …? Warum führt das zwangsläufig zu BASIC? Und welcher Dialekt davon?
Go ist eine Sprache die gut für webbasierte Dienste geeignet ist, aufgrund der Unterstützung für nebenläufige Programmierung („goroutines“) und der Standardbibliothek (z.B. HTTP-Kram). Dafür wird Google das dann wohl auch einsetzen. Zum Beispiel für dl.google.com, der Downloadserver für alle möglichen Google-Produkte/-Dienste.
Browser werden hauptsächlich von BWLern benutzt? Denn die Benutzer sind für fette Browser verantwortlich. Das Spielchen „wir fangen mal eine schlanke Version von Software X an, weil die mittlerweile viel zu fett ist“, endet in aller Regel damit das die Benutzer sich erst freuen, und dann nach und nach mehr Features verlangen bis die neue Software genau so fett ist wie die alte. Oder fetter. Das sind keine BWLer die das planen.
Falls die fünf Seiten Java-Stacktraces eine Replik auf meine Kritik an C++-Template-Fehlermeldungen sein sollte: Liegt wahrscheinlich an mir, aber ich verstehe bei den Template-Fehlermeldungen Null, weil die voll von irgendwelchen verschachtelten internen Templates sind, während Stacktraces zur Laufzeit in der Regel irgendwo den Teil enthalten den ich geschrieben habe, meistens am Ende, und ich dort üblicherweise auch die Stelle finde an der ich den Fehler gemacht habe, oder die ich näher Untersuchen muss um den Fehler zu finden. Bei Template-Fehlermeldungen verstehe ich gar nichts. Da habe ich mal von einem C++-Programmierer den Rat bekommen, den betroffenen Code wegwerfen und sorgfältig neu schreiben, in der Hoffnung den gleichen Fehler nicht noch mal zu machen, weil Template-Fehlermeldungen niemand wirklich versteht der sich nicht durch die Interna der Templates des jeweiligen Compilers wühlt.
Man begreift seine eigene Software wenn man Bibliotheken benutze statt alles neu zu schreiben. Das ist der normale Weg Software zu schreiben. Das machen alle, selbst C++-Programmierer. Nur so Spezialisten wie Du nicht. Ich habe auch keine Probleme beim Debuggen. Warum sollte man?
Assembler ist nicht Teilmenge von einer *Sprache* nur weil es Compiler gibt die die Sprache in Assembler übersetzen können. Wenn man der Argumentation so folgt, dann ist JavaScript eine Teilmenge von C und C++ weil man die mit ``emscripten`` zu JavaScript kompilieren kann.
Das Schlüsselwort ASM gibt es in Pascal nicht. Das gibt es in ausgewählten Compilern, die das jeweils nicht 100% gleich implementieren, weil es nicht zur Sprache Pascal gehört.
Browser ohne CSS und JavaScript? Versuch damit mal produktiv das Internet zu benutzen. Da kommst Du heute nicht mehr weit. Schlanker Browser wäre schön, aber benutzbar sollte das Internet, so wie es ist, halt schon noch bleiben.
Also entweder kann man mit einem aktuellen C++ Compiler auch alten Code übersetzen oder es werden alte Features entfernt. Beides geht nicht.
Und bei der Python-Programmierung hast Du Probleme mit der Versionskompatibilität von Bibliotheken? Was für Bibliotheken? Ich denke dann versteht man seine Programme nicht mehr und kann die auch nicht mehr debuggen? Warum programmierst Du das nicht alles selbst? Jetzt verwirrst Du mich ein wenig.
Was soll „Speicherverwaltung ist in modernem C++ tatsächlich optional“ bedeuten? Ich kann C++-Programme schreiben ohne mir über Speicherverwaltung Gedanken machen zu müssen? Also grössere Programme die tatsächlich dynamisch Objekte anlegen und die in der Gegend herum reichen? So wie das in Sprachen mit automatischer Speicherverwaltung geht?
Die Sprache C *ist* einfacher und weniger komplex als C++. Vergleiche einfach mal den Umfang von Syntaxkonstrukten und zugehöriger Semantik. Das sollte eigentlich offensichtlich sein. Und ja, ich habe schon Programme in C geschrieben die Texte manipulieren.
Warum BASIC die logische Konsequenz sein soll wenn einem C++ zu komplex ist, verstehe ich nicht. Warum nicht Python? Io? Smalltalk? …? Warum führt das zwangsläufig zu BASIC? Und welcher Dialekt davon?
Go ist eine Sprache die gut für webbasierte Dienste geeignet ist, aufgrund der Unterstützung für nebenläufige Programmierung („goroutines“) und der Standardbibliothek (z.B. HTTP-Kram). Dafür wird Google das dann wohl auch einsetzen. Zum Beispiel für dl.google.com, der Downloadserver für alle möglichen Google-Produkte/-Dienste.
Browser werden hauptsächlich von BWLern benutzt? Denn die Benutzer sind für fette Browser verantwortlich. Das Spielchen „wir fangen mal eine schlanke Version von Software X an, weil die mittlerweile viel zu fett ist“, endet in aller Regel damit das die Benutzer sich erst freuen, und dann nach und nach mehr Features verlangen bis die neue Software genau so fett ist wie die alte. Oder fetter. Das sind keine BWLer die das planen.
Falls die fünf Seiten Java-Stacktraces eine Replik auf meine Kritik an C++-Template-Fehlermeldungen sein sollte: Liegt wahrscheinlich an mir, aber ich verstehe bei den Template-Fehlermeldungen Null, weil die voll von irgendwelchen verschachtelten internen Templates sind, während Stacktraces zur Laufzeit in der Regel irgendwo den Teil enthalten den ich geschrieben habe, meistens am Ende, und ich dort üblicherweise auch die Stelle finde an der ich den Fehler gemacht habe, oder die ich näher Untersuchen muss um den Fehler zu finden. Bei Template-Fehlermeldungen verstehe ich gar nichts. Da habe ich mal von einem C++-Programmierer den Rat bekommen, den betroffenen Code wegwerfen und sorgfältig neu schreiben, in der Hoffnung den gleichen Fehler nicht noch mal zu machen, weil Template-Fehlermeldungen niemand wirklich versteht der sich nicht durch die Interna der Templates des jeweiligen Compilers wühlt.
Man begreift seine eigene Software wenn man Bibliotheken benutze statt alles neu zu schreiben. Das ist der normale Weg Software zu schreiben. Das machen alle, selbst C++-Programmierer. Nur so Spezialisten wie Du nicht. Ich habe auch keine Probleme beim Debuggen. Warum sollte man?
Assembler ist nicht Teilmenge von einer *Sprache* nur weil es Compiler gibt die die Sprache in Assembler übersetzen können. Wenn man der Argumentation so folgt, dann ist JavaScript eine Teilmenge von C und C++ weil man die mit ``emscripten`` zu JavaScript kompilieren kann.
Das Schlüsselwort ASM gibt es in Pascal nicht. Das gibt es in ausgewählten Compilern, die das jeweils nicht 100% gleich implementieren, weil es nicht zur Sprache Pascal gehört.
Browser ohne CSS und JavaScript? Versuch damit mal produktiv das Internet zu benutzen. Da kommst Du heute nicht mehr weit. Schlanker Browser wäre schön, aber benutzbar sollte das Internet, so wie es ist, halt schon noch bleiben.
Also entweder kann man mit einem aktuellen C++ Compiler auch alten Code übersetzen oder es werden alte Features entfernt. Beides geht nicht.
Und bei der Python-Programmierung hast Du Probleme mit der Versionskompatibilität von Bibliotheken? Was für Bibliotheken? Ich denke dann versteht man seine Programme nicht mehr und kann die auch nicht mehr debuggen? Warum programmierst Du das nicht alles selbst? Jetzt verwirrst Du mich ein wenig.

Muss ich manchmal, versuche ich aber zu vermeiden. "Not Invented Here". Ich kann Leute nicht ernst nehmen, die für triviale Funktionen einfach irgendein Paket einbinden. Über den Node.js-Zusammenbruch "neulich" habe ich schallend gelacht. Ein Dreizeiler, von dem Hunderte Pakete abhängen, weil alle zu faul sind, das selber zu schreiben. Wer keinen Bock auf Programmieren hat, der sollte es vielleicht besser lassen.BlackJack hat geschrieben:Ich denke ich verstehe jetzt warum Du das Problem nicht verstehst: Wenn man immer alles selber schreibt, dann muss man natürlich keinen Code lesen und verstehen den andere geschrieben haben.
Nicht unbedingt. In den meisten Fällen wäre das Verschwendung. In Python schreibe ich mir ja auch nicht meinen eigenen Datenbankadapter, der am Ende doch nur das Gleiche macht wie sqlite3. Aber nicht jede Sprache hat erschöpfend umfassende Standardbibliotheken. CBlackJack hat geschrieben:Oder sollte man sich die STL auch selbst programmieren, damit man auch wirklich versteht was man da macht?

Ja. Beziehungsweise bedingt: malloc() u.a. sind nicht zwingend notwendig, um ein C++-Programm zu schreiben. Objekte musst du schon noch instanziieren, aber was die im Speicher machen, musst du nicht explizit festlegen.BlackJack hat geschrieben:Was soll „Speicherverwaltung ist in modernem C++ tatsächlich optional“ bedeuten? Ich kann C++-Programme schreiben ohne mir über Speicherverwaltung Gedanken machen zu müssen?
Korrekt. Deswegen musst du da auch mehr berücksichtigen. Wie viele Sternchen haben deine C-Programme denn so?BlackJack hat geschrieben:Die Sprache C *ist* einfacher und weniger komplex als C++.

Lass' mich doch wenigstens einmal ein bisschen übertreiben.BlackJack hat geschrieben:Warum BASIC die logische Konsequenz sein soll wenn einem C++ zu komplex ist, verstehe ich nicht. Warum nicht Python? Io? Smalltalk? …? Warum führt das zwangsläufig zu BASIC? Und welcher Dialekt davon?

Ah, verstehe. Allerdings fehlte mir bisher der Zusammenhang zum Googleportfolio. Steht ja nirgends, so weit ich das sehen konnte.BlackJack hat geschrieben:Go ist eine Sprache die gut für webbasierte Dienste geeignet ist, aufgrund der Unterstützung für nebenläufige Programmierung („goroutines“) und der Standardbibliothek (z.B. HTTP-Kram).
Nicht ganz. Ich hatte darüber vor einer Weile mal einen Rant geschrieben. (Werte Moderatoren: 'tschuldigt, falls das hier nicht so gern gesehen ist.) Zusammenfassung: Seit irgendwelche Wirtschaftsfuzzis das bis dahin einigermaßen brauchbare Web als Markt entdeckt haben, ist es mit dem Fokus auf Kompaktheit vorbei. Wir Benutzer könnten super darauf verzichten, dass Firefox auch als Betriebssystem für ein Officepaket benutzt werden kann. Ein Browser soll, das behaupte ich, ein Betrachter für HTML-Dokumente und keine Plattform sein. Nein, Benutzer haben sich das nicht ausgesucht.BlackJack hat geschrieben:Browser werden hauptsächlich von BWLern benutzt?
Das ist wahrscheinlich auch Erfahrungssache. Ich habe noch nie furchtbarere Fehlermeldungen als die von Java gesehen. :KBlackJack hat geschrieben:Falls die fünf Seiten Java-Stacktraces eine Replik auf meine Kritik an C++-Template-Fehlermeldungen sein sollte: Liegt wahrscheinlich an mir, aber ich verstehe bei den Template-Fehlermeldungen Null (...)
Vielleicht muss man sich daran auch nur gewöhnen.
"Alle", natürlich.BlackJack hat geschrieben:Das machen alle, selbst C++-Programmierer. Nur so Spezialisten wie Du nicht.

Wir schweifen ein bisschen ab. Das ursprüngliche "Problem", das du hattest, war ja, dass C++-Compiler auch C verstehen, was du für schlecht hältst. Dass HTML-Betrachter oft auch JavaScript "können", stört dich aber nicht?BlackJack hat geschrieben:Assembler ist nicht Teilmenge von einer *Sprache* nur weil es Compiler gibt die die Sprache in Assembler übersetzen können.


Und der Unterschied zwischen asm in Turbo Pascal und asm in Free Pascal besteht zum Beispiel worin?BlackJack hat geschrieben:Das Schlüsselwort ASM gibt es in Pascal nicht. Das gibt es in ausgewählten Compilern, die das jeweils nicht 100% gleich implementieren, weil es nicht zur Sprache Pascal gehört.
Nein, beides wird unterstützt, nur nicht unbedingt alle "Features". Aber das ist beim Chrome ja trotz der zehnfachen Ressourcenbelegung auch nicht anders.BlackJack hat geschrieben:Browser ohne CSS und JavaScript?
Ich finde es übrigens entspannend, ohne JavaScript zu "surfen". Eine Website, die es voraussetzt, dass ich ihr erlaube, Code auf meinem Rechner auszuführen, um sie auch nur ansehen zu können, ist mir doch eher suspekt. Und auch für "Interaktion" sollte das nicht unbedingt notwendig sein. Sieht halt besser aus ist ein unzureichendes Argument. :K (Wohl wissend, dass ich den Fehler auch schon selbst gemacht habe.)
"Produktiv das Internet benutzen"? Meine Güte. Das Ding ist (auch) ein Unterhaltungsmedium. Was willst'n da produktiv sein?
Ein paar Beiträge vorher meintest du noch, wie leicht das Debugging doch sei, wenn man alles selbst schreibt. Jetzt geht es nur noch darum, dass man keine fette Bibliothek einbinden soll, wenn man nur einen verhältnismäßig kleinen Teil daraus benötigt. Jetzt bin ich etwas verwirrt hinsichtlich deiner Expertenmeinung: Also sollte ich umfangreiche Bibliotheken, die quasi zum Standard-Repertoire eines Programmierers gehören, besser doch nicht nochmal von grundauf neu schreiben? Aber wie sieht es dann mit dem Debugging aus...?grum.py hat geschrieben:Ich kann Leute nicht ernst nehmen, die für triviale Funktionen einfach irgendein Paket einbinden.
Diplomatisch formuliert: Dinge, die du mit vertretbarem Aufwand selbst implementieren kannst, sind es in der Regel nicht wert, wenige Stunden Arbeitsersparnis im Tausch für fehlende Kenntnis des eingebundenen Codes zu rechtfertigen.snafu hat geschrieben:Also sollte ich umfangreiche Bibliotheken, die quasi zum Standard-Repertoire eines Programmierers gehören, besser doch nicht nochmal von grundauf neu schreiben?
@grum.py: „Not Invented Here“ ist eine abwertende Beschreibung. Das hast Du entweder nicht begriffen oder siehst das tatsächlich anders als die Mehrheit. Die aber natürlich allesamt Geisterfahrer sind.
C verzichtet aus gutem Grund auf eine umfassende Standardbibliothek; weil es keine Hochsprache ist. Das ist eine Sprache für spezielle, hardwarenahe Anwendung. Und auch dort würdest selbst Du nicht Code schreiben der SQLite-Datenbanken anspricht, ohne die entsprechende Bibliothek einzubinden. Hoffe ich zumindest.
Das mit der Speicherverwaltung bei C++ glaube ich nicht. Soweit ich das sehe muss ich mir Gedanken machen ob das Objeket auf dem Stack oder dem Heap landet, über seine Lebenszeit, damit der Speicher nicht zu früh freigegeben wird, und wenn schon nicht auf `malloc()`/`free()`-Ebene dann muss ich mindestens aus einem Zoo an Pointer-Templates auswählen die sich um die Speicherverwaltung kümmern, oder ich muss begründen können warum es auch ohne korrekt funktioniert. Dazu kommt die Frage was bei Zuweisungen passiert und wie Containertypen mit dem Objekt und dessen Speicher umgehen. Also letztendlich muss ich mir sehr explizit Gedanken über die Speicherverwaltung machen. Das scheint mir nicht optional zu sein.
Ich muss bei C nicht mehr berücksichtigen als bei C++. Nur andere Sachen. Und C verstehe ich, weil es einfach ist. Meine Programme haben so viele Sternchen wie nötig sind.
Und warum muss ich eine typische Anfängersprache verwenden wenn mir C++ zu komplex ist? Ich habe kein Problem mit Sprachen die nicht für Anfänger sind oder die nicht so simpel/hardwarenah wie C oder Pascal sind, sondern nur mit C++. Das versucht den Spagat zwischen hardwarenah und Hochsprache und bekommt ihn nicht sinnvoll hin. Was ich nicht schlimm finde, sondern einfach nur überflüssig.
Was meinst Du mit Googleportfolio? Die Sprache wird bei Google verwendet. Von Google aktiv entwickelt. Und zum Beispiel auch in der App Enginge zur Verfügung gestellt. Ausserdem gibt es ausserhalb von Google Benutzer wie Docker oder verbreitete Linux-Distributionen die damit arbeiten, die sicher nicht mal eben so auf eine Sprache setzen, sondern abwägen ob die für ihren Einsatzzweck besser ist als andere, und wie es mit der Zukunft der Sprache aussieht.
Interaktive Inhalte im Browser und Browser als Ablaufplattform für Anwendungen ist seit Anbeginn der Verbreitung von Internet hierzulande ein Thema. JavaScript und Browserplugins für Java und Flash sind nicht erst vor wenigen Jahren entstanden, sondern waren schon Bestandteil von dem Netscape auf den Sun-Maschinen, als die Benutzer noch auf eben solchen Maschinen in der Uni ins Netz gingen und AOL und Compuserve gerade anfingen so etwas ähnliches wie Internet für Otto-Normalverbraucher zugänglich zu machen.
Auf was ”Wir Benutzer” super verzichten können, bestimmst nicht Du sondern die Benutzer. Und die nehmen solche Angebote wie Google's Docs anscheinend an. Und wenn man sie nicht mag, dann muss man sie halt auch nicht benutzen. Zwingt Dich ja keiner zu. Du kannst den Browser ja weiterhin als reinen Betrachter für Hypertextdokumente ohne JavaScript verwenden. Nimm einen nicht-grafischen Browser, dann bleibt Dir auch CSS und Grafik erspart. Ist viel schlanker.
Auf der anderen Seite sind Webanwendungen die JavaScript richtig einsetzen wesentlich bandbreitenschonender als solche die immer die komplette Seite neuladen müssen wenn man Informationen zum Browser übertragen möchte oder neue (nach)laden möchte. Und es kann auch schneller sein wenn bestimmte Sachen schon im Browser erledigt werden, statt das man dafür jedes mal einen kompletten Round-Trip zum Server und zurück benötigt. JavaScript hat nicht nur was mit „sieht besser aus“ zu tun, sondern mit besserer Benutzbarkeit. Wenn Dich Seiten nicht ohne einen tatsächlichen Mehrwert durch JavaScript an Informationen lassen, dann ist das nicht die Schuld von Browsern, sondern von den Leuten die diese Seiten verbrochen haben.
Sehen Tracebacks von C++-Programmen denn wesentlich anders aus als solche von Java-Programmen? Ich habe die sehr ähnlich in Erinnerung.
Warum ist „Gibt es ja schon“ ein schlechtes Argument ein Programm oder eine Bibliothek nicht selbst noch mal zu schreiben? Wenn es funktioniert und getestet ist, und man sonst keinen Grund hat es selbst zu schreiben, ist das einfach nur Zeitverschwendung. Die Zeit kann man besser investieren etwas tatsächlich neues zu Programmieren, was es noch nicht gibt.
HTML und JavaScript lösen grundverschiedene Probleme und ergänzen sich. C und C++ lösen die gleichen Probleme und damit ist C hier redundant in einem C++-Compiler. Das ist Ballast für Rückwärtskompatibilität der heute immer noch mitgeschleppt wird obwohl in keiner mehr benutzen sollte. Und ich rede auch hier wieder über den Programmierer und was der lesen und verstehen können muss. Die Grösse des Compilerbinaries hat mit dem Kritikpunkt rein gar nichts zu tun.
Versuch mal Turbo Pascal-Programme die ASM-Blöcke enthalten mit FreePascal zu übersetzen, dann siehst Du wo der Unterschied liegt: Es geht nicht. Also selbst bei einem Compiler der als Clone für Turbo Pascal gedacht ist, sind diese nicht gleich. Es gehört halt nicht zur Sprache Pascal.
Auch als Unterhaltungsmedium ist das Internet ohne JavaScript recht eingeschränkt. Für die meisten ist Unterhaltung mehr als ausschliesslich statischer Text. Das hat viel mit Interaktion und Multimediainhalten zu tun. YouTube, Soundcloud, soziale Netzwerke, …, wären ohne JavaScript eher scheusslich zu bedienen. Da geht es nicht um reines Aussehen, sondern um Funktionalität.
C verzichtet aus gutem Grund auf eine umfassende Standardbibliothek; weil es keine Hochsprache ist. Das ist eine Sprache für spezielle, hardwarenahe Anwendung. Und auch dort würdest selbst Du nicht Code schreiben der SQLite-Datenbanken anspricht, ohne die entsprechende Bibliothek einzubinden. Hoffe ich zumindest.
Das mit der Speicherverwaltung bei C++ glaube ich nicht. Soweit ich das sehe muss ich mir Gedanken machen ob das Objeket auf dem Stack oder dem Heap landet, über seine Lebenszeit, damit der Speicher nicht zu früh freigegeben wird, und wenn schon nicht auf `malloc()`/`free()`-Ebene dann muss ich mindestens aus einem Zoo an Pointer-Templates auswählen die sich um die Speicherverwaltung kümmern, oder ich muss begründen können warum es auch ohne korrekt funktioniert. Dazu kommt die Frage was bei Zuweisungen passiert und wie Containertypen mit dem Objekt und dessen Speicher umgehen. Also letztendlich muss ich mir sehr explizit Gedanken über die Speicherverwaltung machen. Das scheint mir nicht optional zu sein.
Ich muss bei C nicht mehr berücksichtigen als bei C++. Nur andere Sachen. Und C verstehe ich, weil es einfach ist. Meine Programme haben so viele Sternchen wie nötig sind.
Und warum muss ich eine typische Anfängersprache verwenden wenn mir C++ zu komplex ist? Ich habe kein Problem mit Sprachen die nicht für Anfänger sind oder die nicht so simpel/hardwarenah wie C oder Pascal sind, sondern nur mit C++. Das versucht den Spagat zwischen hardwarenah und Hochsprache und bekommt ihn nicht sinnvoll hin. Was ich nicht schlimm finde, sondern einfach nur überflüssig.
Was meinst Du mit Googleportfolio? Die Sprache wird bei Google verwendet. Von Google aktiv entwickelt. Und zum Beispiel auch in der App Enginge zur Verfügung gestellt. Ausserdem gibt es ausserhalb von Google Benutzer wie Docker oder verbreitete Linux-Distributionen die damit arbeiten, die sicher nicht mal eben so auf eine Sprache setzen, sondern abwägen ob die für ihren Einsatzzweck besser ist als andere, und wie es mit der Zukunft der Sprache aussieht.
Interaktive Inhalte im Browser und Browser als Ablaufplattform für Anwendungen ist seit Anbeginn der Verbreitung von Internet hierzulande ein Thema. JavaScript und Browserplugins für Java und Flash sind nicht erst vor wenigen Jahren entstanden, sondern waren schon Bestandteil von dem Netscape auf den Sun-Maschinen, als die Benutzer noch auf eben solchen Maschinen in der Uni ins Netz gingen und AOL und Compuserve gerade anfingen so etwas ähnliches wie Internet für Otto-Normalverbraucher zugänglich zu machen.
Auf was ”Wir Benutzer” super verzichten können, bestimmst nicht Du sondern die Benutzer. Und die nehmen solche Angebote wie Google's Docs anscheinend an. Und wenn man sie nicht mag, dann muss man sie halt auch nicht benutzen. Zwingt Dich ja keiner zu. Du kannst den Browser ja weiterhin als reinen Betrachter für Hypertextdokumente ohne JavaScript verwenden. Nimm einen nicht-grafischen Browser, dann bleibt Dir auch CSS und Grafik erspart. Ist viel schlanker.
Auf der anderen Seite sind Webanwendungen die JavaScript richtig einsetzen wesentlich bandbreitenschonender als solche die immer die komplette Seite neuladen müssen wenn man Informationen zum Browser übertragen möchte oder neue (nach)laden möchte. Und es kann auch schneller sein wenn bestimmte Sachen schon im Browser erledigt werden, statt das man dafür jedes mal einen kompletten Round-Trip zum Server und zurück benötigt. JavaScript hat nicht nur was mit „sieht besser aus“ zu tun, sondern mit besserer Benutzbarkeit. Wenn Dich Seiten nicht ohne einen tatsächlichen Mehrwert durch JavaScript an Informationen lassen, dann ist das nicht die Schuld von Browsern, sondern von den Leuten die diese Seiten verbrochen haben.
Sehen Tracebacks von C++-Programmen denn wesentlich anders aus als solche von Java-Programmen? Ich habe die sehr ähnlich in Erinnerung.
Warum ist „Gibt es ja schon“ ein schlechtes Argument ein Programm oder eine Bibliothek nicht selbst noch mal zu schreiben? Wenn es funktioniert und getestet ist, und man sonst keinen Grund hat es selbst zu schreiben, ist das einfach nur Zeitverschwendung. Die Zeit kann man besser investieren etwas tatsächlich neues zu Programmieren, was es noch nicht gibt.
HTML und JavaScript lösen grundverschiedene Probleme und ergänzen sich. C und C++ lösen die gleichen Probleme und damit ist C hier redundant in einem C++-Compiler. Das ist Ballast für Rückwärtskompatibilität der heute immer noch mitgeschleppt wird obwohl in keiner mehr benutzen sollte. Und ich rede auch hier wieder über den Programmierer und was der lesen und verstehen können muss. Die Grösse des Compilerbinaries hat mit dem Kritikpunkt rein gar nichts zu tun.
Versuch mal Turbo Pascal-Programme die ASM-Blöcke enthalten mit FreePascal zu übersetzen, dann siehst Du wo der Unterschied liegt: Es geht nicht. Also selbst bei einem Compiler der als Clone für Turbo Pascal gedacht ist, sind diese nicht gleich. Es gehört halt nicht zur Sprache Pascal.
Auch als Unterhaltungsmedium ist das Internet ohne JavaScript recht eingeschränkt. Für die meisten ist Unterhaltung mehr als ausschliesslich statischer Text. Das hat viel mit Interaktion und Multimediainhalten zu tun. YouTube, Soundcloud, soziale Netzwerke, …, wären ohne JavaScript eher scheusslich zu bedienen. Da geht es nicht um reines Aussehen, sondern um Funktionalität.
Ein beliebtes Beispiel ist OpenBSD. Nur, dass das, was die OpenBSD-Entwickler als Folge von "NIH" entwickeln, bald darauf zum Standard wird. OpenSSH und bald OpenSMTPd zum Beispiel.BlackJack hat geschrieben:„Not Invented Here“ ist eine abwertende Beschreibung. Das hast Du entweder nicht begriffen oder siehst das tatsächlich anders als die Mehrheit. Die aber natürlich allesamt Geisterfahrer sind.

Weil das, was es "schon gibt", in der Regel nicht genau das tut, was man gern hätte. Und Kompromisse eingehen zu müssen ist manchmal anstrengender als das Problem einfach durch Neuschreiben zu lösen.
Ich könnte jetzt die Geschichte von C auseinanderpflücken, um dir zu erklären, dass C tatsächlich nie dafür gedacht war, wegen seiner geringen Größe aber ganz gut dafür funktioniert, aber ich glaube, das würde hier zu weit führen. (Außer, es besteht Interesse.)BlackJack hat geschrieben:C verzichtet aus gutem Grund auf eine umfassende Standardbibliothek; weil es keine Hochsprache ist. Das ist eine Sprache für spezielle, hardwarenahe Anwendung.
Ohne die sqlite3.dll/.so/wasauchimmer ist SQLite eher unpraktisch. Einiges an SQLite nervt mich aber, zum Beispiel das fehlende SET. Vielleicht sollte ich...BlackJack hat geschrieben:Und auch dort würdest selbst Du nicht Code schreiben der SQLite-Datenbanken anspricht, ohne die entsprechende Bibliothek einzubinden.

Ausprobieren!BlackJack hat geschrieben:Das mit der Speicherverwaltung bei C++ glaube ich nicht.

Das ist nur von Bedeutung, wenn du absichtlich direkt im Speicher herumschreibst. Ansonsten interessiert dich als C++-Entwickler das nicht. Wenn ich eine Klasse instanziiere, kann ich da theoretisch irgendwelche Sternchenkonstrukte nutzen und "new" und Pfeile in den Code malen, bis es kompiliert - oder ich schreibe MyClass class(foo, bar); und lasse den Rest von C++ übernehmen. Und das ist nun inwiefern schlimmer als z.B. in Python?BlackJack hat geschrieben:Soweit ich das sehe muss ich mir Gedanken machen ob das Objeket auf dem Stack oder dem Heap landet, über seine Lebenszeit, damit der Speicher nicht zu früh freigegeben wird
Es hat weniger Konstrukte als C++, du musst dir also für die gleiche Aufgabe kompliziertere Lösungen ausdenken. Und dauernd auf Memory-Leaks und Nullpointer aufpassen. Ich dachte, das stört dich. :KBlackJack hat geschrieben:C verstehe ich, weil es einfach ist.
Hardwarenahes Pascal. Das wär' mal was. (Völlig ohne Ironie. Ich mag Pascal, obwohl ich es kaum noch verwende.)BlackJack hat geschrieben:Ich habe kein Problem mit Sprachen die nicht für Anfänger sind oder die nicht so simpel/hardwarenah wie C oder Pascal sind, sondern nur mit C++.
Meines Wissens ist Go "bei Google" entstanden, wird aber nicht "von Google" entwickelt. Oder trügt mich da meine Erinnerung? Ich dachte immer, das sei eher so ein Zufallsprodukt aus einem GSoC gewesen.BlackJack hat geschrieben:Die Sprache wird bei Google verwendet. Von Google aktiv entwickelt.
Ich hoffe ja, dass der Containerwahn bald ein Ende findet. Aber ich habe sicherlich auch andere Ansprüche als andere Menschen.BlackJack hat geschrieben:Ausserdem gibt es ausserhalb von Google Benutzer wie Docker oder verbreitete Linux-Distributionen die damit arbeiten, die sicher nicht mal eben so auf eine Sprache setzen, sondern abwägen ob die für ihren Einsatzzweck besser ist als andere, und wie es mit der Zukunft der Sprache aussieht.
Ablaufplattform: Nö. (Schon, weil Internet und WWW nicht annähernd dasselbe bezeichnen.) Interaktive Inhalte schon eher, aber auch da fehlt die sinnvolle Umsetzung. So lange Hyperlinks nur in eine Richtung funktionieren, funktioniert es nicht wie beabsichtigt. Die Erfinder des Hyperlinks (Suchbegriff: Project Xanadu) hatten sich das durchaus ganz anders vorgestellt. Besser irgendwie. :KBlackJack hat geschrieben:Interaktive Inhalte im Browser und Browser als Ablaufplattform für Anwendungen ist seit Anbeginn der Verbreitung von Internet hierzulande ein Thema.
Die zeitlichen Zusammenhänge zwischen Java, Flash und JavaScript (das ja nicht zum Spaß so heißt) sind mir durchaus bekannt. Nur ist Java erfreulicherweise krachend gescheitert (mit wenigen unbelehrbaren, aber stetig weniger werdenden Ausnahmen), und der "meine Website braucht einen flashanimierten Vorhang als Intro"-Wahn war auch recht schnell vorüber.BlackJack hat geschrieben:JavaScript und Browserplugins für Java und Flash sind nicht erst vor wenigen Jahren entstanden, sondern waren schon Bestandteil von dem Netscape auf den Sun-Maschinen
Heute wird HTML - HyperText Markup Language - für so was missbraucht. Niemand käme auf die Idee, eine Tabellenkalkulation in PDF zu programmieren, obwohl das auch nur eine Textauszeichnungssprache ist. Aber HTML vollmüllen, das geht. (Guck' mal spaßeshalber, wer so alles im HTML5-Konsortium sitzt. Firmen, die einen Geldvorteil davon haben, dass ein Dokumentenbetrachter ihre Anwendungen ausführen kann. Keine Benutzer. Benutzer suchen sich sowas nicht aus. Benutzer mögen es, wenn eine Anwendung schnell und schlank ist.)
Ich bin pragmatisch und finde das deswegen, gelinde gesagt, zum Kotzen. Ob ich es ändern kann oder nicht, ist mir dabei vollkommen wurscht.
Und das ist wer? Du? Die? Wir?BlackJack hat geschrieben:Auf was ”Wir Benutzer” super verzichten können, bestimmst nicht Du sondern die Benutzer.
Tja nun, andere essen halt auch Salat bei McDonald's.BlackJack hat geschrieben:Und die nehmen solche Angebote wie Google's Docs anscheinend an.
Genau das tu' ich. Eíner meiner Laptops hat als Browser nur NetSurf und Emacs. Es stört mich nur, dass ich von den meisten Browserherstellern gezwungen werde, diesen ganzen Dreck mitzuinstallieren, den ich überhaupt nicht nutzen will. Firefox ist ein großartiger Browser, aber er wird immer träger und fetter, weil es eben solche Benutzer gibt, die immer mehr damit machen wollen. :KBlackJack hat geschrieben:Du kannst den Browser ja weiterhin als reinen Betrachter für Hypertextdokumente ohne JavaScript verwenden.
Es ist etwas schade um meine Lieblingsprogramme, dass sie versuchen, den Falschen zu gefallen. (Und mir ist durchaus bewusst, wie egoistisch sich das liest. Aber Altruismus gehört nicht in die Informatik. Computer sind Werkzeuge, sie sollen gefälligst machen, was ich will. Womit wir wieder beim Thema wären...)
Bandbreite ist eine Ressource, von der normalerweise "genug da ist". Ich habe weiter oben gelesen, RAM zu sparen sei heutzutage egal. Fand ich albern. Bandbreite zu schonen aber nicht?BlackJack hat geschrieben:Auf der anderen Seite sind Webanwendungen die JavaScript richtig einsetzen wesentlich bandbreitenschonender als solche die immer die komplette Seite neuladen müssen wenn man Informationen zum Browser übertragen möchte oder neue (nach)laden möchte.
Hängt davon ab.BlackJack hat geschrieben:Sehen Tracebacks von C++-Programmen denn wesentlich anders aus als solche von Java-Programmen? Ich habe die sehr ähnlich in Erinnerung.
Weil das, was es schon gibt, in den meisten Fällen Kompromisse erfordert. Das kann funktionieren, muss aber nicht. Von überflüssigem Overhead von Funktionen, die man nicht braucht, mal ganz abgesehen. Klar kann dein Programm doppelt so groß sein wie nötig, aber das ist dann halt Verschwendung von Ressourcen. Und das ist schlechter Stil.BlackJack hat geschrieben:Warum ist „Gibt es ja schon“ ein schlechtes Argument ein Programm oder eine Bibliothek nicht selbst noch mal zu schreiben?
C-Programme sind im Wesentlichen gültige C++-Programme. C++ kann ja mehr und nicht nur andere Dinge. Da wird also nichts "mitgeschleppt". Oder was, glaubst du, sollte man "nicht mehr benutzen"?BlackJack hat geschrieben:C und C++ lösen die gleichen Probleme und damit ist C hier redundant in einem C++-Compiler.
Habe ich noch nicht ausprobiert, ich mag Inlineassembler nicht besonders. (Ich schreibe aber auch keine wissenschaftlichen Anwendungen mit viel Rechen-Blabla in Pascal.) Meinem C++-Compiler traue ich auch schnelleren ASM-Code zu als mir selbst, weswegen das nicht mal sprachabhängig ist.BlackJack hat geschrieben:Versuch mal Turbo Pascal-Programme die ASM-Blöcke enthalten mit FreePascal zu übersetzen, dann siehst Du wo der Unterschied liegt: Es geht nicht. Also selbst bei einem Compiler der als Clone für Turbo Pascal gedacht ist, sind diese nicht gleich. Es gehört halt nicht zur Sprache Pascal.
Weshalb ich die Lösung "früher" - wer Multimedia haben wollte, konnte seinen Browser einfach selbst mit Plugins vollmüllen, und der Rest brauchte den Mist nicht mitzuinstallieren - durchaus nicht unsympathisch fand.BlackJack hat geschrieben:Für die meisten ist Unterhaltung mehr als ausschliesslich statischer Text. Das hat viel mit Interaktion und Multimediainhalten zu tun.
Ich finde Websites, die JavaScript erzwingen, auch deshalb scheußlich zu bedienen. Verschiedene Mindsets, schätze ich. :KBlackJack hat geschrieben:YouTube, Soundcloud, soziale Netzwerke, …, wären ohne JavaScript eher scheusslich zu bedienen.
@grum.py: Wenn man etwas das es schon gibt nicht das tut was man will, dann gibt es ja das was man will noch nicht, das ist also dann kein NIH.
Wofür C ursprünglich mal gedacht war, zu Zeiten als das noch als Hochsprache durchgegangen ist, ändert ja nichts daran wofür es heute gedacht und geeignet ist.
``MyClass class(foo, bar);`` funktioniert doch aber nur wenn das Objekt nur während des Aufrufs bzw. innerhalb des Blocks verwendet wird. Nicht wenn das auch nach Abarbeitung des Blocks noch existieren muss. Und wenn ich das bei einem Aufruf übergeben oder irgendwo hin zuweise, stellen sich auch Fragen was dann passiert, ob da was kopiert wird und wenn ja was. Und je nach dem was man da möchte, muss man die Klasse entsprechend implementieren. Und wenn man dabei Fehler macht, gibt es im besten Fall Speicherlecks und im schlechtesten Fall greift das Programm irgendwann auf uninitialisierten Speicher zu. Alles Sachen mit denen man in Python im Normalfall überhaupt nicht in Berührung kommt. Und in C# und Java auch nicht. Ebenfalls nicht in List, Haskell, Smalltalk, Io, und einem ganzen Haufen weiterer Sprachen.
Ich weiss wie ich bei C auf Speicherlecks und in der Luft hängende Zeiger aufpassen muss. Bei C++ weiss ich das nicht, weil das nicht so einfach ist. Ich weiss bei C wenn ich eine Zuweisung im Code sehe was da passiert. In C++ muss ich dazu die Imlementierung der Klasse kennen und verstehen. Ich muss mir in C auch keine komplizierteren Lösungen für die gleiche Aufgabe ausdenken. Es ist die gleiche Lösung nur mit etwas mehr Schreibarbeit, dafür verstehe ich die am Ende dann auch. Und kann mit grösserer Zuversicht sagen das sich da keine Fehler aufgrund der für mich nicht zu überschauenden Komplexität der Sprache eingeschlichen haben. Es ist einfacher nachvollziehbar.
Rob Pike und Kenneth Thompson sind wahrscheinlich ein bisschen zu alt für GSoC-Projekte. Die arbeiten bei Google und auf Wikipedia ist „Google Inc.“ als Entwickler von go angegeben. Die go-Leute finden C++ übrigens auch zu komplex: „In later interviews, all three of the language designers cited their shared dislike of C++'s complexity as a primary motivation for designing a new language.“ Sind wahrscheinlich auch zu doof.
Die Aussage das Java krachend gescheitert ist, kann man eigentlich nur mit einer verzerrten Wahrnehmung der Realität erklären. Oder Wunschdenken das der Rückgang weil der Hype vorbei ist, mehr als eben das ist, ein Rückgang weil der Hype vorbei ist.
Die Tabellenkalkulation wird nicht in HTML programmiert sondern in JavaScript mit HTML/CSS für die Präsentation, also genau das wofür HTML gedacht ist. Der Name HTML enthält nichts darüber dass das nur statisch sein darf, und das hinter der Auszeichnungssprache auch ein DOM steckt, das per Programm verändert werden kann und soll, ist ebenfalls keine neue Erfindung der letzten paar Jahre. Das ist schon so vorgesehen.
PDF dagegen ist eher als statisches Format konzipiert. Als Alternative zum dynamischen PostScript. Mittlerweile haben die ja auch JavaScript da rein gebastelt, da weiss ich jetzt aber nicht ob man das Dokument tatsächlich ändern kann, so dass eine Tabellenkalkulation möglich ist. Wenn es das einfach *wäre*, dann gehe ich mal davon aus, dass schon längst jemand, und wenn auch nur zum Spass, mindestens eine kleine Textverarbeitung als PDF umgesetzt hätte. Was ich cool finden würde. Hätte im Geiste her was von Smalltalk und ähnlichen Sprachen in denen Sprache, Entscheidungsumgebung, und Programm/Projekt gemeinsam, gleichberechtigt in einem Image stecken.
Google Docs hat Benutzer. Wenn die sich das nicht ausgesucht haben, dann gehst Du tatsächlich davon aus, dass sie dazu gezwungen wurden? Kann ich aus eigener Erfahrung weder aus dem Bekanntenkreis noch von Kunden bestätigen. Auf Bedenken wegen der Datenkrake Google kommt da immer das wäre so schön praktisch, einfach, und neulich sogar mal: sicher. Von jemandem dem ein makroverseuchtes MS-Office-Dokument Probleme gemacht hatte, die er mit Google Docs noch nie hatte, weil das nicht einfach so ohne Sandbox Sachen auf seinem Rechner ausführt.
Zumal Google Docs auch bei schnell und schlank gegen die Konkurrenz gewinnen könnte. Auch wenn Browser nicht mehr so schlank sind wie Du das gerne hättest, Office-Pakete sind oft fetter. Da kannst Du jetzt gegen wettern, dass da ja auch nicht sein müsste wenn das denn nur von so tollen C++-Programmierern geschrieben würde, aber für den Benutzer ist das egal, der nimmt was da ist und nicht was theoretisch vielleicht sein könnte.
Wer die Benutzer sind? Na die Leute die die Software benutzen. Und wie gesagt, Google Docs hat Benutzer, auch wenn uns das (aus unterschiedlichen Gründen) nicht gefallen mag.
Firefox ist OpenSource. Kompilier Dir Deinen eigenen bei dem alles was Du nicht willst rausfliegt. Schnell forken bevor der komplett in Rust reimplementiert wurde!
Mir ist sowohl RAM als auch Bandbreite nahezu egal, solange damit ”linear” verschwenderisch umgegangen wird. Ich ging halt davon aus das Du wenn Du bei RAM Einwände hast, auch bei Bandbreite welche hättest. In Deinem verlinkten Blogbeitrag steht als Negativargument das Webseiten zu gross wären. Also dachte ich es wäre aus Deiner Sicht ein Pluspunkt wenn man mit JavaScript richtig eingesetzt, auch Bandbreite sparen kann.
Wobei ich Bandbreite ein wenig kritischer sehe als RAM solange die Netzversorgung so ungleichmässig verteilt ist. RAM wird von Amazon & Co nach ganz Deutschland geliefert, Breitbandinternet von Telekom & Co leider nicht.
Ich glaube man sollte in C++-Programmen kein C mehr benutzen, oder braucht man das tatsächlich? Wenn man es nicht braucht, dann wird es mitgeschleppt und könnte weg und die Sprache wäre zumindest ein klein wenig weniger (unnötig) umfangreich. Dazu gehört die C-Standardbibliothek, und Zeiger die von den meisten Alternativen von zusätzlichen Schlüsselworten abhängig sind. Beispielsweise das man solchen Code als ``unsafe`` deklarieren muss und so im Code bestätigen muss wo man das tatsächlich verwenden möchte.
Wofür C ursprünglich mal gedacht war, zu Zeiten als das noch als Hochsprache durchgegangen ist, ändert ja nichts daran wofür es heute gedacht und geeignet ist.
``MyClass class(foo, bar);`` funktioniert doch aber nur wenn das Objekt nur während des Aufrufs bzw. innerhalb des Blocks verwendet wird. Nicht wenn das auch nach Abarbeitung des Blocks noch existieren muss. Und wenn ich das bei einem Aufruf übergeben oder irgendwo hin zuweise, stellen sich auch Fragen was dann passiert, ob da was kopiert wird und wenn ja was. Und je nach dem was man da möchte, muss man die Klasse entsprechend implementieren. Und wenn man dabei Fehler macht, gibt es im besten Fall Speicherlecks und im schlechtesten Fall greift das Programm irgendwann auf uninitialisierten Speicher zu. Alles Sachen mit denen man in Python im Normalfall überhaupt nicht in Berührung kommt. Und in C# und Java auch nicht. Ebenfalls nicht in List, Haskell, Smalltalk, Io, und einem ganzen Haufen weiterer Sprachen.
Ich weiss wie ich bei C auf Speicherlecks und in der Luft hängende Zeiger aufpassen muss. Bei C++ weiss ich das nicht, weil das nicht so einfach ist. Ich weiss bei C wenn ich eine Zuweisung im Code sehe was da passiert. In C++ muss ich dazu die Imlementierung der Klasse kennen und verstehen. Ich muss mir in C auch keine komplizierteren Lösungen für die gleiche Aufgabe ausdenken. Es ist die gleiche Lösung nur mit etwas mehr Schreibarbeit, dafür verstehe ich die am Ende dann auch. Und kann mit grösserer Zuversicht sagen das sich da keine Fehler aufgrund der für mich nicht zu überschauenden Komplexität der Sprache eingeschlichen haben. Es ist einfacher nachvollziehbar.
Rob Pike und Kenneth Thompson sind wahrscheinlich ein bisschen zu alt für GSoC-Projekte. Die arbeiten bei Google und auf Wikipedia ist „Google Inc.“ als Entwickler von go angegeben. Die go-Leute finden C++ übrigens auch zu komplex: „In later interviews, all three of the language designers cited their shared dislike of C++'s complexity as a primary motivation for designing a new language.“ Sind wahrscheinlich auch zu doof.

Die Aussage das Java krachend gescheitert ist, kann man eigentlich nur mit einer verzerrten Wahrnehmung der Realität erklären. Oder Wunschdenken das der Rückgang weil der Hype vorbei ist, mehr als eben das ist, ein Rückgang weil der Hype vorbei ist.
Die Tabellenkalkulation wird nicht in HTML programmiert sondern in JavaScript mit HTML/CSS für die Präsentation, also genau das wofür HTML gedacht ist. Der Name HTML enthält nichts darüber dass das nur statisch sein darf, und das hinter der Auszeichnungssprache auch ein DOM steckt, das per Programm verändert werden kann und soll, ist ebenfalls keine neue Erfindung der letzten paar Jahre. Das ist schon so vorgesehen.
PDF dagegen ist eher als statisches Format konzipiert. Als Alternative zum dynamischen PostScript. Mittlerweile haben die ja auch JavaScript da rein gebastelt, da weiss ich jetzt aber nicht ob man das Dokument tatsächlich ändern kann, so dass eine Tabellenkalkulation möglich ist. Wenn es das einfach *wäre*, dann gehe ich mal davon aus, dass schon längst jemand, und wenn auch nur zum Spass, mindestens eine kleine Textverarbeitung als PDF umgesetzt hätte. Was ich cool finden würde. Hätte im Geiste her was von Smalltalk und ähnlichen Sprachen in denen Sprache, Entscheidungsumgebung, und Programm/Projekt gemeinsam, gleichberechtigt in einem Image stecken.
Google Docs hat Benutzer. Wenn die sich das nicht ausgesucht haben, dann gehst Du tatsächlich davon aus, dass sie dazu gezwungen wurden? Kann ich aus eigener Erfahrung weder aus dem Bekanntenkreis noch von Kunden bestätigen. Auf Bedenken wegen der Datenkrake Google kommt da immer das wäre so schön praktisch, einfach, und neulich sogar mal: sicher. Von jemandem dem ein makroverseuchtes MS-Office-Dokument Probleme gemacht hatte, die er mit Google Docs noch nie hatte, weil das nicht einfach so ohne Sandbox Sachen auf seinem Rechner ausführt.
Zumal Google Docs auch bei schnell und schlank gegen die Konkurrenz gewinnen könnte. Auch wenn Browser nicht mehr so schlank sind wie Du das gerne hättest, Office-Pakete sind oft fetter. Da kannst Du jetzt gegen wettern, dass da ja auch nicht sein müsste wenn das denn nur von so tollen C++-Programmierern geschrieben würde, aber für den Benutzer ist das egal, der nimmt was da ist und nicht was theoretisch vielleicht sein könnte.
Wer die Benutzer sind? Na die Leute die die Software benutzen. Und wie gesagt, Google Docs hat Benutzer, auch wenn uns das (aus unterschiedlichen Gründen) nicht gefallen mag.
Firefox ist OpenSource. Kompilier Dir Deinen eigenen bei dem alles was Du nicht willst rausfliegt. Schnell forken bevor der komplett in Rust reimplementiert wurde!

Mir ist sowohl RAM als auch Bandbreite nahezu egal, solange damit ”linear” verschwenderisch umgegangen wird. Ich ging halt davon aus das Du wenn Du bei RAM Einwände hast, auch bei Bandbreite welche hättest. In Deinem verlinkten Blogbeitrag steht als Negativargument das Webseiten zu gross wären. Also dachte ich es wäre aus Deiner Sicht ein Pluspunkt wenn man mit JavaScript richtig eingesetzt, auch Bandbreite sparen kann.
Wobei ich Bandbreite ein wenig kritischer sehe als RAM solange die Netzversorgung so ungleichmässig verteilt ist. RAM wird von Amazon & Co nach ganz Deutschland geliefert, Breitbandinternet von Telekom & Co leider nicht.
Ich glaube man sollte in C++-Programmen kein C mehr benutzen, oder braucht man das tatsächlich? Wenn man es nicht braucht, dann wird es mitgeschleppt und könnte weg und die Sprache wäre zumindest ein klein wenig weniger (unnötig) umfangreich. Dazu gehört die C-Standardbibliothek, und Zeiger die von den meisten Alternativen von zusätzlichen Schlüsselworten abhängig sind. Beispielsweise das man solchen Code als ``unsafe`` deklarieren muss und so im Code bestätigen muss wo man das tatsächlich verwenden möchte.