Episode: 4691 Title: Viva la Coda Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4691/hpr4691.mp3 Transcribed: 2026-07-31 16:16:52 (official HPR transcript) --- This is Hacker Public Radio Episode 4691, for 2026-07-27 Today's show is entitled, "Viva la Coda" The host is Lee and the duration is 00:08:51 The flag is Clean, and the license is CC-BY-SA The summary is "or C++ and all its friends" Hi, I'm Lee. I started attacking C in my early teens, especially encouraged by seeing C programming jobs advertised on either C-facts or what Oracle would have salaries over 50K per annum. C-facts in Oracle were static pages transmitted as terrestrial TV signals in the UK which displayed on the rotation. When I went for my first programming job and was asked if I knew of Oracle that was my response. They told me Oracle was also the name of an enterprise relational database management system. I didn't know what SQL was though because my parted copy of visual basic included references to that. That was rather convoluted by the driver layer used to interface between Microsoft's programming language and the actual database. By new it could do cool things like data binding between say a tabular control and rows of data in a Microsoft access database. As I was getting into C, I found a book in the local library by Kerningham and Richie all about this language. The first thing I learned was to include the standard IO header file in every program, then to start with a function called Main and output things to the screen with functions called either printf, puts or put char. Then I started trying to input text into a variable with a function called scanf but this was hit and miss because you had to remember to give a pointer to a variable to this function rather than the variable itself. I didn't grasp why at the time but the reason was that C functions cannot directly modify the parameters and give it but if the parameter points to a place in memory then it can overwrite what was stored in there. Unlike a language like basic, we get an exception or error when you make a misstep. C is unforgiving. C programs are not interpreted one line at a time. Instead, they compiled down into the very DNA of computers known as machine code. When it is cutable machine code goes wrong, it can either crash the program or even crash the entire operating system requiring you to restart the whole computer. This was especially true of non-multi-tasking OS as like DOS. I did a lot of my C hacking in ballancy plus plus, which came on 7 floppy disks I bought rather than pirated and could go far beyond simple input text output text programs. If you use correctly, you could produce fully fledged windows programs. What is C plus plus in my ask? Well, the name is kind of a plan words. In the C language, if you post fix a variable with two plus signs, it increments the variables value by one. So if it was 41 before, it would now be 42. So in effect, we're saying this language is what C would be after drinking a double express so. But what is C plus plus? The answer is deceptively simple. It is C with classes. Classes help you structure code better. We've seen everything structure as functions. That's pretty useful, but not always intuitive when trying to describe real world things that have both state and operations that modify that state. With classes you can create objects that are composed of both functions and data. With objects being what you call a concrete instance of a class. Your class might be hacker, your object based on that class might be lead. When I was at university, they're not necessarily during the lectures. I came across other languages that syntactically were very close to C or C plus plus. These were Java and later Java script, and these are still around today. In today's day and age, not so many people program in C and C plus plus directly, unless you're creating embedded systems or high performance systems libraries, we need to be close to the metal, as they say. C plus plus, at least as it was all those years ago, as I said, is incredibly unforgiving and as the extreme levels of crash ability. Modern C plus plus is somewhat a different kettle of fish because of both language extensions and standard class libraries that allow an efficient idea to program more safely and reliably. No one, if they can help it, really uses what we now call raw pointers anymore. Smart pointers are various kinds. His operation is itself written in whatever ecosystem of C plus plus you're using, a pretty much necessary to ensure developer sanity. I learnt this when I started hacking around with an independent project I came across on YouTube called SerenteOS. Watching Andreas Kling, building his own new tire operating system, akin to windows of the 90s but with a Unix twist, one line of code at a time was completely hypnotic and absorbing. It's not an exaggeration to say this is something that rekindled my raw enthusiasm for Serious coding and help me towards becoming a fully fledged professional in this field, once again. Although admittedly, little of my paid work deals directly with low level languages like C plus plus. I'm not afraid to go there if the job demands it. Most recently we've giving device native functionality to the mainly high level more forgiving web stacks on mobile devices. I've tried contributing a little to SerenteOS. I've been working for some time on an orgio editor basically a very cut-down version of Audacity for this OS. In order to get this done, I did end up contributing some tests and a minor bug fix to the orgio format processing library. But so far my orgio editor has been understandably too big appeal to swallow to get code review and be merged after all everyone on the project is a volunteer and I can't expect my particularly interest necessarily align to other peoples. At the time of recording this project remains an unmerge poor request, now closed due to inactivity. Interestingly, a lot of the Linux kernel, the engine which drives GNU Linux distributions, is codenously or sees low level companion assembly language. Times they are changing though because there is a new kid on the block called Rust. Rust is a low level systems language, a lot like C or C plus plus. It has a radical view on making every aspect of what we loosely term memory management completely explicit. At all times it's completely defined what bit of code is responsible for what variable or bit of memory for how long who else can access it and most importantly when and by whom it is freed up and destroyed when everyone is done with it. This prevents a very high proportion of crashes memory leaks and in particular makes programs a lot more resilient against low level security exploits where a malicious process or bit of code stills and modifies what's in memory. I have to admit I may get some of these concepts now, but to me this is difficult stuff. I prefer to rely on languages that have some form of garbage collection. That is where the system makes intelligent guesses about what gets tidied up and when. And yes this introduces overhead and is less efficient at least for the OS. It is a difference between elsp of telling me to prepare food in a way that produces no crumbs versus me doing things in my own sloppy way but then cleaning up afterwards. That's fine if I actually do follow through with cleaning up afterwards. Thankfully I guess generative AI systems probably are able to understand the proper use of memory strict languages like rust so would be of help if I wanted to improve my repertoire in that direction. My interest in operating systems and low level coding has led me down some interesting paths. During the New Year's Eve show 2025 I learned that some copies of the original Unix source code were now available and get up. I found the source for Unix system five revision four one of the more populated connections of Unix. Being fascinated to understand what it was doing I started making detailed notes a divided by various LLM programs. What I thought was going to be an afternoon's idle investigation turned into a month long study absorbing much of my spare time and what had started as a handful of notes was now an entire book along with illustrations code snippets and cartoons and printed copies six of my book shelf and I presented to talk about it at our camp 2026. My biological father-in-law even asked for a copy since he collects any such thing offered by anyone in his near or distant family and I was told he may even have read some of it. Anyway this has been a rambal through some of my experiences with C++ and what it means to me. All that's left for me to do is issue the statement return semi-colon. You have been listening to the Hacker Public Radio podcast, at hackerpublicradio.org. Today's show was contributed by a HPR listener like yourself. If you ever thought of recording a podcast, then visit the HPR site to find out how easy it really is. Hosting for HPR has been kindly provided by anhonesthost.com, the Internet Archive, rsync.net, and the HPR Community Content Delivery Network. Unless otherwise stated, today's show is released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.