# 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 , 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 > createMorseCodeMap()’: morse.cpp:44:11: warning: overflow in conversion from ‘int’ to ‘std::unordered_map >::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 >::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 >::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 >::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 in 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.