AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

Ein Thema von Delphi-Laie · begonnen am 29. Dez 2011 · letzter Beitrag vom 31. Dez 2011
Antwort Antwort
Seite 1 von 2  1 2   
Furtbichler
(Gast)

n/a Beiträge
 
#1

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 12:40
Ich kenn keinen Fall, bei dem Frickeln (aka 'Rumprobieren') zu einer nachhaltigen Lösung führte. Natürlich wird man in der Praxis, speziell, wenn es 5 vor 12 ist (oder noch später) und der Milestone drängelt, eher zu solchen Brachialmitteln greifen. Oder wenn man nur mal fix ein Helferlein programmieren muss (Filter, Transformer z.B.)

Eigentlich ist das aber alles Quark und als Projektleiter kann ich so etwas in keinem Fall gutheißen (nur vorübergehend dulden).

Wie gesagt: Es gibt durchaus Probleme, die derzeit nur durch Rumprobieren 'gelöst' werden können, wobei das dann keine Lösung ist, sondern ein mehr oder minder schlechter Versuch, einen halbwegs stabilen Output für ein (nichtdeterministisches) Problem zu finden.

Beispiel: Wir hatten eine Adressdatenbank mit vielen Duplikaten, und natürlich sollten die Duplikate raus. Nur, was ist ein 'Duplikat'? ("Dr. Meier vs. "Hans Meier (Dr.)". Hier kann man schlecht eine Formel definieren, sonder muss versuchen, mit heuristischen Mitteln das kleinste Übel zu finden. DAS wäre (und war) ein Fall für Frickler und etwas rumprobieren und etwas an Parametern drehen.

[QUOTE=Valle;1143711]Gerade wenn es um Indizes oder eher ungenaue Beschreibungen von Schnittstellen geht..[QUOTE] Na, da schaue ich aber lieber genau hin, als rumzuprobieren.
Zitat:
Wenn die Lösung funktioniert dann ist sie richtig.
Eingestellt würdest Du von mir mit dieser Einstellung nicht. Kurze Frage: Was passiert, wenn die Eingangsbedingungen etwas verändert werden? Dann knallt dir deine 'Lösung' u.U. und unvorhersagbar um die Ohren. Wenn das dann in einer Produktivumgebung passiert, dann ....

Zitat:
Um das nochmal zu betonen: Ich meine damit banale Probleme im Detail bei der Implementation.
Gerade dort muss man aufpassen, bei den ach so einfachen Problemchen. Einer unserer Programmierer hat eine Schnittstelle genauso umgesetzt, wie von dir beschrieben. "Komisch, am Ende der Antwort von der anderen SEite sind immer 2 so komische Zeichen. Ach die schnippel ich einfach weg, passt scho' und dann klappt es endlich.". Super, hat auch funktioniert... Nur war das ein CRLF, das man auf Senderseite auch weglassen konnte. Und dann wurde auf Senderseite eben mal in der Config das optionale CRLF entfernt, alles gemäß Spec. Bis wir den Fehler gefunden hatten, war ein Produktionsausfall von mehreren 100k Euro zu verbuchen. Und das bloß, weil jemand so lange rumprobiert hat, bis es funzte, anstatt die Spec zu lesen.

Zitat:
Deshalb sehe ich auch keinen Grund mir bei der gelegentlichen Anwendung der Verfahrens an der richtigen Stelle (!) Unprofessionalität vorzuwerfen.
Die Fragen aller Fragen lautet ja: "was ist die richtige Stelle"? Und darauf gibt es keine Antwort: Es ist nämlich Glückssache.

Zitat:
Wenn das Ergebnis der Spezifikiation entspricht und ich schnell und korrekt gearbeitet habe, dann ist doch alles okay, oder?
Eben nicht. Das "schnell" hat nix mit Qualität zu tun und das "korrekt" nicht mit dem, was Du hier beschrieben hast.

Isoliert betrachtet, ist die Aussage natürlich korrekt (und banal): "Wenn ich alles richtig gemacht habe, ist (doch) alles okay, oder?"

Ich kann deine Haltung verstehen, früher war ich auch so. Aber es ist unprofessionell. Schlicht und ergreifend. Und sehr teuer. Auf lange Sicht.

Meine Meinung.

@BUG: Genau so isses!
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 12:47
Eigentlich ist das aber alles Quark
Das ist die entscheidende Frage: Kreatives Ausprobieren und Verwerfen, Beibehalten teilverbesserter Lösungen usw. ist eine Vorgehensweise, der weder eine gewisse Systematik noch Erfolge abzusprechen sind. Die Welt der Lebewesen machte es vor und brachte auch uns Programmierer hervor, die darob diskutieren können.

und als Projektleiter kann ich so etwas in keinem Fall gutheißen (nur vorübergehend dulden).
Warum "in keinem Fall gutheißen", dann aber wiederum "nur vorübergehend dulden"? Ist das nicht ein Widerspruch?

Ist die Zeitersparnis nicht doch der tatsächliche oder "gefühlte" Vorteil, der das dulden läßt?

Auch die tendenziell größere Fehlerarmut bei intensiverem Einarbeiten als bei von vornherein größerem Probieren ist diskutabel: Wie oft bekommt man von einem Programm nach der Implementation eines Algorithmus', einer Idee, von diesem Programm einen Denkfehler in seinem Konzept vorgeführt?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 13:15
Der Unterschied zur Natur ist der, das die Natur nie fertig wird: "Nach dem Verbessern ist vor dem Verbessern".

Wenn Du deine Heuristik (nennen wir sie mal so) nie auf die Menschheit loslässt, ist alles ok und die Vorgehensweise in der Tat nicht zu beanstanden. Nur im Berufsleben wird man das Resultat deiner Optimierungsbemühungen irgendwann einsetzen oder dem Kunden übergeben. Und dann kann man nur eines von dem Ergebnis sagen: "Es ist nicht fertig", denn das ist ja Mutter Natur auch nie.

Warum "in keinem Fall gutheißen", dann aber wiederum "nur vorübergehend dulden"? Ist das nicht ein Widerspruch?
Ich dulde es, wenn sonst die Abnahme in die Hose geht. Das Problem wird jedoch in jedem Fall anschließend richtig gelöst. Meist ist der Kunde jedoch genauso der Ansicht, das die Lösung lieber gleich ordentlich umgesetzt wird. Dann verschiebt sich die Abnahme eben (sofern nicht kostenpflichtig).

Sollte dir mein Beispiel (aus dem echten Berufsleben) nicht Lehre genug sein, um eine Frage wie "Ist die Zeitersparnis nicht doch der tatsächliche oder "gefühlte" Vorteil, der das dulden läßt? nicht mehr zu stellen? Es ist schlicht und ergreifend Faulheit und Schlamperei, wenn ich etwas, was ich ordentlich erledigen könnte, nur so lange hinschludere, "bis es irgendwie hinhaut", oder "der Kunde zufrieden ist", oder "das Teil doch funktioniert" oder oder oder. Glaube mir: Diese Vorgehensweise beschehrt dir viele unnötige Besuche beim Kunden. Oder im schlimmsten Fall: Schadensersatzforderungen. Du bist nämlich verpflichtet, nicht fahrlässig zu arbeiten. Und was ist diese Einstellung denn anderes als "fahrlässig"?

Grenzsituationen, wie "Schnittstelle, ohne Beschreibung" oder "nichtdeterministische Probleme" werden mit dem Kunden abgestimmt. Hier ist nichts anderes als die o.g. experimentelle Vorgehensweise möglich. Wobei ich mich beim ersten Problem (Schnittstelle ohne Spec) meist weigere, dies umzusetzen sondern verlange, das diese verdammte Spec aufzutreiben ist. Na, und wenns eben gar nicht anders geht, dann hilft eben nur Try & Error.

Umgekehrt hebst Du dich von der Masse ab, wenn Du qualitativ hochwertige Arbeit ablieferst, die nachhaltig und robust funktioniert.

Lassen wir mal die Kirche im Dorf: Grau ist alle Theorie und in der Praxis wird natürlich (wie schon erwähnt) auch mal gefrickelt. Dann verlange ich aber, das dies im Code explizit durch dicke fette Kommentare kenntlich gemacht wird. Der Programmierer muss seinen Namen angeben und beschreiben, warum er diese Frickellösung nehmen musste.

Übrigens weigern sich die meisten meiner Jungs, Schrott zu programmieren, nur damit es irgendwie läuft. Weil, im Endeffekt sind sie es, die die Suppe auslöffeln müssen. Also machen sie es gleich richtig.

Zitat:
Auch die tendenziell größere Fehlerarmut bei intensiverem Einarbeiten als bei von vornherein größerem Probieren ist diskutabel: Wie oft bekommt man von einem Programm nach der Implementation eines Algorithmus', einer Idee, von diesem Programm einen Denkfehler in seinem Konzept vorgeführt?
Na ein Grund mehr, Sachen richtig umzusetzen. Oder bist Du mit (unentdeckten) Denkfehlern in deinem Programm zufrieden?
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 13:29
Man darf nicht alles in einen Topf werfen.
Es gibt Leute die beruflich mit der Programmierung zu tun haben und die in der Freizeit programmieren.

Es wurde ja schon erwähnt:
Übrigens weigern sich die meisten meiner Jungs, Schrott zu programmieren, nur damit es irgendwie läuft. Weil, im Endeffekt sind sie es, die die Suppe auslöffeln müssen. Also machen sie es gleich richtig.
Man kann sagen,dass die Berufsprogrammierer diese "Hauruck"-Methoden besser sein lassen (sollten) und gleich überlegt an die Sache rangehen.

Die Hobby-Programmierer oder auch Anfänger tendieren eher zu dieser "Methode" zu programmieren.
Doch unabhängig davon ob Programmierung mit Beruf oder Freizeit zu tun hat, sollte man generell immer in irgendeiner Form seine Idee dokumentieren, darstellen und überlegt an sein Programm/ Problem rangehen.
Coffeecoder
  Mit Zitat antworten Zitat
bernerbaer
(Gast)

n/a Beiträge
 
#5

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 14:57
_Ich_ möchte hier doch noch klar differenzieren zwischen rumfrickeln und dem gesagtem im Ausgansgsposting:
Zitat:
Seit längerem implementiere ich Sortieralgorithmen für ein Animationsprogramm, das ihren Verlauf darstellen soll. Ich habe für die meisten der Algorithmen nicht die „intellektuelle Energie“ und die Ausdauer, mich in deren Funktionsweise hineinzudenken (oft fehlen mir auch Grundlagen dazu). Mithin bin ich auf schon vorhandene Quelltexte angwiesen: Pascal (sehr selten), (Visual-)Basic (selten, aber erträglich) oder allermeistens alle möglichen C-Derivate (ein elende Übersetzung). Oft genug funktionieren die Quellcodes auch nicht zur Zufriedenheit.
Und hier habe ich gerade bei mir festgestellt, dass professionelle Programmierer in der Regel öfters auf externe Quellen und Informationen angewiesen sind als Hobbyprogrammierer. Wer als Hobby programmiert, versucht sich nur an Dingen, die ihn auch interessieren und über die er bescheid weiss. Der professionelle Programmierer jedoch muss coden was von ihm verlangt wird. Das kann einmal aus dem Anlagensteuerungsbereich sein, ein anderes mal aus dem Wirtschaftsbereich, ein drittes mal aus der Forschung usw. Gerade deshalb ist es so, dass ein umfassendes Grundwissen nicht immer vorausgesetzt werden kann, ich kann von einem Programmierer nicht erwarten, dass er Informatik, Mathematik, Wirtschaftswissenschaft, Ingenieurstechnik, usw erfolgreich als Studium möglichst noch mit einem Doktortitel abgeschlossen hat. Deshalb ist ein professioneller Informatiker immer wieder auf externes Wissen, allenfalls sogar auf externen Code angewiesen, den er nur so versteht: "Das gebe ich rein - das kommt raus - also muss es korrekt sein". Das hat aber keineswegs etwas mit rumfrickeln zu tun und soll auch klar definiert und im Code angegeben werden: z.B. Code basiert auf dem Algo von XY - Quelle: xy

Dass Delphi dieses Vorgehen zudem deutlich fördert, ist der Komponentenansatz. Kaum jemand macht sich zum Beispiel noch Gedanken zu der RTF- oder der JPG-Spezifikation um nur zwei Beispiele aufzuführen, man verwendet die entsprechenden Units und damit hat es sich (bis der erste Fehler in der Komponente auftaucht).
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#6

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 15:16
Zitat:
Wenn die Lösung funktioniert dann ist sie richtig.
Eingestellt würdest Du von mir mit dieser Einstellung nicht. Kurze Frage: Was passiert, wenn die Eingangsbedingungen etwas verändert werden? Dann knallt dir deine 'Lösung' u.U. und unvorhersagbar um die Ohren. Wenn das dann in einer Produktivumgebung passiert, dann ....
Ich habe mir schon gedacht dass du genau diesen Satz aus dem Kontext reißen wirst. Ich schrieb ja dazu: Wenn der Verdacht besteht, dass da mehr dahinter steckt, dann ist so ein Lösungsweg natürlich nicht in Ordnung. Genau von diesen veränderbaren Eingangbedingungen habe ich gesprochen. Und ich rede von derartig banalen Kleinigkeiten, dass es einfach ist, zu erkennen, ob man solche Bedingungen möglich sind.

Mit dem von dir angegebenen Beispiel bin ich mir allerdings mittlerweile recht sicher, dass du noch nicht wirklich verstanden hast, von welcher Art von Problemchen ich spreche.

Eben nicht. Das "schnell" hat nix mit Qualität zu tun und das "korrekt" nicht mit dem, was Du hier beschrieben hast.
Denkst du dabei eigentlich nur an Programmiersprachen an sich, oder auch an Sachen wie HTML und CSS? In unserer Firma bin ich als Webentwickler eingestellt und habe deswegen (neben dem Backend natürlich) sehr viel mit HTML zutun. Das ist auch ein prima Beispiel für die beschriebene Art von Problemlösung. Hast du schon mal versucht eine inhaltlich voll gepackte Seite mit viel JavaScript und modernen Design auf allen halbwegs noch verwendeten Browsern zum Laufen zu kriegen? Ich möchte den sehen der hier nicht 'rumfummelt'.

Ich kann deine Haltung verstehen, früher war ich auch so. Aber es ist unprofessionell. Schlicht und ergreifend. Und sehr teuer. Auf lange Sicht.

Meine Meinung.
Und ich verstehe deine, auch wenn ich (falls du mich doch richtig verstanden hast) anderer Meinung bin. Es ist schwer zu beschreiben welche Situationen das sind. Leider fällt mir auch kein praktisches Beispiel ein - und selbst wenn: Es ist schwer so etwas nachzuvollziehen. Möglicherweise fällt mir dieser Thread in der nächsten Situation mal wieder ein.

Dass du mich nicht falsch verstehst. Eine genaue Planung und detailliertes Verständnis von dem was man macht ist sehr wichtig beim Programmieren. Ich bin durchaus in der Lage zu entscheiden, wann ich wie zu arbeiten habe. Klar, Fehler macht jeder, aber wenn ich 'rumprobiere', dann bin ich sicher dass es zu diesem Zeitpunkt akzeptabel ist.

@bernerbaer: Deine Erklärung gefällt mir auch sehr gut!

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 16:15
Keine Ahnung, wie man ein Zitat einstellt, ich beziehe mich auf das hier:

Und ich rede von derartig banalen Kleinigkeiten, dass es einfach ist, zu erkennen, ob man solche Bedingungen möglich sind.

In unserem Beruf gibt es sowas nicht. Wenn Du eine M3-Schraube, mit der das Typenschild an einem Motor befestigt ist, rausdrehst, läuft der Motor klaglos weiter. Wenn Du aber ein '<' gegen ein '>' tauschst, kann das gesamte System seinen Geist aufgeben. In den CACM gab es vor einiger Zeit mal Lobpreisungen von "good enough" Programmen. Ich hätte gern gewußt, was der Autor sagen würde, hätte man ihm für sein gutes Geld ein "good enough" Auto angedreht. Wenn da jemand am Abend am Computer zu seinem Vergnügen rumprogrammiert, bitte schön. Aber von jemandem, der seine Erzeugnisse verkauft, kann man gute Arbeit verlangen.

Und das Schönste ist wohl das hier:

Hast du schon mal versucht eine inhaltlich voll gepackte Seite mit viel JavaScript und modernen Design auf allen halbwegs noch verwendeten Browsern zum Laufen zu kriegen?

Schon mal dran gedacht, daß diese Browser vielleicht "evolutionär" enstanden sind?
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 16:26
Keine Ahnung, wie man ein Zitat einstellt
Rechts unten auf die Schaltfläche ("Button") des Beitrages klicken, den (oder aus dem) man zitieren möchte.
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#9

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 16:41
Schon mal dran gedacht, daß diese Browser vielleicht "evolutionär" enstanden sind?
Ähm. Eigentlich ist mir das herzlich egal wie die entstanden sind. Tatsache ist, dass Altlasten und Abwärtskompatibilität einen Großteil der heutigen Probleme in dieser Technik ausmachen. Mangelhafte Spezifikationen und Standards sowie Microsofts Gier immer einen eigenen Brei kochen zu müssen führten dann letztendlich dazu, dass HTML und CSS heute keinen Spaß mehr machen. [/meinung]

Wenn du aber schon so provokant danach fragst, ob genau solch schlechte Software wie die Browser durch evolutionäre Programmierung entstanden ist, dann denke ich hast auch du nicht verstanden was ich darunter verstehe. Hier wurden auf ganz anderen Ebenen Fehler gemacht.

Offensichtlich ist meine persönliche Interpretation des Begriffs der evolutionären Programmierung nicht wirklich für die Meisten hier gültig. Wahrscheinlich verstehe ich das im Gesamten nicht ganz so wie der TE es meinte. Möglicherweise solltet ihr meine Meinung dazu deswegen nicht allzu ernst nehmen.

Liebe Grüße,
Valentin
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog

Geändert von Valle (30. Dez 2011 um 16:42 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: Evolutionäre Programmierung - programmiert auch Ihr evolutionär?

  Alt 30. Dez 2011, 17:25
Oh Gott, bitte nicht HTML + JavaScript + Browser ins Spiel bringen. Dann gebe ich mich geschlagen

Aber das sind ja nun mal "nichtdeterministische" Probleme. So wie der Umgang mit einer Frau. Da hilft auch nur "Versuch und Irrtum".

Ich kann mir übrigens keinen Profi- (oder Hobby-)programmierer vorstellen, der allen Ernstes behaupten würde, mit Rumfrickeln und Probieren schneller und besser ans Ziel zu kommen. Umgekehrt gilt aber auch, das man nicht jeden Pups analytisch herleiten und beweisen muss.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz