Crafting Code Podcast
$ cd episodes/017-programming-languages
~/podcast/episodes/017-programming-languages $ ls -1a ~/podcast/episodes $ cat episode-summary.txtProgramming languages are the tools we use to craft code. They have philosophies, environments, ecosystems, and idioms to consider. Picking which languages to use is an important choice for individuals and businesses. Although we all have likes and dislikes, perhaps sometimes we have to leave behind our code baggage to learn something new. But remember most of all: programming is fun!
Timestamps
[00:00:00] Host introductions. Programming languages are the tools you craft with. They influence the complexity and how you think about a project.
[00:08:48] Languages have a philosophy behind them and how they came to be. They have environments, ecosystems, and idioms.
[00:12:58] Using tools the way they were designed to be used. Adapting to language changes over time.
[00:15:57] Why the hosts really like C#: "it ages really well" and can be written on a Mac now. Many languages on the JVM vs. only a few on the CLR: philosophies of evolve vs. create new.
[00:20:43] Programming language as a strategic business choice. Can you hire developers? How do you pick a language, and does it change if you're the one writing the check? Can you think about the business problem, or are you stuck on syntax?
[00:28:02] If the developer quits, does it leave the company unable to use that code? Matt's Golden Rule: when you're being paid to write code, behave the way you'd want if you were paying for it.
[00:33:37] Are you willing to train someone on a tool? Why Dave replaced Python with C# for his project, but kept React. Learn or rewrite is a difficult choice.
[00:37:02] How many languages do you keep in your stable (personally or as a company)? When introducing a new language, consider how different it is from the ones you already have. Is there a low-stakes way to introduce the new language so you can get experience operating it in production? Outages happen; a conference presenter might smash a computer with a hammer!
[00:44:08] You learn a lot by trying different kinds of languages. The Heilmeier Catechism from DARPA. The need to make changes over time (e.g. moving Android apps from Java to Kotlin). Technical recruiters might be surprised at what motivates developers.
[00:50:45] Dynamic vs. static typing. Is TypeScript a signal that strong typing is valuable for large projects? Dynamic languages are fun; TDD can help negate the need for types. Neither dynamic nor static are always better.
[00:57:54] What are some cool language features we appreciate? Adopting concepts from other languages into the one you use daily. LINQ, ORMs, and the impedance mismatch between OO and relational databases. Allan's suggestion: try to just use a small subset of SQL.
[01:07:28] Things we dislike about some languages. Proprietary languages often come in restrictive environments.
[01:14:57] Sometimes we just have to come around to the thing that annoys us, like Allan's example of async..await in C#. New languages need to make sure they get package management right.
[1:19:44] How do you avoid getting stuck in a particular language stack? Rewrite a lot, in small chunks. Stop thinking about your code as something to be revered. "Code is less like brie and more like bourbon?" Maybe you have to leave behind your code baggage.
[1:26:50] What was your first programming language? Programming is fun.
[01:30:41] Outro.
References in this episode:- Out of the Tar Pit
- The Heilmeier Catechism
- Object-relational impedance mismatch
- Boundaries - a talk wherein Allan first learned about functional core, imperative shell
- 128-Language Ouroborous Quine
Copyright © 2024 - Crafting Code Podcast