Meiner Meinung nach ist die Antwort oben etwas schwierig zu verstehen, und die darunter recht kurz. Hier also mal eine Zusammenfassung:
Wie @ZaoDaDong korrekt festgestellt hat, passiert mit der Hardware insofern nichts, dass sie sich nicht verändert. Alle Transistoren bleiben genau da, wo sie sind.
Was passiert, wenn du programmierst, ist in etwa Folgendes (Hardware kommt gen Ende, aber das davor ist wichtig für das Verständnis):
1. Du schreibst Programmcode.
Diesen schreibst du in einer der unzähligen Programmiersprachen, die es gibt. Welche du wählst, ist allein dir überlassen, und am Ende geht es für alle gleich weiter. der programmcode sind für dich etwas verständlichere Anweisungen, was der Computer am Ende tun soll.
2. Der Code wird kompiliert.
Die Programmiersprache sieht zwar so aus, als könnte ein Computer sie verstehen, tut er aber nicht. Deshalb übersetzt ein sogenannter Compiler deinen Code in etwas, das wir als Assembly kennen (einige Programmiersprachen wie Java gehen hier einen Umweg über maschinenunabhängigen Bytecode, wenn du da mehr wissenn willst, frag' nochmal nach). Sprich: der Compiler macht aus deinen if-Statements, while-loops und switch-Cases sehr viele Assembly-Anweisungen für das System, auf welchem du kompilierst (x86-64 Assembly für moderne 64-bit Intel-Prozessoren, ARM für MACs, ...). Diese landen dann im RAM, also im temporären Arbeitsspeicher.
3. Die Assembly-Anweisungen werden von der Hardware ausgeführt.
HIer ist etwas mehr zu erklären, zum Thema Architektur:
Ein Computer funktioniert (stark vereinfacht) so, dass eine kleine (physische) Steuereinheit ("Control" genannt) sogenannte Steuerleitungen ("control lines") an- oder ausschaltet (0 oder 1). Diese Steuerleitungen wiederum beeinflussen, was die einzelnen Hardware-Komponenten tun (welche Register ausgelesen werden, welche Leitungen von Multiplexern/Demultiplexern durchgelassen werden, welche Berechnungen die ALU ausführt uvm...)
Damit Control weiß, welche Leitungen es wie zu setzen hat, muss es einen permanenten Input von Nullen und Einsen erhalten. Es wird immer die benötigte Menge an Stellen eingelesen, und in dieser Reihenfolge werden die Steuerleitungen dann auf 0 oder 1 gesetzt, also physisch Strom an oder aus.
Assembly-Anweisungen sind bereits sehr dicht an reiner Maschinensprache dran, der letzte Übersetzungsschritt passiert dann in der CPU (also im Chip) selbst, über eine dort fest abgespeicherte "instruction table" (Instruktionstabelle), welche aus jeder Assembly-Anweisung den finalen Maschinencode macht, welcher von Control verstanden und ausgeführt wird.
TL;DR der ganzen Sache: Dein Code (den du verstehst) wird mehrfach in andere Formen übersetzt (die deutlich weniger Menschen verstehen... ich zähle mich leider dazu), welche schlussendlich bei 0 und 1 ankommen, was der Computer dann physisch umsetzen kann.
Die Frage mit dem Abspeichern wurde bereits korrekt beantwortet, trotzdem auch hierzu nochmal kurze Zusammenfassung:
Der Arbeitsspeicher (RAM) eines Computers ist nicht permanent. Schaltest du ihn aus, geht dessen Inhalt verloren. Arbeitsspeicher --> Arbeitsplatz kann man sich gut merken: Der Computer legt dort seine ganzen Werkzeuge und was er sonst so braucht ab, aber wenn die Arbeit getan ist, räumt er dort wieder auf.
Die Festplatte dagegen (PS - physical storage) ist ein permanent state drive, also ein dauerhafter Speicher, der seinen Zustand nach dem Ausschalten des Computers beibehält. wenn ein Programm auf der Festplatte gepeichert wurde, wird es beim Start zunächst wieder in den Arbeitsspeicher geladen, und dann geht's von dort wie oben beschrieben weiter.
Sollte ich jetzt mehr Fragen aufgeworfen als beantwortet haben - feel free nochmal zu fragen :D