mutierende Software

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.

Kann Software wie ein Lebewesen eine Evolution durchmachen (wie unten beschrieben)?

Cyberevolution - so ein Quatsch. Das kann prinzipiell nicht funktionieren!
1
25%
Das ginge theoretisch schon, allerdings ist es praktisch mit heutigen mitteln (und denen der nahen Zukunft) nicht möglich.
1
25%
Ja, die Idee mit dem zufälligen verändern des Maschienecodes müsste klappen
2
50%
Der "Horizontale Gentransfer" hört sich vielversprechend an
0
Keine Stimmen
Die Idee mit der Programmiersprache könnte das ermöglichen
0
Keine Stimmen
Klar geht das und das lässt sich auch schon mit den heutigen Mitteln umsetzen. Aber nicht mit den im Text erwähnten Methoden sondern mit ...
0
Keine Stimmen
 
Insgesamt abgegebene Stimmen: 4

teamO
Beiträge: 56
Registriert: 01.03.2010 20:01

mutierende Software

Beitrag von teamO »

Hi an alle,

Seit einiger Zeit beschäftigt mich die folgende Frage: Ist es möglich ein Programm zu schreiben, dass - der Evolution nachempfunden - sich immer wieder kopiert und dabei "Fehler" oder "Mutationen" einbaut und dann diese mutierten Kopien ausführt (sofern sie lauffähig sind...) und sich so immer weiter entwickelt?

mich interessiert hier weniger die praktische Umsetzbarkeit (dh. eigentlich interessiert es mich schon, aber ich glaub nicht, dass ich als Einzelperson und hobbyprogrammierer sowas jemals hinbekomm...), sondern eher was ihr glaubt, ob es theoretisch möglich wäre.

Meine erste Idee war es ein einfaches Programm zu schreiben, dass nichts tut, außer Kopien von sich zu erzeugen und dabei manchmal zufällig neue bytes einzufügen, oder bestehende zu verändern. Aber als ich mich dann aber ein bisschen in maschienencode eingelesen hab, bin ich schnell zu dem Ergebnis gekommen, dass dabei dann vielleicht 0.0001% oder noch weniger (jedenfalls viel zu wenig) der erzeugten Mutationen lauffähig wären.

Dann habe ich mir überlegt, dass man vielleicht ähnlich dem "horizontalen Gentransfer" in der Natur (dabei wird DNA von anderen Lebewesen in das eigene Erbgut eingebaut) die Festplatte nach anderen ausführbaren Dateien durchsuchen könnte und daraus schnipsel in die Kopie einfügen könnte. das würde den Anteil der ausführbaren dateien vermutlich um ein paar Größenordnungen erhöhen. Wahrscheinlich wäre er aber immer noch viel zu klein.

Möglicherweise könnte man auch eine einfache Programmiersprache verwenden. In der exe wird auch der Sorcecode des Programms gespeichert. Der wird dann verändert. Zum Besipiel indem zufällig Befehle aus einer Befehlsbiliothek ausgewählt werden (syntax muss natürlich auch beachtet werden...). Dann wird der code kompiliert (wenn das fehlschlägt werden andere befehle ausgewählt und erneut kompiliert) und in die exe kommt dann logischerweise der veränderte sorcecode.
Das Elternprogramm könnte dann gelöscht werden, damit die Festplatte nicht ihre Kapazitätsgrenze erreicht...

Dann würde noch ein Mechanismus zur Selektion fehlen, aber ich denke das wäre einfacher zu Realisieren als die Mutation. Man könnte die Programme zum Beispiel um eine knappe Ressouce (zb. CPU-Kapazität, Festplattenkapatzität, RAM) konkurieren lassen.

Was haltet ihr von den Ideen? Habt ihr andere Vorschläge?

Grüße, TeamO
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: mutierende Software

Beitrag von DarkDragon »

