Ich benutze hauptsächlich C ++, um wissenschaftliches Rechnen zu machen, und in letzter Zeit beschränke ich mich auf eine sehr C-ähnliche Teilmenge von C ++ - Funktionen; nämlich keine Klassen / Vererbung außer Komplex und STL, Vorlagen, die nur zum Suchen / Ersetzen von Substitutionen verwendet werden, und ein paar andere Dinge, die ich nicht in Worte fassen kann. Ich frage mich, ob es offizielle oder gut dokumentierte Teilmengen der C ++ - Sprache gibt, die ich als Referenz (und auch als Begründung) betrachten könnte, wenn ich auswähle und auswähle, welche Features verwendet werden sollen.
Es gibt Embedded C ++ . Es klingt meistens ähnlich wie Sie suchen.
Vor kurzem hörte ich diesen SE-Radio-Podcast - Episode 152: MISRA mit Johan Bezem , die MISRA, Standardrichtlinien für C und C ++, einführt, um eine bessere Qualität zu gewährleisten, versuchen Sie es zu betrachten.
Google veröffentlicht seinen internen C ++ - Stilleitfaden, der häufig als eine solche Untergruppe bezeichnet wird: Ссылка . Ben Maurer, dessen Firma reCAPTCHA von Google übernommen wurde, beschreibt es wie folgt: in diesem Beitrag auf Quora :
Sie können grundsätzlich an Google denken C ++ - Untermenge als C plus ein bisschen Zucker:
Die Fähigkeit, Methoden zu Strukturen hinzuzufügen
Einfache einfache Vererbung.
Sammlungs- und String-Klassen
Scope-basierte Ressourcenverwaltung.
Sie veröffentlichen auch ein Flusen-Tool, cpplint.py.
Die GCC-Entwickler sind dabei, einige C ++ - Funktionen zuzulassen. Mir sind noch keine offiziellen Richtlinien bekannt, aber ich bin mir ziemlich sicher, dass sie einige definieren werden. Sehen Sie sich den ersten Bericht in der Mailingliste an.
Nun, die neuesten Entwicklungen (TR1, C ++ 0x) in C ++ haben es sehr allgemein gehalten, so dass Sie Imperativ, OOP oder sogar (begrenzte) funktionale Programmierung in C ++ durchführen können. Bibliotheken wie Boost ermöglichen es Ihnen auch, sehr deklarative Template-basierte Meta-Programmierung zu machen.
Ich denke Boost ist das Erste, was man in C ++ ausprobieren kann. Es ist eine umfassende Bibliothek, die auch mehrere Module enthält, die es Ihnen ermöglichen, im funktionalen Stil zu programmieren (Boost.Funktional) oder die deklarative Meta-Programmierung zur Kompilierung (Boost MPL) zu machen.
OpenCL verwendet C zum Schreiben von Kerneln, aber sie haben kürzlich C ++ - Bindungen und vielleicht Java hinzugefügt (oder werden es bald hinzufügen). OpenCL lässt eine Reihe von leistungsraubenden Funktionen von C aus. Ausgeschlossen sind Dinge wie Funktionszeiger und Rekursion. Intelligente Zeiger und Polymorphie erzeugen auch einen Overhead.
Einschränkungen für C: SIMD-Programmiersprachen
Etwas außerhalb des Themas: Hier ist eine gute Diskussion, OpenCL mit CUDA mit C zu vergleichen. OpenCL oder CUDA Welchen Weg gehen?
Tags und Links c++ programming-languages