Update metadata and transcripts through end of July 2026
Refreshed episodes/hosts/comments/series from hpr.sql, and added official HPR transcripts for the 180 episodes aired since the last sync (hpr4516-hpr4695).
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
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.
|
||||
Reference in New Issue
Block a user