warum wird man eigentlich nie eine fehlerfreie komplexe software haben ?



  • ja das ist eigentlich die grundfrage, wahrscheinlich mehr philosophisch zu beantworten, denn anscheinend hat ja unser denken damit zu tun.

    Welche Rolle spielen eigentlich die nichtdeterministischen Fehler ?

    Wie bilden diese sich in Algorithmen aus ?

    Bitte um eine kreative und lehrreiche Diskussion..



  • bitte die frage aus dem topic im text wiederholen, sonst tut man nicht quoten können.

    warum wird man eigentlich nie eine fehlerfreie komplexe software haben ?

    weil du komplex als fehlerbehaftet definierst. so einfach ist das.

    eine software ist dann nicht komplex (,sondern trivial?), wenn man sie ohne fehler schreiben kann. und fertig ist die theorie, über die sich philosophen lange die kopfe heiss reden können. und sich wirklich wundern, warum das so ist.

    tut mir leid, die interessante diskussion bereits im keim zu erwürgen, aber dieses wortspiel ist nunmal der kern der angelegenheit und weitere statistiken sind wissenschaflichistische augenwischerei.

    warum werden computer nue intelligent? weil intelligenz als das definiert ist, was menschen haben und computer nicht. man beachte, daß die definition von intelligenz stets zurückweicht, wenn der rechner was schafft. vor 150 jahren ware es ein zeichen von intelligenz, wenn jemand 10-stellige zahlen multiplizieren konnte. da man feststellte, daß rechner das prima können, ist der intelligenzbegriff zurückgewichen.

    ich bin aufgewachsen mit dem trost aller basic-programmierer, daß es wissenschaftlich bewiesen unmöglich sei, fehlerfreie programme zu schreiben. meine nachfragen, wie der beweis aussehe, führten stets ins leere. der qualitätsgewinn beim umstieg von c++ als sprache und c als denke zu echtem c++ ist so ungemein, daß ich schonmal sage, daß verdammt viel, was vor 10 jahren für schlicht unmöglich gehalten wurde, jetzt geht. außerdem kann ich software fehlerfei schreiben, die der 10-jährige nachbarsjunge für komplex hält.

    vost schrieb:

    ja das ist eigentlich die grundfrage, wahrscheinlich mehr philosophisch zu beantworten, denn anscheinend hat ja unser denken damit zu tun.

    nee. sag irgend ein festes komplexitätsmaß, und irgendwann wird einer so komplexe software schreiben. die sprachen werden immer mächtiger und die kids lernen immer früher coden und die tutorials werden immer besser (haben afair die lehrbücher in der qualität schon überholt). und da ist noch viel luft drin. ganz besonders viel in den programmierparadigmen.

    Welche Rolle spielen eigentlich die nichtdeterministischen Fehler ?

    was ist das? ist das, wenn ich auf . gedrücht habe und ein , kommt raus, weil erdstrahlen mein ram verseucht haben? die würde man als zufällig auftauchend bewerten und sie würden nicht garantieren, daß ein belibig großes strück software diesen fehler hat, sondern nur eine gesamtfehlerwahrscheinlichkeit angeben. es könnte trotzdem immer sein, daß ein stück software fehlerfrei ist.



  • warum werden computer nue intelligent? weil intelligenz als das definiert ist, was menschen haben und computer nicht. man beachte, daß die definition von intelligenz stets zurückweicht, wenn der rechner was schafft. vor 150 jahren ware es ein zeichen von intelligenz, wenn jemand 10-stellige zahlen multiplizieren konnte. da man feststellte, daß rechner das prima können, ist der intelligenzbegriff zurückgewichen.

    ich freu mich auf die Zeit wenn Computer oder Roboter (Computer mit Beinen 😃 ) mehr können als der Mensch...dann gibts keine Intelligenz mehr? 😉

    Intelligenz ist eher für ein Problem eine Lösung finden.

    ich bin aufgewachsen mit dem trost aller basic-programmierer, daß es wissenschaftlich bewiesen unmöglich sei, fehlerfreie programme zu schreiben. meine nachfragen, wie der beweis aussehe, führten stets ins leere. der qualitätsgewinn beim umstieg von c++ als sprache und c als denke zu echtem c++ ist so ungemein, daß ich schonmal sage, daß verdammt viel, was vor 10 jahren für schlicht unmöglich gehalten wurde, jetzt geht. außerdem kann ich software fehlerfei schreiben, die der 10-jährige nachbarsjunge für komplex hält.

    wird wieder Zeit für nen wechsel...so....villeicht....C#.... 😃



  • ich bin gerade wieder bei nem rückschwung nach c++. die ganzen ausflüge nach php, perl, ruby, python und so waren eigentlich nur, weil's da bessere libs gibt. das coden selber war immer doof.



  • Online schrieb:

    ich freu mich auf die Zeit wenn Computer oder Roboter (Computer mit Beinen 😃 ) mehr können als der Mensch...dann gibts keine Intelligenz mehr? 😉

    dann gibts ruck zuck keine menschen mehr.

    aber kurzzeitig wird es so kommen, daß dann kein mensch mehr stolz auf intelligenz ist, sondern man ist stolz auf gefühl. eq statt iq! dem rechner werden seifenopern am sockel vorbeigehen (das ist nämlich ein zeichen von intelligenz im heutigen sinne). dem menschen nicht, und er wird sogar stolz darauf sein.

    genau genommen wird der intelligenzbegriff vorher wachsweich sich der bedeutung der emotionalen empfänglichkeit anpassen, ohne daß die masse der leute es bemerken. auch bei intelligenten (im heutigen sinne) rechnern, werden sie (im zukünftigen sinne) nicht intelligent sein. falls du diesen absatz nicht raffst, was nicht unüblich wäre, dann ignoriere ihn einfach. dein "dann gibts keine Intelligenz mehr?" deutet stark darauf hin, daß ich gerade zeit verschwende.

    Intelligenz ist eher für ein Problem eine Lösung finden.

    so sagt man vielleicht heute gerne. vor lisp sagte man, intelligenz sei, wenn man lernen kann. und zwischenzeitlich sagte man, intelligenz sei, wenn man wissen aus einem bereich in einen anderen übertragen könne.



  • wollen wir mal annhemen, der turing-test sein ein test auf intelligenz?
    wenn eine maschine im dialog mit einem menschen nicht von einem menschen unterschieden werden kann, ist sie intelligent.

    zum einen ist diese intelligenzdefinition genau meine grund-these...

    zum anderen läßt etwas interessanen ableiten. stellen wir uns mal einen intelligenten rechner vor, der total geiles fachwissen hat und alles mögliche über kunst, philosophie, ethik, kulturgeschichte, mathematik, autos, sport und so weiß. und noch höflich und zivilisiert ist. man kann beliebige fachdiskussionen mit ihm betreiten und ist immer wieder ob seiner fachkenntnis erfreut und es kommt nie ein böses wort auf und man kann ihn nicht vom menschen unterscheiden. soweit so gut. nachdem 100 wissenschaftler je 1000 gespräche mit ihm geführt haben, und er bestand den turing-test immer, wird er der öffentlichkeit vorgestellt.

    der bot wird frühzeitig beleidigt. aber er geht auf beleidigungen nicht ein. er wird für einen idioten gehalten. man sagt "jo, er ist zwar fachmann auf allen wisssenschaften, aber zu doof zu bemergen, wenn man ihn veralbert".
    uih, nachtigall, ich hör' dir trapsen. das volk setzt die empfänglichkeit für beleidigungen bereits höher, als umfassendes wissenschaftliches fachwissen.

    ganz anderes, aber auch erschreckenden beispiel:
    DER TASCHENRECHNER-TURINGTEST
    wollen wir mal die kommunikation darauf beschränken, daß der fragestellen nur multiplizier-aufgaben bis 8 stellen stellen darf und der befragte darf nur mit zahlen anzworten. der fragesteller soll feststellen, ob am anderen ende ein mensch ist.
    er wird viele tests machen und denjenigen, der manchmal einen fehler macht, als menschen erkennen. derjenige, der fehlerfei ist, ist der dumme bot. k, kluge taschenrechnercoder bauen einen rechner, der genausooft fehler macht, wie ein mensach. ok, der auswerter macht statistiken, welche fehlerklassen, vertauscher, vertipper, einfügungen, auslassungen wann vorkommen, ob ermüdungen sichtbar werden, also die fehlerquote über einen zeitverlauf erfassen und verrechnen usw...
    dauert lange, bis der rechnercoder einen so perfekten rechner erschaffen kann, daß der tester in nicht vom menschen unterscheiden kann.

    lustigerweise war die hauptarbeit daran, den an sich guten rechner schlecht zu machen. der mensch macht fehler und ist auch noch stolz darauf. er entscheidet emotional, glaubt an wünschelruten und götter, statt nachzudenken, und ist tatsächlich stolz darauf. und solange die computer nicht ähnlich schlimme fehler haben, wird der mensch sie als doof bezeichnen. nun wäre es aber wirtschaflicher unfug, bots absichtlich fehlerhaft zu bauen.

    ürbrigens sind elektrische mönche wesentlich effektiver als biologische. die innigkeit ihres glaubes, die zweifelsfreiheit, die askese und nicht zuletzt ihr unterhalt sind einfach nur phänomenal den biologischen mönchen überlegen. und über sachen wie das zölibat bracht man sich auch keine gedanken zu machen.



  • volkard schrieb:

    ... dein "dann gibts keine Intelligenz mehr?" deutet stark darauf hin, daß ich gerade zeit verschwende.

    ich hab das nur aus deiner Definition über Intelligenz abgeleitet.
    Du sagst: Intelligenz ist das was der Mensch hat und der Computer nicht
    ich sag: gut dann, wenn der Computer das kann was der Mensch kann ist die Intelligenz passe

    Übrigens, zu behaupten das der Computer niemals Gefühle haben wird, ist genau so schlüssig wie: es gibt keine anderen Lebewesen im Universum.
    hatten wir schon alles irgendwie: Erde ist ne Scheibe, Alles dreht sich um die Erde. Es gab mal ne Zeit da hab ich gesagt, wozu brauch ich 4 GB Festplatte...jetzt hab ich 100 und das reicht immer noch nicht.
    Alles ziemlich Ansichtssache und extream relativ.

    Übrigens gibt es genau 2 Richtungen wie man mit einem Problem umgehen kann:
    Instinktiv oder Intelligent

    Ein Computer, der Intelligent handeln soll muss erstmal frei vom Menschen werden.



  • volkard schrieb:

    wollen wir mal annhemen, der turing-test sein ein test auf

    Schon mal John Castis "Das Cambridge Quintett" gelesen? Falls, nein. Solltest du imo mal tun und dich dabei direkt mit an den virtuellen Tisch setzen.

    ürbrigens sind elektrische mönche wesentlich effektiver als biologische. die innigkeit ihres glaubes, die zweifelsfreiheit, die askese und nicht zuletzt ihr unterhalt sind einfach nur phänomenal den biologischen mönchen überlegen

    Da frage ich mich doch, ob du zuviel oder zuwenig Stanislaw Lem gelesen hast 😉

    volkard schrieb:

    warum wird man eigentlich nie eine fehlerfreie komplexe software haben ?

    weil du komplex als fehlerbehaftet definierst. so einfach ist das.

    Sehe ich anders. Zum einen habe ich gelernt, dass der Nachweis der Korrektheit für nicht triviale Programme entweder nicht möglich oder aber nicht in vernünftiger Zeit durchzuführen ist. Also setzt man statt auf formale Beweise erstmal auf Tests. Ein Test kann im Allgemeinen nun aber nur die Anwesenheit, nicht aber die Abwesenheit von Fehlern zeigen. Da ich kein Mittel habe die Fehlerfreiheit zu garantieren und da es keinen perfekten SE-Prozess gibt, muss ich also Fehler annehmen.

    Selbst wenn es das perfekte formale Beweissystem gäbe oder die supermächtige Sprache mit den tollsten Abstraktionsmitteln, würde das imo immer noch nichts nutzen. Letztlich brauche ich immer eine formale Spezifikation eines Problems, dass ursprünglich irgendwo außerhalb auftritt. Da ich diese Spezifikation aber nicht geschenkt bekomme, muss ich sie aus irgendwas herleiten. Und genau in diesem Schritt können imo immer Fehler auftreten.
    Dieser Punkt der dafür verantwortlich ist, dass auch in vielen Jahren noch Programmierer gebraucht werden (statt einfach den Rechner programmieren zu lassen) ist imo gleichzeitig auch dafür verantwortlich, dass es niemals fehlerfreie komplexe Software geben wird.



  • ich finde dieses Wort niemals sollte verboten werden! Wie willst du beweisen, das etwas niemals gehen wird?

    nehmen wir mal an ich kann alle möglichkeiten simulieren und somit nachweisen das alle möglichen Möglichkeiten zu keinen Fehler führen und schon wäre dieses "niemals" aufgehoben...natürlich stellt sich hier auch die Frage ob eine Software sich noch komplex schimpfen kann wenn ich sie auf jede Möglichkeit eines Fehlers testen kann.



  • Online schrieb:

    ich finde dieses Wort niemals sollte verboten werden! Wie willst du beweisen, das etwas niemals gehen wird?

    nehmen wir mal an ich kann alle möglichkeiten simulieren und somit nachweisen das alle möglichen Möglichkeiten zu keinen Fehler führen und schon wäre dieses "niemals" aufgehoben...natürlich stellt sich hier auch die Frage ob eine Software sich noch komplex schimpfen kann wenn ich sie auf jede Möglichkeit eines Fehlers testen kann.

    Woher willst du wissen, dass die Simlulation nicht selbst fehlerhaft ist und somit nicht alle Fehler finden kann/würde?



  • Online schrieb:

    Übrigens, zu behaupten das der Computer niemals Gefühle haben wird, ist genau so schlüssig wie: es gibt keine anderen Lebewesen im Universum.

    ok, ich behaupte es nicht. ich schrieb nur, daß es wirtschaftlich nicht sinnvoll ist. wenn man dem computer gefühle einbaut, dann wird der mensch andere mensch-eigenschaften finden, ihn ihn über den computer erheben. notfalls mit sprüchen wie "intelligenz kommt aus der seele" und dazu wird behauptet, rechner könnten niemals eine seele haben und menschen hätten alle eine.

    HumeSikkins schrieb:

    Schon mal John Castis "Das Cambridge Quintett" gelesen? Falls, nein. Solltest du imo mal tun und dich dabei direkt mit an den virtuellen Tisch setzen.

    kenne ich nicht. werde es natürlich lesen, wenn es mir geschenkt wird.

    HumeSikkins schrieb:

    Da frage ich mich doch, ob du zuviel oder zuwenig Stanislaw Lem gelesen hast

    zu wenig.

    HumeSikkins schrieb:

    Sehe ich anders. Zum einen habe ich gelernt, dass der Nachweis der Korrektheit für nicht triviale Programme entweder nicht möglich oder aber nicht in vernünftiger Zeit durchzuführen ist.

    nebenkriegsschauplatz. nur weil es nicht einfach ist, die korrektheit zu beweisen, kannste doch nicht deshalb die korrektheit leugnen.

    HumeSikkins schrieb:

    Da ich kein Mittel habe die Fehlerfreiheit zu garantieren und da es keinen perfekten SE-Prozess gibt, muss ich also Fehler annehmen.

    und weil ich nicht nachweisen kann, daß du jünger als 80 jahre bist, muss ich annehmen, daß du älter bist. das ist doch schmarrn. ich kann übrigens mangels verläßlicher weiterer informationben in der tat nicht nachweisen, daß du jünger als 80 jahre bist.

    HumeSikkins schrieb:

    Da ich diese Spezifikation aber nicht geschenkt bekomme [...] Dieser Punkt der dafür verantwortlich ist, dass auch in vielen Jahren noch Programmierer gebraucht werden (statt einfach den Rechner programmieren zu lassen)

    och, ich sehe den bedarf bereits darin, daß man einfach guten code braucht, um zu raffen, was geschieht. gute coder vereinfachen (nicht unbedingt durch beschneiden, sondern auch durch umstrukturieren, schaffen von begriffen, abstrahieren-begreifen-konkretisieren und so). und zwar auf allen ebenen. von der kinderkram wie der systemanalyse bis hoch zu wichtigen funktionen namens areAllTrue().



  • nehmen wir mal an ich kann alle möglichkeiten simulieren und somit nachweisen das alle möglichen Möglichkeiten zu keinen Fehler führen und schon wäre dieses "niemals" aufgehoben

    das kannst du aber nicht. das würde eine universelle turingmaschine verlangen, die aber aus gründen des halteproblems nie möglich sein würde.



  • volkard schrieb:

    HumeSikkins schrieb:

    Da ich kein Mittel habe die Fehlerfreiheit zu garantieren und da es keinen perfekten SE-Prozess gibt, muss ich also Fehler annehmen.

    und weil ich nicht nachweisen kann, daß du jünger als 80 jahre bist, muss ich annehmen, daß du älter bist. das ist doch schmarrn.

    Jup. Allerdings ist es imo auch nicht vergleichbar. Ich habe den Schluss ja nicht gezogen, weil es nur schwarz-und-weiß bzw. true-false auf der Welt gibt sondern weil es statisch gesehen wahrscheinlich ist, dass wenn n Leute m Vorstellungen von einem Problem p haben und dieses mittels eines Prozesses q, den sie aus einem Buch b haben und auf i verschiedene Weisen interpretieren, in eine Lösung l transformieren, dass dabei dann Fehler auftreten (wie viele Fehler enthält bereits dieser einfache Satz?).
    Es ist ja nicht nur der Quellcode der fehlerfrei sein muss. Jeder Schritt bis dahin muss ebenfalls fehlerfrei sein.
    Auf der anderen Seite kannst du hingegen mich einfach hernehmen, aufschneiden, C14-Methode draufwerfen und schwupps kannst du verlässlich sagen, ob ich über oder unter 80-Jahre alt bin/war.



  • HumeSikkins schrieb:

    weil es statisch gesehen wahrscheinlich ist, dass wenn n Leute m Vorstellungen von einem Problem p haben und dieses mittels eines Prozesses q, den sie aus einem Buch b haben und auf i verschiedene Weisen interpretieren, in eine Lösung l transformieren,

    ahso, sobald die wahrscheinlichkeit für einen fehler über 98% liegt, postulierst du die existenz dessen.



  • [OT] Mit der C-14 Methode kannst Du nicht das Alter eines Lebewesens bestimmen, sondern nur, wie lange der Tod her ist - Wollts nur anmerken, aber bei Deinem Beispiel gehts ja auch eigentlich nur ums Prinzip[/OT]



  • IMHO: theoretisch ist komplexe, fehlerfreie Software möglich, praktisch nicht.

    Ich denke schon, dass es in der Theorie möglich ist, auch komplexe, fehlerfreie Software zu schreiben. Wenn ich für jedes winzige Detail 986349786 Unit-Tests erstelle (die hoffentlich fehlerfrei sind 😉 ), an jedem Codestück drei Tage rumüberlege, ein absolut gutes Design (z.B. OO) 2 Jahre lang ausarbeite und außerordentlich gewissenhaft umsetze, wobei jeweils 5 Coder an einem PC hocken und und einem sechsten ganz genau auf die Finger schauen, kann man das Risiko von Fehlern, die selbst bis zum Release nicht entdeckt werden, so massiv minimieren, dass man davon ausgehen können müsste, dass das Programm fehlerfrei ist.

    Das kleine Problem dabei ist nur: es ist nicht umsetzbar/vertretbar.
    Und ein weiteres Problem, was bereits erwähnt wurde: Man kann die Fehlerfreiheit einer komplexen Software einfach nicht beweisen. Aber reicht es nicht vielleicht schon, dass die Wahrscheinlichkeit für verbleibende Fehler kleiner ist als die, den Jackpot im Lotto beim ersten mal zu knacken?

    Was ich sagen will ist, dass wir die Mittel dazu schon haben, aber in der Praxis ist dieser Aufwand einfach nicht möglich. Ich zweifle aber keine Sekunde daran, dass es theoretisch möglich ist, absolut fehlerfreie Software zu schreiben.

    Das Problem ist nur, ich hab noch nie eine gesehen. 😃



  • Online schrieb:

    ich finde dieses Wort niemals sollte verboten werden! Wie willst du beweisen, das etwas niemals gehen wird?

    vollständige induktion ?
    2^n ist immer untermenge von n^2 ( musste ich schon 2 semenster in meinem studium beweisen )

    IMHO:
    menschen machen fehler, deswegen haben wir uns so weit entwikelt. würden menschen keine fehler machen wären wir noch in der steinzeit, weil man nur aus fehlern lern.

    damit compis sich so entwickeln wie menschen, müssten sie fehler machen. aber wenn du einprogrammierst das das proggy fehler macht, sind es keine fehler mehr, weil man sie erwartet. dann es ist eine definition des programms, dass es fehler macht. somit sind das keine fehler mehr.



  • Man müsste sie nur zufällige Fehler machen lassen und das ist durchaus nicht unmöglich. Gab sogar irgendein Computerspiel, dass darauf basiert hat.



  • ist bewiesen, daß, wenn man oft genuf würfelt, eine 6 dabei ist?

    ja, für praktische belange ist es sinnvoll, anzunehmen, daß jedes größere programm fehler hat.



  • welches pc spiel mit einer ki basiert nicht darauf ?
    aber tatsache ist auch das man mit einem programm keinen 100% zufall erzeugen kann

    @volkard: da die wahrscheinlichkeit für eine 6 nicht gleich 0% ist, ist es bewiesen ( laut definition )


Log in to reply