PROGRAMMING LANGUAGES · EPISODE 1 OF 15 · 11 MIN ·

What's the difference between a language, a framework, a library and an IDE?

Ask a few programmers what they work in, and you'll hear answers like JavaScript, React, Node, or VS Code. They sound like four of the same thing. They aren't. One is a language, one calls itself a library, one is a runtime, and one is a place where you write code.

▶ Watch on YouTubePlay the whole Programming Languages series ▶

The full story

The episode's narration, word for word. Numbers link to the sources below; timestamps play that moment.

The question 0:00

Ask a few programmers what they work in, and you'll hear answers like JavaScript, React, Node, or VS Code 1. They sound like four of the same thing. They aren't. One is a language, one calls itself a library, one is a runtime, and one is a place where you write code 1,2,3,4. So what's the difference between a language, a library, a framework and an IDE? And why do programmers argue about which is which?

The survey sorts them 0:32

In 2025, the website Stack Overflow surveyed developers, with about forty-nine thousand responses 5. It doesn't put these names in one list. JavaScript sits under languages, where sixty-six per cent of the people who answered that question had done serious work in it that year 1. React and Node sit under web frameworks and technologies, at about forty-five and forty-nine per cent 1. And VS Code sits under development environments, at about seventy-six per cent 1. Different lists, because they do different jobs.

A kitchen 1:10

To keep them straight, picture a kitchen. The programming language is the language the recipes are written in, plus a cook who can read it. A library is a jar of ready-made sauce you reach for when you decide to. A framework is a restaurant line, where the head chef calls the orders and calls on your station when it needs your dish. And the IDE is the kitchen itself: the bench, the drawers, the timer. We'll mark where this picture breaks, because it does.

Rules 1:43

Start with the language. A programming language is a set of rules 6,7. Some rules say which strings of symbols are allowed, which is called the syntax, like a grammar 7,8. Others say what those symbols mean, which is called the semantics 8. In Python, "print, two plus three", in brackets, prints five 9. Leave off the closing bracket, and Python refuses to run it at all, and says the bracket was never closed 9. Here's the first place the kitchen breaks. A human cook would guess what you meant. Python won't: it stops and tells you 9.

And a way to run them 2:22

But rules on paper don't run anything. You also need a program that reads code in that language and runs it, or translates it so it can be run, which is called an implementation 6. Python's own reference manual describes the language, and then lists several implementations 7. The main one, CPython, is written in C, and another, Jython, is written in Java 7. Other languages have other rules: JavaScript says "console dot log" instead of "print", but it prints the same five 10.

Three words in one breath 2:58

Three more words, one line each. A compiler translates code into another form, but doesn't run it 6. An interpreter reads code and runs it straight away 6. Many real systems do a bit of both: CPython is an interpreter with a compiler inside it 6. And the runtime is the help a program needs while it's running, like a cleaner that frees up memory the program has finished with 6. Node.js, from that survey, is a runtime: it runs JavaScript outside the web browser 2.

A library made of tape 3:33

Now, libraries, and the word is older than you might think 11,12. On the sixth of May 1949, at the University of Cambridge, a computer called EDSAC ran its first logged program, a table of the squares of the numbers up to ninety-nine 11. Around then, the lab's programmers began building a shared library of subroutines: small, tested pieces of program that did one job each 11. David Wheeler had worked out how to make them reusable 11,13. They were kept on punched paper tape, and you copied the ones you needed onto the end of your own program's tape 13.

Couldn't have managed without it 4:12

In 1951, Maurice Wilkes, David Wheeler and Stanley Gill published a book on programming EDSAC that's often called the first programming textbook, and it set out how the library worked 13,12. One early user, D. H. Shinn, remembered that Wheeler spent a fair amount of his time in 1950 writing and testing subroutines for everyone else 14. "We couldn't possibly have managed without his subroutines," he wrote 14. That's still what a library is for.

Code you call 4:47

A library is code that you call when you choose to 15. Python comes with a library called statistics 16. Ask it for the average of three, five and ten, and it hands back six 16. You called it, it did its job, and control came straight back to you 15. In the kitchen, that's the jar of sauce: you decide when to open it.

The supplier 5:11

Libraries that don't come with the language are usually fetched with a package manager 17. For Python, that's a tool called pip, which installs packages from the Python Package Index 17. On the seventh of October 2026, that index listed just over nine hundred thousand projects 18. JavaScript's equivalent is npm 19. And libraries often need other libraries, called dependencies, which the package manager fetches too 19,20. So your project can lean on code you've never seen 21,19.

Eleven lines 5:46

On the twenty-second of March 2016, after a dispute over a package name, a developer called Azer Koçulu removed all two hundred and seventy-three of his packages from npm 21,19. One was called left-pad 21. That afternoon, npm began seeing hundreds of failures a minute, as projects that depended on it, and projects that depended on those, failed to build or install 21,19. A replacement appeared within ten minutes, but some projects wanted the exact old version, so npm restored it from a backup 21. The disruption lasted about two and a half hours 21.

Built in 6:28

And left-pad was tiny. It just adds characters to the left of some text until it's long enough, in eleven lines of code 19,22. JavaScript has since built the same job into the language, as padStart, available across browsers since April 2017 23. Both turn five into zero zero five 22,23. Afterwards, npm changed its rules, so a package that other projects depend on can no longer simply be removed once it's a few days old 19,24. The lesson wasn't that libraries are bad. It was that every library you use is a bit of trust.

