22.05.2025 AI-Vergleich

ChatGPT

Durchführung

ChatGPT mit dem Modell GPT-4o wurde in insgesamt sechs verschiedenen Chats jeweils dazu aufgefordert, ein Morse-Converter Programm zu implementieren.

Dafür wurde folgende Prompt verwendet:

Bitte schreibe ein vollständiges Programm in <Programmiersprache>, das folgende Anforderungen erfüllt:

📌 Funktion
Das Programm soll über die Kommandozeile zwei Argumente entgegennehmen:

Pfad zu einer Eingabedatei (Textdatei),

Pfad zu einer Ausgabedatei (Ziel für den Morsecode),

Es soll den gesamten Inhalt der Eingabedatei einlesen, den Text zeichenweise in Morsecode umwandeln und das Ergebnis in die Ausgabedatei schreiben.

Der Morsecode soll Buchstaben (A–Z), Ziffern (0–9), Leerzeichen und Satzzeichen und Sonderzeichen der deutschen Sprache unterstützen


📌 Format des Morsecodes
Einzelne Morsezeichen sollen durch ein Leerzeichen getrennt sein.
Beispiel: "HELLO" → ".... . .-.. .-.. ---"

Wörter sollen durch Schrägstrich (/) getrennt sein.
Beispiel: "HELLO WORLD" → ".... . .-.. .-.. --- / .-- --- .-. .-.. -.."

📌 Weitere Anforderungen
Baue grundlegende Fehlerbehandlung ein:

Zu wenige oder ungültige Kommandozeilenargumente,

Eingabedatei nicht vorhanden oder nicht lesbar,

Probleme beim Schreiben der Ausgabedatei,

Der Code soll übersichtlich und wartbar sein:

Verwende sinnvolle Funktionen oder Methoden,

Kommentiere den Code ausreichend, besonders bei der Morsecode-Zuordnung,

Struktur und Stil sollen den Konventionen der gewählten Sprache entsprechen,

Der Morsecode darf in Großbuchstaben erfolgen – also "a" wird wie "A" behandelt.,

Gib keine zusätzliche Ausgabe auf der Konsole aus, außer bei Fehlern.

Getestet wurden C, C#, C++, Rust, Java, JavaScript, Kotlin und Python. Als eingabe bekamen alle Programme folgenden Text:

Hallo Welt! Dies ist ein Test für das Morsecode-Programm.
Es enthält Buchstaben (A–Z), Zahlen (0–9), Satzzeichen wie .,!? und deutsche Sonderzeichen: Ä, Ö, Ü sowie ß.
1234567890

Die dabei entstandene Übersetzung wurde mit folgendem Translator wieder in Text umgewandelt: https://morsetranslator.org/de

Um nun eine Bewertung möglichst fair durchzuführen, gibt es folgendes Bewertungsschema:

  • 1 Punkt: Das Programm kompiliert

  • 1 Punkt: Das Programm kompiliert ohne Warnungen

  • 3 Punkte: Der Text wird richtig übersetzt

  • 2 Punkte: Die Codequalität ist gut

  • 1 Punkt: Der Code ist möglichst knapp

  • 1 Punkt: Der Code beinhaltet Kommentare

  • 1 Punkt: Der Code hat eine entsprechende Fehlerbehandlung

C

Programmstart

gcc -o morse morse.c
./morse eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 1/2 Punkten: das Programm kompiliert zwar, es werden jedoch Warnungen angezeigt

morse.c:26:21: warning: multi-character character constant [-Wmultichar]
   26 |     {'=', "-...-"},{'Ä', ".-.-"},   {'Ö', "---."}, {'Ü', "..--"},
      |                     ^~~
morse.c:26:21: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50052’ to ‘-124’ [-Woverflow]
morse.c:26:38: warning: multi-character character constant [-Wmultichar]
   26 |     {'=', "-...-"},{'Ä', ".-.-"},   {'Ö', "---."}, {'Ü', "..--"},
      |                                      ^~~
morse.c:26:38: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50070’ to ‘-106’ [-Woverflow]
morse.c:26:53: warning: multi-character character constant [-Wmultichar]
   26 |     {'=', "-...-"},{'Ä', ".-.-"},   {'Ö', "---."}, {'Ü', "..--"},
      |                                                     ^~~
morse.c:26:53: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50076’ to ‘-100’ [-Woverflow]
morse.c:27:6: warning: multi-character character constant [-Wmultichar]
   27 |     {'ß', "...--.."}
      |      ^~~
morse.c:27:6: warning: overflow in conversion from ‘int’ to ‘char’ changes value from ‘50079’ to ‘-97’ [-Woverflow]

