Zukunft der Softwareentwicklung: Zukunft der Computer P2

IMAGE CREDIT: Quantenlauf

Zukunft der Softwareentwicklung: Zukunft der Computer P2

    1969 wurden Neil Armstrong und Buzz Aldrin zu internationalen Helden, nachdem sie als erste Menschen den Mond betraten. Aber während diese Astronauten die Helden vor der Kamera waren, gibt es Tausende unbesungene Helden, die ohne ihre Beteiligung diese erste bemannte Mondlandung nicht unmöglich gewesen wären. Einige dieser Helden waren die Softwareentwickler, die den Flug codierten. Wieso den?

    Nun, die Computer, die es damals gab, waren viel einfacher als heute. Tatsächlich ist das abgenutzte Smartphone einer durchschnittlichen Person um mehrere Größenordnungen leistungsstärker als alles an Bord des Apollo 11-Raumschiffs (und der gesamten NASA der 1960er Jahre). Darüber hinaus wurden Computer zu dieser Zeit von spezialisierten Softwareentwicklern codiert, die Software in der grundlegendsten aller Maschinensprachen programmierten: AGC Assembly Code oder einfach 1s und 0s.

    Zum Kontext, einer dieser unbesungenen Helden, der Direktor der Software Engineering Division des Apollo-Raumfahrtprogramms, Margaret Hamilton, und ihr Team mussten einen Berg von Code schreiben (siehe Abbildung unten), der mit den heutigen Programmiersprachen mit einem Bruchteil des Aufwands hätte geschrieben werden können.

    (Das Bild oben zeigt Margaret Hamilton, die neben einem Papierstapel steht, der die Apollo-11-Software enthält.)

    Und anders als heutzutage, wo Softwareentwickler etwa 80-90 Prozent der möglichen Szenarien programmieren, musste ihr Code für die Apollo-Missionen alles berücksichtigen. Um dies ins rechte Licht zu rücken, sagte Margaret selbst:

    „Aufgrund eines Fehlers im Checklisten-Handbuch wurde der Rendezvous-Radarschalter an der falschen Position platziert. Dies führte dazu, dass er fehlerhafte Signale an den Computer sendete. Das Ergebnis war, dass der Computer aufgefordert wurde, alle seine normalen Funktionen für die Landung auszuführen Während er eine zusätzliche Ladung falscher Daten erhielt, die 15% seiner Zeit verbrauchten, war der Computer (oder besser gesagt die darin enthaltene Software) intelligent genug, um zu erkennen, dass er aufgefordert wurde, mehr Aufgaben auszuführen, als er ausführen sollte Alarm schlagen, was für den Astronauten bedeutete, dass ich mit mehr Aufgaben überlastet bin, als ich zu diesem Zeitpunkt erledigen sollte, und ich werde nur die wichtigeren Aufgaben behalten, dh diejenigen, die für die Landung benötigt werden ... Eigentlich war der Computer darauf programmiert, mehr zu tun, als Fehlerbedingungen zu erkennen. Ein vollständiger Satz von Wiederherstellungsprogrammen wurde in die Software integriert. Die Aktion der Software bestand in diesem Fall darin, Aufgaben mit niedrigerer Priorität zu beseitigen und die wichtigeren wiederherzustellen ... Wenn der Computer das nicht getan hättedieses Problem erkannt und Wiederherstellungsmaßnahmen ergriffen haben, bezweifle ich, dass Apollo 11 die erfolgreiche Mondlandung gewesen wäre, die sie war."

    – Margaret Hamilton, Direktorin von Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, „Computer Got Loaded“, Brief an Datenerfassung, März 1, 1971

    Wie bereits angedeutet, hat sich die Softwareentwicklung seit diesen frühen Apollo-Tagen weiterentwickelt. Neue höhere Programmiersprachen ersetzten den langwierigen Prozess des Codierens mit 1 und 0 durch das Codieren mit Wörtern und Symbolen. Funktionen wie das Generieren einer Zufallszahl, die früher tagelanges Programmieren erforderten, werden jetzt durch das Schreiben einer einzigen Befehlszeile ersetzt.

    Mit anderen Worten, die Softwarecodierung ist mit jedem Jahrzehnt zunehmend automatisiert, intuitiv und menschlich geworden. Diese Qualitäten werden sich nur in die Zukunft fortsetzen und die Entwicklung der Softwareentwicklung auf eine Weise leiten, die einen tiefgreifenden Einfluss auf unser tägliches Leben haben wird. Dies ist, was dieses Kapitel der Zukunft der Computer Serie wird erkunden.

    Softwareentwicklung für die Masse

    Der Prozess des Ersetzens der Notwendigkeit, Einsen und Nullen (Maschinensprache) durch Wörter und Symbole (menschliche Sprache) zu codieren, wird als Prozess des Hinzufügens von Abstraktionsebenen bezeichnet. Diese Abstraktionen sind in Form neuer Programmiersprachen entstanden, die komplexe oder allgemeine Funktionen für den Bereich, für den sie entwickelt wurden, automatisieren. Aber in den frühen 1er Jahren entstanden neue Unternehmen (wie Caspio, QuickBase und Mendi), die begannen, sogenannte No-Code- oder Low-Code-Plattformen anzubieten.

    Dabei handelt es sich um benutzerfreundliche Online-Dashboards, die es nicht-technischen Fachleuten ermöglichen, benutzerdefinierte Apps zu erstellen, die auf die Anforderungen ihres Unternehmens zugeschnitten sind, indem sie visuelle Codeblöcke (Symbole/Grafiken) zusammenfügen. Mit anderen Worten, anstatt einen Baum zu fällen und ihn zu einem Ankleideschrank umzubauen, bauen Sie ihn mit vorgefertigten Teilen von Ikea.

    Während die Nutzung dieses Dienstes immer noch ein gewisses Maß an Computerkenntnissen erfordert, benötigen Sie keinen Informatikabschluss mehr, um ihn zu nutzen. Infolgedessen ermöglicht diese Form der Abstraktion den Aufstieg von Millionen neuer "Softwareentwickler" in die Unternehmenswelt und ermöglicht vielen Kindern, das Programmieren in einem früheren Alter zu lernen.

    Neudefinition dessen, was es bedeutet, ein Softwareentwickler zu sein

    Es gab eine Zeit, in der eine Landschaft oder das Gesicht einer Person nur auf einer Leinwand festgehalten werden konnte. Ein Maler müsste als Lehrling jahrelang studieren und üben und das Handwerk des Malens lernen – wie man Farben mischt, welche Werkzeuge am besten sind, die richtigen Techniken, um ein bestimmtes Bild auszuführen. Die Kosten des Handwerks und die langjährige Erfahrung, die für eine gute Ausführung erforderlich waren, führten auch dazu, dass es nur wenige Maler gab.

    Dann wurde die Kamera erfunden. Und mit einem Klick auf eine Schaltfläche wurden Landschaften und Porträts in einer Sekunde aufgenommen, deren Malen sonst Tage oder Wochen gedauert hätte. Und als sich Kameras verbesserten, billiger wurden und so weit verbreitet waren, dass sie jetzt sogar in den einfachsten Smartphones enthalten sind, wurde das Erfassen der Welt um uns herum zu einer gewöhnlichen und gelegentlichen Aktivität, an der jetzt jeder teilnimmt.

    Angesichts fortschreitender Abstraktionen und neuer Softwaresprachen, die immer mehr routinemäßige Softwareentwicklungsarbeiten automatisieren, was wird es bedeuten, in 10 bis 20 Jahren Softwareentwickler zu sein? Um diese Frage zu beantworten, gehen wir einmal durch, wie zukünftige Softwareentwickler wahrscheinlich vorgehen werden, um die Anwendungen von morgen zu erstellen:

    *Zuerst werden alle standardisierten, sich wiederholenden Programmierarbeiten verschwinden. An seiner Stelle wird eine riesige Bibliothek vordefinierter Komponentenverhalten, UIs und Datenflussmanipulationen (Ikea-Teile) stehen.

    *Wie heute definieren Arbeitgeber oder Unternehmer spezifische Ziele und Leistungen, die Softwareentwickler über spezialisierte Softwareanwendungen oder Plattformen ausführen können.

    *Diese Entwickler legen dann ihre Ausführungsstrategie fest und beginnen mit dem Prototyping früher Entwürfe ihrer Software, indem sie auf ihre Komponentenbibliothek zugreifen und visuelle Schnittstellen verwenden, um sie miteinander zu verbinden – visuelle Schnittstellen, auf die über Augmented Reality (AR) oder Virtual Reality (VR) zugegriffen wird.

    *Spezialisierte Systeme für künstliche Intelligenz (KI), die darauf ausgelegt sind, die Ziele und Ergebnisse der ursprünglichen Entwürfe ihrer Entwickler zu verstehen, verfeinern dann das entworfene Softwaredesign und automatisieren alle Qualitätssicherungstests.

    *Basierend auf den Ergebnissen wird die KI dem Entwickler dann eine Vielzahl von Fragen stellen (wahrscheinlich durch verbale, Alexa-ähnliche Kommunikation), um die Ziele und Ergebnisse des Projekts besser zu verstehen und zu definieren und zu diskutieren, wie die Software in verschiedenen Szenarien agieren soll und Umgebungen.

    * Basierend auf dem Feedback des Entwicklers lernt die KI nach und nach seine Absicht und generiert den Code, um die Projektziele widerzuspiegeln.

    *Diese Hin- und Her-Zusammenarbeit zwischen Mensch und Maschine wird Version für Version der Software iterieren, bis eine fertige und marktfähige Version für die interne Implementierung oder den Verkauf an die Öffentlichkeit bereit ist.

    *Tatsächlich wird diese Zusammenarbeit fortgesetzt, nachdem die Software der realen Nutzung ausgesetzt wurde. Wenn einfache Fehler gemeldet werden, behebt die KI sie automatisch auf eine Weise, die die ursprünglichen, gewünschten Ziele widerspiegelt, die während des Softwareentwicklungsprozesses umrissen wurden. In der Zwischenzeit werden schwerwiegendere Fehler eine Zusammenarbeit zwischen Mensch und KI erfordern, um das Problem zu lösen.

    Insgesamt werden sich zukünftige Softwareentwickler weniger auf das „Wie“ als vielmehr auf das „Was“ und „Warum“ konzentrieren. Sie werden weniger Handwerker und mehr Architekten sein. Die Programmierung wird eine intellektuelle Übung sein, die Menschen erfordert, die Absichten und Ergebnisse methodisch so kommunizieren können, dass eine KI sie verstehen und dann eine fertige digitale Anwendung oder Plattform automatisch codieren kann.

    Künstliche Intelligenz getriebene Softwareentwicklung

    Angesichts des obigen Abschnitts ist klar, dass wir der Meinung sind, dass KI eine zunehmend zentrale Rolle im Bereich der Softwareentwicklung spielen wird, aber ihre Einführung dient nicht nur dem Zweck, Softwareentwickler effektiver zu machen, sondern es gibt auch Geschäftskräfte hinter diesem Trend.

    Der Wettbewerb zwischen Softwareentwicklungsunternehmen wird von Jahr zu Jahr härter. Einige Unternehmen konkurrieren, indem sie ihre Konkurrenten aufkaufen. Andere konkurrieren um Software-Differenzierung. Die Herausforderung bei letzterer Strategie besteht darin, dass sie nicht leicht zu verteidigen ist. Jede Softwarefunktion oder Verbesserung, die ein Unternehmen seinen Kunden anbietet, können seine Konkurrenten relativ einfach kopieren.

    Aus diesem Grund sind die Zeiten vorbei, in denen Unternehmen alle ein bis drei Jahre neue Software veröffentlichen. Heutzutage haben Unternehmen, die sich auf Differenzierung konzentrieren, einen finanziellen Anreiz, immer häufiger neue Software, Softwarekorrekturen und Softwarefunktionen herauszubringen. Je schneller Unternehmen innovativ sind, desto mehr fördern sie die Kundenbindung und erhöhen die Kosten für den Wechsel zu Wettbewerbern. Diese Verlagerung hin zur regelmäßigen Bereitstellung inkrementeller Software-Updates ist ein Trend, der als „kontinuierliche Bereitstellung“ bezeichnet wird.

    Leider ist Continuous Delivery nicht einfach. Kaum ein Viertel der heutigen Softwareunternehmen kann den von diesem Trend geforderten Release-Zeitplan einhalten. Und deshalb gibt es so viel Interesse daran, KI einzusetzen, um die Dinge voranzutreiben.

    Wie bereits erwähnt, wird KI letztendlich eine zunehmend kollaborative Rolle bei der Softwareerstellung und -entwicklung spielen. Aber kurzfristig nutzen Unternehmen es, um Qualitätssicherungs-(Test-)Prozesse für Software zunehmend zu automatisieren. Und andere Unternehmen experimentieren mit der Verwendung von KI zur Automatisierung der Softwaredokumentation – dem Prozess der Verfolgung der Veröffentlichung neuer Funktionen und Komponenten und ihrer Erstellung bis auf die Codeebene.

    Insgesamt wird KI zunehmend eine zentrale Rolle in der Softwareentwicklung einnehmen. Diejenigen Softwareunternehmen, die ihren Einsatz frühzeitig beherrschen, werden letztendlich ein exponentielles Wachstum gegenüber ihren Konkurrenten genießen. Aber um diese KI-Gewinne zu realisieren, muss die Branche auch Fortschritte auf der Hardwareseite sehen – der nächste Abschnitt wird diesen Punkt näher erläutern.

    Software als Dienstleistung

    Alle Arten von Kreativprofis verwenden Adobe-Software, wenn sie digitale Kunstwerke oder Designarbeiten erstellen. Nahezu drei Jahrzehnte lang haben Sie die Software von Adobe als CD gekauft und waren deren dauerhafte Nutzung, wobei Sie bei Bedarf zukünftige Upgrade-Versionen kauften. Doch Mitte der 2010er änderte Adobe seine Strategie.

    Anstatt Software-CDs mit lästig komplizierten Eigentumsschlüsseln zu kaufen, müssten Adobe-Kunden jetzt ein monatliches Abonnement für das Recht bezahlen, Adobe-Software auf ihre Computergeräte herunterzuladen, Software, die nur zusammen mit einer regelmäßigen bis konstanten Internetverbindung zu Adobe-Servern funktionieren würde .

    Mit dieser Änderung besaßen Kunden keine Adobe-Software mehr; sie mieteten es nach Bedarf. Im Gegenzug müssen Kunden nicht mehr ständig aktualisierte Versionen von Adobe-Software kaufen; Solange sie den Adobe-Dienst abonniert hatten, wurden ihnen immer sofort nach der Veröffentlichung (häufig mehrmals im Jahr) die neuesten Updates auf ihr Gerät hochgeladen.

    Dies ist nur ein Beispiel für einen der größten Softwaretrends, die wir in den letzten Jahren gesehen haben: wie Software statt eines eigenständigen Produkts in den Service übergeht. Und nicht nur kleinere, spezialisierte Software, sondern ganze Betriebssysteme, wie wir mit der Veröffentlichung von Microsofts Windows 10-Update gesehen haben. Mit anderen Worten: Software as a Service (SaaS).

    Selbstlernende Software (SLS)

    Aufbauend auf der Umstellung der Branche auf SaaS zeichnet sich ein neuer Trend im Softwarebereich ab, der sowohl SaaS als auch KI kombiniert. Führende Unternehmen von Amazon, Google, Microsoft und IBM haben damit begonnen, ihren Kunden ihre KI-Infrastruktur als Service anzubieten.

    Mit anderen Worten, KI und maschinelles Lernen sind nicht mehr nur für Softwaregiganten zugänglich, jetzt kann jedes Unternehmen und jeder Entwickler auf Online-KI-Ressourcen zugreifen, um selbstlernende Software (SLS) zu erstellen.

    Wir werden das Potenzial von KI ausführlich in unserer Reihe „Die Zukunft der künstlichen Intelligenz“ diskutieren, aber für den Kontext dieses Kapitels sagen wir, dass aktuelle und zukünftige Softwareentwickler SLS erstellen werden, um neue Systeme zu schaffen, die Aufgaben antizipieren, die erledigt werden müssen, und vervollständigen Sie sie einfach automatisch für Sie.

    Das bedeutet, dass ein zukünftiger KI-Assistent Ihren Arbeitsstil im Büro lernen und beginnen wird, grundlegende Aufgaben für Sie zu erledigen, wie das Formatieren von Dokumenten nach Ihren Wünschen, das Verfassen Ihrer E-Mails in Ihrem Tonfall, das Verwalten Ihres Arbeitskalenders und vieles mehr.

    Zu Hause könnte dies bedeuten, dass ein SLS-System Ihr zukünftiges Smart Home verwaltet, einschließlich Aufgaben wie das Vorheizen Ihres Hauses vor Ihrer Ankunft oder das Verfolgen von Lebensmitteln, die Sie einkaufen müssen.

    In den 2020er und bis in die 2030er Jahre hinein werden diese SLS-Systeme eine entscheidende Rolle in den Märkten von Unternehmen, Behörden, Militär und Verbrauchern spielen und ihnen dabei helfen, ihre Produktivität zu verbessern und Verschwendung aller Art zu reduzieren. Wir werden die SLS-Technologie später in dieser Serie ausführlicher behandeln.

    Das Ganze hat jedoch einen Haken.

    Die SaaS- und SLS-Modelle funktionieren nur, wenn das Internet (oder die dahinter stehende Infrastruktur) weiter wächst und sich verbessert, zusammen mit der Computer- und Speicherhardware, auf der die „Cloud“ läuft, auf der diese SaaS/SLS-Systeme betrieben werden. Zum Glück sehen die Trends, die wir verfolgen, vielversprechend aus.

    Um zu erfahren, wie das Internet wachsen und sich weiterentwickeln wird, lesen Sie unsere Zukunft des Internets Serie. Um mehr darüber zu erfahren, wie sich die Computerhardware weiterentwickeln wird, lesen Sie dann über die unten stehenden Links weiter!

    Reihe Zukunft der Computer

    Aufkommende Benutzerschnittstellen zur Neudefinition der Menschheit: Die Zukunft der Computer P1

    Die digitale Speicherrevolution: Die Zukunft der Computer P3

    Ein schwindendes Mooresches Gesetz, um ein grundlegendes Umdenken bei Mikrochips auszulösen: Future of Computers P4

    Cloud Computing wird dezentralisiert: Future of Computers P5

    Warum konkurrieren Länder um den Bau der größten Supercomputer? Zukunft der Computer P6

    Wie Quantencomputer die Welt verändern werden: Future of Computers P7    

    Nächstes geplantes Update für diese Prognose

    2023-02-08

    Prognosereferenzen

    Für diese Prognose wurde auf die folgenden beliebten und institutionellen Links verwiesen:

    ProPublica

    Für diese Prognose wurde auf die folgenden Quantumrun-Links verwiesen: