
The Best Programming Languages to Learn First — Settled by Vote
Thirteen first languages ranked on one measure: how much stands between you and a program that runs. Vote the order into shape. Three rules, applied in that order: does your program have to be built before it runs, how many lines of the language's own published first program are scaffolding rather than the line that prints, and does its own getting-started make you set up a module, package or IDE first. Ties after that fall to the alphabet, which decides four of the twelve gaps here and is not pretending to be a judgment. HTML and CSS are absent because they are not programming languages, and SQL because its own encyclopedia entry calls it a domain-specific language for managing data. Eight entries link the language's own home page; five link Wikipedia, because C, C++ and JavaScript answer to standards bodies rather than owners, Scratch's site refuses this crawler, and Oracle's Java page turns out to be a software catalog.
- 1
JavaScript
Every browser you own already ships the runtime. The encyclopedia puts it plainly: web browsers have a dedicated JavaScript engine that executes the client code. No download, no compiler, no project folder to create first, so open the console and start typing. That same lead calls it a core technology of the Web, alongside HTML and CSS. Nothing at all stands between you and a running program, which is the only thing measured here.
https://en.wikipedia.org/wiki/JavaScript - 2
Scratch
Drag a block and something happens on screen. No semicolons, no typos, no missing brace to hunt for at midnight. The encyclopedia describes a block-based visual programming language and website aimed primarily at children as an educational tool, with a target audience of ages 5 to 16. Nothing to install and no line to get wrong: it ties the entry above on every rule in this list, and the alphabet separated them.
https://en.wikipedia.org/wiki/Scratch_(programming_language) - 3
Python
Install one runtime and the first thing you type is the thing you meant to type: no wrapper function, no class, nothing to build before it runs. The front page of python.org shows the language sitting at an interactive prompt doing arithmetic, with a comment naming floor division. Ruby matches it on every rule that applies here, so the alphabet, not the merits, decided which of the two came first.
https://www.python.org/ - 4
Ruby
Its own quickstart never hands you a file. You get dropped into irb, the interactive shell, and told to type puts before anything else happens, with nothing wrapped around it, no compiler in the way, no project to set up. Site title comes back as Ruby Programming Language. Sits one place behind Python only because the tie had to break somewhere and the alphabet did it.
https://www.ruby-lang.org/en/ - 5
C#
Microsoft's own hello-world tutorial prints from a bare statement, with no class and no Main method anywhere in the file, since top-level statements did away with both, and the sample's second line prints the current time. The SDK compiles before it runs, though, and that build step is the whole reason this sits below the interpreted entries rather than among them.
https://dotnet.microsoft.com/en-us/languages/csharp - 6
Rust
Chapter one of the book compiles a loose file: rustc main.rs, in a directory you made yourself, with no package manager anywhere near it. One wrapper line, fn main, around a println call. A playground on the project's own domain bills itself as a browser interface to the compiler. Ahead of Kotlin because Kotlin's own first instruction is to install an IDE, and this one's is not.
https://rust-lang.org/ - 7
Kotlin
One wrapper and you are done: fun main around a println call, taken straight from the official tour. But the getting-started page opens by telling you to download and install one of these IDEs before using the language at all, and that setup is what drops it a place. JetBrains runs a playground on the language's own domain if you would rather not.
https://kotlinlang.org/ - 8
C
Two lines of preamble arrive before anything prints: an include of the stdio.h header, then the main function. The lead sentence has it created in the 1970s by Dennis Ritchie, and the modern hello-world in that article quietly drops the trailing return. Nobody publishes a home page for it, because the standard belongs to a committee, so this one links an encyclopedia instead.
https://en.wikipedia.org/wiki/C_(programming_language) - 9
C++
Also two lines of scaffolding, an iostream include and a main function, though the same article shows a newer version that swaps the header for import std and prints with a single call. Bjarne Stroustrup built it, per the lead sentence. Scores identically to the entry above on every rule that can be applied, and the alphabet is the only thing separating the two.
https://en.wikipedia.org/wiki/C%2B%2B - 10
Java
A class you do not need and a static method you cannot explain yet. Oracle's own tutorial wraps its one printing line in class HelloWorldApp and public static void main(String[] args), which is two lines of ceremony before the greeting. Oracle's Java page is titled Java Software and lists WebLogic, Coherence and Java Card, so it reads as a catalog rather than a language home.
https://en.wikipedia.org/wiki/Java_(programming_language) - 11
TypeScript
Three lines of setup land before anything appears: the five-minute tooling walkthrough hands you a greeter function, a variable, then the line that writes to the page. Compiling is one command on a loose file, tsc greeter.ts, with no module to initialize first, which is exactly what puts it ahead of Go. The site's own heading warns that this is JavaScript with syntax for types.
https://www.typescriptlang.org/ - 12
Go
Package main, an import of fmt, then the function itself: three lines arrive before the printing one. Its own tutorial also makes you run go mod init and name a module before the file will build, and that setup is what costs it the place above. The playground on the project's domain vets, compiles, links and runs a program inside a sandbox.
https://go.dev/ - 13
Swift
Follow the getting-started route on swift.org and the first complete program is a package: an import, a main attribute, a struct called FigletTool and a static function inside it. Four lines of scaffolding and a third-party dependency before a greeting reaches the terminal. Site title comes back as Swift Programming Language. Lovely to write three months in, an odd place to begin.
https://www.swift.org/