Qualität der Übersetzung

Wertung: 1/3 Punkten: Die Umlaute im ersten Satz wurden nicht korrekt übersetzt, da diese klein geschrieben waren. Der Bindestrich zwischen A-Z fehlt, sowie das „ß“ und das „Ö“

HALLO WELT! DIES IST EIN TEST FR DAS MORSECODE-PROGRAMM. ES ENTHLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE #. 1234567890 

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

C++

Programmstart

g++ -o morse morse.cpp
./morse eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 1/2 Punkten: das Programm kompiliert zwar, es werden jedoch Warnungen angezeigt

user@debian:~/DVA_Praktikum/56/4_Abgabe_22_05/chatgpt/c++$ g++ -o morse morse.cpp
morse.cpp:44:11: warning: multi-character character constant [-Wmultichar]
   44 |     morse['Ä'] = ".-.-";       morse['Ö'] = "---.";
      |           ^~~
morse.cpp:44:38: warning: multi-character character constant [-Wmultichar]
   44 |     morse['Ä'] = ".-.-";       morse['Ö'] = "---.";
      |                                      ^~~
morse.cpp:45:11: warning: multi-character character constant [-Wmultichar]
   45 |     morse['Ü'] = "..--";       morse['ß'] = "...--..";
      |           ^~~
morse.cpp:45:38: warning: multi-character character constant [-Wmultichar]
   45 |     morse['Ü'] = "..--";       morse['ß'] = "...--..";
      |                                      ^~~
morse.cpp: In function ‘std::unordered_map<char, std::__cxx11::basic_string<char> > createMorseCodeMap()’:
morse.cpp:44:11: warning: overflow in conversion from ‘int’ to ‘std::unordered_map<char, std::__cxx11::basic_string<char> >::key_type’ {aka ‘char’} changes value from ‘50052’ to ‘-124’ [-Woverflow]
   44 |     morse['Ä'] = ".-.-";       morse['Ö'] = "---.";
      |           ^~~
morse.cpp:44:38: warning: overflow in conversion from ‘int’ to ‘std::unordered_map<char, std::__cxx11::basic_string<char> >::key_type’ {aka ‘char’} changes value from ‘50070’ to ‘-106’ [-Woverflow]
   44 |     morse['Ä'] = ".-.-";       morse['Ö'] = "---.";
      |                                      ^~~
morse.cpp:45:11: warning: overflow in conversion from ‘int’ to ‘std::unordered_map<char, std::__cxx11::basic_string<char> >::key_type’ {aka ‘char’} changes value from ‘50076’ to ‘-100’ [-Woverflow]
   45 |     morse['Ü'] = "..--";       morse['ß'] = "...--..";
      |           ^~~
morse.cpp:45:38: warning: overflow in conversion from ‘int’ to ‘std::unordered_map<char, std::__cxx11::basic_string<char> >::key_type’ {aka ‘char’} changes value from ‘50079’ to ‘-97’ [-Woverflow]
   45 |     morse['Ü'] = "..--";       morse['ß'] = "...--..";

Qualität der Übersetzung

Wertung: 1/3 Punkten: Die Umlaute im ersten Satz wurden nicht korrekt übersetzt, da diese klein geschrieben waren. Der Bindestrich zwischen A-Z fehlt, sowie das „ß“ und das „Ö“

HALLO WELT! DIES IST EIN TEST FR DAS MORSECODE-PROGRAMM.ES ENTHLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE #.1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

C#

Programmstart

dotnet run eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 2/2 Punkten keine

Qualität der Übersetzung

Wertung: 2/3 Punkten: Der Bindestrich zwischen A-Z fehlt, sowie das „ß“ und das „Ö“

HALLO WELT! DIES IST EIN TEST FÜR DAS MORSECODE-PROGRAMM. ES ENTHÄLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN Ä, Ó, Ü SOWIE #. 1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

Rust

Programmstart

cargo run eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 1/2 Punkten: das Programm kompiliert zwar, es werden jedoch Warnungen angezeigt

warning: unused import: `self`
 --> src/main.rs:4:15
  |
4 | use std::io::{self, Write};
  |               ^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: `morse` (bin "morse") generated 1 warning (run `cargo fix --bin "morse"` to apply 1 suggestion)

Qualität der Übersetzung

Wertung: 1/3 Punkten: Die Umlaute im ersten Satz wurden nicht korrekt übersetzt, da diese klein geschrieben waren. Der Bindestrich zwischen A-Z fehlt, sowie das „ß“ und das „Ö“

