Simulationsspiele sind nicht so meins; weiss nicht, was es da so gibt.
'Ne Pandora hab ich nicht. Weiss nur, dass ptitseb hier anerkannte Portiermaschine ist. Ich kann nur spekulieren, dass er erst viel in muehsamer Kleinarbeit portiert hat und ihm dabei mehr und mehr Regelmaessigkeiten und Aehnlichkeiten bei dem, was er jeweils konkret zu tun hatte, auffielen und er mit der Zeit einen immer groesseren Teil seines Auswandes automatisieren konnte, so dass er bei jedem neuen Vorhaben sich "nur noch" um Feinheiten kuemmern muss. Natuerlich wuerde es trotzdem immer wieder ganz neue Probleme geben und er wuerde seine bestehende Automation fuer die neu kennengelernte Problemstellung erweitern, wenn er eine Loesung gefunden hat. Da ich mich mit Softwareportierung nie befasst habe, weiss ich aber nicht naeher drauf einzugehen. Theoretisch sollte der Aufwand auf 'nem Spektrum von nur neu kompilieren bis komplett neu schreiben liegen. Praktisch wahrscheinlich versuchen neu zu kompilieren, sehen wo es nicht klappt und problematische Teile anpassen/neu schreiben.
Softwareentwicklung ist eher eine Lern- und Verstaendnissache wie Mathe, Chemie, Physik und Sprache. Ob Du etwas von elektronischen Vorgaengen verstehen musst, haengt davon ab, was Du programmieren willst. Wenn Du ein Programm schreiben willst, dem Du ein Suchwort und einen Dateinamen gibst und das Dir dann sagt, wie oft das Wort vorkommt, brauchst Du von Elektronik nichts zu verstehen. Willst Du einen Kernel schreiben, brauchst Du god level Expertenwissen ueber die Hardware.
Quellcode in den verbreitetsten Programmiersprachen kannst Du Dir zum Einstieg erstmal als ganz penible Arbeitsanweisungen vorstellen.
Wichtig ist z.B. das eigentliche Problem, das man loesen moechte, in Teilprobleme zergliedern zu koennen, welche man dann Stueck fuer Stueck loest. Beim Quellcode schreiben muss man aufs Schriftzeichen genau exakt sein (gelingt keinem normalen Meschen auf Anhieb -> immerwieder Geschriebenes testen, Fehler finden und korrigieren, weitermachen). Man ueberlegt sich auch oft genug erstmal eine falsche oder unguenstige Loesung -> sobald es auffaellt, analysieren, verbessern.
Quellcode ist, was der Programmierer liest/schreibt. Ausfuehrbarer Code ist, was der Prozessor abarbeitet. (beides Software). Compiler ist ein Programm, welches den Quellcode analysiert und ein ausfuehrbares Programm daraus erzeugt. (Es gibt auch interpretierte Sprachen, die nicht kompiliert, sondern von einem Programm abgearbeitet werden. JavaScript z.B. (und ja, fuer viele von diesen gibt's dann doch wieder Compiler etc.))
War jetzt etwas unstrukturiert. Bin wohl schon muede.