Code that calls you 7:08

Now frameworks, and the difference is who's in charge 15. With a library, your code is the boss: it calls the library. With a framework, the framework is the boss 15. It runs the show, and it calls the bits of code you plug into it, at the moments it decides 15. Programmers call this inversion of control 15. That's the restaurant line, where the head chef calls the order and you cook your part.

Don't call us 7:37

It has a nickname, too: the Hollywood Principle. Don't call us, we'll call you 15. The programmer Martin Fowler found that it seems to come from a paper on a programming system called Mesa, by Richard Sweet, which he dates to 1983 15. It listed "Hollywood's Law" as a design goal 15. The term inversion of control seems to have first appeared in a 1988 paper by Ralph Johnson and Brian Foote 15. They described frameworks as extensible skeletons: you fill in the parts 15.

A framework you can run 8:15

Here's a small framework that comes with Python, called unittest, for testing code 25. We write a test called test add, which checks that two plus three is five. Notice we never call test add ourselves 25. The last line hands control to the framework, which finds our test, runs it, and reports back: one test ran, and it passed 25. The frameworks that build whole websites work on the same principle, just much bigger 15.

Why accept a boss? 8:45

So why would you let someone else's code run the show? Because a framework arrives with the general machinery already built, and you supply only the parts that are specific to your app 15. You get to spend your time on the part that's yours. The cost is that you work its way, and you have to learn its way first. That trade-off gets its own episode later this season.

The fuzzy line 9:10

The labels themselves are argued about. React's own website calls it the library for web and native user interfaces 3. Yet the survey files it under web frameworks and technologies, a deliberately broad list, next to Node, which is a runtime 1,2. Our kitchen breaks here too. Libraries and frameworks aren't ingredients at all. They're more code, written by someone else, and the line between them can blur, as React shows 1,3. The useful question is the simple one: who calls whom 15?

The workshop 9:44

Last, the IDE, short for integrated development environment 4. It's the workshop: one program that brings the tools for writing software together 4. There's an editor that colours your code and suggests what comes next, and flags some mistakes as you type 4. And there's a debugger, which lets you pause a running program and look inside 4,26. But the IDE isn't the language. The same Python file, run by the same Python, behaves the same whether you wrote it in an IDE or a plain text editor. Here the kitchen breaks again: you can cook without one.

The map 10:25

So here's the map. A language is the rules, and an implementation is what runs them 6,7. A library is code you call 15. A framework is code that calls you 15. A package manager fetches the libraries, and the libraries they need 17,20. And the IDE is the workshop where you build it all 4.

The season ahead 10:46

This season takes the big names one at a time. Is HTML a language at all? How did JavaScript end up running the web? Why does a much-mocked language still run so much of it, and why is a supposedly slow language the one people reach for in AI? Then C, Java, Rust and Go, the database language SQL, the IDE, and which language to learn first. But all of it starts with the same puzzle. How does code you can read become something a chip can run?

Sources

Every factual claim in the episode is tied to one of these. Spotted an error? Tell us.

  1. Stack Overflow Developer Survey 2025: Technology — survey.stackoverflow.co
  2. Node.js, Introduction to Node.js — nodejs.org
  3. React home page (fetched 7 October 2026) — react.dev
  4. Red Hat, What is an IDE? — redhat.com
  5. Stack Overflow Developer Survey 2025, Methodology ("49,009 responses from 177… — survey.stackoverflow.co
  6. Robert Nystrom, Crafting Interpreters, "A Map of the Territory" — craftinginterpreters.com
  7. The Python Language Reference, 1. Introduction — docs.python.org
  8. The Python Language Reference, index ("describes the syntax and core semantics of the… — docs.python.org
  9. Python Tutorial, 8. Errors and Exceptions (syntax errors) — docs.python.org
  10. MDN Web Docs, console: log() static method — developer.mozilla.org
  11. University of Cambridge Computer Laboratory, EDSAC 1 and after: history timeline — cl.cam.ac.uk
  12. Wikipedia, Library (computing) — en.wikipedia.org
  13. Wikipedia, EDSAC — en.wikipedia.org
  14. University of Cambridge Computer Laboratory, EDSAC 1 and after: reminiscences — cl.cam.ac.uk
  15. Martin Fowler, "Inversion of Control" (26 June 2005) — martinfowler.com
  16. Python documentation, statistics: Mathematical statistics functions — docs.python.org
  17. pip documentation — pip.pypa.io
  18. The Python Package Index home page (fetched 7 October 2026) — pypi.org
  19. Wikipedia, npm left-pad incident — en.wikipedia.org
  20. pip documentation, Dependency Resolution ("capable of determining and installing the… — pip.pypa.io
  21. npm Blog (archive), "kik, left-pad, and npm" (March 2016) — blog.npmjs.org
  22. left-pad 0.0.3, index.js (as published on npm, via unpkg) — unpkg.com
  23. MDN Web Docs, String.prototype.padStart() — developer.mozilla.org
  24. npm Docs, npm Unpublish Policy (unpublish within the first 72 hours; after that only… — docs.npmjs.com
  25. Python documentation, unittest: Unit testing framework — docs.python.org
  26. Python documentation, pdb: The Python Debugger ("setting (conditional) breakpoints and… — docs.python.org

Researched and scripted with AI assistance, fact-checked claim by claim, with synthetic narration and diagrams drawn in code. How we make episodes.

More from Programming Languages