background-image background-image background-image background-image background-image background-image

Hello, World

Every new programming language is created to do something previously impossible. Today, there are quite a few to choose from. But which ones do you really need to know?

This episode dives into the history of programming languages. We recognize the genius of “Amazing Grace,” also known as Rear Admiral Grace Hopper. It’s thanks to her that developers don’t need a PhD in mathematics to write their programs in machine code. We’re joined by Carol Willing of Project Jupyter, former Director of the Python Software Foundation, and Clive Thompson, a contributor to The New York Times Magazine and Wired who’s writing a book about how programmers think.

Multiple voices: 00:07 Hello world.
Saron Yitbarek: 00:12 Hello world. Is it signal, or is it noise? All the work we do as developers, all the countless hours of coding and stressing and testing, it all comes down to that one question: are we getting our signal across?
Multiple voices: 00:29 Hello.
Saron Yitbarek: 00:29 Or is our signal lost? Are we just making noise.
Saron Yitbarek: 00:40 I'm Saron Yitbarek and this is season two of Command Line Heroes, an original podcast from Red Hat. In today's episode we're found in translation. It's all about programming languages: where they came from, and how we choose which ones to learn. We're doing a deep dive into the ways we talk to our machines. How those languages are evolving. And how we can use them to make our work sing.
Siri: 01:08 Daisy, daisy, give me your answer true.
Saron Yitbarek: 01:11 If you're a developer like me, you probably feel pressure to be a polyglot, to be fluent in a whole bunch of languages. You better know Java. Better know Python. Go JavaScript, Node. Gotta be able to dream in C++. Maybe know a classic like COBOL, just for cred. And you might even be worrying about a newcomer, like Dart... It's exhausting.
Saron Yitbarek: 01:36 The weird thing is, the computers that we're talking to really only speak one language: machine language. All those ones and zeroes flying by, all those bits. Every single language we learn is, at the end of the day, just another pathway to the same place. It all gets boiled down, no matter how abstracted we are when we're doing the work.
Saron Yitbarek: 02:03 And that's what I want you to keep in mind as our story begins, because we're starting with the moment, the completely brilliant moment, when one woman said: "You know what? I'm a human. I don't talk in bits, I don't think in bits. I want to program using English words."
Saron Yitbarek: 02:22 Might seem like a simple concept today, but once upon a time, that idea, the idea you should be able to talk to a computer in your own way was a joke at best, sacrilege at worst.
Saron Yitbarek: 02:37 Season Two of Command Line Heroes is all about the nuts and bolts that underpin everything we do. And this episode's hero is a woman whose journey you need to know if you want to fully understand our reality. So, I give you: the first lady of software.
Speaker 5: 02:58 Ladies and gentlemen, it's with great pleasure that I present Commodore Grace Mary Hopper. Thank you.
Grace Hopper: 03:02 So I went to Canada to speak at the University of Guelph, and I had to go through immigration at Toronto Airport. And I handed my passport to the immigration officer and he looked at it and looked at me and said, "What are you?"
Grace Hopper: 03:17 And I said, "United States Navy."
Grace Hopper: 03:20 He took a second real hard look at me. And then he said, "You must be the oldest one they've got."
Saron Yitbarek: 03:28 That was Rear Admiral Grace Hopper in 1985. She was 79-years old at the time and delivering her famous lecture at M.I.T.. Even then, Grace Hopper was a legend. She was the god mother of independent programming languages. The woman who used compilers so we could use human language instead of mathematical symbols.
Saron Yitbarek: 03:51 She received the National Medal of Technology, and after she died, the National Medal of Freedom. So: not a slouch. They called her " Amazing Grace."
Claire Evans: 04:03 If anybody was born to be a computer programmer, it was Grace.
Saron Yitbarek: 04:06 That's Claire Evans, a tech journalist and the author of a book called Broad Band, about pioneering women in tech. Evans describes that early word of computers, the one Grace Hopper stepped into in the 1940s when she was a young woman in the Navy Reserves and computers were the size of a small room.
Claire Evans: 04:25 All those early programmers, they were like a priesthood. They were people that were specifically good at something that was incredibly tedious, because this is before compilers, before programming languages, when people were really programming at the machine level, bit by bit.
Claire Evans: 04:42 In order to have the constitution to do that kind of thing, you really have to be a specific kind of person, and Grace really was that kind of person.
Saron Yitbarek: 04:49 Right away, she saw how crazy limiting it was for humans to be using a language meant for machines. It was like trying to walk down the street by telling every atom in your body what to do. Possible? Sure. Efficient? No.
Saron Yitbarek: 05:06 There had to be a shortcut between a programmer's intentions and a computer's actions. Humans had been mechanizing mathematical thinking ever since the abacus. There had to be a way to do that again with computers.
Claire Evans: 05:19 In the past, mathematicians used to have to do all this arithmetic. All this tedious step-by-step work in order to get to the really interesting solutions. And then computers came along and offered the possibility of doing that arithmetic by machine, therefore freeing the mathematician to think lofty, intellectual, systems-oriented thoughts.
Claire Evans: 05:39 Except for, that's not really what happened. Ultimately, the computer came along and then the mathematician had to become a programmer. And then they were stuck once again doing all these bit-by-bit tedious rule-oriented, little calculations in order to write the programs.
Claire Evans: 05:53 So, I think, Grace's perspective on it was she wanted to make sure that computers could assist mathematicians to think great thoughts and do great things without bogging them down in the details.
Saron Yitbarek: 06:12 Hopper was joining a long line of thinkers. You've got Pascal in the 17th century with the first calculator. You've got Babbage in the 19th century with the analytical engine. There's this big, beautiful line of inventors who want to build things to supercharge the human brain. Things that let us process more data than we could ever manage on our own. That's the lineage Grace Hopper was stepping into when she invented something that everybody thought was impossible.
Claire Evans: 06:42 I mean, Grace's idea that people should be able to communicate with their computers using natural language, and that language should be machine independent, therefore interoperable between different computing machines was revolutionary in its time.
Claire Evans: 06:59 People that got behind her, this notion that she called, in the early days, "automatic programming," were considered to be like space cadets in the community of programmers and computer people.
Claire Evans: 07:12 And the people who weren't onboard eventually became known as the Neanderthals, it was this huge rift in the computing community.
Saron Yitbarek: 07:21 Hopper did not have an easy time convincing her superiors to cross that rift. But she saw it as her duty to try.
Grace Hopper: 07:30 There's always a line out here. That line represents what your boss will believe at that moment in time. Now, of course, if you step over it, you don't get the budget. So you have a double responsibility to that line: don't step over it, but also keep on educating your boss so you move the line further out, so next time you can go further into the future.
Saron Yitbarek: 07:52 That future she pushed toward is our present. Pretty much every language that you and I rely on owes a debt to Hopper and her first compiler. So that's space cadets “one”, Neanderthals “zero”.
Saron Yitbarek: 08:07 The idea that we could code not with numbers, but with human-style language. All of a sudden you're typing "Go to Operation 8," or, "Close file C." It was programming made human.
Claire Evans: 08:21 Grace was uniquely aware of the fact that computing was going to be a world changing thing, but it wasn't going to be a world changing thing if nobody understood how to access it or use it. And she wanted to make sure that it was as open to as many people as possible and as accessible to as many people as possible.
Claire Evans: 08:37 And that required a certain level of concession to comprehensibility and readability. So ultimately the desire to create programming languages came from wanting to give more points of entry to the machine and taking it away from this priesthood and opening it up to a greater public and a new generation.
Saron Yitbarek: 08:59 I wanna pause here and just underline something Claire said: programming languages as we know them today come from a desire to open the tech up. To take it away from a priesthood of math PhDs and make development accessible.
Saron Yitbarek: 09:14 The spirit of the compiler that does all that work, it's motivated by a sense of empathy and understanding.
Saron Yitbarek: 09:21 Claire's got a theory about why Hopper was the woman to deliver that change. It has to do with Hopper's work during World War II.
Claire Evans: 09:29 She was doing mine sweeping problems, ballistics problems, oceanography problems. She was applying all of these different, diverse disciplines representing all the violent, chaotic, messy realities of the war and translating them into programs to run on the Mark I computer.
Claire Evans: 09:45 She knew how to do that translation between languages. And I don't mean computer languages, I mean like human languages. She understood how to listen to somebody who was presenting a complex problem, try to understand where they were coming from, what the constraints and affordances of their discipline was and then translate that into something that the computer could understand.
Claire Evans: 10:06 In a way she was like the earliest compiler. Like, the embodied human compiler because she understood that you had to meet people on their level.
Saron Yitbarek: 10:17 Compiling as an act of empathy and understanding. I think we can all keep that in mind when we learn new languages, or wonder why something isn't compiling at all. The compiler's job should be to meet your language where it lives.
Saron Yitbarek: 10:32 Grace Hopper knew that once humans could learn to speak programming languages, and once compilers began translating our intentions into machine language, well, it was like opening the floodgates.
Claire Evans: 10:43 She knew that computing could never develop as an industry, as a world changing force if it was too siloed and too specific. And people who were its practitioners couldn't communicate with the people whose problems needed to be put on the machine, so to speak.
Claire Evans: 11:00 So she was really quite expert at that kind of human translation, which I think, yeah, made her uniquely qualified to be thinking about and creating programming languages.
Saron Yitbarek: 11:15 Hopper's work on English-style data processing language eventually evolved into COBOL, which is sort of perfect, because COBOL is not flashy, it's very down to business, and so was Grace Hopper.
Saron Yitbarek: 11:28 In a way, she gave us a language that sounded a lot like her. Also like Hopper, COBOL's got longevity. It's still around 60 years later.
Saron Yitbarek: 11:50 Okay, so Grace Hopper's compilers were like babelfish, parlaying meaning between programmers and their machines. And they were translating things from higher and higher levels of abstraction.
Saron Yitbarek: 12:03 Then, a few decades later, we get another crucial ingredient added to the language mix. So picture this: the free software community took off in the 1980s, but when the Unix alternative, GNU, was created, there weren't any free and open compilers to go with it.
Saron Yitbarek: 12:22 In order for GNU to give us a real open-source alternative to Unix, in order for programming languages to thrive in the open-source world, the community would need to pull a Grace Hopper — we needed an open-source compiler.
Saron Yitbarek: 12:38 Here's Langdon White, a platform architect at Red Hat talking about where things stood.
Langdon White: 12:45 In the 80s, you can still go spend ten grand pretty easily on a compiler. The free part was a big deal. I don't have an extra ten grand lying around to go buy myself a compiler. Plus the fact that I'd have to buy myself a compiler for every platform I want to target. So, in those days it was mostly Unix, but all the different flavors.
Langdon White: 13:06 So you wouldn't be able to just buy one, you would also have to buy multiple for different architectures or different vendors.
Saron Yitbarek: 13:14 Langdon notes that it was more than just costs at stake. In some cases, it was the coding work itself.
Langdon White: 13:21 People don't realize that it matters how you structure your code in very specific ways. So doing nested for loops or doing nested while loops or that kind of thing may be okay, depending on the compiler.
Langdon White: 13:38 So, you know, if you don't know how it's optimizing your code it's very, very difficult to know how to write your code to get the most optimization.
Saron Yitbarek: 13:49 Suffice to say, we needed a free option, an accessible option, a trustworthy option. What we needed was the GNU C compiler, the GCC. That was the beast, first released in 1987, that merged Grace Hopper's compiler revolution with the free software movement.
Saron Yitbarek: 14:12 It standardized things and let everybody compile what anybody else had written. The richness of our languages is thanks to that moment.
Carol Willing: 14:22 The fact that the GCC was open sort of moved languages to a different level.
Saron Yitbarek: 14:29 Carol Willing works at Project Jupiter, and she's the former director of the Python Software Foundation.
Carol Willing: 14:35 People started realizing that proprietary languages, while they served a purpose at the time, they weren't going to gain the acceptance and adoration of the developer community. Because if I'm a developer, I'm going to want to learn what is most commonly used and as well as what is new and on the forefront.
Carol Willing: 14:59 I don't necessarily want to develop a skill that will lock me into one technology. I think one of the reasons that Python was so successful is it was open source, it had a very clean syntax.
Carol Willing: 15:11 What it was doing is it was allowing people in a common way to solve problems quickly, efficiently. And to also allow people to collaborate. And I think those are the signs of good programs and good libraries is: if you can get your work done with a minimum amount of headache and you can share it with others. I think that's golden.
Saron Yitbarek: 15:35 Over the years, the GCC evolved to support Java, C++, Ada, Fortran, I could go on.
Carol Willing: 15:43 By having a common underlying interface like the GCC, it lets people take languages and then customize them to their particular needs. For example, in the Python world, there's many different libraries and even specifically in the scientific Python world, we've got things like numpy, and scikit-image, scikit-learn.
Carol Willing: 16:08 And each of those had sort of a more specific task that they are known for. So, we've also seen things like bioinformatics and natural language processing. And so people are able to do many different things working off a common base. But then putting elements into their languages or libraries that allow them to optimize problem solving in their particular industry or area.
Saron Yitbarek: 16:42 So, this is what happens when compiler technology runs headfirst into the open source movement, right? Over time, the collision creates a big bang of new community-supported languages that anybody can learn and build with.
Saron Yitbarek: 16:58 There are hundreds and hundreds of those languages being used today.
Carol Willing: 17:03 As open source became more popular and more accepted, what we've seen is a proliferation of languages. There are a number of languages around cell phone technology and mobile. Different languages that help make game development more straightforward. All purpose languages, like Python and Ruby that were sort of foundational for the web development and delivery of web applications and websites.
Saron Yitbarek: 17:34 The list goes on. And, yeah, that Tower of Babel we're building is just going to get more packed in the future. But look, you can also see it as a cornucopia, a language feast. And we're going to help you sort through that feast — next.
Saron Yitbarek: 17:55 Okay, so I know where the language flood came from. But how do we make sense of it all? How do we pick out languages that matter to us? It's a big question, so I brought in some help: Clive Thompson's one of the best writers out there for making sense of the tech world. He's a columnist at Wired, a contributing writer at the New York Times Magazine, and he's working on a book now about the psychology of computer programmers.
Saron Yitbarek: 18:24 Which is perfect, because we need to know what's going on in our brains when we choose which ones to learn.
Saron Yitbarek: 18:31 Here's me and Clive hashing it all out.
Saron Yitbarek: 18:35 When I was first starting out as a new developer, I just said, "Lemme find the best one, I'm going to get really good at it. And then I'll be done."
Saron Yitbarek: 18:44 But it's not quite that simple. Why are there so many programming languages?
Clive Thompson: 18:49 Each language has sort of a bias of things that it's good at. So, typically, the reason that someone creates a new language is there's something they want to do that existing languages aren't good for. JavaScript is a good example of that.
Clive Thompson: 19:03 Netscape had created a browser back in the mid '90s and all these web masters wanted to do something a little more interactive. They wanted there to be a way to have a bit of scripting inside their website.
Clive Thompson: 19:16 And so these demands were coming to Netscape. And they were like, "Alright, we need, there's nothing out there that can do this, we need a scripting language that we build inside our browser."
Clive Thompson: 19:25 And so they hired Brendan Eich, who was considered a senior guy. He was like 32, and everyone else was like 21.
Saron Yitbarek: 19:32 That's senior in developer world.
Clive Thompson: 19:35 And they gave him ten days to make JavaScript. So he literally just didn't sleep for ten days and he frantically cranked out a scripting language. And it was kind of ungainly and kind of a mess. But it worked. And it allowed people to do very simple things, it had buttons and dialogs and popups and whatnots.
Clive Thompson: 19:54 And so that's an example of a language that came, was created to do something that wasn't really possible at that point in time.
Saron Yitbarek: 20:01 That's fascinating.
Clive Thompson: 20:03 So that's why so many languages exist, is that people keep on finding a reason to do something that no one else can do.
Saron Yitbarek: 20:11 So what is so interesting to me about the relationship between developers and our programming languages is we have such a strong attachment to these tools, why is that?
Clive Thompson: 20:22 There's a couple reasons why. One is that sometimes it's literally just an accident of what was the first language that you learned. And it's kind of like your first love.
Clive Thompson: 20:30 And I think it's also like different personalities work with different types of languages. Like, you look at Facebook, and it was designed using PHP. And PHP is kind of a hairball of a language. It's very irregular. And it sort of grew in these fits and starts. And that's sort of the way Facebook feels, too.
Clive Thompson: 20:49 In comparison, the guys at Google decided, "We want a super high performance language, because Google, at Google we're all about things running really fast, and things, sustaining trillions of users at once."
Clive Thompson: 21:02 And so they decide to make Go, and Go is a really terrific language for that sort of high-performance computing.
Saron Yitbarek: 21:08 Let's go a little bit deeper. Is it that I, as a developer, with my specific personality, am going to be naturally attracted to certain languages? Or that the language I work in might influence my personality?
Clive Thompson: 21:25 Well, definitely both. But I do think that there is a really strong resonance that people find when they hit a language that they like. You go to a computer science curriculum and you sort of learn what you have to learn: they're all teaching Java. Sometimes more JavaScript or Python.
Clive Thompson: 21:46 But the point is, you're forced to learn it, so you learn it. But what do people do when they have the choice? And this is where you really see how the sort of emotional or psychological style of someone gravitates towards a language, because I talked to one guy who tried learning JavaScript a bunch.
Clive Thompson: 22:03 And it was just sort of, it's kind of an ugly language to look at. It's go the curly bracket nightmare going on. And so he tried and failed and tried and failed and tried and failed. And then one day he saw a friend working in Python. And it just looked so clean and beautiful to him. He was kind of a writer, and it's often regarded as a writerly type of a language, because the indentation makes everything easy to read.
Clive Thompson: 22:28 And it just clicked with him, because there was just something about the way that Python worked and looked, it's beautiful sparseness, that hit him.
Saron Yitbarek: 22:39 So, talking with Clive I realized there are languages that are thrust upon us. I'm talking about those ancient languages that are just baked into everything we work with — the code Latin.
Saron Yitbarek: 22:53 But there're also languages we choose, the languages that fit our personalities. And if you want to know what's new and shaking things up, you want to ask a developer what they use on the weekend.
Saron Yitbarek: 23:05 Here's more of our conversation:
Clive Thompson: 23:08 So when I ask people: "What are you doing in your spare time?" It'll be all this weird stuff. I think it's actually one of the things that sort of, you know, nice and laudatory about developer behavior is that they tend to be very curious people.
Clive Thompson: 23:22 I know people that decided, "I'm going to learn Erlang, just for the hell of it."
Saron Yitbarek: 23:26 I'm trying to imagine these projects that people are working on on the weekends. And it's almost like the project is secondary. It's like the learning of the tool, the language, is more important. That's really what they're there for.
Clive Thompson: 23:41 Exactly. This, is sort of why you'll see people just constantly re-iterating over and over again these calendaring and to-do list things because it's a very quick way, just to figure out, yeah, what does this language do and how does it work and it almost doesn't matter what I'm building, so long as I'm building something.
Clive Thompson: 23:56 They want to know what it feels like to think in that language. Is it going to be, is it going to feel easy, and thrilling and fluent in a way that I'm not experiencing with the current languages? Is it going to open up doors to make things easier to do?
Clive Thompson: 24:13 So there's a possibility space that occurs when you encounter a new language that can be really exciting. Imaginatively exciting.
Saron Yitbarek: 24:20 So I'm a Ruby, a very proud Ruby on Rails developer, I think it was about two years ago that another pretty well known Ruby developer, Justin Serrals, did this really great talk advocating for this idea that a language doesn't need to be sexy to be used.
Saron Yitbarek: 24:41 And his thesis, his whole point was that Ruby was really exciting because it was new. And it kind of got to a point about a couple years ago where it just didn't need any more things. It was done. It was a stable language, it was a mature language, and, as a result of it being mature, it's not as exciting for developers. It's not this new toy to play, and so we kind of slowly moved away from it on to the next shiny thing.
Saron Yitbarek: 25:05 So, in a sense, it's almost our own curiosity that might kill a language, or make it a little more stale, independent of whether the language is actually good or bad.
Clive Thompson: 25:18 I think that's absolutely true. In fact, the downside of this deep curiosity and desire to self-educate that you see amongst developers is that they're constantly trying to find the new shiny thing. And use that language to replicate things that are already basically done pretty well by other languages.
Saron Yitbarek: 25:37 Right.
Clive Thompson: 25:37 So that's that. Curiosity is a benefit and a trap.
Saron Yitbarek: 25:43 Yeah, beautifully put.
Saron Yitbarek: 25:49 Sometimes our curiosity may be a trap. But it's also the thing that fuels the evolution of languages. Every new language is created because someone said, "What if?" They come about because that developer wanted to do something different.
Saron Yitbarek: 26:06 They wanted a whole new way of saying it.
Grace Hopper: 26:08 And I'll promise you something.
Saron Yitbarek: 26:11 I think Grace Hopper deserves a last word here.
Grace Hopper: 26:15 Just during the next 12 months, any one of you says that we've always done it that way, I will instantly materialize beside you and I will haunt for 24-hours. And see if I can get you to take another look. We can no longer afford that phrase, it's a dangerous one.
Saron Yitbarek: 26:34 The story of Grace Hopper and the first compiler reminds us that there's always a better way to do something if we can just find the words.
Saron Yitbarek: 26:43 And, no matter how abstract those languages become, whether we're floating high or low over the ones and zeroes of machine language, we need to make sure it's a smart choice. We choose the language, or maybe even build the language that helps our intentions come closer to reality.
Saron Yitbarek: 27:03 If you want to learn more about languages and compilers, you are not alone. We pulled together some super useful material to help you dive deeper. And it's all waiting for you in our show notes. Check it out at redhat.com/commandlineheroes.
Saron Yitbarek: 27:20 Next episode, we're tracking the complicated path toward making open-source contributions. What are the real life struggles of maintainers? How do we make that very first pull request?
Saron Yitbarek: 27:32 We're taking you through Contributing 101.
Saron Yitbarek: 27:39 Command Line Heroes is an original podcast from Red Hat. Listen for free on Apple Podcasts, Google Podcasts, or wherever you do your thing.
Saron Yitbarek: 27:48 I'm Saron Yitbarek, until next time keep on coding.

Keep going

The Importance of a Nanosecond: Remembering Grace Hopper

Grace Hopper inspired many engineers. Here’s one story of a young developer lucky enough to see her in person.

How many programming languages have you used?

Machines speak one language—but we humans speak to machines in so many ways.

Command Line Heroes: The Game

This week’s post: How open source game development hones valuable skills. Gaming languages, gaming in open source, and Open Jam.

Featured in this episode

Grace Hopper

U.S. Navy rear admiral and computer scientist who invented the first compiler. She promoted the development of programming languages that use words instead of binary

Claire Evans

Tech journalist and author of Broad Band, the untold story of the women who made the internet

Clive Thompson

Columnist at Wired and contributing writer at the New York Times magazine

Carol Willing

Research software engineer and core developer for Project Jupyter

Also in this episode

Get the newsletter

After each episode drops, we'll send you commentary from the Command Line Heroes team, as well as links that help you take a closer look at the topics we cover. It's as simple as that.

Presented by Red Hat

For 25 years, Red Hat has been bringing open source technologies to the enterprise. From the operating system to containers, we believe in building better technology together—and celebrating the unsung heroes who are remaking our world from the command line up.