Geschichte des Softwareengeerings

N. Wirth beklagt, dass Softwareengeering keine Disziplin wurde, auch weil sich kaum jemand für dessen Geschichte interessiere. Dann schreibt er (trotzdem) seine Geschichte zu dieser Geschichte.

Er beginnt nicht irgendwo und schon gar nicht am Anfang, sondern dort, wo seiner Meinung nach wichtige Weichen gestellt wurden, ohne dass der Zug darauf gefahren wäre. Er schreibt seine eigene Geschichte als Geschichte des Softwarengineerings.

Nur nebenbei: Ich habe ein paar Jahre lang seinen Studenten an der ETH etwas Computer-Geschichte unter soziologischen Gesichtspunkten vorgelesen. Er hat mich dann mal “eingeladen”, ihm meine Geschichte zu begründen, weil ihm diese Geschichte – oder was ihm davon zu Ohren kam – nicht passte. Jedenfalls mussten seine Studenten danach meine Vorlesung nicht mehr besuchen.

In seiner Geschichte sind Computer immerhin Maschinen. “Computer systems are machines of large complexity. This complexity can be mastered intellectually by one tool only: Abstraction.” Er meint, sie seien komplex, ich würde dagegen von kompliziert sprechen. Er sieht in der Geschichte drei Phasen, weil er drei Programmiersprachen entwickelt hat.

Dijkstra hat das stukturierte Programmieren erfunden. Deshalb hat er eine strukturierte Programmiersprache, nämlich Pascal entwickelt. Dann hat Parnas die Modularisierung erfunden. Deshalb hat er eine modulare Programmiersprache, nämlich Modula entwickelt. Und schliesslich hat Dahl die Objekte erfunden. Deshalb hat er Oberon entwickelt. Das sind die historisch guten Seiten der Entwicklung, aber die Entwicklung hat leider immer den schlechten Weg genommen.

Kaum war die Hardware massenfähig, wurden anstelle der Mainframes Kleincomputer mit Unix auf den Markt gebracht und damit verbunden die Programmiersprache C, deren Konzeptlosigkeit als Freiheit der Programmierer verkauft wurde. Kurze Zeit später wurde es noch schlimmer, weil mit den Windows und der Maus die Ansprüche an die Programmierung noch erheblich grösser wurden. Hinzu kam eine nicht kontrollierbare Entwicklung von OpenSource und durch das Internet die Apps in Java, was wiederum konzeptlose Programmiersprachen zu grosser Verbreitung geholfen hat.

Ein Hauptproblem sieht N. Wirth in der vermeintlichen Lösung des Problems, die darin besteht, dass die Hardware immer schneller und billiger wird und so unsauberes Programmieren immer mehr verzeiht und mithin unterstützt.

N. Wirth hat sozusagen eine reine Lehre, die sich nicht um vordergründige Bedürfnisse von Microsoft-verseuchten Benutzern kümmert und von den Programmierern viel mehr Denkarbeit verlangt, was allenthalben anhand von “goto” diskutiert wurde. L. Torvald entgegnete, dass N. Wirth den frigging clue auch nicht gefunden habe.

Ich wundere mich auf einer anderen Ebene. Wenn ich mich nicht um kommerzielle Zusammenhänge kümmere, sondern um mit N. Wirth zu sprechen, um akademische, dann verstehe ich die Begrenzung auf Softwareengineering nicht. Dann würde ich von Technologie sprechen und mich dabei um eine Begrifflichkeit bemühen, die in welcher das Softwareengineering als solches begriffen werden kann. N. Wirth gibt dazu etliche Ansätze, wo er Computer als Maschinen begreift und das Programmieren als Handwerk (craft), das in einen Wissensprozess umschlägt, so dass in den Programmen, die zunächst nur der Steurung von Maschinen dienten, immer mehr Text sichtbar wird, der der mathematischen Vernunft unterliegt.

Ich wundere mich darüber, wieso wir uns auf mathematische Vernunft beschränken sollten, respektive darüber, warum Informatiker nicht auch in gesellschaftlichen Zusammenhängen denken sollen, wo sie im Zentrum der Produktivkraftentfaltung stehen. Kybernetik muss sich nicht auf Oberoncomputer beschränken.

Advertisements
Post a comment or leave a trackback: Trackback URL.

