Bugs in der STL
-
knivil schrieb:
Ich programmiere wahrscheinlich anders.
Oder vielleicht hast du einfachere Aufgabenstellungen. Ich glaube, wir müssen nicht darüber diskutieren, dass die totale Bugfreiheit ab einer gewissen Projektgrösse unrealistisch (bzw. unwirtschaftlich) wird. Wobei die Implementierung eines C++-Compilers definitiv als sehr komplexeres Projekt aufgefasst werden kann.
Ansonsten gehts hier weiter
-
Viel Zustand ~ Viel Debuggen
Wenig Zustand ~ Wenig DebuggenPlusminus natürlich, aber tendenziell. Wer also beispielsweise viel Mathekram macht, der braucht tendenziell weniger Zustand und muss darum auch weniger debuggen.
Es kommt daher nicht so sehr darauf an wie man programmiert, sondern vielmehr was man programmiert...
Meine Erfahrung besagt zusätzlich, dass die Viel-Zustsand-Fälle gehasst werden wie die Pest und von den Programmierern dann öffentlich belächelt werden, statt zuzugeben, dass die Abneigung eher von den vielen Fehlerfällen herrührt, die selbst ihre Göttlichkeit nicht vermeiden kann.
-
asc schrieb:
asdfasdf schrieb:
Sobald es kritisch wird kommt die Trollkeule. Dumme, aber effektive Reaktion.
Dann erkläre mir einmal was daran kritisch ist, wenn hier Korrekturen zu einem Compiler genannt werden, der bereits 2 Nachfolgegenerationen hat.
Ganz einfach nicht jeder arbeitet immer mit der aktuellsten Version. Ich kaufe mir doch nicht alle zwei Jahre ein Visual Studio oder ein Photoshop neu...tztztz.
-
decimad schrieb:
Viel Zustand ~ Viel Debuggen
Wenig Zustand ~ Wenig DebuggenKein Zustand ~ Nie Debuggen?
Dann muss ich sofort auf funktionale Programmierung umsteigenNein, die Grundidee stimmt natürlich. Viele Bugs entstehen durch unerwünschte Seiteneffekte und nicht-lokale Abhängigkeiten. Vor allem sind diese Bugs tendenziell schwieriger zu finden als pure Denkfehler.
decimad schrieb:
Wer also beispielsweise viel Mathekram macht, der braucht tendenziell weniger Zustand und muss darum auch weniger debuggen.
Das verstehe ich hingegen nicht ganz, was meinst du überhaupt mit Mathe (auf Programmierung angewandt)? Lineare Algebra, Graphentheorie, Geometrie, Statistik, ...? Würde nicht unbedingt behaupten, dass man dazu wenig Zustand braucht...
Nebenbei, wieso löschst du deinen Account, wenn du doch ständig hier postest?
-
Ich glaube, wir müssen nicht darüber diskutieren
Nee, muessen wir nicht. Ich werde nicht deiner Meinung sein.
dass die totale Bugfreiheit ab einer gewissen Projektgrösse unrealistisch (bzw. unwirtschaftlich) wird.
Und meine Erfahrung ist anders.
Kein Zustand ~ Nie Debuggen?
Dann muss ich sofort auf funktionale Programmierung umsteigenDu hast funktionale Programmierung nicht verstanden.
Flame war, please.
-
knivil schrieb:
Kein Programm ist fehlerfrei (wenn man vielleicht einmal von einem Hello World absieht)
Bullshit!
Du magst es als Bullshit bezeichnen, es gibt sogar diverse Studien zu dem Thema. Sobald Programme über eine höhere Komplexität verfügen ist es nahezu unmöglich sie fehlerfrei zu bekommen. Eine andere Frage ist aber ob die vorhandenen Fehler in der üblichen Betriebszeit und -umgebung auffallen.
Nenne mir bitte auch nur ein komplexeres Programm das du als fehlerfrei ansiehst. Mir ist bis heute jedenfalls bewusst noch kein einziges untergekommen.
-
tztztztz schrieb:
asc schrieb:
asdfasdf schrieb:
Sobald es kritisch wird kommt die Trollkeule. Dumme, aber effektive Reaktion.
Dann erkläre mir einmal was daran kritisch ist, wenn hier Korrekturen zu einem Compiler genannt werden, der bereits 2 Nachfolgegenerationen hat.
Ganz einfach nicht jeder arbeitet immer mit der aktuellsten Version. Ich kaufe mir doch nicht alle zwei Jahre ein Visual Studio oder ein Photoshop neu...tztztz.
Dann hat das Thema dennoch nicht in diesem Unterforum zu suchen. Es ist kein Fehler von C++, sondern von einer ganz konkreten STL-Umsetzung. Und das die STL von Visual Studio nicht perfekt ist, sollte glaube ich inzwischen jeder wissen.
-
knivil schrieb:
Du hast funktionale Programmierung nicht verstanden.
Und du Smileys nicht.
-
Du magst es als Bullshit bezeichnen, es gibt sogar diverse Studien zu dem Thema.
Habe davon gehoert, nie eine gesehen. Quellen! Desweiteren ist das Statistik, d.h. viele schlechte und durchschnittliche Programme/Programmierer. Daraus eine Unmoeglichkeitsaussage abzuleiten, ist Bullshit.
Nenne mir bitte auch nur ein komplexeres Programm das du als fehlerfrei ansiehst. Mir ist bis heute jedenfalls bewusst noch kein einziges untergekommen.
Sie gehoeren nicht mir, sondern meiner Firma.
1.) Module koennen fehlerfrei geplant werden
2.) Module koennen fehlerfrei implementiert werden.
3.) Module koennen entkoppelt werden.
4.) Module koennen fehlerfrei verknuepft werden.
5.) Es gibt Strategien Fehler zu vermeiden.
6.) Es gibt Mittel zur Beherrschung von Komplexitaet.
7.) ...Warum sollte das nicht ausreichen, fehlerfrei Software zu produzieren?
Oder anders gefragt: Was fehlt, um fehlerfreie Software zu produzieren?
-
knivil schrieb:
Desweiteren ist das Statistik, d.h. viele schlechte und durchschnittliche Programme/Programmierer. Daraus eine Unmoeglichkeitsaussage abzuleiten, ist Bullshit.
Ne, eben gerade nicht. Es ist praktisch unmöglich, ab einer gewissen Komplexität bugfreie Programme zu schreiben. Natürlich funktioniert Bugfreiheit in der Theorie, aber in der Praxis muss man eben gerade Faktoren wie durchschnittliche Programmierer, Budgets und Deadlines berücksichtigen. Fehler können auf jeder Stufe deiner Liste passieren, sie wegzudiskutieren ist idealistisch.
knivil schrieb:
Sie gehoeren nicht mir, sondern meiner Firma.
Was ist für dich komplex? Gängige Betriebssysteme, Browser und Office-Programme sind ein gutes Beispiel. Die enthalten alle Bugs und werden ständig verbessert. Es sind auch deswegen gute Beispiele, weil sie von extrem vielen Leuten benutzt werden, und sich Bugs deshalb eher zeigen. Wenn ein Programm nur von einer Handvoll Leute eingesetzt wird, kann es gut sein, dass viele Fehler unentdeckt bleiben.
...verdammt, jetzt habe ich mich doch wieder auf eine aussichtslose Diskussion eingelassen.
-
Es ist praktisch unmöglich, ab einer gewissen Komplexität bugfreie Programme zu schreiben.
Ich habe dich verstanden.
Budgets und Deadlines
Kenne ich, habe ich. Nur halte ich mich nicht fuer einen durchschnittlicher Programmierer.
Wenn ein Programm nur von einer Handvoll Leute eingesetzt wird, kann es gut sein, dass viele Fehler unentdeckt bleiben.
Medizinprodukte. Sie wird von vielen eingesetzt. Nicht von Millionen wie bei Office. Was meinst du, wie teuer dort Fehler sein koennen? Ich sage dir: Es ist sehr ... unwirtschaftlich.
Ich wiederhole meine Frage: Was fehlt dir an Werkzeugen, um fehlerfreie Software zu produzieren? Ich gehe noch weiter: Was fehlt dir an Werkzeugen, um performante, sichere und fehlerfreie Software zu produzieren?
-
knivil schrieb:
Was fehlt dir an Werkzeugen, um performante, sichere und fehlerfreie Software zu produzieren?
Ihm fehlt das Wissen um funktionale Programmierung.
-
knivil schrieb:
Warum sollte das nicht ausreichen, fehlerfrei Software zu produzieren?
Fängt schon dabei an, das Anforderung in der Regel niemals 100% abgebildet werden kann. Sei es wegen Reibungsverlusten zwischen Anwender, Analytiker und Entwickler, sei es weil Software immer nur eine vereinfachte Abbildung der Realität sein kann.
Man kann Software möglichst fehlerfrei, aber nicht absolut fehlerfrei schreiben. Du kannst gerne etwas anderes behaupten, nur halte ich es für ein absolutes Wunschdenken. Daran ändert auch nichts, das es ein kritischer Bereich ist. In einem solchen Versucht man nahe der 0-Fehlergrenze zu kommen, Fehler gänzlich ausschließen zu können halte ich für reine Utopie.
-
Jedes Programm, ab einer gewissen Größe, hat Fehler, darüber muss man nicht reden, das ist einfach so von Natur aus gegeben. Die Frage ist nur wie viele Fehler es sind. Bei der Nase dürfen es nur wenige auf 100.000 Zeilen Code sein, woanders natürlich mehr.
Ein Grund warum Menschen keine fehlerfreien Programme schreiben können, mag der sein, dass das menschliche Gehirn nicht dafür geschaffen ist objektiv und im großen Ganzen denken zu können.
-
NASAmachtFehler schrieb:
Bei der Nase dürfen es nur wenige auf 100.000 Zeilen Code sein, woanders natürlich mehr.
Hab gerade einen tollen Link gefunden, wie die Nase das macht:
http://forums.udacity.com/questions/12000321/nasa-is-coding-in-pythonEinfacher Code, bei dem sofort klar ist, was er macht (d.h. kein unverständliches C++-Zeugs wie hier oft angepriesen) mit vielen Assertions scheint auszureichen.
Woran es oft scheitert, ist
knivil schrieb:
4.) Module koennen fehlerfrei verknuepft werden.
=> Wie geht man da vor, knivil?
-
asc schrieb:
Dann erkläre mir einmal was daran kritisch ist, wenn hier Korrekturen zu einem Compiler genannt werden, der bereits 2 Nachfolgegenerationen hat. Und noch dazu wenn der Autor die Fakten nicht richtig nennt.
welche 2 nachfolge Generationen? Der titel des blog posts ist
"STL Bugs Fixed In Visual Studio 2012"
Und da im erst November 2013 VS 2013 released wurde ist diese liste höchstens für die Vorgänger version vom aktuellen Visual Studio
-
firefly schrieb:
...
"STL Bugs Fixed In Visual Studio 2012"
Und da im erst November 2013 VS 2013 released wurde ist diese liste höchstens für die Vorgänger version vom aktuellen Visual StudioEs sind Fehler die in 2010 waren, aber in 2012 behoben sind. Daher: 2 Nachfolger (2012, 2013).
-
knivil schrieb:
Nenne mir bitte auch nur ein komplexeres Programm das du als fehlerfrei ansiehst. Mir ist bis heute jedenfalls bewusst noch kein einziges untergekommen.
Sie gehoeren nicht mir, sondern meiner Firma.
Muss eine Klasse für sich sein, deine Firma. Braucht keine QS (den wenn eine solche auch nur einen Fehler finden könnte ist deine Aussage hinfällig. Wenn nachträglich ein Fehler festgestellt wurde, kann man niemals einen weiteren ausschließen), kein Bugtracking...
-
knivil schrieb:
1.) Module koennen fehlerfrei geplant werden
Die einzige Umgebung in der ich es für möglich halte sind medizinische Anwendungen, weil sie komplett und zu 100% durchspezifiziert sein müssen. Un selbst dann wird für medizinische Anwendungen keine fehlerfreiheit verlangt, allerdings eine extrem niedrige Buganzahl. Es gibt auch mehr als genug medizinische Projekte die trotz dieser Rahmenbedingung einfach scheitern.
-
Leute die meinen 100% fehlerfreie Software schreiben zu können, die diskreditieren sich doch mit solcher Aussage schon selbst. Wenn du so etwas kannst, brauchst du dir um Geld keine Sorgen mehr zu machen. Vielleicht ist er aber ja auch schon Multimilliardär, wer weiß? Dann könnte er ein Buch darüber schreiben, was sie ihm aus den Händen reißen würden.
Also Knivil du bist in der Bringschuld, wie schreibt man 100% ferhlerfreie Software?