Die nächst höhere Stufe als Bytekombinationen zu testen wäre es dann Bytes sinnvoll einzufügen, d.h. die OpCodes eben so einsetzen wie sie sinn machen, bzw. zumindest halbwegs. Also sowas wie Jumps in den ungültigen Speicherbereich weglassen etc..
Aber ich würde sowieso auf eine ganz andere Ebene runtergehen und nur Turingmaschinen oder WHILE/GOTO Programme bzw. µ rekursive Funktionen modifizieren. Das macht dann auf jeden Fall mehr Sinn wenn man da was einfügt/entfernt etc.
Nur für sowas wie "der stärkere gewinnt" wie in Darwins Evolutionstheorie muss man dann auch noch eine Schnittstelle implementieren, durch die ein Programm ein anderes "töten" kann.
Was ich allerdings auch sehr interessant finde ist sowas hier:
http://www.youtube.com/watch?v=F0OHycypSG8
Soweit ich weiß haben die Wesen einige Jahre lang ihr eigenes Verhalten erlernt und können jetzt ein Ziel erreichen.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
mbuettner
Beiträge: 88
Registriert: 14.05.2010 15:53
Computerausstattung: 3 GB RAM, Windows 7 32-Bit Home Premium
Wohnort: daheim
Kontaktdaten:

Re: mutierende Software

Beitrag von mbuettner »

Also so in der Form wüsste ich nicht, das es geht, aber schau mal bei Wikipedia unter Game of Life (http://de.wikipedia.org/wiki/Game_of_Life)
Bild
Bild
Die täglich beförderte Datenmenge des Internets beträgt 415 Petabyte oder 445.602.856.960 Megabyte!
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Re: mutierende Software

Beitrag von ZeHa »

Naja der wesentliche Unterschied wird wahrscheinlich darin liegen, daß bei einem Programm ein einziges geändertes Bit/Byte mit großer Wahrscheinlichkeit dazu führen wird, daß es komplett nicht mehr lauffähig ist (es sei denn, man erwischt z.B. einen GUI-String, aber das Ergebnis ist dann auch nicht grad spektakulär :mrgreen: ). Wenn dagegen ein Lebewesen in irgendeiner Form mutiert, dann ist das (meines Wissens nach) so, daß die Änderungen sehr geringfügig sind (z.B. die Augen können ein bißchen besser mit Dunkelheit umgehen oder die Zehen werden ein kleines wenig länger, kA), und sich dadurch über die Jahre hinweg etwas neues bilden kann. Natürlich gibt es auch wesentlich sichtbarere Mutationen, z.B. daß ein Wesen drei Augen hat statt zwei, aber das ist ja erstens sehr selten und wird dann auch meist nicht weitervererbt.

Jedenfalls halte ich sowas bei Software für ausgeschlossen, denn wie schon gesagt, die meisten Mutationen die durch "fehlerhaftes Kopieren" entstehen (in der Biologie ist das meines Wissens der gleiche Grund) sind hinterher an irgendeiner Stelle kaputt. Man müßte es also eher hinkriegen, daß ein Programm sich nur minimal ändert, ohne damit den Programmfluß komplett zu verhindern.

Du könntest aber zum Experimentieren eine ganz simple, eigene "Sprache" erfinden (oder sowas wie Brainfuck nehmen) mit einem Interpreter und dann ein Programm schreiben, das das Programm nach jedem Durchlauf kopiert mit einer gewissen Fehlerrate. Wenn die Sprache und auch das darin geschriebene Programm entsprechend designed ist, könnte sich damit vielleicht schon eher was cooles ergeben. Man bräuchte so eine Art unveränderbares Hauptprogramm und dann den veränderlichen Teil eher so "konfigurationsmäßig" bzw. skriptartig, sodaß z.B. das Hauptprogramm ein festes Gerüst darstellt und nur an bestimmten Stellen der Skript-Code ausgeführt wird.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: mutierende Software

Beitrag von NicTheQuick »

Es gibt schon Programme, die sich selbst ändern um ihre eigenen Fehler zu kompensieren. Diese entbuggen sich sozusagen von selbst. <)

Und ein Kommilitone von mir interessiert sich auch gerade sehr für dieses Thema im Rahmen seiner Bachelor-Arbeit und hat auch schon etwas gefunden, wo man Javacode zur Laufzeit ändern kann. Dabei schmiert das Programm aber auch direkt ab, sobald man Syntaxfehler injiziert hat.
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: mutierende Software