Comments

  • Valonqua  On April 26, 2014 at 6:25 PM

    “Ich wundere mich auf einer anderen Ebene. Wenn ich mich nicht um kommerzielle Zusammenhänge kümmere, sondern um mit N. Wirth zu sprechen, um akademische, dann verstehe ich die Begrenzung auf Softwareengineering nicht. Dann würde ich von Technologie sprechen und mich dabei um eine Begrifflichkeit bemühen, die in welcher das Softwareengineering als solches begriffen werden kann.”

    Das würde also heißen, “Kybernetik” (z.B. in Deinem Sinne) in diesem Fall als “Grundbegrifflichkeit” zu wählen?

    • kybernetiks  On April 27, 2014 at 12:01 AM

      ja, in meinem Fall wär das die Kybernetik, damit ich nicht etwas Neues erfinden müsste. Aber vielleicht gibt es ja auch andere Techno_Logien. Ich kenne nur keine.

  • Valonqua  On April 26, 2014 at 6:40 PM

    “Ich wundere mich darüber, wieso wir uns auf mathematische Vernunft beschränken sollten, respektive darüber, warum Informatiker nicht auch in gesellschaftlichen Zusammenhängen denken sollen, wo sie im Zentrum der Produktivkraftentfaltung stehen. Kybernetik muss sich nicht auf Oberoncomputer beschränken.”

    Volle Zustimmung!
    Obgleich es interessant ist, daß Du mit Deiner vom Sozialen fast komplett abstrahierenden Technik-Kybernetik die “gesellschaftlichen Zusammenhänge” ins Spiel bringen möchtest.
    Die Frage ist: Wie stellst Du das an? :-)

    Abgesehen davon würde ich N. Wirths Argumentation hins. der Produktion komplexer Software mit Blick auf “agile” Herangehensweisen in Frage stellen. Wenn es bspw. um unklare und wechselnde Anforderungen geht, die im Geschäftsumfeld normal sind, dann hilft ein klassisches dokumentenzentriertes, alles antizipieren wollendes Upfront-Design nichts – egal, ob hier mehr oder weniger “mathematische Vernunft” zum Tragen kommt.

    Zudem scheint mir die Vorstellung von Komplexitätsreduzierung (und die Verkennung der gleichzeitigen Steigerung derselben) etwas idiosynkratisch zu sein. Das leuchtet mir jedenfalls überhaupt nicht ein.

    Mein Fazit:: Wenn “mathematische Vernunft” (bei der kommerziellen Softwareentwicklung) nur helfen sollte, wenn “Change” ausgeschlossen wird, dann läuft der Rekurs auf Mathematik wohl ins Leere :-)

  • kybernetiks  On April 27, 2014 at 12:10 AM

    hmmm… das behandeln wir ja schon am andern Ort: mir geht es nicht um “gesellschaftlich” im Sinne von Luhmann, sondern im Sinne einer Techno-Logie, die bei Luhmann vollständig fehlt: eine Theorie der Produktivkraftentwicklung. Das hat nichts mit irgendwelchem Geschwafel zu tun, sondern mit konkreten Maschinen, die wir konstruieren und re-konstruieren können.
    Ich meine beispielsweise meinen PC, der vor wenigen Jahren noch unvorstellbar gewesen ist, und dass ich ihn programmieren kann, auf eine Art, die noch vor wenigen Jahren unvorstellbar gewesen ist. Ich meine ganz konkrete Technik, wie sie in der Kybernetik beschrieben wird.
    Ich meine nicht, das konfuse Geschwätz von Bankmanagern, die ein Lösung für ihre “Probleme” in Form von Pfichtenheften über legalen Diebstahl brauchen ..

    • Valonqua  On April 27, 2014 at 10:56 AM

      Guten Morgen, Rolf!

      “Geschwafel” hin oder her, ich meine, daß es einfach keine gute Entscheidung ist, “technische Artefakte” (re)konstruieren oder anwenden zu wollen, ohne auf irgendeine Weise “Soziales” (und damit meine ich insbesondere “technische Kommunikation” – völlig egal, wie sie nun genau konzipiert wird!) zu berücksichtigen.

      * Ohne mathematische, naturwissenschaftliche oder technische “Theorien”,
      * ohne wissenschaftliche, technische, mathematische, etc. Diskussionen,
      * ohne “Wissen” (in Textform, als vielfältige Zeichungen, in Gesprächen, als Prototypen, usf.)
      * und heutzutage oftmals sogar: ohne längere (technische) Ausbildung
      etc.
      ist es für unsere Spezies kaum möglich anspruchsvollere Artefakte zu bauen / benutzen.

      Implikation: Einfache Tools können auch bspw. höhere Primaten wie Schimpansen verwenden, aber der Wissenstransfer zwischen den Generationen klappt bei diesen Primaten – mangels entwickelter Semiosefähigkeiten – irgendwie nicht gut, so daß auch ihre Technik-Entwicklung rudimentär bleibt

      Meine These: Je komplexer die Semiose- und Medienfähigkeiten einer Spezies sind, desto komplexer kann auch ihre Technik-Entwicklung werden.

      Wenn dagegen alles, was mit Kommunikation, Wissen, Semiose, Medien, etc. zu tun hat, als “Geschwafel” ausgeklammert wird, dann wird m.E. auch die Technik-Erklärung irgendwie zutiefst “idiosynkratisch” (z.B. ist Deine Skizzierung des Programmierens nur ein “idiosynkratischer Sonderfall”, der zur Generalisierung nicht taugt).

      Natürlich kannst Du der Ansicht sein, daß alles, was nicht mit “maschinennaher”
      Programmierung zu tun hat (sagen wir: betriebssystemnahe Programmierung oder “embedded systems programming”, u.ä.), keine richtige Programmierung ist. Aber wenn Du alle Programmierung auf höheren Ebenen ausblendest, dann blendest Du den “überwiegenden” Teil “aller” Programmierung aus.
      Das macht freilich genauso viel Sinn, wie wenn Du texten würdest, daß alles Schreiben, das nicht “exklusiv privates Tagebuch”-Schreiben darstellt, als irrelevanter Noise in einer Theorie des Schreibens eskamotiert werden soll, um dann formulieren zu können, daß Schreiben eine “materielle Informbringung” repräsentiert, für die Kommunikation / Soziales keinerlei Relevanz besitzt (wobei dann wiederum ausgeblendet werden muß, daß das Lernen einer Sprache fast stets an Soziales und damit an Kommunikation rückgebunden ist. Ansonsten wird daraus nur ein idiosynkratisches “Gekritzel” mit kaum nachvollziehbarer Semantik. Nur en passant: Medienformen – Gesprochenes, Geschriebenes, Gezeichnetes, etc. – zeichnen sich aber im Wesentlichen dadurch aus, daß sie sich in anderen Kontexten “interpretieren / verwenden” lassen. Dieses sog. “grafting” [Derrida] ist eine wesentliche “Voraussetzung” ihres Funktionierens – und das verweist unvermeidlich auf De- und Re-Kontextualisierung in zukünftigen sozialen Anschlüssen, z.B. Lektüren.).

      Kann man solche Idiosynkrasien texten? Aber klar doch.

      Ist das jedoch sinnvoll? Nein, weil einfach der idiosynkratische Charakter derart ausgeprägt ist, daß eine Generalisierung kaum möglich ist. Und “idiosynkratische Sonderfälle” zu Referenzmodellen (à la: “der Einzelne und sein Tool / seine Maschine”) stilisieren zu wollen, leuchtet (zumindest: mir) nicht ein.

      Zudem mußt Du m.E. Soziales / Kommunikatives bei technischen Prozessen “stets” massiv voraussetzen (gerade als mitlaufendes Wissen: Was will ich mit welchen Bauteilen wie bauen? Wo erwerbe ich diese Bauteile? Wie setze ich sie zusammen? Oder wie erfahre, wie ich das Ganze zu benutzen habe? usf.). Ohne Soziales / Kommunikation lassen sich solche Fragen m.E. schlicht und einfach “nicht beantworten”, so daß man auch so gut wie gar nichts konstruieren (oder benutzen) könnte.

      Daher krankt mir Dein Technik-Ansatz vor allem an zwei Aspekten:
      * Aspekt 1: am Versuch, idiosynkratische Fälle generalisieren zu wollen (Deine Programmierungskonzeption ist dafür wohl ein gutes Beispiel)
      * Aspekt 2: am Dilemma, das, was Du komplett ausklammern möchtest, massiv voraussetzen zu müssen.

      Ich verstehe zwar, daß Du auf eine “rein technische” Technik-Theorie abzielst, die nicht durch Psychologisches, Soziales, Biologisches, etc. getrübt werden soll. Aber das ist so, als würdest Du eine “rein mediale Medien-Theorie” entwickeln wollen, die gerade von Sozialem völlig zu abstrahieren gedenkt. Oder man könnte auch – mit Blick auf Sprachliches – an eine rein linguistische Linguistik” denken, die bspw. den Rekurs auf Soziales völlig zu vermeiden sucht.

      Aber das scheint mir in allen Fällen eine hochartifizielle “Stilisierung” zu sein, die insbesondere an dem oben skizzierten Aspekt 2 krankt [so daß auch vieles nicht mehr erklärbar wird].

      Meine Zusatzthese läßt sich daher wie folgt formulieren: “Egal, von welchem Medium, egal, von welcher Technik man – bei der Spezies “Mensch” – ausgeht, ohne die Berücksichtigung von Sozialem (egal wie diese Dimension nun konzipiert wird!) lassen sich viele medialen und technischen Konstruktions- und Gebrauchsweisen nicht sinnvoll erklären.
      Und das schließt auch die Medien- und Technik”evolution” ein, die mit Bick auf eine “Sozio-Evolution” stattfinden, aber “nicht unabhängig” von jeglicher Sozio-Evolution.

Feedback ist erwünscht!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: