Das „Ende der Programmierung“ sieht sehr nach Programmierung aus
Communications of the ACM hat einen neuen Artikel mit dem Titel „The End of Programming“ von Matt Welsh. Sie postuliert, dass traditionelle Programme „durch KI-Systeme ersetzt werden, die eher trainiert als programmiert werden “ (Hervorhebung im Original). Welsh ist „der CEO und Mitbegründer von Fixie.ai, einem kürzlich gegründeten Startup, das KI-Fähigkeiten zur Unterstützung von Softwareentwicklungsteams entwickelt“.
Ich bin im Allgemeinen skeptisch gegenüber diesen weit gefassten Behauptungen. Vor allem denke ich, dass Menschen, die sich vorstellen, KI (und insbesondere LLMs) in die Softwareentwicklung (oder einen anderen Prozess) zu integrieren, zu optimistisch sind. Aber ich möchte mich hier auf etwas Besonderes konzentrieren. Welsh sagt: „Wir bewegen uns schnell auf eine Welt zu, in der die grundlegenden Bausteine der Berechnung temperamentvolle, mysteriöse, anpassungsfähige Agenten sind.“
Ich denke, das ist das unwahrscheinlichste Ergebnis. Wenn Sie Eigenschaften beschreiben müssten, die Benutzer von Produkten abhalten, würde „launisches und mysteriöses“ Systemverhalten ganz oben auf dieser Liste stehen (wir nennen es normalerweise einfach „fehlerhaft“). Vor allem , weil in dieser Welt die Leute hinter dem Produkt wahrscheinlich sagen würden: „Ah, sorry, das hat die KI gemacht. Wir werden sehen, ob wir ihm erklären können, was repariert werden muss, und vielleicht wird es behoben, wenn wir es richtig fragen.“
Im Allgemeinen behaupten viele der KI-Aufnahmen, die ich sehe, dass KI in der Lage sein wird, die gesamte Verantwortung für eine bestimmte Aufgabe für eine Person zu übernehmen, und gehen implizit davon aus, dass die Verantwortlichkeit der Person für die Aufgabe einfach … verpufft? Wenn die KI etwas falsch gemacht hat, ist es nicht deine Schuld? Aber wenn Sie keine wirkliche Möglichkeit haben, sicherzustellen, dass die Aufgabe korrekt ausgeführt wird, werden sie wahrscheinlich jemanden finden, der diese Aufgabe erledigt, nachdem sie ein paar Mal fehlgeschlagen ist.
Stellen wir uns also vor, wie es in einer Welt, in der Software immer noch das tun muss, was von ihr verlangt wird, aussehen würde, wenn wir keine menschlichen Softwareentwickler mehr bräuchten. Ein Mensch fungiert als Produktmanager und diktiert seine Geschäftsanforderungen an eine KI, die dann Software erstellt. Nehmen wir an, dass die resultierende Software weitgehend funktionsfähig ist (d. h. frei von Fehlern auf niedriger Ebene) – ich denke, das ist noch ein langer Weg, und es gibt viel darüber zu sagen, wie es bis dahin aussehen wird, aber das ist eine andere Sache Diskussion.
Wenn Sie als Softwareentwickler gearbeitet haben, wissen Sie, dass Geschäftsanforderungen oft als vage, schlecht definierte, sogar widersprüchliche Ideen in mehrdeutiger Sprache niedergeschrieben werden. Die Hauptfrage bei dieser ausschließlich auf KI basierenden Softwareentwicklung lautet: Wie wird eine Software erstellt, die das umsetzt, was der Produktmanager mit der Software beabsichtigt ?
Ich denke, es gibt zwei allgemeine Richtungen, die sich nicht gegenseitig ausschließen.
Erstens muss die KI den Produktmanager nach jeder individuellen Auswahl und Unklarheit fragen. Es muss dies tun, weil es gut genug ist, um zu wissen, was die Auswahlmöglichkeiten und Mehrdeutigkeiten sind, aber nicht gut genug, um die richtige Antwort konsequent zu erraten. Dieses Hin und Her beginnt im Klartext und kostet den Produktmanager viel Zeit. Im Laufe der Zeit werden die Designer der KI Abkürzungen anbieten, die es den Eingabeanforderungen ermöglichen, bestimmte Dinge zu bedeuten, wenn sie auf eine bestimmte Weise formuliert werden, sodass der Produktmanager seine Wahl von Anfang an klar treffen kann. Wir haben also eine Methode, um das Systemverhalten mit formalen Garantien auszudrücken. Das heißt, wir haben eine neue Programmiersprache erfunden. An dieser Stelle ist der Produktmanager nun ein Softwareentwickler.
Die andere ist, dass die KI gut genug ist , um die richtige Antwort auf Entscheidungen und Mehrdeutigkeiten in den Anforderungen konsequent richtig zu erraten, und gut genug ist, um zu wissen, wenn sie nicht sicher ist, dass sie richtig raten kann. Dies erfordert ein enormes Wissen über die menschliche Kultur und wahrscheinlich ein hohes Maß an Wissen über die konkrete Person, die als Produktmanager fungiert. Die KI übernimmt die Arbeit, die Geschäftsanforderungen in formelle Systemverhaltensanforderungen zu übersetzen und diese zu implementieren. An diesem Punkt ist die KI nun ein Softwareentwickler.
Man könnte argumentieren, dass die zweite die gleiche wie Welshs Vision vom „Ende der Programmierung“ ist, da Sie immer noch ohne formale Sprache arbeiten. Ich sage, es ist anders, weil es genauso wenig „launisch und mysteriös“ ist wie die Softwareentwickler (diejenigen, mit denen Sie gerne zusammenarbeiten) – es ist zuverlässig und konsistent.
Ich denke, die zweite Richtung, KI-als-Software-Entwickler, ist ziemlich weit weg, insbesondere weil kultureller Kontext und Selbstbewusstsein schwierige Dinge sind. Ich bezweifle, dass Sie AGI brauchen, um es zu bekommen, aber es scheint, als wäre es ein gutes Stück des Weges dorthin. Wenn Sie AGI also optimistisch gegenüberstehen, können Sie hoffen, dass wir es eher früher als später bekommen.
Ich würde gerne sehen, dass die erste Richtung explizit eingeschlagen wird. Eines meiner Probleme mit GitHub Copilot (und ähnlichen Systemen) ist, dass Sie immer noch Eigentümer des resultierenden Codes sind und es keinen Weg bietet, Vertrauen zu gewinnen, dass es Ihnen eine korrekte Implementierung gegeben hat, obwohl Sie die Korrektheit des generierten Codes besitzen (Dies rechtfertigt auch einen eigenen Artikel, denke ich). Ich würde es lieben, allgemeine Muster zu identifizieren und sie zu formalisieren, sodass Entwickler diese komplizierte Logik mit einer Abkürzung ausdrücken und darauf vertrauen können, dass sie das bekommen, was sie erwarten. Vielleicht geht das mit dem bestehenden System, vielleicht ist es aber auch eine ganz neue Programmiersprache, die sich an Copilot orientiert.
Ich denke, meine wichtigste Erkenntnis hier ist, dass, wenn man sich ansieht, dass KI einen Prozess automatisieren wird, darauf achten muss, was die wirklich schwierige, inhärente Komplexität dieses Prozesses ist und ob der Prozess erfolgreich wäre, wenn ein hohes Maß an (neuen) Ungewissheit wurde in diese Komplexität eingebracht. Für die Softwareentwicklung lautet die Antwort meiner Meinung nach nein. Das bedeutet nicht, dass KI nicht erfolgreich sein wird, es bedeutet nur, dass wir genauer hinschauen müssen, um zu verfeinern, welche und wie (und wann) Automatisierung dabei eine Rolle spielen wird.

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































