Neue Version der Programmiersprache C++ angenommen

Hinweise auf besondere Websites, Vorstellung eigener Websites, Internet-Smalltalk
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von Xin » Mo Okt 31, 2011 6:48 pm

Ich bin mir sicher, dass nullptr schon in allen aktuellen Compilern verfügbar ist. :-D
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von MoonGuy » Mo Okt 31, 2011 6:52 pm

Xin hat geschrieben:Ich bin mir sicher, dass nullptr schon in allen aktuellen Compilern verfügbar ist. :-D
Das war nur ein Beispiel von den Dingen, mit denen ich mich anfreunden könnte in Zukunft zu arbeiten. Das einzige von den "großen" Veränderungen, was mir nicht gefällt, ist das neue "auto". Macht den Code doch nur unleserlicher und wieder unstabiler, imo.

Ja, laut dem VC++ Dev-Blog ist alles drin, bzw. teilweise drin, außer "Rvalue references for *this" und "Forward declared enums". Muss mal später einige Testprogrämmchen laufen lassen.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von Kerli » Mo Okt 31, 2011 11:52 pm

MoonGuy hat geschrieben:Das einzige von den "großen" Veränderungen, was mir nicht gefällt, ist das neue "auto". Macht den Code doch nur unleserlicher und wieder unstabiler, imo.
Warum? Der Typ wird direkt beim kompilieren bestimmt und kann auch nicht geändert werden. Für Lambdafunktionen gibt es übrigens gar keinen definierten Typ und für verschachtelte Typen wie zb. Iteratoren ist es schon eine ziemliche Vereinfachtung und Verbesserung der Lesbarkeit.

Was ich so auf verschiedenen Seiten und vor allem Bugreports gelesen habe wird es wohl noch mehr als eine Version daueren bis Visual Studio alle C++11 Features unterstützen wird. So fehlen jetzt zb. Variadic Templates und Range Based For noch völlig. Der gcc ist da schon viel weiter...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

MoonGuy
Beiträge: 231
Registriert: Fr Okt 08, 2010 2:49 pm

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von MoonGuy » Di Nov 01, 2011 6:10 pm

Kerli hat geschrieben:
MoonGuy hat geschrieben:Das einzige von den "großen" Veränderungen, was mir nicht gefällt, ist das neue "auto". Macht den Code doch nur unleserlicher und wieder unstabiler, imo.
Warum? Der Typ wird direkt beim kompilieren bestimmt und kann auch nicht geändert werden. Für Lambdafunktionen gibt es übrigens gar keinen definierten Typ und für verschachtelte Typen wie zb. Iteratoren ist es schon eine ziemliche Vereinfachtung und Verbesserung der Lesbarkeit.

Was ich so auf verschiedenen Seiten und vor allem Bugreports gelesen habe wird es wohl noch mehr als eine Version daueren bis Visual Studio alle C++11 Features unterstützen wird. So fehlen jetzt zb. Variadic Templates und Range Based For noch völlig. Der gcc ist da schon viel weiter...
Ja. Merke ich auch. Naja, wenn ich direkt beim initialisieren auto angebe und dann den Wert, dann weiß ich doch selber, was der Datentyp werden soll. Wogegen es, meiner Meinung, hilft, ist, dass Programmierer für bestimmte Umgebungen eventuell andere Datentypen brauchen wegen typedef o.ä. und das man das mit auto umgehen kann. Als Programmierer, der dann auf den Code jemand anderes schaut, ist es im ersten Moment weniger Information als vorher. Wenn man damit weiterarbeiten will, muss man sich alles angucken. Wenn man nur drüber schaut, ist es wohl angenehmer.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von fat-lobyte » Di Nov 01, 2011 7:46 pm

MoonGuy hat geschrieben:Naja, wenn ich direkt beim initialisieren auto angebe und dann den Wert, dann weiß ich doch selber, was der Datentyp werden soll. Wogegen es, meiner Meinung, hilft, ist, dass Programmierer für bestimmte Umgebungen eventuell andere Datentypen brauchen wegen typedef o.ä. und das man das mit auto umgehen kann. Als Programmierer, der dann auf den Code jemand anderes schaut, ist es im ersten Moment weniger Information als vorher. Wenn man damit weiterarbeiten will, muss man sich alles angucken. Wenn man nur drüber schaut, ist es wohl angenehmer.
Theoretisch hast du recht. Praktisch allerdings wirds so ungefähr ab

Code: Alles auswählen

std::vector<std::pair<std::string, std::string>, MyAllocator>::const_iterator it = sack.begin();
schon anstrengend. Da verwirrt das nur anstatt klarheit zu schaffen, denn wenn man weiß dass das ding ein "vector<irgendwas>" ist, dann weiß man auch was das sack.begin() zurückgibt. Deswegen ist hier finde ich

Code: Alles auswählen

auto it = sack.begin();
Nicht nur "bequemer", sondern schlicht und einfach besser. Wieso muss ich 5 mal kompilieren bis ich endlich den richtigen Typ zusammengekriegt habe?
Außerdem kann es manchmal ziemlich schwierig werden, den typ anzugeben. Versuch mal einen Parser in Boost.Spirit [1] in einer Variable zu speichern. Viel Spaß.
Außerdem wirds dann kompliziert, wenn du ein Template hast, dessen Rückgabewert von den Template-Parametern abhängt. Sonst müsstest du dich mit irgendwelchen seltsamen Traits-konstrukten herumärgern, mit auto gibts eine (naja, nicht gerade hübsche) Möglichkeit das zu vereinfachen.
Schlicht und einfach unmöglich wird es wie gesagt bei Lambdas. Die kann man ohne "auto" schlicht und einfach nicht abspeichern.

Ich finde Code muss schön sein, und zwar auch optisch. Wenn du nämlich drübersiehst und du bist in einem Wald von Anweisungen und Typen gefangen, die dich eigentlich nicht interessieren, dann lenkt das ab und ist kontraproduktiv. Wenn du "drüberschaust" und du siehst was passiert, dann ist das was gutes finde ich.

[1] http://boost-spirit.com/home/
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von Kerli » Mi Nov 02, 2011 2:52 pm

Heute habe ich dieses von Scott Meyers gefunden. Ich hab noch nicht reingeschaut (es gibt eine Leseprobe), aber der Beschreibung nach hört es sich nicht schlecht an.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Neue Version der Programmiersprache C++ angenommen

Beitrag von Xin » Mi Nov 02, 2011 3:00 pm

Kerli hat geschrieben:Heute habe ich dieses von Scott Meyers gefunden. Ich hab noch nicht reingeschaut (es gibt eine Leseprobe), aber der Beschreibung nach hört es sich nicht schlecht an.
Wie stehen die Chancen, dass wir C11 ins Wiki bekommen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten