The fundamentals of programming, a thread by @isotopp on Twitter
Posted by jpluimers on 2023/03/22
Kristian Kohntöpp publishes great DevOps related threads on Twitter. [Wayback/Archive] Thread by @isotopp “I am Kris, and I am 53 now. I learned programming on a Commodore 64 in 1983. My first real programming language (because C64 isn’t one) was 6502 assembler, forwards and backwards. “ is his response, about a year and a half ago, to a request by Julia Evans (@b0rk) that I also saved: [Wayback/Archive] Thread by @b0rk on Thread Reader App – Thread Reader App.
Her request: [Archive] 🔎Julia Evans🔍 on Twitter: “if you’ve been working in computing for > 15 years — are there fundamentals that you learned “on the job” 15 years ago that you think most people aren’t learning on the job today? (I’m thinking about how for example nobody has ever paid me to write C code)” / Twitter followed by [Archive] 🔎Julia Evans🔍 on Twitter: “I’m especially interested in topics that are still relevant today (like C programming) but are just harder to pick up at work now than they used to be” / Twitter.
The start of his thread is [Archive] Kris on Twitter: “@b0rk I am Kris, and I am 53 now. I learned programming on a Commodore 64 in 1983. My first real programming language (because C64 isn’t one) was 6502 assembler, forwards and backwards.” / Twitter.
Kristian’s story is very similar to mine, though I sooner stepped up the structured programming language ladder as at high school, I had access to an Apple //e with a Z80 card (yes, the SoftCard), so could run CP/M with Turbo Pascal 1.0 (later 2.0 and 3.0) which I partly described in The calculators that got me into programming (via: calculators : Algorithms for the masses – julian m bucknall), followed by early access at the close by university to PC’s running on 8086 and up. The computer science lab, now called Snellius, but back then known as CRI for Centraal RekenInstituut – is now had an educational deal with IBM, which means they switched from the PC/XT to the PC/AT with a 80286 processor as soon as the latter came out).
So where Kristian learned 6502 (maybe the first even RISC CPU), 68000 (CISC), 8086 (CISC) including real mode, protected mode and virtualisation, and up. I missed the 68000 step, which I really miss as it was far more CISC than x86 until Pentium was (then P6 putting a RISC architecture underneath the outside CISC). Neither of us did PowerPC (RISC).
In retrospect, I wish I had a more broad assembly language background covering more CPU architectures. That would have made it way easier for me to understand what ARM architecture was about and get the meaning of its importance way earlier on.
What did help me big time is to ensure to get day to day practice using at least two completely different operating systems. In my case it is a Mac running macOS, (née OS X, née Mac OS X) as my daily driver, remoting into Windows and Linux machines for development and operations. I have done this since my first MacBook Air (the second generation tapered unibody version) after having used ThinkPads for more than a decade.
I wholeheartedly agree with Kristian’s conclusion:
I think the biggest benefit of having been at the lowest level of the machine is that you actually see what makes the kernel load and the cursor blinks.
You learn, in your gut, that every single thing that happens in the box is explainable, there is code that does this.
So if you have been a programmer for less than say 15 years, but maybe even if you have been programming longer, be sure to know your way around at the lowest level. ESP32 (successor of ESP8266) and Raspberry Pi (ARM based) style machines are great machines to gain that knowledge.
Oh, be sure to read these links that Kristian linked to, and try to understand them, as they will greatly help you gain insight:
- [Wayback/Archive] Websense DLP gives instant root
- [Wayback/Archive] But is it atomic?
- [Wayback/Archive] Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X
- [Wayback/Archive] unix-history-repo/mac.h at Research-V7-Snapshot-Development · dspinellis/unix-history-repo
- [Wayback/Archive] dspinellis/unix-history-repo: Continuous Unix commit history from 1970 until today
–jeroen
PS: After writing this, I added a little thread to Julia’s request as well:
Leave a Reply