<< Previous | Next >>

Daily Learnings: Wed, Sep 20, 2023

Aim for the moon. If you miss, you may hit a star. — W. Clement Stone

Thoughts from the Changelog Pod on AI Assistance in Programming

Yesterday I was listening to the Changelog podcast, interviews episode 11, featuring Justin Searls and Landon Gray, from the company Test Double. In the conversation, they ended up discussing their thoughts on AI-assisted development, and what it might mean for the future of programmers.

Several different points of view were shared, and I found some of their thoughts insightful. Ultimately, I took away the following:

History of the Apex Programming Language

I heard one time from someone (potentially Spencer?) that Apex, the programming language for the Salesforce platform, was created by the same person that wrote Java and C#. I’ve said it to multiple people since, but I’m not actually sure if it’s true. In fact, about 2 months ago, I heard on an episode of the Salesforce Developers’ podcast that the CTO of Salesforce created it.

So, in the spirit of trying to stop learning just enough to get by, and not really as much as I can, I decided to dedicate some time this morning to learning more about its history.

References

More on Rust

During lunch today I continued my study of the Rust programming language through the YouTube course offered by freeCodeCamp. In it I learned more about heap memory and stack memory, core computer science principles that I’ve never really stopped to try and learn.

The biggest learning that I took away from today’s study (if I actually understood it right) is the fundamental question of how most programs actually loaded into memory to prepare to run. Using Rust as an example:

  1. The main() method is loaded into stack memory, along with all locally-declared variables and their values
  2. Starting from the top down, the method is inspected to determine if there are any other functions called
  3. If so, each function is inspected and is loaded onto the stack, along with its related locally-declared variables
  4. This process continues till the stack is populated with the contents of the program
  5. The stack runs the program by popping off each method / function call following LIFO

The more I think about it, the more that I believe that this is a really grand over-simplification, and likely I’m getting some things wrong, but it’s a good starting point to understanding how computer programs work today.

References