Home

Künstliche Intelligenz mit C und C++

Ein Erfahrungsbericht

Ein Bericht über die Praxis der KI bei der Entwicklung von C- und C++-Anwendungen

Nach 1,5 Jahren intensiven Tests habe ich einen ersten, umfaßenden Erfahrungsbericht über die Anwendung von Künstlicher Intelligenz (KI) bei der Entwicklung von Programmen in C und C++ verfaßt.

Das Motto lautet: Was kann Künstliche Intelligenz, wenn es um die Programmierung von C oder C++ geht?

Hauptprobleme der KI bei C/C++-Entwicklungen

Das größte Problem der KI ist nicht nur die hohen Kosten vor allem durch die Tokenstruktur (ein Wort = 4 Token) sondern die Tatsache, das KI ein kein deterministisches System darstellt.

Das Beispiel: 1 + 1 = 2

In der Mathematik ist 1 + 1 = 2 eindeutig, bewiesen und unveränderlich. Ein einfacher C-Algorithmus wie folgt:

int math(int a, int b) {
    return a + b;
}

führt bei a = 1 und b = 1 immer zu dem Ergebnis 2. Die von-Neumann-Architektur berechnet es korrekt und präzise.

Was passiert bei einer KI-Aufforderung?

Wenn ich einer KI sage: Schreibe einen Algorithmus, der zwei Werte addiert und das Ergebnis mit 1 + 1 testet, sind die möglichen Antworten fast unendlich.

1. Welche Sprache wählt das System?

Wie die berühmte Schachtelpraline eine Filmfigur aus den 90er Jahren ist das Ergebnis nicht eindeutig, sondern vielfältig und unvorhersehbar.

2. Wie wird der Algorithmus dargestellt?

Die Repräsentation ist sehr variabel, wenn nicht explizit festgelegt:

Beispiel: Erstelle eine Additionsfunktion. Verwende bitte C oder C++. Das System antwortet meist mit einem main.cpp und einer C++-Kompilierung (aufgrund der Endung).

Compilereinstellungen und KI-Verhalten

Wenn man verlangt: Bitte nur C, kein C++, entsteht oft ein wilder Mix:

Dies führt zu einem overhead, den man bei einfachen Berechnungen absolut nicht braucht.

Probleme bei GUI-Entwicklung mit KI (Windows)

Bei Windows-GUI-Programmierung mit KI treten häufig folgende Probleme auf:

1. Dialogboxen und Dialogresourcen

Falsch: Control
Richtig: EDITTEXT, STATIC, PUSHBUTTON (oder DEFPUSHBUTTON)

Zusätzlich entstehen Focus-Probleme und fehlende #defines in resource.h.

2. Fehler in der Syntax

3. C# und .NET-Entwicklung

Bei C# (ohne XAML) treten häufig Probleme auf:

C/C++ hat durchaus eine gewiße Robustheit das ist ein großer Vorteil gegenüber C# oder Delphi.

Probleme bei der Verarbeitung von Zeichenketten

In C/C++ gibt es eine Vielzahl von Möglichkeiten zur Verarbeitung von Strings:

Der KI-Text führt zu einem wilden Mix von Zeichenkette-Operationen, besonders bei textorientierten Dialogen.

Wenn man verlangt: Verwende nicht std::string, häufen sich die Probleme beim Bearbeiten von Zeichenketten.

Problem: Die Windows-API und ihre Gefahren

Microsoft hat mit strsafe.h (seit etwa 10 Jahren) sicherere Funktionen für gefährdete APIs wie strcpy, strcmp etc. geschaffen.

Lösung: Verwende in C++ kein UNICODE bis ein wstring verfügbar ist.

Fehler in der Fehlermeldung

Initialisierung der Fensterklaße

Bei der Initialisierung eines Fensters gibt es häufig Fehler:

Ein Quellcode, der so beginnt, ist chaotisch vorprogrammiert und erfordert umfaßendes überarbeiten.

Der Vorteil für den Programmierer

Obwohl die KI-Produkte oft fehlerhaft sind, bietet die Entwicklung in C/C++ einen klaren Lernwert:

Dies ist ein echter Vorteil selbst wenn die KI nicht perfekt ist.

Zukunft: DirectX, OpenGL und mehr

In kommenden Folgen werde ich über die Herausforderungen von DirectX, OpenGL und anderen anspruchsvollen APIs berichten.

Ende des Berichts: Ich habe KI gerade dazu gebracht, diesen Text lokal zu formatieren als HTML. Wenn die KI es nicht kann, dann verwende ich meinen eigenen HTML-Umformungscode. Mit C# und KI haben wir gemeinsam unter vielen Wehen ein solches Dokument geschaffen.

Wenn ich, als erster (der sog. Esel), nicht gewesen wäre dann wäre es nie gelungen.

P.S.: Rust ist trotzdem keine Option.