Physik und Software-Stacks

(elkement. Erstellt: 2018-05-02. Tags: Arbeit, Beruf, Berufung, Elke Stangl, IT, IT-Sicherheit, Physik, Software-Entwicklung, Technologie. Englische Version.)

Ich habe wieder einmal an meinen Social-Media-Profilen gebastelt:

Specializing in: Control systems, software development for measurement data analysis, IT security, troubleshooting and reverse engineering systems with physical (hydraulic) and software (control) components.

I am running a small engineering consultancy together with my husband. We are both physicists, and we focus on designing, programming, and troubleshooting control systems for heating / solar systems, especially heat pump systems with a combination of uncommon heat sources and custom control. For more than 10 years I have implemented, reviewed, and troubleshooted public key infrastructures, and I still do this for some long-term clients.

I am blogging about this and about related science and engineering topics at https://elkement.blog.

Im Gegensatz zum Blog ist diese Site eher ein erweitertes Profil / About Me / meine manuell befüllte WHOAMI-Maschine.

Ich denke nach über das Herumklettern auf verschiedenen Schichten des Software-Stacks. tl;dr: Langsam komme ich wieder zurück / auf den Urgrund der unteren Ebenen - näher zu Hardware, Elektronik, Regelungen, Feldbussen etc.

Vor Jahrzehnten hatte ich als Physikstudentin in den Elektroniklehrveranstaltungen über Mikrocontroller gelernt - und dann Sensoren und Aktoren anprogrammiert in Turbo Pascal - zur Messung der elektrischen Eigenschaften von Hochtemperatursupraleitern bei tiefen Temperaturen. Aber dann gab's einen Sprung ganz nach oben, nach KlickiBunti beim Wechsel von 'Forschung in die IT' - Microsoft-Scripting-Sprachen: VBA, VBScript, ASP. Auch die erste Version der numerischen Simulation war ein Excel-Sheet und dann eine VBA-Applikation.

Ich habe die IT 'offiziell verlassen' und gegen 'Erneuerbare Energien' eintauschen müssen und wieder an den Grund (der Software-Sedimente) zu tauchen. Als ich Dinosaurier wieder zur Studentin wurde (Energietechnik) war ich in Gruppenprojekten immer der Excel-Programmierer im Team. Und dann: SQL-Server und Transact-SQL für die Messdatenanalyse. Simulation nochmals ganz neu - jetzt in Visual Basic.NET, endlich auch in wirklich objektorientiertem Design. Zum Aufwärmen dafür: Alle unsere Websites 'from scratch' in .NET. Die Datenkrake verwendet eine Mischung aus Powershell und SQL-Script.

Endlich kann ich alle meine Prozessorkerne in der Simulation nutzen - und eine Reihen von Performance-Engpässen sind beseitigt. Ich habe Joel on Software von Anfang bis Ende gelesen - um die Ära 'meiner Zeit in der IT' nachzuerleben und um ein bisschen Grundlagen nachzutanken. Ich klickte auf jedem Link und bin bei Structure and Interpretation of Computer Programs hängengeblieben (SICP) - die beste Vorlesung, die ich jemals 'besucht hatte': Gleichzeitig philosophisch tief und praktisch sofort nützlich. Meine Simulationen wurden um einen Faktor schneller.

Um immer wichtig war: Reverse Engineering und Debuggen - immer so tief und auf dem Level, auf dem ich Software gerade verstanden hatte. Als meine offizielle Rolle IT Security / Public Key Infrastructure Consultant war, war der beste Task immer das Ausschnüffeln und Tracen von exotischen Problemen mit X.509-Zertifikaten, das Durcharbeiten von RFCs. Jedes Mal, als ich selbst nur der Kunde war, endete es mit Low-Level-Debugging - z.B. als sich mein Mail-Client und ein Mailserver nicht verstanden... und ich eigentlich nur eine Rechnung signiert habe wollte mit dieser SMTP-Signaturlösung.

Dann habe ich endlich C/C++ gelernt und viel über Assembler und Reverse Engineering / Malware-Analyse gelesen. Nur so kann man eigentlich auch das letzte Kapitel von SICP wirklich schätzen und die selbstbezügliche Eleganz von Compilern und Interpretern.

Um mir den Stack (den im Memory) vorzustellen - und was in den Registern passiert, griff ich zu meinem Jahrzehnte alten Elektronik-Buch, Kapitel Mikrocontroller. Und dann ... Erkenntnis! Die wesentlichen Grundlagen haben sich nicht dramatisch geändert. Verschiedene Prozessoren nutzen verschiedene Instruction Sets, und wir haben uns gesteigert - 8bit, 16bit, 32bit... Aber die Essenz der Erklärung - was ein Stack ist und wie man mit Return zurückfindet aus einer Funktion - sind noch genauso gültig wie zu der Zeit als dieses Buch und SICP neu waren.

Alles passt zusammen: C ist fast eine Voraussetzung um Feldbus-Kommunikation die Beschreibungen dazu in den Standards zu verstehen. Und (unsere) Steuerungen verwenden Feldbusse. Und außerdem ist man als (Nicht-unbedingt-Software-)Ingenieur immer auch Detektiv - wenn man Software aus der Steinzeit reverse engineered um sie überhaupt verwenden zu können.

Eigentlich der logische Platz, an dem man sein sollte: Als Physiker in der IT, oder Ingenieur mit IT-Tools oder was auch immer.

Und jetzt: Weiter zu Python!

 

Persönliche Website von Elke Stangl, Zagersdorf, Österreich, c/o punktwissen.
elkement [ät] subversiv [dot] at.