Frage

Im Juli 2009 C ++ 0x-Treffen in Frankfurt , wurde beschlossen, entfernen Konzepte von C ++ 0x. Persönlich bin ich enttäuscht, aber ich habe lieber ein umsetzbaren C ++ 0x als keine C ++ 0x. Sie sagten, sie zu einem späteren Zeitpunkt hinzugefügt werden.

Was sind Ihre Meinungen zu dieser Entscheidung / Thema? Wie wird es für Sie?

War es hilfreich?

Lösung

Persönlich bin ich nicht allzu unglücklich aus der Entfernung wie der Zweck der Konzepte in erster Linie waren zur Verbesserung der Zeitfehlermeldungen, wie Jeremy Siek, einer der Co-Autoren der Konzepte Vorschlag kompilieren, schreibt ( http://lambda-the-ultimate.org/node/3518#comment-50071 ) :

  

Während der Vorschlag Konzepte nicht   perfekt (kann eine beliebige Erweiterung auf C ++   wirklich immer perfekt sein?), wäre es   haben eine sehr brauchbar zur Verfügung gestellt und   hilfreich Erweiterung der Sprache, eine   Erweiterung, würde drastisch   die berüchtigten Fehlermeldungen reduzieren   dass die derzeitigen Nutzer der Vorlage   Bibliotheken sind geplagt mit.

Natürlich Konzepte hatten mehr Zweck als nur die Compiler ermöglichen kürzere Fehlermeldungen zu geben, aber momentan denke ich, dass wir alle, ohne sie leben können.

EDIT: Herb Sutter schreibt auch auf seine Blog rel="nofollow:

  

Frage: Ist das nicht C ++ 0x ist ein großes   setzen?

     

A: Nein Konzepte wären toll, aber   für die meisten Anwender das Vorhandensein oder   Fehlen von Konzepten machen keine   Unterschied zu ihren Erfahrungen mit   C ++ 0x außer für die Qualität des Fehlers   Nachrichten.

     

F: Sind nicht Konzepte über das Hinzufügen von großen   neue Ausdruckskraft der Sprache,   und so ermöglichen wichtige neue Arten von   Programme oder Programmierstile?

     

A: Nicht wirklich. Konzepte sind fast   ganz über bessere Fehler bekommen   Nachrichten.

Andere Tipps

Ich freute mich auf sie. Vor allem für eine bessere Fehlermeldungen, wenn die Kompilierung fehlgeschlagen. Nichts wie das Lesen durch 1000 Zeichenkette Ihrer stummen Fehler herauszufinden.

Ich bin traurig, zu sehen, wie sie aus der Liste löschen.

Ich persönlich mag die Typen Ich benutze eine bekannte Schnittstelle zu gehorchen, werden sie Primitive, Strukturen oder Klassen. Auf diese Weise weiß ich, wie ich die Art verwenden kann, und was ich zu implementieren, um die Art zu schaffen.

Das ist alles andere als einfach mit Standard der objektorientierten Programmierung zu erreichen. Doch meiner Meinung nach, während technisch generische Programmierung ist stark typisierte es das Interface-Konzept löst die Typisierung OO zur Verfügung stellt. In der Tat generischer Programmierung, ist eine Art, wie dynamische Typisierung aber bei der Kompilierung Typ von einer Schnittstelle Perspektive aufgelöst.

Zum Beispiel gebe ich einen Iterator in einen Algorithmus es einige Betreiber zu bieten hat, aber es gibt keine Schnittstelle angeben, was die Betreiber tun sollten, oder was ihre Verträge sind (nur Dokumentation). Wenn Sie operator++() haben und operator*() wird es kompilieren, aber es ist nicht die gleiche Art Garantien geben, die Schnittstellen, die Sie in OO geben.

Für mich Konzepte Typen generische Programmierung bringen und die die Sicherheit Schnittstellen bringen OO, desto besser ist die Kompilierung ist nur ein Bonus.

Ich weiß, dass wir alle c ++ Programmierer sind, und wir sind sehr intelligent und wir lesen Sie die Dokumentation und verstehen Betreiber Überlastung und die Feinheiten der generische Programmierung. Aber wenn die Sprache garantiert, vorausgesetzt, dass ich auf und der Compiler verlassen kann testen, kann ich mehr Gehirn Macht verbringen, um die Probleme zu lösen, ich bezahlt werde zu lösen.

habe ich nicht in Konzepte bekommen viel noch beteiligt. Doch was ich auffiel, war, dass sie in der Regel recht ausführlich waren. Ich glaube, ich würde sie in STL-Bibliothek nicht will. Ich weiß, dass die Bibliothek schon, ich kann einfach keine Kompilierung-Fehler analysiert. Keine Notwendigkeit für Konzepte. Allerdings wären Konzepte schön meine eigenen Klassen zu beschreiben, so dass die Mitarbeiter sie schneller lernen würden und Missbrauch zu vermeiden. Jedes Konzept ist so weit verstehe ich eine Einschränkung, die die Verwendung eines Typs begrenzt. Das wäre schön, wenn sie frisch Schnittstellen zu schaffen, dass jemand anderes zu lernen hat.

Ich mag Konzepte sehr viel! Die Möglichkeit, macht sehr unterschiedliche Arten das gleiche durch eine externe Definition verhalten (das Concept Mapping) ist ein sehr leistungsfähiges und nützliches Feature (Vor allem, da es auf der Kompilierung auftritt und so nicht beeinflusst nicht die Laufzeitleistung).

Ich denke, es ist noch leistungsfähiger und besser als alle nützlichen Funktionen direkt in die Art der Implementierung und Zugriff auf diese über Schnittstellen wie in .NET getan. Dies schließt nicht die Dehnbarkeit erlauben später (Okay, .NET kennt Methoden Erweiterung seit 3.0 (oder 3.5, nicht sicher), aber es ist nicht das gleiche).

Die Verbesserung der Fehlermeldungen wird eine andere (und das Original) große Verbesserung, die Konzepte bringen.

Aber einer meiner ersten Gedanken, als über Konzepte zu lesen war. Diese laaaanger Zeit bis GCC nehmen und MSVC wird es unterstützen

Also ich denke, es Sinn macht es aus dem kommenden Standard zu entfernen. Aber was würde ich mag, ist eine feste Vereinbarung von Funktionen für die Zeit nach C ++ 0x Standards, die Konzepte enthalten. Dies würde der Compiler-Anbieter ermöglichen, besser für die Standard-C ++ 2x vorzubereiten.

So hoffe ich wirklich, dass wir Konzepte in der nicht allzu fernen Zukunft sehen werden.

Ich denke, sie die richtige Entscheidung getroffen. Ich würde gerne eine qualitativ hochwertige Umsetzung von Konzepten in die Sprache hinzugefügt, um zu sehen, aber die Spezifikation wurde in die falsche Richtung, zu viel Belastung für den Benutzer setzen Konzept angeben Karten explizit. Stroustrup Papier hat einige Korrekturen dazu vorschlagen, aber das wäre eine ziemlich radikale Veränderung sein, so spät in dem Prozess, glaube ich. Und ohne Compiler es zu testen auf.

Insgesamt Konzepte, wie sie gegen Ende angegeben wurden, wären ein großer Schritt nach hinten gewesen, generischer Programmierung zu behindern und möglicherweise zersplittern die C ++ Gemeinschaft, mit einer großen Gruppe von Programmierern Kleben mit C ++ 03.

Konzepte, als „fix“ von Stroustrup vorgeschlagen würde, soweit ich sehen kann, war in Ordnung, aber es wäre riskant, diese Änderungen so schnell zu übernehmen. (Und ich bin nicht davon überzeugt, dass es nicht zu weiteren Verzögerungen verursacht hat.)

Ehrlich gesagt, ich bin froh zu sehen, dass sie spielten es sicher und entfernt sie für jetzt. Wir haben bis jetzt ohne Konzepte überlebt, und ich kann ohne sie für weitere 5 Jahre leben.

Es ist sehr traurig. Konzepte C bringt ++ würde seine Art System bringt fast auf das gleiche Niveau der Macht als Haskell typeclasses, und es wäre gewesen ist super - eine Sprache für Geschwindigkeit optimiert, so dass Sie tun, was Sie wollen, und doch streng typsicher, wenn Sie escape Entlüftungen verwenden (während noch verbleibenden schnell!). Es wurde auch die seit langem bestehende Problem der STL und Boost (und Template-Bibliotheken im Allgemeinen) ist schwer zu bedienen wegen lax „Kompilierung-Ente eingeben“ Natur von C ++ 03 Vorlagen und die sich daraus ergebenden Probleme mit Compiler beheben soll Fehlerberichterstattung.

Ich dachte auch, dass dies ein schlechter Ruf war und dass C++0x wird schlimmer für die Entfernung, aber

Ich bin traurig.

I Kasse der ConceptGCC und es ist toll! Ich schreibe schon einige einfache Bibliothek diese verwendet, und ich sehe einige Nachteile wie mehr Code zu schreiben oder ein paar Probleme Geist der Kraft der Abstraktion der Konzepte zu denken. Die std Konzepte Bibliothek macht wirklich Probleme, so wie zum einen in Standard einschließlich nur Missverständnis. Ich denke, der kommende Standard nur Grammatik Konzept standardisieren soll, und einige Hinweise geben, wie es zu benutzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top