Keine Entwicklung bei der SW-Entwicklung



  • Warum gibt es bei der Softwareentwicklung eigentlich keine großen Neuerungen mehr? Objektorientierte Programmierung ist ja schon relativ alt und wird wohl immer noch am häufigsten eingesetzt. Es gab mal einen Hype um Aspektorientierte Programmierung, aber viel kam dann doch nicht und die ganzen Multithreading-Sachen brachten auch nicht viel großes Neues. Ist objektorientierte Programmierung schon annähernd das beste zur Programmierung?



  • Wenn du dir aktuelle Forschungen ansiehst, dann findest du da eine Menge Neuerungen. Was das Beste ist, kommt immer auf den Anwendungsfall an.



  • Was ich nicht verstehe ist, warum man die Softwareentwicklung nicht auf eine formal solidere Basis stellt.
    Es gibt einen Haufen selbsternannte Community-Experten, die in ihren Büchern allerlei Begrifflichkeiten, "Do's" und "Dont's" erfinden, so wachsweicher Kram wie Clean-Code, auf den sich dann die ganzen Code Monkeys stürzen und das als absolute, in Stein gemeiselte Wahrheit sehen ("wer nicht 'Clean-Code' macht, schreibt schlechten Code").

    Es muss doch aber, nach dem Vorbild der Mathematik möglich sein, ein formales Gerüst für verschiedene SW-Entwicklungsparadigmen aufzubauen, anhand derer man dann jeweils gewisse Theoreme ableiten kann, die Code-Analyse / Architekturentwurfsentscheidungen etc. erlauben respektive untermauern.

    Ich denke, dass dies irgendwann noch kommt. Ich träume von dem Tag, an dem formale Methoden verstärkt Einzug in die SW-Entwicklung halten und das dann von Firmen auch aufgenommen wird. Oneday...



  • MTOOAO... schrieb:

    Ist objektorientierte Programmierung schon annähernd das beste zur Programmierung?

    LOLAlter schrieb:

    ...so wachsweicher Kram wie Clean-Code

    Ich denk gerade spontan an Magento. Allerdings würde IMHO CC "alles neu" bedeuten!



  • LOLAlter schrieb:

    Ich denke, dass dies irgendwann noch kommt. Ich träume von dem Tag, an dem formale Methoden verstärkt Einzug in die SW-Entwicklung halten und das dann von Firmen auch aufgenommen wird. Oneday...

    OOP ist formal. Vieles aus der funktionalen Programmierung ist formal. Das kann ich auch auf andere Sprachen uebertragen, andere Architekturen uebertragen/anpassen.



  • ProgChild schrieb:

    Wenn du dir aktuelle Forschungen ansiehst, dann findest du da eine Menge Neuerungen.

    Was zum Beispiel? Was wird davon oft angewendet?



  • LOLAlter schrieb:

    Es muss doch aber, nach dem Vorbild der Mathematik möglich sein, ein formales Gerüst für verschiedene SW-Entwicklungsparadigmen aufzubauen, anhand derer man dann jeweils gewisse Theoreme ableiten kann, die Code-Analyse / Architekturentwurfsentscheidungen etc. erlauben respektive untermauern.

    Das ist (und imo, bleibt) leider nur Wunschdenken. Du bist ja bei weitem nicht der erste, der auf die Idee kommt. Wahrscheinlich jeder Informatik Professor wird dir sagen dass es traumhaft wäre, Softwareentwicklung auf formalere Basis stellen zu können, um bestimmte Sachen einfach beweisen zu können, bestimmte Idiome und Paradigmen objektiv mit anderen vergleichen zu können und am Ende sagen zu können: "X ist für Problem Z besser als Y" ohne Flamewars zu erzeugen, etc.

    Speziell bei Algorithmen und Datenstrukturen ist das ja in begrenztem Maße schon sehr gut möglich (für ein bestimmtes Ausgangsproblem und gewünschte Zielanforderungen lassen sich i.d.R. die objektiv am besten geeigneten Algorithmen und Datenstrukturen aus einer vorhandenen Menge auswählen).

    Für Softwareentwicklung im Großen (Paradigmen, Architektur, Konfigurationsmanagement, Entwicklungsmethodiken, etc.) aber nicht, ganz einfach weil die Komplexität und die Möglichkeiten, wie verschiedenste hochkomplexe Systeme miteinander interagieren können einfach jede umfassende formale Beschreibung aufgrund der Komplexität unmöglich macht.

    Deswegen wirds denke ich für ne extrem lange Zeit dabei bleiben, dass korrekte Entscheidungen nur durch Erfahrung getroffen werden können.



  • TravisG schrieb:

    Für Softwareentwicklung im Großen (Paradigmen, Architektur, Konfigurationsmanagement, Entwicklungsmethodiken, etc.) aber nicht, ganz einfach weil die Komplexität und die Möglichkeiten, wie verschiedenste hochkomplexe Systeme miteinander interagieren können einfach jede umfassende formale Beschreibung aufgrund der Komplexität unmöglich macht.

    Ich denke das liegt eher am Mangel an objektiven Kriterien.

    Bei Algorithmen hat man objektive Vergleichskriterien: Laufzeit, Platzbedarf. Das kann man grob als „Qualität des Programms“ auffassen. Aber genau darauf haben die verschiedenen Paradigmen und Architekturen keinen Einfluss.
    Stattdessen legt man Wert auf Dinge wie Lesbarkeit, Wartbarkeit, Entwicklungszeit. All das kann man nicht objektiv bestimmen oder für verschiedene Entwicklungsmethoden vergleichen.



  • Ein Punkt ist sicherlich auch, dass die etablierten Programmierparadigmen inzwischen eine enorme Infrastruktur hinter sich haben. Die Leute kennen sie, es gibt Werkzeuge fuer diese Paradigmen und so weiter. Wenn etwas neues kommen soll, dann muss es schon enorm viel besser sein, damit es derart etablierte Ideen verdraengen kann.



  • Beispiele? schrieb:

    Was zum Beispiel?

    Google: software technologie publikationen



  • ProgChild schrieb:

    Beispiele? schrieb:

    Was zum Beispiel?

    Google: software technologie publikationen

    Tolle Müllantwort. Jeder Student/Doktorand kann irgendwelches Zeugs als "aktuelle Forschung" dazu auf ein Papier schreiben.

    Musst schon diese Frage richtig beantworten.

    Was wird davon oft angewendet?

    Antwortet ihr hier immer nur ausweichend, weil ihr eigentlich doch keine Ahnung habt aber trotzdem mal was schreiben wollt und so tun wollt, als ob ihr die Experten für aktuelle Forschungen seid. Was ist so schwer an konkreten Beispielen. 🙄



  • So jetzt kommt naives Geschwätz eines Informatik-Studenten:
    Man dachte auch mal, Funktionen seien nicht gut beherrschbar. Dann kam die Infinitesimalrechnung und deren Durchbruch konnte sich vorher auch niemand vorstellen...
    Irgendwann kommt ein Newton / Leibnitz der Informatik (womöglich ich 🤡 ) und inferiert aus algorithmischen und architektonischen Softwarestrukturen Theoreme, die das Software Engineering gehörig auf den Kopf stellen.

    😋 👍



  • Die Aussage, die ich machen wollte war: Bloß weil gerade im Moment nicht die nächste Hype-Sau durchs Dorf getrieben wird, herrscht noch lange nicht Stillstand. Irgendwann vor einiger Zeit war doch in der iX das Thema Domain Specific Languages. Wäre ein Beispiel. Wie viel das eingesetzt wird, sagt nichts über die Qualität aus.

    Und bezüglich Objekt Orientierung ein Zitat des Smalltalk Erfinders:

    I invented the term object oriented, and I can tell you that C++ wasn’t what I had in mind.

    Alan Kay

    Die Frage wäre also: Was ist denn überhaupt Objekt Orientierung genau? Das Thema ist mittlerweile so diffus, dass Objekt Orientierung etwas bedeutet von "Meine Programmiersprache enthält das Schlüsselwort class." bis zu "Ich male immer ein UML-Diagramm, bevor ich programmiere." Genau die konkrete Herangehensweise gibt es da garnicht. Also was soll da jetzt genau optimal dran sein?



  • iX das Thema Domain Specific Languages. Wäre ein Beispiel.

    Alles nach Lisp ist nicht neu. Leider hat man sich nach dem KI-Hype von der Sprache abgewandt und muss erst wiederentdeckt werden um voranschreiten zu koennen.



  • knivil schrieb:

    Alles nach Lisp ist nicht neu.

    Wie wärs mit statischer Typisierung?



  • Der Gedanke, dass Softwareentwicklung irgendwie stehen geblieben ist, ist mir auch schon häufiger gekommen. Klar gab und gibt es immer wieder Neuerungen wie neue Sprachen, neue oder wiederentdeckte Konzepte. Aber im wesentlichen läuft es doch immer noch nach dem gleichen Schema ab wie in den Anfängen. Man erstellt Instruktionen in einer für Menschen mehr oder minder verständlichen Syntax, um dem Rechenknecht mitzuteilen, wie er was zu tun hat.

    Was sich aber gewaltig geändert hat, ist das ganze Umfeld der SW-Entwicklung. Internet, Big-Data, Cloud und was sonst noch alles kommen mag. Babylonische Sprachenvielfalt, DSL und schlimmeres.

    Ich würde gerne sagen, die SW-Entwicklung sei bunter geworden, aber das trifft es meiner Meinung nach nicht. Eher gibt es heute 16.384 Graustufen anstatt nur 256 vor 20 Jahren.


Anmelden zum Antworten