Stroustrup Interviews
-
Jodocus schrieb:
C ist in C++ "eingemergt", sieht man schon am Namen.
Nein, C++ baut auf C auf. Es ist eben nicht eingemergt weil es ausreichend viele Inkompatibilitäten gibt.
Jodocus schrieb:
Idealisiert soll jedes C-Programm ein C++-Programm sein. Wenn man vernünftig C programmiert, entspricht das auch der Realität (Kompatibilitätsprobleme sind doch eher selten).
Nun die Realität ist z.B. folgendes:
type *foo = malloc (n * sizeof *foo);
Das ist C. Nicht C++. Inkompatibilität bei Grundlagen. Und komm mir jetzt nicht mit
new
denn deine Argumentation war, dass jedes C-Programm auch ein C++-Programm ist.Jodocus schrieb:
C++ ist eine ganze Menge von Sprachenmitteln, wobei man die Mittel nutzen kann, die man benutzen will, aber nicht muss. Man kann auch auf alle Abstraktionsmittel verzichten und "nur" die C-Untermenge von C++ nutzen. Warum aber sollte man das tun?
Ich bin z.B. vor einer Weile auf einen Compiler von einem namhaften µC-Hersteller gestossen, der keine Template-Parameter kann. Also kann ich nicht guten Gewissens Template-Parameter einsetzen. Nur mal als Beispiel.
Jodocus schrieb:
C++ bietet sozusagen nur Vorteile gegenüber von purem C. Weil es C eben erweitert. Und deshalb ist es obsolet.
Selbst wenn C++ keine Nachteile gegenüber C hätte (Compilerverfügbarkeit, Fachkräfteverfügbarkeit, ...), reichen die übrigbleibenden Vorteile für einen Wechsel aus? Ich hoffe dir ist klar, dass ein pauschales "ja" hier nicht angebracht ist. Im Job sehe ich allerhand Probleme bei der Softwareentlicklung, und könnte für viele davon Abhilfmaßnahmen anbieten. Irgendwelche C++-Features sind da nicht dabei, weil sie nicht die eigentlichen Probleme lösen würden. Deswegen ist C nicht obsolet. Wenn man natürlich die "veraltet" Definition von "obsolet" anwedet, dann sieht es sicher anders aus. Aber auch C wird weiterentlickelt. Halt nicht in Richtung C++, weil das gibt es ja schon
-
> Nein, C++ baut auf C auf. Es ist eben nicht eingemergt weil es ausreichend viele Inkompatibilitäten gibt.
Stroustrups (und Ritchies) Bemühungen waren stets der Einsatz für die Beseitigung dieser Inkompatibilitäten. In früheren Standards gab es sicher mehr als jetzt.
> Das ist C.
Ja, aber ich finde diesen Code nicht schön. Das sieht so aus wie "Hähähäh ich programmiere mit Absicht unkompatibel mit C++". Implizite Konvertierungen bringen auch keinen nennenswerten Vorteil, ganz im Gegenteil (weshalb es in C++ dafür ein paar Gelegenheiten weniger gibt). Dabei wäre eine Cast-Ergänzung wie
type *foo = (type*) malloc (n * sizeof *foo);
keine große Geschichte, nur, dass man jetzt ein C++-Programm hat.
Auf http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B stehen noch ein paar andere Sachen. Das Schlüsselwort-Problem ist das gleiche. Man kann es sich doch einfach mal verkneifen, Sachen wie "class" oder "new" als Bezeichner zu benutzen. Gerade C(++)-Programmierer haben doch ein gewisses Maß an Selbstbeherrschung gelernt.
Im allgemeinen sind die C++-Regeln meist etwas strikter. Aber nur, weil C++-Programmierer durch ihre Compiler gezügelt werden müssen, heißt das nicht, dass man mit Absicht inkompatibel programmieren muss.
Ich denke, wenn man wirklich will, kann man jetzt schon C ausreichend kompatibel mit C++ programmieren.Die Linkerschwierigkeiten werden mit extern "C" ja auch bewältigt. Es gehört IMO also nicht mehr viel dazu, C-Programme zu schreiben, die mit C++ erweiterbar sind.
> Compilerverfügbarkeit, Fachkräfteverfügbarkeit
Nun ja, das ist an sich nicht das Problem von C++, das wäre theoretisch ja alles machbar. Deshalb ist es ja nur ein angestrebtes Ideal.
> Im Job sehe ich allerhand Probleme bei der Softwareentlicklung,
Ich bin zwar nicht in der Branche tätig, aber ich kann mir vorstellen, dass C++ nicht die großen Design- u. andere Probleme in der Softwareentwicklung per se löst. Aber ich denke, dass C++ einem viele kleine Probleme und lange Debug-Sitzungen ersparen kann.
> Aber auch C wird weiterentlickelt. Halt nicht in Richtung C++, weil das gibt es ja schon
C99 hat doch z.B. mit der Einführung von "const" einen Schritt richtung C++ gemacht.
Wohin geht denn die Entwicklung von C? Richtung funktional (was C++ ja auch versucht)?
-
earli schrieb:
Bugs gibts immer, aber von C++ gibt es immer noch Features, die niemand versucht hat, zu implementieren.
Welche Features?
Jodocus schrieb:
Wohin geht denn die Entwicklung von C? Richtung funktional (was C++ ja auch versucht)?
-
Jodocus schrieb:
Richtung funktional (was C++ ja auch versucht)?
Das musst du begruenden! C++ versucht das nicht.
-
knivil schrieb:
Jodocus schrieb:
Richtung funktional (was C++ ja auch versucht)?
Das musst du begruenden! C++ versucht das nicht.
Naja, seit der Entdeckung der TMP hat C++ ja einen gewissen funktionalen Aspekt. Mit Neuerungen wie Variadic Templates baut man u.a. auch diesen Bereich (neben vielen anderen) m.E. weiter aus.
-
Schneewittchen schrieb:
Jester schrieb:
- auto (klar, endlich muß ich die iterator-namen nicht mehr schreiben
- thread support
- initialisierung von z.B. vector aus einem Array (das ist wirklich nervig)
- template typedefs
- eingebautes for each
- nullptr
- >> bei templates erlaubtEs ist immer wieder erstaunlich wie einfach man C++-ler begeistern kann. Liegt wohl daran, dass alles mit 20 Jahren Verzögerung aufgenommen wird und nach 20 Jahren als Neuheit angepriesen wird.
Ne, im ernst: Es freut mich, dass ihr C++-ler jetzt in 2011 auch in der Neuzeit angekommen seid.
alle achtung, fein säuberlich aus dem zusammenhang gerissen.
-
Jester schrieb:
Schneewittchen schrieb:
Jester schrieb:
- auto (klar, endlich muß ich die iterator-namen nicht mehr schreiben
- thread support
- initialisierung von z.B. vector aus einem Array (das ist wirklich nervig)
- template typedefs
- eingebautes for each
- nullptr
- >> bei templates erlaubtEs ist immer wieder erstaunlich wie einfach man C++-ler begeistern kann. Liegt wohl daran, dass alles mit 20 Jahren Verzögerung aufgenommen wird und nach 20 Jahren als Neuheit angepriesen wird.
Ne, im ernst: Es freut mich, dass ihr C++-ler jetzt in 2011 auch in der Neuzeit angekommen seid.
alle achtung, fein säuberlich aus dem zusammenhang gerissen.
Nur weil du es bist: Hier der Zusammenhang nochmal:
Jester schrieb:
**Also Features, die mich sofort betreffen (weil ich mich regelmäßig drüber ärgere, dass sie noch nicht da sind) sind für mich:
**
- auto (klar, endlich muß ich die iterator-namen nicht mehr schreiben
- thread support
- initialisierung von z.B. vector aus einem Array (das ist wirklich nervig)
- template typedefs
- eingebautes for each
- nullptr
- >> bei templates erlaubt[...]
-
und wo steht jetzt nochmal, dass ich total begeistert bin und mich die neuheiten total umhaun?
-
asc schrieb:
this->that schrieb:
Abgesehen von paar netten Sachen wie nullptr oder auto Variablen bietet C++11 ja auch wirklich nix weltbewegendes.
Das sieht hier aber wesentlich anders aus.
Am besten gefallen mir die raw-strings mit der delimiter-Sache. Jetzt kann man plötzlich schweinische Wörter an ungewohnter Stelle als Quellcode einbauen!
-
Jester schrieb:
und wo steht jetzt nochmal, dass ich total begeistert bin und mich die neuheiten total umhaun?
Er bezog sich wohl einfach auf deine Aussage "weil ich mich regelmäßig drüber ärgere, dass sie noch nicht da sind".
Und ganz unrecht hat er ja nicht, denn eigentlich sind all die meisten genannten Dinge in anderen Sprachen/Plattformen schon ewig eine Selbstverstaendlichkeit.Aber dieses archaisch, oldschool-hafte ist es eigentlich auch, was ich an C++ so mag.
(auch wenn ich mit .NET vermutlich 3mal so produktiv bin)
-
Ich verstehe nicht, wie man C++11 archaisch nennen kann?!
Nutzt ihr auch wirklich andere Sprachen? Java? Javascript? Python? C#?
... da is der neue C++ Standard ja 1000mal moderner gegen.Einige Leute scheinen geil auf Tipparbeit, Redundanzen und Unsicherheit zu sein,
...absolut unverständlich
-
ajcPanther schrieb:
Nutzt ihr auch wirklich andere Sprachen? Java? Javascript? Python? C#?
... da is der neue C++ Standard ja 1000mal moderner gegen.Ok jetzt hast du mich überzeugt. Jetzt hab ich doch C++ lieber.
ajcPanther schrieb:
Einige Leute scheinen geil auf Tipparbeit, Redundanzen und Unsicherheit zu sein,
...absolut unverständlichAbsolut.