C++Guns – RoboBlog

24.09.2017

C++ Guns - Settings class

Filed under: Allgemein — Tags: — Thomas @ 11:09

Für das nächste große Projekt will ich Einstellungen aus einer Datei lesen und in Performance kritischen Codeabschnitt nutzen. Die Variablen sollen read-only, also const, sein. So wird ein versehentlichen verändern der Einstellungen verhindert und der Compileroptimierer freut sich auch. Auf getter-Funktionen möchte ich wegen unnötigen Code verzichten. Wenige Variablen werden besonders häufig benutzt, daher soll […]

12.09.2017

C++ Guns - Missed optimizations

Filed under: Allgemein — Tags: , — Thomas @ 02:09

Compiler sind nicht perfekt. Gerade das Optimieren von Code ist so komplex, dass es keinen Algorithmus dafür gibt. Ehr werden Heuristiken dafür benutzt. So kommt es schon mal vor, dass bei banal aussehenden Code die Compiler Optimierung versagt hat und es möglich ist, von Hand schnelleren Assembler Code zu schreiben. In [1] wurde viele solcher […]

08.09.2017

C&P Bug of the Day

Filed under: Allgemein — Tags: — Thomas @ 15:09

Keine Ahnung wie das passiert ist. git diff zeigte es dann. Ich wusste garnicht, dass so etwas überhaupt compiliert. FORTRAN ist scheiße 😀 - ContAdvection(1) = NABLA_U(1,2) + NABLA_U(2,3) + ContAdvection(1) = (1,2) + NABLA_U(2,3)

04.09.2017

C++ Guns - Semantik und concepts - Part 3

Filed under: Allgemein — Tags: — Thomas @ 17:09

Kommen wir nun zu den concepts. Wie anfangs erwähnt, las ich das Paper [1]. Ich erlaube mir hier ein paar Ausschnitte davon zu kommentieren, um meine Motivation zu begründen. A concept has semantics; it means something; it is not just a set of unrelated operations and types. Without an idea of what operations mean and […]

C++ Guns - Semantik und concepts - Part 2

Filed under: Allgemein — Tags: , — Thomas @ 14:09

Im letzten Post wollte ich deutlich machen, welche Art von Fehler passieren, wenn zwischen den TypenPoint3D und Vector3D keinen semantischen Unterschied gemacht wird. Also, wenn ein Rechenergebnis von der Bedeutung ein Vektor ist, es aber in einem Punkt Datentyp gespeichert wird. Die erste Lösung war, einen zusätzlichen Datentyp Vector3D zu erstellen, welcher sich genau wie […]

01.09.2017

C++ Guns - C++17 Extension to aggregate initialization

Filed under: Allgemein — Thomas @ 14:09

C++17 bringt ein paar tolle Sachen mit. Mit der Erweiterten Aggregat Initialisierung kann ich nun endlich meinen Lieblings Point3D Datentyp zusammenbauen. Dieser soll mit den Funktionen x(), y() z() Zugriff auf die einzelnen Skalare bieten, aber gleichzeitig ein Array fester Länge sein. Damit der Compiler besser optimieren kann. Der Typ selbst soll ein Array sein, […]

C++ Guns - Semantik und concepts - Part 1

Filed under: Allgemein — Tags: — Thomas @ 10:09

Ich lese gerade das Paper Concepts: The Future of Generic Programming or How to design good concepts and use them well von Bjarne Stroustrup http://www.stroustrup.com/good_concepts.pdf und muss sagen, ich bin restlos begeistert! Die Idee dahinter wird sehr toll beschrieben. Das ist mir am wichtigsten, so dass es möglich ist, die Idee auch bei anderen Programmiersprachen […]

22.08.2017

C++ für Anfänger&Profis - Container mit Ganzzahl

Filed under: Allgemein — Tags: — Thomas @ 15:08

Im zweiten Beispiel beschäftigen wir uns damit, wie es möglich ist, beliebig viele Zahlen gleichzeitig zu speichern. Dazu wird ein Container benötigt. C++ bietet hierfür unter anderem die Klasse vector an. Im folgenden Beispiel wird ein vector vom Typ int, der Länge 5 angelegt und ihn mit den Zahlen 1 bis 5 befüllt. Zu beachten […]

21.08.2017

C++ für Anfänger&Profis - Hello World! - Details

Filed under: Allgemein — Tags: — Thomas @ 15:08

Wie anfangs erwähnt gibt es für jedes Beispiel eine extra Seite mit Details. Über Performance kann ich bei einem Hello World! Programm wenig sagen, aber dennoch gibt es ein paar Sachen zu erwähnen. Schauen wir uns den Code noch einmal an: Die #include Anweisungen sind gang und gäbe. Aber bald nicht mehr nötig. Module ersetzen […]

20.08.2017

C++ für Anfänger&Profis - Hello World!

Filed under: Allgemein — Tags: — Thomas @ 07:08

Das traditionell erstes Programm in einer neuen Programmiersprache gibt den Satz "Hello World!" am Bildschirm aus. Daran wollen wir uns halten. Ohne Umschweife hier der Code. Eintippen, compilieren, starten und freuen. Da es das erste Beispiel ist, werde ich hier jede Zeile Code und jedes kryptische Zeichen erklären. In den ersten beiden Zeilen stehen #include […]

Older Posts »

Powered by WordPress