# Welche Programmiersprache soll verwendet werden? `````` ``````**Anfang:** > > Etwas provokanter formuliert könnte man auch sagen: > Die Aussage erinnert mich an das Argument: „Am Ende sind doch alle Bücher nur Druckerschwärze auf Papier.“ Technisch stimmt das irgendwo, verfehlt aber den eigentlichen Zweck. Genauso sind Programmiersprachen nicht deshalb interessant, weil sie irgendwann auf Hardware laufen, sondern weil sie Probleme unterschiedlich gut beschreiben können. Ich vermute, dass jemand aus der Programmiersprachenforschung oder ein erfahrener Softwarearchitekt genau an diesem Punkt widersprechen würde: Aus der Tatsache, dass alle Sprachen letztlich auf derselben Hardware landen, folgt nicht, dass die Wahl der Sprache beliebig ist. Das ist ungefähr so, als würde man sagen: „Alle Fahrzeuge fahren irgendwann über Asphalt, deshalb ist es egal, ob ich einen LKW, einen Traktor oder ein Fahrrad nehme.“ Das Ziel erreicht man zwar mit allen, aber nicht gleich gut für jeden Anwendungsfall. `````` **Ende** Zitat von irgendwelchem fiktiven Teilenehmer/ Teilnehmerin wurde von Microsoft Copilot generiert. Spannend, ich weil ich, bevor er dich gefragt habe, eine "Druckerschwärze"-ähnliche Überlegung im Kopf gehabt habe - in dieser Ausprägung "Wenn es darum geht eine auf Papier geschriebene Nachricht für die Übermittlung von A nach B zu bringen ist doch egal, mit welcher Tinte geschrieben wird". Beim Auftrag "Nachricht für die Übermittlung von A nach B dokumentieren, festhalten" ist der Kontext, der Anwendungsfall "auf Papier". Wenn wir dann wieder zum Ursprung, zum allgemen formulierten Anwendungsfall "Aufträge für Hardware festzuhalten, zu formulieren" XYAuftrag, dann braucht der Mulitalent "devAI" um den Auftrag sachgerecht, anwendungsfallgerecht möglichst detaillierte Angaben zum Kontext, bspw.: - Ist der Auftrag XYAuftrag wiederkehrend? - Wird die für die Erledigung der Auftrags XYAuftrag erstellte Software für unterschiedichen Kontexte vermehrt? - Wird der Auftrag immer auf der gleichen Hardware ausgeführt? - Auf welcher Hardware wird der Auftrag ggf. wiederkehrend ausgeführt? - Spielen bei der Erledigung der Auftrags XYAuftrag irgendwelche Klimaschutz-Auflagen eine Rolle? - Spielen bei der Erledigung der Auftrags XYAuftrag ethische moralische Faktoren eine Rolle? - … "Teilnehmer YX", fallen dir evtl. weiter allgemein relevante Kontext-Informationen, die für den Kontext "Aufträge für Hardware festzuhalten, zu formulieren" XYAuftrag eine Rolle spielen könnten? `````` In der Rolle des „Teilnehmers YX“ würde ich sagen: Ja, genau dort wird es interessant. Ich glaube nämlich, dass die Frage „Welche Programmiersprache soll verwendet werden?“ in einer Welt leistungsfähiger devAI-Systeme teilweise an Bedeutung verliert. Dafür gewinnt eine andere Frage an Bedeutung: > „Welche Randbedingungen, Ziele und Nebenbedingungen hat der Auftrag XY überhaupt?“ Wenn man einer KI nur sagt: > „Erledige Aufgabe XY.“ dann fehlen ihr möglicherweise genau die Informationen, die ein menschlicher Architekt oder Entwickler normalerweise durch Nachfragen ermitteln würde. Zu deinen Punkten würden mir noch einige weitere Kategorien einfallen: ### Wirtschaftliche Randbedingungen - Wie hoch ist das Budget? - Darf die Lösung Kosten verursachen? - Müssen Lizenzkosten minimiert werden? - Ist Open Source erwünscht oder vorgeschrieben? - Wie lange soll die Lösung betrieben werden? Eine technisch optimale Lösung ist nicht immer die wirtschaftlich optimale Lösung. --- ### Wartbarkeit und Lebensdauer - Wer pflegt die Lösung in fünf Jahren? - Gibt es überhaupt Entwickler für die gewählte Technologie? - Wie lange soll die Software nutzbar bleiben? - Muss die Lösung dokumentiert werden? - Muss der Quellcode für Dritte verständlich sein? Hier kommt wieder die Programmiersprache ins Spiel, allerdings eher als Kommunikationsmittel zwischen Menschen. --- ### Sicherheitsanforderungen - Werden personenbezogene Daten verarbeitet? - Gibt es Geheimhaltungsanforderungen? - Ist Offline-Betrieb erforderlich? - Muss die Software gegen Manipulation geschützt werden? - Gibt es regulatorische Vorgaben? Für manche Aufgaben wären Rust, Ada oder bestimmte Java-Plattformen eventuell sinnvoller als VBA oder Python. --- ### Zuverlässigkeit - Was passiert bei einem Fehler? - Darf das System abstürzen? - Geht es um Menschenleben? - Ist eine Verfügbarkeit von 99,999 % erforderlich? Die Software für einen Herzschrittmacher wird man anders entwickeln als ein Makro für Excel. --- ### Zeitliche Anforderungen - Muss das Ergebnis in Millisekunden vorliegen? - Ist Echtzeitfähigkeit erforderlich? - Wird die Aufgabe einmal pro Tag oder tausendmal pro Sekunde ausgeführt? --- ### Energieverbrauch und Nachhaltigkeit Du hast Klimaschutz bereits angesprochen. Dazu gehören beispielsweise: - Energieverbrauch während der Ausführung - Speicherverbrauch - Anzahl benötigter Server - Lebensdauer der Hardware - CO₂-Fußabdruck des Betriebs Eine KI könnte je nach Priorität eine völlig andere Architektur wählen. --- ### Rechtliche Anforderungen - In welchem Land wird die Software betrieben? - Gelten DSGVO-Vorgaben? - Müssen Daten lokal gespeichert werden? - Gibt es Aufbewahrungspflichten? - Muss der Entscheidungsweg nachvollziehbar sein? --- ### Gesellschaftliche und ethische Faktoren - Dürfen Entscheidungen automatisiert getroffen werden? - Muss ein Mensch die letzte Entscheidung treffen? - Dürfen personenbezogene Profile erstellt werden? - Können bestimmte Gruppen benachteiligt werden? - Ist Transparenz erforderlich? --- ### Integration in bestehende Systeme Dieser Punkt wird meiner Meinung nach oft unterschätzt. - Existiert bereits Software? - Existieren Datenbanken? - Gibt es vorhandene Schnittstellen? - Müssen Altsysteme unterstützt werden? - Gibt es organisatorische Vorgaben? Wenn ein Unternehmen bereits 500 .NET-Anwendungen betreibt, wäre es möglicherweise unklug, eine neue Lösung in einer exotischen Sprache einzuführen, selbst wenn diese technisch elegant wäre. --- ### Meta-Ebene Und hier würde ich als „Teilnehmer YX“ vielleicht die provokanteste These aufstellen: > In Zukunft könnte die Programmiersprache zu einer Implementierungsentscheidung der KI werden, während **die eigentliche Ingenieursleistung darin besteht, die Anforderungen, Ziele, Risiken und Randbedingungen eines Problems vollständig und widerspruchsfrei zu beschreiben**. Dann würde aus dem klassischen Auftrag > „Schreibe mir ein Programm in Sprache X.“ eher ein Auftrag wie > „Löse Problem XY unter Einhaltung dieser 50 technischen, wirtschaftlichen, rechtlichen und ethischen Randbedingungen.“ Die Wahl von Sprache, Framework, Datenbank und sogar Architektur wäre dann möglicherweise nur noch ein untergeordneter Teil der Gesamtlösung, den die devAI selbst optimiert. Die eigentliche Herausforderung läge darin, den Kontext des Auftrags präzise zu formulieren. Genau deshalb ist deine Liste der Kontextinformationen vermutlich näher an der Zukunft der Softwareentwicklung als die Diskussion, ob man nun VBA, Python, C# oder Rust verwendet. > Die Antwort auf den Prompt wurde von Microsoft Copilot generiert