HALLO WELT! DIES IST EIN TEST FR DAS MORSECODE-PROGRAMM. ES ENTHLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE #. 1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

Python

Programmstart

python3 morse.py eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 2/2 Punkten

keine

Qualität der Übersetzung

Wertung: 2,5/3 Punkten: Der Bindestrich zwischen A-Z fehlt, sowie das „Ö“

HALLO WELT! DIES IST EIN TEST FÜR DAS MORSECODE-PROGRAMM.ES ENTHÄLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE SS.1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

Java

Programmstart

javac MorseCodeConverter.java
java MorseCodeConverter eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 2/2 Punkten keine

Qualität der Übersetzung

Wertung: 2/3 Punkten: Der Bindestrich zwischen A-Z fehlt, sowie das „ß“ und das „Ö“

HALLO WELT! DIES IST EIN TEST FÜR DAS MORSECODE-PROGRAMM. ES ENTHÄLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE #. 1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

JavaScript

Programmstart

chmod +x morse.js
node morse.js eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 2/2 Punkten

keine

Qualität der Übersetzung

Wertung: 2,5/3 Punkten: Der Bindestrich zwischen A-Z fehlt sowie das „Ö“

HALLO WELT! DIES IST EIN TEST FÜR DAS MORSECODE-PROGRAMM.ES ENTHÄLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE SS.1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

Kotlin

Programmstart

kotlinc morse.kt -include-runtime -d MorseKonverter.jar
java -jar MorseKonverter.jar eingabe.txt ausgabe.txt

Fehler und Warnungen beim Start bzw. Kompilieren

Wertung: 2/2 Punkten

keine

Qualität der Übersetzung

Wertung: 2,5/3 Punkten: Der Bindestrich zwischen A-Z fehlt, sowie das „Ö“

HALLO WELT! DIES IST EIN TEST FÜR DAS MORSECODE-PROGRAMM.ES ENTHÄLT BUCHSTABEN (AZ), ZAHLEN (09), SATZZEICHEN WIE .,!? UND DEUTSCHE SONDERZEICHEN: Ä, Ó, Ü SOWIE SS.1234567890

Codequalität

Allgemein 2/2 Punkten: Knappheit 1/1 Punkt: Kommentare 1/1 Punkt: Fehlerbehandlung 1/1 Punkt:

Gemini

Hierfür wurde die 2.0 Flash Version von Gemini verwendet:

Java

Bei dem erstellten Java Code gab es bereits beim Kompilieren fehler: javac .\TextToMorse.java .\TextToMorse.java:42: error: unclosed character literal morseCodeMap.put(‘├ä‘, „.-.-„); ^
.\TextToMorse.java:43: error: unclosed character literal
morseCodeMap.put(‘├û‘, „—.“); ^

.\TextToMorse.java:44: error: unclosed character literal
morseCodeMap.put(‘├£‘, „..–„); ^

.\TextToMorse.java:45: error: unclosed character literal
morseCodeMap.put(‚ß║ב, „…–..“); // oder SS

Dies liegt daran, dass Ä, Ü, Ö und ß aus mehr als einem char bestehen. Somit müssen diese mit „ „ (doppelten Anführungszeichen) für Strings dargestellt werden. Auch die in Zeile 12 erstellte HashMap muss dann von <Character, String> in <String, String> geändert werden.

Der Rest des Codes lies sich ohne Probleme compilieren.

Die output.txt sah nach dem Ausführen so aus: / / / / / / / / / / / / / / / / / / / / / / / / / / / / …./ / / / / / / / / / Somit wurden nur die Leerzeichen erkannt und geschrieben. Die anderen Buchstaben und Zeichen wurden nicht in Morse Code umgewandelt. Dies lag an meiner Änderung von Character zu String in der Hashmap. Dadurch konnten die einzelnen chars im Text nicht mehr mit den Strings in der Hashmap verglichen werden. Schlussendlich wurden die 4 deutschen Sonderzeichen (ä,ü,ö,ß) aus der HashMap entfernt, damit es kompiliert wird und richtig ausgeführt werden kann. Der Rest konnte dann ohne probleme per java TextToMorse ./input.txt ./output.txt gemorst werden.

Punkte: (ich werde hier 2 Sachen bewerten, den ersten Entwurf und den geänderten nach entfernen der deutschen Zeichen) 0/1 | 1/1 Punkt: Das Programm kompiliert 0/1 | 1/1 Punkt: Das Programm kompiliert ohne Warnungen 0/3 | 2/3 (da keine Sonderzeichen) Punkte: Der Text wird richtig übersetzt 1/1 | 1/1 Punkt: Die Codequalität ist gut 1/1 | 1/1 Punkt: Der Code ist möglichst knapp 1/1 | 1/1 Punkt: Die Kommandozeilenargumente funktionieren 1/1 | 1/1 Punkt: Der Code hat eine entsprechende Fehlerbehandlung 1/! | 1/1 Punkt: Der Code beinhaltet Kommentare

Rust

Auch beim Compilieren des Rust-Codes gab es bereits Fehler. Denn beim Erstellen des Codes gab die KI keine Abhängigkeiten(Dependencies) zu anderen Krates an. Weswegen das lazy_static-Krate nicht gefunden wurde. Der Rest des Codes lief hingegen ohne Probleme durch. Nur eine Warning gab es: warning: unused import: Read –> src/bin/Gemini_Rust.rs:5:16 | 5 | io::{self, Read, Write}, | ^^^^ | = note: #[warn(unused_imports)] on by default Diese war aber einfach durch das Entfernen von „Read“ zu lösen. Auch die Ausführung des Programms lief ohne Probleme per „cargo run ./input.txt ./output.txt“ durch. Das Ergebnis in der Output Datei scheint ebenfalls richtig zu sein. 1/1 Punkt: Das Programm kompiliert 0/1 Punkt: Das Programm kompiliert ohne Warnungen 3/3 Punkte: Der Text wird richtig übersetzt 1/1 Punkt: Die Codequalität ist gut 1/1 Punkt: Der Code ist möglichst knapp 1/1 Punkt: Die Kommandozeilenargumente funktionieren 1/1 Punkt: Der Code hat eine entsprechende Fehlerbehandlung 1/1 Punkt: Der Code beinhaltet Kommentare

Python

Ausführen des Programms hat auf Anhieb funktioniert und es gab keine Probleme. Die output-Datei sieht ebenfalls richtig aus.

  • python3 ./Gemini_Python.py ./input.txt ./output.txt

1/1 Punkt: Das Programm kompiliert 1/1 Punkt: Das Programm kompiliert ohne Warnungen 3/3 Punkte: Der Text wird richtig übersetzt 1/1 Punkt: Die Codequalität ist gut 1/1 Punkt: Der Code ist möglichst knapp 1/1 Punkt: Die Kommandozeilenargumente funktionieren 1/1 Punkt: Der Code hat eine entsprechende Fehlerbehandlung 1/1 Punkt: Der Code beinhaltet Kommentare

C Sharp

Nach Installieren des Compilers, war der build innerhalb von wenigen sekunden erfolgreich und konnte auch direkt ohne probleme ausgeführt werden. Das Ergebnis war ebenfalls korrekt. Befehl zum Ausführen:

  • dotnet run – ../input.txt ../output.txt

1/1 Punkt: Das Programm kompiliert 1/1 Punkt: Das Programm kompiliert ohne Warnungen 2,5/3 Punkte: Da das „ß“ nicht übersetzt wird und das „Ä“ im Dictonary zum Übersetzen falsch hinterlegt ist. 1/1 Punkt: Die Codequalität ist gut 1/1 Punkt: Der Code ist möglichst knapp 1/1 Punkt: Die Kommandozeilenargumente funktionieren 1/1 Punkt: Der Code hat eine entsprechende Fehlerbehandlung 1/1 Punkt: Der Code beinhaltet Kommentare

Claude

Für die Programme wurde Claude 3.7 Sonnet verwendet

C

Das Programm konnte kompilieren, hat aber Warnungen für die deutschen Sondercharaktere ausgegeben:

morse.c:83:14: warning: multi-character character constant [-Wmultichar]
   83 |         case 'Ä': return ".-.-";
      |              ^~~

usw. für Ö, Ü und ß

Diese Sonderzeichen wurden auch nicht übersetzt sondern einfach übersprungen bei der Umwandlung.

Abseits davon hat alles funktioniert, und die volle Punktzahl erhalten

C#

Hier wurde ebenfalls der Code erfolgreich kompiliert, hat allerdings eine Warnung erzeugt:

warning CS8600: Converting null literal or possible null value to non-nullable type.

Diesmal wurden die Sonderzeichen korrekt übersetzt und wie bei der Ausgabe des C-Codes der Code mit Kommentaren und Fehlerbehandlung versehen.

Java

Beim Java-Code wurde der Code ohne Warnungen kompiliert und gibt auch die richtige Ausgabe aus.

Python

Der Python Code konnte ebenfalls ohne Warnungen interpretiert werden und liefert die korrekt Ausgabe.

Rust

Für die Rust-Ausgabe wurden ebenfalls alle Anforderungen erfüllt.