Beitrag von Vera »

ZeHa hat geschrieben:Naja der wesentliche Unterschied wird wahrscheinlich darin liegen, daß bei einem Programm ein einziges geändertes Bit/Byte mit großer Wahrscheinlichkeit dazu führen wird, daß es komplett nicht mehr lauffähig ist
Ja und wenn man berücksichtigt, dass der Mensch nur 10% seines Gehirns nutzt, also die Natur immer großzügige Kapazitäten anbietet, müßte der Code mit viel, scheinbar unnützen Funktionen aufgefüllt werden.
Hinzu kommt, dass 'Evolution' nicht vornehmlich durchs 1:1 kopieren erfolgt (wir ja keine Klone), sondern bei einer neuen Vermischung (Anordnung) passieren kann.

Also müßte ein Programm auf ein Funtionsrepertoire zugreifen können, das jeweils neu eingebunden und strukturiert wird, woraus sich neue Abläufe ergeben können sollten.

Ein Editor mutiert zu einer Gedichtsmaschine durch kreative Nutzung der Rechtschreibkontrolle.

Eine 'Programmevolution' durch Kopiermutation kann nicht ausgeschlossen werden, aber ich halte es für ziemlich unwahrscheinlich.

Gruß ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: mutierende Software

Beitrag von STARGÅTE »

Ich glaube das sich Programme kopieren können und sich dabei verändern können geht relativ leicht "mit den richtigen Mitteln".
Wo ich das Problem sehe ist jedoch, wie ein Computer entscheiden will, ob sein produziertes Kind besser ist als er ?
Ich meine mit einfachen Größen vergleichen ist es ja nicht getan: Kind läuft schneller, also besser, Kind kann mehr, also besser.

Da mag vllt hier und da zum Ziel führen (mutierende Software), jedoch nicht zur echten Evolution ...
Dafür "denken" maschienen noch zu einfach.

Vielleicht kommt diese Evolution näher wenn sich die Digitale Welt die Quantenmechanik zu nutze macht.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Josh
Beiträge: 1028
Registriert: 04.08.2009 17:24

Re: mutierende Software

Beitrag von Josh »

Vera hat geschrieben:Ja und wenn man berücksichtigt, dass der Mensch nur 10% seines Gehirns nutzt, also die Natur immer großzügige Kapazitäten anbietet, müßte der Code mit viel, scheinbar unnützen Funktionen aufgefüllt werden.
dann muss man auch noch berücksichtigen, wie lange sich diese 10% gehirn im laufe eines menschenlebens noch mit sachen wie z.b. sex beschäftigen, obwohl die reine arbeit um ein paar kinder zu zeugen in ein paar minuten erledigt wäre. wahrscheinlich müsste dann der code mit 99,99% unnützen sachen aufgefüllt werden :mrgreen:
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: mutierende Software

Beitrag von Thorium »

Ich sehe den Sinn dahinter nicht so richtig.

Der Denkansatz CPU-Instruktionen mit DNA Bausteinen zu vergleichen hinkt.
Man könnte sich einen Satz an Funktionen schreiben, die in sich immer funktionieren, egal was aussen rumm passiert. Diese können dann beliebig neu geordnet werden. Ein nächster Schritt wäre es einen Baustein Parameter erzeugen zu lassen, die der andere nutzt.

Das könnte man sich auch ziemlich simpel grafisch ausgeben lassen.

Der praktische Nutzen ist gleich 0.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Re: mutierende Software

Beitrag von ZeHa »

Das was Vera sagt ist auch sehr wichtig, hab ich gar nicht drangedacht. Wir vermehren uns ja tatsächlich nicht durch eigenes Kopieren, sondern durch Mischen. Das heißt Du müßtest z.B. Microsoft Word und OpenOffice Writer sich paaren lassen, ein paar Dinge mutieren lassen und dann schauen, was hinterher dabei rauskommt :mrgreen:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten