Jonathan Aldrich
jonathanaldrich.bsky.social
Jonathan Aldrich
@jonathanaldrich.bsky.social
Professor at Carnegie Mellon University, working on programming languages and software engineering. Coauthor, Programming Language Pragmatics (videos: https://tinyurl.com/PLP5vids). CTO of noteful.net ACM Publications Board member. He/him.
A recursive type is a type that has references to other objects of the same type. Recursive types support heap data structures like lists and trees. Learn about recursive types in different languages and how typechecking works in my latest Programming Language Pragmatics video!
November 15, 2025 at 3:42 AM
How do arrays work?

My latest Programming Language Pragmatics video talks about layout options for multidimensional arrays, array slices, and index computations. I also talk about built-in string and set datatypes, including super-cool bit vector representations. Check it out!
November 5, 2025 at 3:12 PM
Halloween 2025 - Claire and Jamie!
November 3, 2025 at 5:08 PM
Unions are data types that can hold one of several different representations at run time - allowing you to represent data structures with different variants, or in systems code, interpret the same bytes in two different ways. Learn all about unions in my latest Programming Language Pragmatics video!
November 3, 2025 at 1:08 PM
How to records work in programming languages?

My latest Programming Language Pragmatics video covers it all: record syntax, operations, semantics, (sub)typing, and run time layout!

PLP 8.1: Records - youtu.be/qgG555CJPmM
October 31, 2025 at 12:01 PM
How can we reuse one function with multiple types?

Polymorphism! My latest Programming Language Pragmatics video covers polymorphic (generic) types: type checking, implementation strategies, type constrains, and polymorphic type inference.
October 29, 2025 at 4:02 PM
How do we check that types are compatible in a program?

My latest Programming Language Pragmatics video talks about type compatibility and structural vs. name equivalence, as well as coercions and how to insert them.
October 27, 2025 at 4:34 PM
What is a type?

My new Programming Language Pragmatics video discusses denotational, structural, and behavioral views of typing, demystifies terminology, talks about why types are useful, and introduces subtyping.

PLP 7.1: Type Systems - youtu.be/jjYg8aNAYOY
October 22, 2025 at 4:15 PM
What iteration and recursion constructs do programming languages provide, and how are they implemented?

In my latest Programming Language Pragmatics video, I talk about constructs from while loops through generators to tail-recursive functions, along with implementation approaches and tradeoffs.
October 20, 2025 at 4:19 PM
Why don't we write programs with goto in high level languages anymore?

My latest Programming Language Pragmatics video talks about how structured control flow constructs for sequencing and selection replaced more primitive constructs to help make programs more understandable.
October 17, 2025 at 4:02 PM
How do programming languages define control flow?

In my latest Programming Language Pragmatics video, I talk about precedence, order of evaluation, and expression vs. statements. Control flow matters most for side effects; I talk about tradeoffs involved and forms of assignment.
October 16, 2025 at 1:40 AM
Durian! With sticky rice and coconut milk.
October 15, 2025 at 4:01 AM
How does one write efficient code for modern processors?

My new Programming Language Pragmatics video covers a big part of the answer: using instruction scheduling and register allocation to reduce pipeline stalls that compromise performance!
October 13, 2025 at 2:35 PM
What instructions do modern processors support? What can you express with them? And how are processors implemented to execute them efficiently? Get a high-level overview in my latest Programming Language Pragmatics video!
October 10, 2025 at 12:24 PM
How is data represented in computer architectures?

My latest Programming Language Pragmatics video gives compiler writers information about twos-complement integers, floating point numbers, and little-endian vs. big-endian byte order, useful for manipulating data in target code.
October 9, 2025 at 9:39 AM
Language implementers need a solid grounding in processor architecture in order to understand how to generate good code. In my latest Programming Language Pragmatics video, I put on my "architecture hat" to cover the memory hierarchy and explain the implications for code generation.
October 6, 2025 at 10:39 PM
How do we know that the semantics of a programming language are right?

My latest Programming Language Pragmatics video covers type soundness: the static and dynamic semantics of a language fit together, so that if a program type checks, it will not experience unexpected type errors when it runs.
October 3, 2025 at 4:33 PM
In addition to checking for typing and other errors, semantic analysis may transform the representation of the program. In today's Programming Language Pragmatics video, I describe how one such transformation, the constant propagation optimization, can be specified using rewriting rules.
October 1, 2025 at 8:33 PM
Interested in taking your software development career to the next level? I'm hosting an information session for CMU's Master of Software Engineering programs this Wednesday October 1st, 1pm EDT. We focus on training leaders in SE, and our graduates' records prove that it works!🧵
September 29, 2025 at 11:42 AM
How does one implement a type checker?

My latest Programming Language Pragmatics video discusses how a type checker, like an interpreter, traverses the AST of a program, implementing the functionality of the typing rule for each AST form.
September 29, 2025 at 8:15 AM
Ever wonder where Peter, Susan, Edmund, and Lucy lived before the war and Narnia? I think I found it!
September 28, 2025 at 10:05 AM
Q: How do you define the meaning of a program?

A: With semantics! How program output is computed from input, and checking of rules. Watch my new Programming Language Pragmatics video, covering dynamic vs. static semantics, & how to represent a program with abstract syntax trees.
September 15, 2025 at 9:41 PM
Introduction to Formal Semantics in class today-- dressing for the occasion!
September 3, 2025 at 3:57 PM
What's the difference between compilation and interpretation? Why choose one over the other?

Watch the full Compilation, Interpretation, and Environments video to find out: youtu.be/mrmoRheZJus

For more details, pick up a copy of our Programming Language Pragmatics text!
August 12, 2025 at 2:54 PM
Why would YOU choose one programming language over another?

I talk about programming languages, tradeoffs, and why we study them in my first Programming Language Pragmatics video. Check it out!

Full video: www.youtube.com/watch?v=hwL0...

Playlist: tinyurl.com/PLP5vids
August 10, 2025 at 1:27 PM