The programming iceberg is complete roadmap to the loved, hated, historical, and weird programming languages that you should now about. It starts with easy-to-learn coding tools, then descends into the most difficult low-level and esoteric languages. 

Featuring C, C++, C#, F#, HolyC, C--, Java, JavaScript, Python, Rust, Fortran, Lisp, V, Nim, Zig, APL, Ada, COBOL, Haskell, Scala, Clojure, Kotlin, Swift, Lua, PHP, Elixir, Erlang, Chef, Malbolge, lolcode, emojicode, ASM and many more!

#programming #iceberg #learntocode 

🔗 Resources

Programming Iceberg Meme https://twitter.com/programwithabhi/status/1562476800307261446
History of Computer Languages https://en.wikipedia.org/wiki/History_of_programming_languages
BrainF**K in 100 Seconds https://youtu.be/hdHjjBS4cs8
C in 100 Seconds https://youtu.be/U3aXWizDbQ4

🔥 Get More Content - Upgrade to PRO

Upgrade to Fireship PRO at https://fireship.io/pro
Use code lORhwXd2 for 25% off your first payment. 

🎨 My Editor Settings

- Atom One Dark 
- vscode-icons
- Fira Code Font

🔖 Topics Covered

- History of Programming Languages
- Programming Humor Memes
- Developer Roadmap for 2022
- What are programming languages used for?
- Most popular programming languages
- Which language is best to learn to code?
- How many programming languages are there?
2024-02-04T05:21:12.455Z
nova-2
2-general-nova
2024-01-09.29447
30089e05-99d1-4376-b32e-c263170674af
43a28dc1-c4d7-403b-ab19-005dbc0462c0
454d6cb137301d12d1f0c04589ab6bc6ddddf8f523e6aaed345df13eb67b15bc
67875a7f-c9c4-48a0-aa55-5bdb8a91c34a
deprecated
You've likely seen videos on YouTube telling you the number one programming language to learn right now if you want to be rich.
That's not what we're doing today.
Instead, we're going to travel to the deepest darkest depths of the software engineering field to discover the programming languages that are loved, hated, beautiful, ugly, and compiled, interpreted, useful, full weird and everything in between.
If you make it to the end, you'll have a road map for everything you need to know to land a job as a junior developer in 2023.
Or it might just make you extremely depressed because this iceberg is just the tip of the iceberg of what you actually need to learn.
Choose any language and you'll find another iceberg within this iceberg that goes on forever like a Mandelbrot set, which ironically you can represent in code with any one of the languages we're about to look at.
Before we get started, there's quite a few programming icebergs out there, but this one ranks languages based on where I think you might encounter them as a beginner learning how to code from scratch.
Each level has its own theme, so let's get right into it with languages that are designed to make programming as easy as possible.
If you know absolutely nothing about programming, the best place to start in my opinion is Scratch.
It was developed at MIT like some other languages on this list, but instead of typing out code, you drag and drop these blocks together like Lego bricks to represent things like variables, control flow, and operators.
It makes the thinking process behind programming much more accessible, and you might be surprised at what you can actually build with it.
Long before Scratch though we had basic or beginners all purpose symbolic instruction code, which came out of Dartmouth in 1964.
At the time, Fortran was all the rage, but it wasn't beginner friendly.
Basic TIC provides a bunch of basic commands like print, go to, and for, and was included in most personal computers, which made it the go to option for people learning to code for the next 50 years.
Now, Moving on to the next tier, we have the extremely popular dynamic high level languages.
The language most people start with today is Python primarily because of its minimal syntax.
It doesn't require curly braces, semi colons, and stuff like that, and instead uses indentation to represent different blocks of code.
The other popular high level language to is JavaScript.
Syntactically, it's pretty ugly, but it's a requirement if you wanna do web development and almost every developer will have to touch it at some point in their career.
Any application that can be written in JavaScript that will eventually be written in JavaScript.
Now, after learning one of these languages, you'll be able to build pretty much anything you can imagine, and you could have an entire career as a software Jeneer without going any further down the iceberg.
But you don't wanna be on your deathbed wondering if you should have tried out PHP.
On this next tier, we have languages that are extremely popular, but a little more specialized.
Programmers like to get things done from the terminal and there are scripting languages like bash and PowerShell that allow you to interact with your computer programmatically.
Ly.
Instead of typing out the same commands over and over again, write a bash script to make it reproducible.
Now, if you get into web development, you'll also need to learn HTML and CSS, which when combined together arguably form a Turing complete programming language.
They're not used for programming in the traditional sense, but rather to define the structure and style of a website.
And if I were to say HTML is not a programming language, I would be immediately canceled by the tech community.
In addition, most apps need a database, and the most common language for working with databases is structured query language.
You can call it SQL, SQL or Sqeal.
This turned complete, although not used for regular programming, but rather to read and write data in a relational database.
Now Python is great and all, but there are many other dynamic languages that might be a better fit for certain projects.
Like PHP made it easy to build server side web apps in the nineties and is still very popular today.
Lua is easier and faster than Python and is embedded into many engines like Roblox and World of Warcraft.
Ruby is an easy to learn object oriented language, also commonly used to build web apps with the rails else framework.
If you work in data science, you'll come across R, which is used for statistics and data viz, or Julia, a more modern option, and also used for scientific computing.
The one thing all these languages have in common is a dynamic type system.
However, as you build more complex software, you may realize that you need a more rigid framework, and one way to accomplish that is with a static type system.
This tier makes up the bulk of production code out in the world.
First up, we have Java, which kind of revolutionized programming with the Java virtual machine.
It compiles to bytecode that runs on the JVM and that allows developers to target any computer architecture from a single codebase.
Syntactically, it's an absolute dumpster fire for beginners.
I made an entire video about why people hate Java, but having explicit types in your code can make it much easier to understand and refactor.
And modern IDE's like IntelliJ will pretty much make the code write itself.
Java is legendary, but it was load up by Microsoft with c sharp.
It's similar to Java in many ways, but gets a lot more love from its users.
It's used to build games with Unity, as well as web and desktop apps with the dot net framework.
Another well loved tool from Microsoft is TypeScript.
It takes JavaScript and adds a type system on top of it, making it much easier to work with on large search complex projects.
If you're building a mobile app today, you'll likely be working with Kotlin for Android, Swift for iOS, or Dart with the Flutter framework.
Work.
These languages are all statically typed, but they go about it in a more modern concise way with features like type inference that minimize boilerplate code.
Next up, we have Go, which is a high performance language developed at Google to build low level systems.
It was designed as a replacement for c, and Ken Thompson, one of the original creators of c, helped design it.
The syntax is nice and concise, making it approachable to beginners, and it has a garbage collector, which means unlike to developers don't need to worry about manual memory management.
Okay.
So at this point, we've reached the level of the iceberg where most people are afraid to go any deeper.
Things are gonna get weird.
What happens is that many developers get jaded with these big heavy object oriented languages and go searching for a better way.
At this level we have functional languages, the most famous of which is Haskell.
Instead of classes, inheritance, and all kinds of crazy design patterns.
The only abstraction you really need is the function.
It was inspired by the Miranda language and is named after the mathematician Haskell Curry.
Most importantly, Variables are immutable and functions have no side effects.
Surprisingly, you can build almost anything with these limitations, although most production code out there is not functional.
Null.
Most of us run into problems when trying to figure out what a monad is, which in layman's terms is just a monoid in the category of enfunctors.
Haskell is great, but Microsoft developed a functional sister language to c sharp called f sharp.
Unlike Haskell, which is purely functional, f sharp is also imperative and object oriented, making it more approachable to developers coming from higher up in the iceberg.
Now, if you hate Java, a good alternative is Scala.
Like f sharp, it supports both object oriented and functional programming, but it runs on the JVM.
It's statically typed, but there's another JVM language called Clojure that is both functional and dynamic.
This makes it more well suited for getting things done quickly with the trade off of type safety.
Other popular functional languages include OCaml, which is used extensively at Facebook and Elixir, which has a very nice Ruby like syntax and is capable of building high performance real time web apps.
There's also Elm, which is a purely to a language that compiles to JavaScript, which can build front end UIs with 0 runtime errors.
But now it's time to go one level deeper to the part of the iceberg.
These languages are absolute chads.
They're low level systems languages that can manually manage and optimize memory and and are used to build things like operating system kernels and compilers that make all the other soy based languages possible.
The most legendary of which is c.
It was used to build the Windows, Mac, and Linux operating system kernels, and its curly brace syntax inspired many other languages on this list.
Surprisingly, it's not all that hard to learn and has a relatively small set of keywords to memorize.
However, being able to use it effectively requires extensive knowledge of algorithms and computer architecture.
For example, C doesn't have hash maps or dictionaries, so you'll have to learn how to code up that data structure on your own.
C was the perfect programming language when it came out in 1960 benign, but it only supported procedural programming and eventually developers wanted more.
C plus plus was originally a superset of c, designed to extend it with object oriented cramming patterns, like classes and inheritance.
Unlike c, it's extremely hard to learn and provides many opportunities to not only shoot yourself in the foot, but blow your entire leg off.
This is a reference friends to manual memory management with pointers, which got that name because they're just as dangerous as pointing a gun at someone.
Despite its learning curve, it's an extremely prolific language used to build highly optimized software like game engines, compilers and so on.
D and c plus plus are still extremely relevant today, but the modern Chad tends to prefer Rust for low level programming.
It doesn't have a garbage collector, but unlike c and c plus plus it It uses a technique called borrow checking instead of pointers for memory management.
This makes it much easier to write memory safe programs and consistently ranks as the most loved language in the world.
The languages on this tier are extremely popular, but now we descend further into the modern languages that you probably haven't heard of.
First up, we have v, which is a high performance systems language that feels very similar to Go, but unlike Go, it doesn't use a a garbage collector, and unlike Rust, it doesn't do borrow checking, but it can still create memory safe applications with its own auto free innovation where the compiler basically cleans everything up.
I with no idea how it works, but it looks cool.
Another modern replacement for c is Zig.
It's designed to simplify low level programming by eliminating features like macros and meta programming, and is very explicit when it comes to memory management, and it can cross compile c and c plus plus just like Clang.
Zig is not to be confused with Nim, another high performance language that's very expressive like Python, but is statically typed, and interestingly, it has a tunable garbage collector that can be turned off altogether to enable manual memory management.
Recently, Google announced Carbon designed to be a successor to C plus plus What makes it special is that it can fully interop with a legacy C plus plus codebase.
Another low level specialty which is Solidity.
It's a statically typed object oriented language, but is designed for implementing smart contracts, especially on the Ethereum blockchain.
And then we've got hack from Facebook, which is designed to interop with PHP.
The original website was built with PHP, but they needed a language with better performance and a type system to scale it up to the monstrosity that it is today.
There are many other good modern languages at this point in the iceberg, like Crystal, Hax, and Pharo just to name a few.
But now it's time to go down to the next level where we look at languages that are still either widely used or historically important, but not something you would likely choose to program in.
Fortran was the first high level programming language and was by far the most popular language for many years until c came around.
Not not long after Fortran Lisp was invented in 1958.
It pioneered many ideas we take for granted in computer science today, like dynamic typing, higher for functions, recursion and repel.
It inspired many other languages like Racket, Scheme, Clojure, and to a certain extent JavaScript.
Another highly influential language that came out this year was algorithmic language.
It's a big complex language and never got as popular as Fortran, but its type system and use of expressions had a major on the development of c and c plus plus The following year in 1959, COBOL was born.
If you wanna make money in the 20 twenties, learn COBOL, because over 40% of Thinking systems still use it with over 200,000,000,000 lines of code in production today.
In 62, APL first appeared, which stands for for a programming language.
It implements linear algebra directly into the language with a multi dimensional array or matrix being the central data type.
This leads to extremely terse code that resembles mathematical notation and makes heavy use of the Greek alphabet.
In 1970, Pascal was invented and took the programming world by storm.
It's a procedural language with a familiar syntax and also had very fast compile times.
It eventually became the most popular language in the early 19 eighties before the rise of c a few years later.
There are many other important languages from this time period, like Simula, the first object oriented language, that went on to inspire small talk, which itself inspired many other object oriented languages like Python, Java, and Ruby.
Then there's Erlang, a concurrent functional programming language that basically powered the entire telecom industry and is still in use today.
There's Ada, a general purpose language named after Ada Lovelace, who's generally considered the world's 1st computer programmer.
It was extremely popular in the 19 eighties and is still used today by the Department of Defense to blow people up.
In addition, we should mention Prolog, the language that pioneered logic programming, and Metalanguage, which pioneered the polymorphic type system used by other statically typed functional which is like Haskell.
There are many other historical languages we could talk about, but now it's time to descend into the realm of the esoteric, where we find rare and bizarre languages that feel more like works of art than engineering tools.
The first known esoteric language came out in 1972 and was called intercal, which stands for compiler language with with no pronounceable acronym.
It was designed as a parody to make fun of the languages of the day like Algol and Fortran.
It has an entire paradoxical with a reference manual that makes no sense and has an interesting choice of keywords like please and mingle.
Please doesn't actually do anything, but it makes you a more polite programmer.
Next up, we have brain Brainfucker is most well known for being extremely minimal.
Urban Mueller created brainfucker in college, and it works by initializing an array, then gives to a pointer and 8 different characters to manipulate memory in that array.
This results in a code base that will your brain up.
It inspired another language called male Bulge, or maybe it's Mount Bulgea, which is named after the 8th circle of hell in the Divine Comedy, or Dante's Inferno.
If you thought brain was difficult, this language takes things to a whole another level.
It makes programming so difficult that I can't even summarize how it works in a single sentence.
If that's a little too dark, a far more fun language is Chef, which is stack based and is designed to make your code to look like a cooking recipe.
Instead of concise keywords, it uses sentences like put ingredient into mixing bowl to push a value onto the stack.
Put these commands together to create a hello world to play, then specify how many it serves to write it to the standard output.
That's pretty cool, but it may seem kind of silly to an intellectual.
The Shakespeare programming which will make your code look like a Shakespearean play.
It provides the low level control of assembly with the verbosity of 16th century poetry.
But if words aren't really your thing, then a good language choice would be Piet, which is named after Piet Mondrian.
It's also stack based, but you write code utilizing patterns of 20 different colors on a bitmap image.
The end result is a code base that looks like abstract art.
Now, if you're a crazy cat lady, you're really going to love this next language, LOL code, which provides a developer experience similar to an LOL cat meme.
You open a program by saying hi, then end it by saying k thanks bye.
Loops can be performed with from in your or broken out of with I'm out of your.
That's nice and easy to understand, but it would be even better if it included emojis.
Emoji code is a language where the syntax is entirely based on emojis.
Modern developers like to use so many emojis in their documentation that this language would just streamline the entire process.
It's a fully featured object oriented language where you can define code blocks with grapes and watermelons, classes with rabbits, and generics with shells and eggplants.
To another language that's not necessarily esoteric is C-.
It's designed as a portable assembly language that borrows heavily from C, but omits many of its features.
The ultimate dialect of c though is holy c, which was created by Terry a Davis and used to build TempleOS, an operating system written under the direction of God.
Holy c is actually really cool because it works like c, but it's just in time compiled on the operating system, which means you can use a scripting language that can interact directly with the operating system kernel.
And that brings us to the final tier, the absolute lowest level you can go with your learning as a software engineer.
Assembly is a language of which there are many variations that correspond directly to the architecture on the CPU.
You.
Different CPU architectures like x86 and ARM require different machine code instructions.
Assembly allows you to represent this code with simple commands that manipulate values on the CPU's registers.
Now, if that looks too easy, the next level down is machine code.
At this point, we're looking at ones 0s or raw binary, usually represented in hexadecimal format.
To code at this level, you'll need to have intimate knowledge of the computer's architecture and also be able to count in an area.
But if we go beyond machine code, now we're looking at billions of transistors on a CPU.
A single transistor represents 1 bit, like a 1 or a 0, by controlling the amount of electricity that flows through a piece of silicon.
Now in order to do anything useful, the transistors need to be organized into logic gates like not, and, or, exclusive or, and so on.
Ultimately, it's these very simple chunks of logic that perform the miracle of taking in some electricity as an input that can produce some other electricity as an output, and do it billions of times per second all over the world so you can play video games with your friend in Vietnam.
If that was too easy, then you may want to look into the field of quantum electrodynamics to fully understand how these particles behave in the electromagnetic quantum vacuum.
You can then use your skills to build a next gen blazingly fast quantum computer, and become the richest person in history.
At this point in the iceberg, there's only one place left to go.
The scariest place of all yourself.
Once you know everything, the question becomes, what is knowledge?
Epistemology is the theory of knowledge, and Philosophers still don't have a good answer to this day.
Reality only exists within my own mind.
For all I know, the entire external world and all the knowledge I've acquired are just illusions and projections chins from my own ego.
Maybe there's a godlike being that controls all the sensations and knowledge received by my mind, or perhaps my real body isn't a vat of goo, and I'm already living in Herzberg's metaverse, or maybe I never came out of that Ayahuasca trip I took 10 years ago.
The only thing I really know is that I know nothing.
Thanks for watching, and I will see you in the next one.

Speaker 0: You've likely seen videos on YouTube telling you the number one programming language to learn right now if you want to be rich. That's not what we're doing today. Instead, we're going to travel to the deepest darkest depths of the software engineering field to discover the programming languages that are loved, hated, beautiful, ugly, and compiled, interpreted, useful, full weird and everything in between. If you make it to the end, you'll have a road map for everything you need to know to land a job as a junior developer in 2023. Or it might just make you extremely depressed because this iceberg is just the tip of the iceberg of what you actually need to learn.

Choose any language and you'll find another iceberg within this iceberg that goes on forever like a Mandelbrot set, which ironically you can represent in code with any one of the languages we're about to look at. Before we get started, there's quite a few programming icebergs out there, but this one ranks languages based on where I think you might encounter them as a beginner learning how to code from scratch. Each level has its own theme, so let's get right into it with languages that are designed to make programming as easy as possible. If you know absolutely nothing about programming, the best place to start in my opinion is Scratch. It was developed at MIT like some other languages on this list, but instead of typing out code, you drag and drop these blocks together like Lego bricks to represent things like variables, control flow, and operators.

It makes the thinking process behind programming much more accessible, and you might be surprised at what you can actually build with it. Long before Scratch though we had basic or beginners all purpose symbolic instruction code, which came out of Dartmouth in 1964. At the time, Fortran was all the rage, but it wasn't beginner friendly. Basic TIC provides a bunch of basic commands like print, go to, and for, and was included in most personal computers, which made it the go to option for people learning to code for the next 50 years. Now, Moving on to the next tier, we have the extremely popular dynamic high level languages.

The language most people start with today is Python primarily because of its minimal syntax. It doesn't require curly braces, semi colons, and stuff like that, and instead uses indentation to represent different blocks of code. The other popular high level language to is JavaScript. Syntactically, it's pretty ugly, but it's a requirement if you wanna do web development and almost every developer will have to touch it at some point in their career. Any application that can be written in JavaScript that will eventually be written in JavaScript.

Now, after learning one of these languages, you'll be able to build pretty much anything you can imagine, and you could have an entire career as a software Jeneer without going any further down the iceberg. But you don't wanna be on your deathbed wondering if you should have tried out PHP. On this next tier, we have languages that are extremely popular, but a little more specialized. Programmers like to get things done from the terminal and there are scripting languages like bash and PowerShell that allow you to interact with your computer programmatically. Ly.

Instead of typing out the same commands over and over again, write a bash script to make it reproducible. Now, if you get into web development, you'll also need to learn HTML and CSS, which when combined together arguably form a Turing complete programming language. They're not used for programming in the traditional sense, but rather to define the structure and style of a website. And if I were to say HTML is not a programming language, I would be immediately canceled by the tech community. In addition, most apps need a database, and the most common language for working with databases is structured query language.

You can call it SQL, SQL or Sqeal. This turned complete, although not used for regular programming, but rather to read and write data in a relational database. Now Python is great and all, but there are many other dynamic languages that might be a better fit for certain projects. Like PHP made it easy to build server side web apps in the nineties and is still very popular today. Lua is easier and faster than Python and is embedded into many engines like Roblox and World of Warcraft.

Ruby is an easy to learn object oriented language, also commonly used to build web apps with the rails else framework. If you work in data science, you'll come across R, which is used for statistics and data viz, or Julia, a more modern option, and also used for scientific computing. The one thing all these languages have in common is a dynamic type system. However, as you build more complex software, you may realize that you need a more rigid framework, and one way to accomplish that is with a static type system. This tier makes up the bulk of production code out in the world.

First up, we have Java, which kind of revolutionized programming with the Java virtual machine. It compiles to bytecode that runs on the JVM and that allows developers to target any computer architecture from a single codebase. Syntactically, it's an absolute dumpster fire for beginners. I made an entire video about why people hate Java, but having explicit types in your code can make it much easier to understand and refactor. And modern IDE's like IntelliJ will pretty much make the code write itself.

Java is legendary, but it was load up by Microsoft with c sharp. It's similar to Java in many ways, but gets a lot more love from its users. It's used to build games with Unity, as well as web and desktop apps with the dot net framework. Another well loved tool from Microsoft is TypeScript. It takes JavaScript and adds a type system on top of it, making it much easier to work with on large search complex projects.

If you're building a mobile app today, you'll likely be working with Kotlin for Android, Swift for iOS, or Dart with the Flutter framework. Work. These languages are all statically typed, but they go about it in a more modern concise way with features like type inference that minimize boilerplate code. Next up, we have Go, which is a high performance language developed at Google to build low level systems. It was designed as a replacement for c, and Ken Thompson, one of the original creators of c, helped design it.

The syntax is nice and concise, making it approachable to beginners, and it has a garbage collector, which means unlike to developers don't need to worry about manual memory management. Okay. So at this point, we've reached the level of the iceberg where most people are afraid to go any deeper. Things are gonna get weird. What happens is that many developers get jaded with these big heavy object oriented languages and go searching for a better way.

At this level we have functional languages, the most famous of which is Haskell. Instead of classes, inheritance, and all kinds of crazy design patterns. The only abstraction you really need is the function. It was inspired by the Miranda language and is named after the mathematician Haskell Curry. Most importantly, Variables are immutable and functions have no side effects.

Surprisingly, you can build almost anything with these limitations, although most production code out there is not functional. Null. Most of us run into problems when trying to figure out what a monad is, which in layman's terms is just a monoid in the category of enfunctors. Haskell is great, but Microsoft developed a functional sister language to c sharp called f sharp. Unlike Haskell, which is purely functional, f sharp is also imperative and object oriented, making it more approachable to developers coming from higher up in the iceberg.

Now, if you hate Java, a good alternative is Scala. Like f sharp, it supports both object oriented and functional programming, but it runs on the JVM. It's statically typed, but there's another JVM language called Clojure that is both functional and dynamic. This makes it more well suited for getting things done quickly with the trade off of type safety. Other popular functional languages include OCaml, which is used extensively at Facebook and Elixir, which has a very nice Ruby like syntax and is capable of building high performance real time web apps.

There's also Elm, which is a purely to a language that compiles to JavaScript, which can build front end UIs with 0 runtime errors. But now it's time to go one level deeper to the part of the iceberg. These languages are absolute chads. They're low level systems languages that can manually manage and optimize memory and and are used to build things like operating system kernels and compilers that make all the other soy based languages possible. The most legendary of which is c.

It was used to build the Windows, Mac, and Linux operating system kernels, and its curly brace syntax inspired many other languages on this list. Surprisingly, it's not all that hard to learn and has a relatively small set of keywords to memorize. However, being able to use it effectively requires extensive knowledge of algorithms and computer architecture. For example, C doesn't have hash maps or dictionaries, so you'll have to learn how to code up that data structure on your own. C was the perfect programming language when it came out in 1960 benign, but it only supported procedural programming and eventually developers wanted more.

C plus plus was originally a superset of c, designed to extend it with object oriented cramming patterns, like classes and inheritance. Unlike c, it's extremely hard to learn and provides many opportunities to not only shoot yourself in the foot, but blow your entire leg off. This is a reference friends to manual memory management with pointers, which got that name because they're just as dangerous as pointing a gun at someone. Despite its learning curve, it's an extremely prolific language used to build highly optimized software like game engines, compilers and so on. D and c plus plus are still extremely relevant today, but the modern Chad tends to prefer Rust for low level programming.

It doesn't have a garbage collector, but unlike c and c plus plus it It uses a technique called borrow checking instead of pointers for memory management. This makes it much easier to write memory safe programs and consistently ranks as the most loved language in the world. The languages on this tier are extremely popular, but now we descend further into the modern languages that you probably haven't heard of. First up, we have v, which is a high performance systems language that feels very similar to Go, but unlike Go, it doesn't use a a garbage collector, and unlike Rust, it doesn't do borrow checking, but it can still create memory safe applications with its own auto free innovation where the compiler basically cleans everything up. I with no idea how it works, but it looks cool.

Another modern replacement for c is Zig. It's designed to simplify low level programming by eliminating features like macros and meta programming, and is very explicit when it comes to memory management, and it can cross compile c and c plus plus just like Clang. Zig is not to be confused with Nim, another high performance language that's very expressive like Python, but is statically typed, and interestingly, it has a tunable garbage collector that can be turned off altogether to enable manual memory management. Recently, Google announced Carbon designed to be a successor to C plus plus What makes it special is that it can fully interop with a legacy C plus plus codebase. Another low level specialty which is Solidity.

It's a statically typed object oriented language, but is designed for implementing smart contracts, especially on the Ethereum blockchain. And then we've got hack from Facebook, which is designed to interop with PHP. The original website was built with PHP, but they needed a language with better performance and a type system to scale it up to the monstrosity that it is today. There are many other good modern languages at this point in the iceberg, like Crystal, Hax, and Pharo just to name a few. But now it's time to go down to the next level where we look at languages that are still either widely used or historically important, but not something you would likely choose to program in.

Fortran was the first high level programming language and was by far the most popular language for many years until c came around. Not not long after Fortran Lisp was invented in 1958. It pioneered many ideas we take for granted in computer science today, like dynamic typing, higher for functions, recursion and repel. It inspired many other languages like Racket, Scheme, Clojure, and to a certain extent JavaScript. Another highly influential language that came out this year was algorithmic language.

It's a big complex language and never got as popular as Fortran, but its type system and use of expressions had a major on the development of c and c plus plus The following year in 1959, COBOL was born. If you wanna make money in the 20 twenties, learn COBOL, because over 40% of Thinking systems still use it with over 200,000,000,000 lines of code in production today. In 62, APL first appeared, which stands for for a programming language. It implements linear algebra directly into the language with a multi dimensional array or matrix being the central data type. This leads to extremely terse code that resembles mathematical notation and makes heavy use of the Greek alphabet.

In 1970, Pascal was invented and took the programming world by storm. It's a procedural language with a familiar syntax and also had very fast compile times. It eventually became the most popular language in the early 19 eighties before the rise of c a few years later. There are many other important languages from this time period, like Simula, the first object oriented language, that went on to inspire small talk, which itself inspired many other object oriented languages like Python, Java, and Ruby. Then there's Erlang, a concurrent functional programming language that basically powered the entire telecom industry and is still in use today.

There's Ada, a general purpose language named after Ada Lovelace, who's generally considered the world's 1st computer programmer. It was extremely popular in the 19 eighties and is still used today by the Department of Defense to blow people up. In addition, we should mention Prolog, the language that pioneered logic programming, and Metalanguage, which pioneered the polymorphic type system used by other statically typed functional which is like Haskell. There are many other historical languages we could talk about, but now it's time to descend into the realm of the esoteric, where we find rare and bizarre languages that feel more like works of art than engineering tools. The first known esoteric language came out in 1972 and was called intercal, which stands for compiler language with with no pronounceable acronym.

It was designed as a parody to make fun of the languages of the day like Algol and Fortran. It has an entire paradoxical with a reference manual that makes no sense and has an interesting choice of keywords like please and mingle. Please doesn't actually do anything, but it makes you a more polite programmer. Next up, we have brain Brainfucker is most well known for being extremely minimal. Urban Mueller created brainfucker in college, and it works by initializing an array, then gives to a pointer and 8 different characters to manipulate memory in that array.

This results in a code base that will your brain up. It inspired another language called male Bulge, or maybe it's Mount Bulgea, which is named after the 8th circle of hell in the Divine Comedy, or Dante's Inferno. If you thought brain was difficult, this language takes things to a whole another level. It makes programming so difficult that I can't even summarize how it works in a single sentence. If that's a little too dark, a far more fun language is Chef, which is stack based and is designed to make your code to look like a cooking recipe.

Instead of concise keywords, it uses sentences like put ingredient into mixing bowl to push a value onto the stack. Put these commands together to create a hello world to play, then specify how many it serves to write it to the standard output. That's pretty cool, but it may seem kind of silly to an intellectual. The Shakespeare programming which will make your code look like a Shakespearean play. It provides the low level control of assembly with the verbosity of 16th century poetry.

But if words aren't really your thing, then a good language choice would be Piet, which is named after Piet Mondrian. It's also stack based, but you write code utilizing patterns of 20 different colors on a bitmap image. The end result is a code base that looks like abstract art. Now, if you're a crazy cat lady, you're really going to love this next language, LOL code, which provides a developer experience similar to an LOL cat meme. You open a program by saying hi, then end it by saying k thanks bye.

Loops can be performed with from in your or broken out of with I'm out of your. That's nice and easy to understand, but it would be even better if it included emojis. Emoji code is a language where the syntax is entirely based on emojis. Modern developers like to use so many emojis in their documentation that this language would just streamline the entire process. It's a fully featured object oriented language where you can define code blocks with grapes and watermelons, classes with rabbits, and generics with shells and eggplants.

To another language that's not necessarily esoteric is C-. It's designed as a portable assembly language that borrows heavily from C, but omits many of its features. The ultimate dialect of c though is holy c, which was created by Terry a Davis and used to build TempleOS, an operating system written under the direction of God. Holy c is actually really cool because it works like c, but it's just in time compiled on the operating system, which means you can use a scripting language that can interact directly with the operating system kernel. And that brings us to the final tier, the absolute lowest level you can go with your learning as a software engineer.

Assembly is a language of which there are many variations that correspond directly to the architecture on the CPU. You. Different CPU architectures like x86 and ARM require different machine code instructions. Assembly allows you to represent this code with simple commands that manipulate values on the CPU's registers. Now, if that looks too easy, the next level down is machine code.

At this point, we're looking at ones 0s or raw binary, usually represented in hexadecimal format. To code at this level, you'll need to have intimate knowledge of the computer's architecture and also be able to count in an area. But if we go beyond machine code, now we're looking at billions of transistors on a CPU. A single transistor represents 1 bit, like a 1 or a 0, by controlling the amount of electricity that flows through a piece of silicon. Now in order to do anything useful, the transistors need to be organized into logic gates like not, and, or, exclusive or, and so on.

Ultimately, it's these very simple chunks of logic that perform the miracle of taking in some electricity as an input that can produce some other electricity as an output, and do it billions of times per second all over the world so you can play video games with your friend in Vietnam. If that was too easy, then you may want to look into the field of quantum electrodynamics to fully understand how these particles behave in the electromagnetic quantum vacuum. You can then use your skills to build a next gen blazingly fast quantum computer, and become the richest person in history. At this point in the iceberg, there's only one place left to go. The scariest place of all yourself.

Once you know everything, the question becomes, what is knowledge? Epistemology is the theory of knowledge, and Philosophers still don't have a good answer to this day. Reality only exists within my own mind. For all I know, the entire external world and all the knowledge I've acquired are just illusions and projections chins from my own ego. Maybe there's a godlike being that controls all the sensations and knowledge received by my mind, or perhaps my real body isn't a vat of goo, and I'm already living in Herzberg's metaverse, or maybe I never came out of that Ayahuasca trip I took 10 years ago.

The only thing I really know is that I know nothing. Thanks for watching, and I will see you in the next one.
You've likely seen videos on YouTube telling you the number one programming language to learn right now if you want to be rich. That's not what we're doing today. Instead, we're going to travel to the deepest darkest depths of the software engineering field to discover the programming languages that are loved, hated, beautiful, ugly, and compiled, interpreted, useful, full weird and everything in between. If you make it to the end, you'll have a road map for everything you need to know to land a job as a junior developer in 2023.
software development
software
languages
programming
computer science
Or it might just make you extremely depressed because this iceberg is just the tip of the iceberg of what you actually need to learn. Choose any language and you'll find another iceberg within this iceberg that goes on forever like a Mandelbrot set, which ironically you can represent in code with any one of the languages we're about to look at. Before we get started, there's quite a few programming icebergs out there, but this one ranks languages based on where I think you might encounter them as a beginner learning how to code from scratch. Each level has its own theme, so let's get right into it with languages that are designed to make programming as easy as possible. If you know absolutely nothing about programming, the best place to start in my opinion is Scratch. It was developed at MIT like some other languages on this list, but instead of typing out code, you drag and drop these blocks together like Lego bricks to represent things like variables, control flow, and operators. It makes the thinking process behind programming much more accessible, and you might be surprised at what you can actually build with it. Long before Scratch though we had basic or beginners all purpose symbolic instruction code, which came out of Dartmouth in 1964. At the time, Fortran was all the rage, but it wasn't beginner friendly. Basic TIC provides a bunch of basic commands like print, go to, and for, and was included in most personal computers, which made it the go to option for people learning to code for the next 50 years. Now, Moving on to the next tier, we have the extremely popular dynamic high level languages. The language most people start with today is Python primarily because of its minimal syntax. It doesn't require curly braces, semi colons, and stuff like that, and instead uses indentation to represent different blocks of code. The other popular high level language to is JavaScript. Syntactically, it's pretty ugly, but it's a requirement if you wanna do web development and almost every developer will have to touch it at some point in their career. Any application that can be written in JavaScript that will eventually be written in JavaScript. Now, after learning one of these languages, you'll be able to build pretty much anything you can imagine, and you could have an entire career as a software Jeneer without going any further down the iceberg. But you don't wanna be on your deathbed wondering if you should have tried out PHP. On this next tier, we have languages that are extremely popular, but a little more specialized. Programmers like to get things done from the terminal and there are scripting languages like bash and PowerShell that allow you to interact with your computer programmatically. Ly. Instead of typing out the same commands over and over again, write a bash script to make it reproducible. Now, if you get into web development, you'll also need to learn HTML and CSS, which when combined together arguably form a Turing complete programming language. They're not used for programming in the traditional sense, but rather to define the structure and style of a website. And if I were to say HTML is not a programming language, I would be immediately canceled by the tech community. In addition, most apps need a database, and the most common language for working with databases is structured query language. You can call it SQL, SQL or Sqeal. This turned complete, although not used for regular programming, but rather to read and write data in a relational database. Now Python is great and all, but there are many other dynamic languages that might be a better fit for certain projects. Like PHP made it easy to build server side web apps in the nineties and is still very popular today.
databases
languages
programming
dialects
robotics
data management
software development
engineering
linguistics
weapons
military
Lua is easier and faster than Python and is embedded into many engines like Roblox and World of Warcraft.
Ruby is an easy to learn object oriented language, also commonly used to build web apps with the rails else framework. If you work in data science, you'll come across R, which is used for statistics and data viz, or Julia, a more modern option, and also used for scientific computing. The one thing all these languages have in common is a dynamic type system. However, as you build more complex software, you may realize that you need a more rigid framework, and one way to accomplish that is with a static type system. This tier makes up the bulk of production code out in the world. First up, we have Java, which kind of revolutionized programming with the Java virtual machine. It compiles to bytecode that runs on the JVM and that allows developers to target any computer architecture from a single codebase.
languages
programming
systems
software development
ideologies
data
software
Syntactically, it's an absolute dumpster fire for beginners. I made an entire video about why people hate Java, but having explicit types in your code can make it much easier to understand and refactor. And modern IDE's like IntelliJ will pretty much make the code write itself. Java is legendary, but it was load up by Microsoft with c sharp.
It's similar to Java in many ways, but gets a lot more love from its users. It's used to build games with Unity, as well as web and desktop apps with the dot net framework. Another well loved tool from Microsoft is TypeScript. It takes JavaScript and adds a type system on top of it, making it much easier to work with on large search complex projects. If you're building a mobile app today, you'll likely be working with Kotlin for Android, Swift for iOS, or Dart with the Flutter framework.
software
programming
Work.
These languages are all statically typed, but they go about it in a more modern concise way with features like type inference that minimize boilerplate code. Next up, we have Go, which is a high performance language developed at Google to build low level systems. It was designed as a replacement for c, and Ken Thompson, one of the original creators of c, helped design it. The syntax is nice and concise, making it approachable to beginners, and it has a garbage collector, which means unlike to developers don't need to worry about manual memory management. Okay. So at this point, we've reached the level of the iceberg where most people are afraid to go any deeper.
languages
programming
logic
software development
computer science
dialects
Things are gonna get weird. What happens is that many developers get jaded with these big heavy object oriented languages and go searching for a better way. At this level we have functional languages, the most famous of which is Haskell.
Instead of classes, inheritance, and all kinds of crazy design patterns. The only abstraction you really need is the function. It was inspired by the Miranda language and is named after the mathematician Haskell Curry. Most importantly, Variables are immutable and functions have no side effects. Surprisingly, you can build almost anything with these limitations, although most production code out there is not functional. Null. Most of us run into problems when trying to figure out what a monad is, which in layman's terms is just a monoid in the category of enfunctors. Haskell is great, but Microsoft developed a functional sister language to c sharp called f sharp. Unlike Haskell, which is purely functional, f sharp is also imperative and object oriented, making it more approachable to developers coming from higher up in the iceberg. Now, if you hate Java, a good alternative is Scala.
logic
ideologies
languages
programming
mathematics
Like f sharp, it supports both object oriented and functional programming, but it runs on the JVM.
It's statically typed, but there's another JVM language called Clojure that is both functional and dynamic. This makes it more well suited for getting things done quickly with the trade off of type safety. Other popular functional languages include OCaml, which is used extensively at Facebook and Elixir, which has a very nice Ruby like syntax and is capable of building high performance real time web apps. There's also Elm, which is a purely to a language that compiles to JavaScript, which can build front end UIs with 0 runtime errors. But now it's time to go one level deeper to the part of the iceberg. These languages are absolute chads. They're low level systems languages that can manually manage and optimize memory and and are used to build things like operating system kernels and compilers that make all the other soy based languages possible. The most legendary of which is c. It was used to build the Windows, Mac, and Linux operating system kernels, and its curly brace syntax inspired many other languages on this list.
languages
programming
Surprisingly, it's not all that hard to learn and has a relatively small set of keywords to memorize. However, being able to use it effectively requires extensive knowledge of algorithms and computer architecture. For example, C doesn't have hash maps or dictionaries, so you'll have to learn how to code up that data structure on your own. C was the perfect programming language when it came out in 1960 benign, but it only supported procedural programming and eventually developers wanted more. C plus plus was originally a superset of c, designed to extend it with object oriented cramming patterns, like classes and inheritance. Unlike c, it's extremely hard to learn and provides many opportunities to not only shoot yourself in the foot, but blow your entire leg off. This is a reference friends to manual memory management with pointers, which got that name because they're just as dangerous as pointing a gun at someone. Despite its learning curve, it's an extremely prolific language used to build highly optimized software like game engines, compilers and so on. D and c plus plus are still extremely relevant today, but the modern Chad tends to prefer Rust for low level programming.
It doesn't have a garbage collector, but unlike c and c plus plus it It uses a technique called borrow checking instead of pointers for memory management. This makes it much easier to write memory safe programs and consistently ranks as the most loved language in the world. The languages on this tier are extremely popular, but now we descend further into the modern languages that you probably haven't heard of. First up, we have v, which is a high performance systems language that feels very similar to Go, but unlike Go, it doesn't use a a garbage collector, and unlike Rust, it doesn't do borrow checking, but it can still create memory safe applications with its own auto free innovation where the compiler basically cleans everything up. I with no idea how it works, but it looks cool. Another modern replacement for c is Zig. It's designed to simplify low level programming by eliminating features like macros and meta programming, and is very explicit when it comes to memory management, and it can cross compile c and c plus plus just like Clang.
languages
programming
dialects
software
computer science
Zig is not to be confused with Nim, another high performance language that's very expressive like Python, but is statically typed, and interestingly, it has a tunable garbage collector that can be turned off altogether to enable manual memory management. Recently, Google announced Carbon designed to be a successor to C plus plus What makes it special is that it can fully interop with a legacy C plus plus codebase.
Another low level specialty which is Solidity. It's a statically typed object oriented language, but is designed for implementing smart contracts, especially on the Ethereum blockchain. And then we've got hack from Facebook, which is designed to interop with PHP. The original website was built with PHP, but they needed a language with better performance and a type system to scale it up to the monstrosity that it is today. There are many other good modern languages at this point in the iceberg, like Crystal, Hax, and Pharo just to name a few. But now it's time to go down to the next level where we look at languages that are still either widely used or historically important, but not something you would likely choose to program in.
languages
dialects
cryptocurrency
linguistics
intellectual property
Fortran was the first high level programming language and was by far the most popular language for many years until c came around. Not not long after Fortran Lisp was invented in 1958.
It pioneered many ideas we take for granted in computer science today, like dynamic typing, higher for functions, recursion and repel. It inspired many other languages like Racket, Scheme, Clojure, and to a certain extent JavaScript. Another highly influential language that came out this year was algorithmic language. It's a big complex language and never got as popular as Fortran, but its type system and use of expressions had a major on the development of c and c plus plus The following year in 1959, COBOL was born.
languages
If you wanna make money in the 20 twenties, learn COBOL, because over 40% of Thinking systems still use it with over 200,000,000,000 lines of code in production today. In 62, APL first appeared, which stands for for a programming language. It implements linear algebra directly into the language with a multi dimensional array or matrix being the central data type.
This leads to extremely terse code that resembles mathematical notation and makes heavy use of the Greek alphabet. In 1970, Pascal was invented and took the programming world by storm. It's a procedural language with a familiar syntax and also had very fast compile times. It eventually became the most popular language in the early 19 eighties before the rise of c a few years later. There are many other important languages from this time period, like Simula, the first object oriented language, that went on to inspire small talk, which itself inspired many other object oriented languages like Python, Java, and Ruby. Then there's Erlang, a concurrent functional programming language that basically powered the entire telecom industry and is still in use today. There's Ada, a general purpose language named after Ada Lovelace, who's generally considered the world's 1st computer programmer. It was extremely popular in the 19 eighties and is still used today by the Department of Defense to blow people up. In addition, we should mention Prolog, the language that pioneered logic programming, and Metalanguage, which pioneered the polymorphic type system used by other statically typed functional which is like Haskell. There are many other historical languages we could talk about, but now it's time to descend into the realm of the esoteric, where we find rare and bizarre languages that feel more like works of art than engineering tools. The first known esoteric language came out in 1972 and was called intercal, which stands for compiler language with with no pronounceable acronym. It was designed as a parody to make fun of the languages of the day like Algol and Fortran. It has an entire paradoxical with a reference manual that makes no sense and has an interesting choice of keywords like please and mingle. Please doesn't actually do anything, but it makes you a more polite programmer. Next up, we have brain Brainfucker is most well known for being extremely minimal.
languages
linguistics
programming
dialects
software
computer science
logic
psychology
ideologies
Urban Mueller created brainfucker in college, and it works by initializing an array, then gives to a pointer and 8 different characters to manipulate memory in that array. This results in a code base that will your brain up. It inspired another language called male Bulge, or maybe it's Mount Bulgea, which is named after the 8th circle of hell in the Divine Comedy, or Dante's Inferno.
If you thought brain was difficult, this language takes things to a whole another level. It makes programming so difficult that I can't even summarize how it works in a single sentence. If that's a little too dark, a far more fun language is Chef, which is stack based and is designed to make your code to look like a cooking recipe. Instead of concise keywords, it uses sentences like put ingredient into mixing bowl to push a value onto the stack. Put these commands together to create a hello world to play, then specify how many it serves to write it to the standard output. That's pretty cool, but it may seem kind of silly to an intellectual. The Shakespeare programming which will make your code look like a Shakespearean play. It provides the low level control of assembly with the verbosity of 16th century poetry. But if words aren't really your thing, then a good language choice would be Piet, which is named after Piet Mondrian. It's also stack based, but you write code utilizing patterns of 20 different colors on a bitmap image. The end result is a code base that looks like abstract art. Now, if you're a crazy cat lady, you're really going to love this next language, LOL code, which provides a developer experience similar to an LOL cat meme. You open a program by saying hi, then end it by saying k thanks bye. Loops can be performed with from in your or broken out of with I'm out of your. That's nice and easy to understand, but it would be even better if it included emojis. Emoji code is a language where the syntax is entirely based on emojis. Modern developers like to use so many emojis in their documentation that this language would just streamline the entire process. It's a fully featured object oriented language where you can define code blocks with grapes and watermelons, classes with rabbits, and generics with shells and eggplants. To another language that's not necessarily esoteric is C-. It's designed as a portable assembly language that borrows heavily from C, but omits many of its features. The ultimate dialect of c though is holy c, which was created by Terry a Davis and used to build TempleOS, an operating system written under the direction of God.
cooking
poetry
baking
languages
programming
linguistics
software development
dialects
games
judaism
software
Holy c is actually really cool because it works like c, but it's just in time compiled on the operating system, which means you can use a scripting language that can interact directly with the operating system kernel.
And that brings us to the final tier, the absolute lowest level you can go with your learning as a software engineer. Assembly is a language of which there are many variations that correspond directly to the architecture on the CPU. You. Different CPU architectures like x86 and ARM require different machine code instructions. Assembly allows you to represent this code with simple commands that manipulate values on the CPU's registers. Now, if that looks too easy, the next level down is machine code. At this point, we're looking at ones 0s or raw binary, usually represented in hexadecimal format. To code at this level, you'll need to have intimate knowledge of the computer's architecture and also be able to count in an area. But if we go beyond machine code, now we're looking at billions of transistors on a CPU. A single transistor represents 1 bit, like a 1 or a 0, by controlling the amount of electricity that flows through a piece of silicon. Now in order to do anything useful, the transistors need to be organized into logic gates like not, and, or, exclusive or, and so on. Ultimately, it's these very simple chunks of logic that perform the miracle of taking in some electricity as an input that can produce some other electricity as an output, and do it billions of times per second all over the world so you can play video games with your friend in Vietnam.
logic
electronics
computer science
computers
programming
architecture
software development
If that was too easy, then you may want to look into the field of quantum electrodynamics to fully understand how these particles behave in the electromagnetic quantum vacuum. You can then use your skills to build a next gen blazingly fast quantum computer, and become the richest person in history.
particle physics
atomic physics
At this point in the iceberg, there's only one place left to go.
The scariest place of all yourself. Once you know everything, the question becomes, what is knowledge? Epistemology is the theory of knowledge, and Philosophers still don't have a good answer to this day. Reality only exists within my own mind. For all I know, the entire external world and all the knowledge I've acquired are just illusions and projections chins from my own ego.
philosophy
Maybe there's a godlike being that controls all the sensations and knowledge received by my mind, or perhaps my real body isn't a vat of goo, and I'm already living in Herzberg's metaverse, or maybe I never came out of that Ayahuasca trip I took 10 years ago. The only thing I really know is that I know nothing. Thanks for watching, and I will see you in the next one.
You've likely seen videos on YouTube telling you the number one programming language to learn right now if you want to be rich. That's not what we're doing today. Instead, we're going to travel to the deepest darkest depths of the software engineering field to discover the programming languages that are loved, hated, beautiful, ugly, and compiled, interpreted, useful, full weird and everything in between. If you make it to the end, you'll have a road map for everything you need to know to land a job as a junior developer in 2023. Or it might just make you extremely depressed because this iceberg is just the tip of the iceberg of what you actually need to learn. Choose any language and you'll find another iceberg within this iceberg that goes on forever like a Mandelbrot set, which ironically you can represent in code with any one of the languages we're about to look at. Before we get started, there's quite a few programming icebergs out there, but this one ranks languages based on where I think you might encounter them as a beginner learning how to code from scratch. Each level has its own theme, so let's get right into it with languages that are designed to make programming as easy as possible. If you know absolutely nothing about programming, the best place to start in my opinion is Scratch. It was developed at MIT like some other languages on this list, but instead of typing out code, you drag and drop these blocks together like Lego bricks to represent things like variables, control flow, and operators. It makes the thinking process behind programming much more accessible, and you might be surprised at what you can actually build with it. Long before Scratch though we had basic or beginners all purpose symbolic instruction code, which came out of Dartmouth in 1964. At the time, Fortran was all the rage, but it wasn't beginner friendly. Basic TIC provides a bunch of basic commands like print, go to, and for, and was included in most personal computers, which made it the go to option for people learning to code for the next 50 years. Now, Moving on to the next tier, we have the extremely popular dynamic high level languages. The language most people start with today is Python primarily because of its minimal syntax. It doesn't require curly braces, semi colons, and stuff like that, and instead uses indentation to represent different blocks of code. The other popular high level language to is JavaScript. Syntactically, it's pretty ugly, but it's a requirement if you wanna do web development and almost every developer will have to touch it at some point in their career. Any application that can be written in JavaScript that will eventually be written in JavaScript. Now, after learning one of these languages, you'll be able to build pretty much anything you can imagine, and you could have an entire career as a software Jeneer without going any further down the iceberg. But you don't wanna be on your deathbed wondering if you should have tried out PHP. On this next tier, we have languages that are extremely popular, but a little more specialized. Programmers like to get things done from the terminal and there are scripting languages like bash and PowerShell that allow you to interact with your computer programmatically. Ly. Instead of typing out the same commands over and over again, write a bash script to make it reproducible. Now, if you get into web development, you'll also need to learn HTML and CSS, which when combined together arguably form a Turing complete programming language. They're not used for programming in the traditional sense, but rather to define the structure and style of a website. And if I were to say HTML is not a programming language, I would be immediately canceled by the tech community. In addition, most apps need a database, and the most common language for working with databases is structured query language. You can call it SQL, SQL or Sqeal. This turned complete, although not used for regular programming, but rather to read and write data in a relational database. Now Python is great and all, but there are many other dynamic languages that might be a better fit for certain projects. Like PHP made it easy to build server side web apps in the nineties and is still very popular today. Lua is easier and faster than Python and is embedded into many engines like Roblox and World of Warcraft. Ruby is an easy to learn object oriented language, also commonly used to build web apps with the rails else framework. If you work in data science, you'll come across R, which is used for statistics and data viz, or Julia, a more modern option, and also used for scientific computing. The one thing all these languages have in common is a dynamic type system. However, as you build more complex software, you may realize that you need a more rigid framework, and one way to accomplish that is with a static type system. This tier makes up the bulk of production code out in the world. First up, we have Java, which kind of revolutionized programming with the Java virtual machine. It compiles to bytecode that runs on the JVM and that allows developers to target any computer architecture from a single codebase. Syntactically, it's an absolute dumpster fire for beginners. I made an entire video about why people hate Java, but having explicit types in your code can make it much easier to understand and refactor. And modern IDE's like IntelliJ will pretty much make the code write itself. Java is legendary, but it was load up by Microsoft with c sharp. It's similar to Java in many ways, but gets a lot more love from its users. It's used to build games with Unity, as well as web and desktop apps with the dot net framework. Another well loved tool from Microsoft is TypeScript. It takes JavaScript and adds a type system on top of it, making it much easier to work with on large search complex projects. If you're building a mobile app today, you'll likely be working with Kotlin for Android, Swift for iOS, or Dart with the Flutter framework. Work. These languages are all statically typed, but they go about it in a more modern concise way with features like type inference that minimize boilerplate code. Next up, we have Go, which is a high performance language developed at Google to build low level systems. It was designed as a replacement for c, and Ken Thompson, one of the original creators of c, helped design it. The syntax is nice and concise, making it approachable to beginners, and it has a garbage collector, which means unlike to developers don't need to worry about manual memory management. Okay. So at this point, we've reached the level of the iceberg where most people are afraid to go any deeper. Things are gonna get weird. What happens is that many developers get jaded with these big heavy object oriented languages and go searching for a better way. At this level we have functional languages, the most famous of which is Haskell. Instead of classes, inheritance, and all kinds of crazy design patterns. The only abstraction you really need is the function. It was inspired by the Miranda language and is named after the mathematician Haskell Curry. Most importantly, Variables are immutable and functions have no side effects. Surprisingly, you can build almost anything with these limitations, although most production code out there is not functional. Null. Most of us run into problems when trying to figure out what a monad is, which in layman's terms is just a monoid in the category of enfunctors. Haskell is great, but Microsoft developed a functional sister language to c sharp called f sharp. Unlike Haskell, which is purely functional, f sharp is also imperative and object oriented, making it more approachable to developers coming from higher up in the iceberg. Now, if you hate Java, a good alternative is Scala. Like f sharp, it supports both object oriented and functional programming, but it runs on the JVM. It's statically typed, but there's another JVM language called Clojure that is both functional and dynamic. This makes it more well suited for getting things done quickly with the trade off of type safety. Other popular functional languages include OCaml, which is used extensively at Facebook and Elixir, which has a very nice Ruby like syntax and is capable of building high performance real time web apps. There's also Elm, which is a purely to a language that compiles to JavaScript, which can build front end UIs with 0 runtime errors. But now it's time to go one level deeper to the part of the iceberg. These languages are absolute chads. They're low level systems languages that can manually manage and optimize memory and and are used to build things like operating system kernels and compilers that make all the other soy based languages possible. The most legendary of which is c. It was used to build the Windows, Mac, and Linux operating system kernels, and its curly brace syntax inspired many other languages on this list. Surprisingly, it's not all that hard to learn and has a relatively small set of keywords to memorize. However, being able to use it effectively requires extensive knowledge of algorithms and computer architecture. For example, C doesn't have hash maps or dictionaries, so you'll have to learn how to code up that data structure on your own. C was the perfect programming language when it came out in 1960 benign, but it only supported procedural programming and eventually developers wanted more. C plus plus was originally a superset of c, designed to extend it with object oriented cramming patterns, like classes and inheritance. Unlike c, it's extremely hard to learn and provides many opportunities to not only shoot yourself in the foot, but blow your entire leg off. This is a reference friends to manual memory management with pointers, which got that name because they're just as dangerous as pointing a gun at someone. Despite its learning curve, it's an extremely prolific language used to build highly optimized software like game engines, compilers and so on. D and c plus plus are still extremely relevant today, but the modern Chad tends to prefer Rust for low level programming. It doesn't have a garbage collector, but unlike c and c plus plus it It uses a technique called borrow checking instead of pointers for memory management. This makes it much easier to write memory safe programs and consistently ranks as the most loved language in the world. The languages on this tier are extremely popular, but now we descend further into the modern languages that you probably haven't heard of. First up, we have v, which is a high performance systems language that feels very similar to Go, but unlike Go, it doesn't use a a garbage collector, and unlike Rust, it doesn't do borrow checking, but it can still create memory safe applications with its own auto free innovation where the compiler basically cleans everything up. I with no idea how it works, but it looks cool. Another modern replacement for c is Zig. It's designed to simplify low level programming by eliminating features like macros and meta programming, and is very explicit when it comes to memory management, and it can cross compile c and c plus plus just like Clang. Zig is not to be confused with Nim, another high performance language that's very expressive like Python, but is statically typed, and interestingly, it has a tunable garbage collector that can be turned off altogether to enable manual memory management. Recently, Google announced Carbon designed to be a successor to C plus plus What makes it special is that it can fully interop with a legacy C plus plus codebase. Another low level specialty which is Solidity. It's a statically typed object oriented language, but is designed for implementing smart contracts, especially on the Ethereum blockchain. And then we've got hack from Facebook, which is designed to interop with PHP. The original website was built with PHP, but they needed a language with better performance and a type system to scale it up to the monstrosity that it is today. There are many other good modern languages at this point in the iceberg, like Crystal, Hax, and Pharo just to name a few. But now it's time to go down to the next level where we look at languages that are still either widely used or historically important, but not something you would likely choose to program in. Fortran was the first high level programming language and was by far the most popular language for many years until c came around. Not not long after Fortran Lisp was invented in 1958. It pioneered many ideas we take for granted in computer science today, like dynamic typing, higher for functions, recursion and repel. It inspired many other languages like Racket, Scheme, Clojure, and to a certain extent JavaScript. Another highly influential language that came out this year was algorithmic language. It's a big complex language and never got as popular as Fortran, but its type system and use of expressions had a major on the development of c and c plus plus The following year in 1959, COBOL was born. If you wanna make money in the 20 twenties, learn COBOL, because over 40% of Thinking systems still use it with over 200,000,000,000 lines of code in production today. In 62, APL first appeared, which stands for for a programming language. It implements linear algebra directly into the language with a multi dimensional array or matrix being the central data type. This leads to extremely terse code that resembles mathematical notation and makes heavy use of the Greek alphabet. In 1970, Pascal was invented and took the programming world by storm. It's a procedural language with a familiar syntax and also had very fast compile times. It eventually became the most popular language in the early 19 eighties before the rise of c a few years later. There are many other important languages from this time period, like Simula, the first object oriented language, that went on to inspire small talk, which itself inspired many other object oriented languages like Python, Java, and Ruby. Then there's Erlang, a concurrent functional programming language that basically powered the entire telecom industry and is still in use today. There's Ada, a general purpose language named after Ada Lovelace, who's generally considered the world's 1st computer programmer. It was extremely popular in the 19 eighties and is still used today by the Department of Defense to blow people up. In addition, we should mention Prolog, the language that pioneered logic programming, and Metalanguage, which pioneered the polymorphic type system used by other statically typed functional which is like Haskell. There are many other historical languages we could talk about, but now it's time to descend into the realm of the esoteric, where we find rare and bizarre languages that feel more like works of art than engineering tools. The first known esoteric language came out in 1972 and was called intercal, which stands for compiler language with with no pronounceable acronym. It was designed as a parody to make fun of the languages of the day like Algol and Fortran. It has an entire paradoxical with a reference manual that makes no sense and has an interesting choice of keywords like please and mingle. Please doesn't actually do anything, but it makes you a more polite programmer. Next up, we have brain Brainfucker is most well known for being extremely minimal. Urban Mueller created brainfucker in college, and it works by initializing an array, then gives to a pointer and 8 different characters to manipulate memory in that array. This results in a code base that will your brain up. It inspired another language called male Bulge, or maybe it's Mount Bulgea, which is named after the 8th circle of hell in the Divine Comedy, or Dante's Inferno. If you thought brain was difficult, this language takes things to a whole another level. It makes programming so difficult that I can't even summarize how it works in a single sentence. If that's a little too dark, a far more fun language is Chef, which is stack based and is designed to make your code to look like a cooking recipe. Instead of concise keywords, it uses sentences like put ingredient into mixing bowl to push a value onto the stack. Put these commands together to create a hello world to play, then specify how many it serves to write it to the standard output. That's pretty cool, but it may seem kind of silly to an intellectual. The Shakespeare programming which will make your code look like a Shakespearean play. It provides the low level control of assembly with the verbosity of 16th century poetry. But if words aren't really your thing, then a good language choice would be Piet, which is named after Piet Mondrian. It's also stack based, but you write code utilizing patterns of 20 different colors on a bitmap image. The end result is a code base that looks like abstract art. Now, if you're a crazy cat lady, you're really going to love this next language, LOL code, which provides a developer experience similar to an LOL cat meme. You open a program by saying hi, then end it by saying k thanks bye. Loops can be performed with from in your or broken out of with I'm out of your. That's nice and easy to understand, but it would be even better if it included emojis. Emoji code is a language where the syntax is entirely based on emojis. Modern developers like to use so many emojis in their documentation that this language would just streamline the entire process. It's a fully featured object oriented language where you can define code blocks with grapes and watermelons, classes with rabbits, and generics with shells and eggplants. To another language that's not necessarily esoteric is C-. It's designed as a portable assembly language that borrows heavily from C, but omits many of its features. The ultimate dialect of c though is holy c, which was created by Terry a Davis and used to build TempleOS, an operating system written under the direction of God. Holy c is actually really cool because it works like c, but it's just in time compiled on the operating system, which means you can use a scripting language that can interact directly with the operating system kernel. And that brings us to the final tier, the absolute lowest level you can go with your learning as a software engineer. Assembly is a language of which there are many variations that correspond directly to the architecture on the CPU. You. Different CPU architectures like x86 and ARM require different machine code instructions. Assembly allows you to represent this code with simple commands that manipulate values on the CPU's registers. Now, if that looks too easy, the next level down is machine code. At this point, we're looking at ones 0s or raw binary, usually represented in hexadecimal format. To code at this level, you'll need to have intimate knowledge of the computer's architecture and also be able to count in an area. But if we go beyond machine code, now we're looking at billions of transistors on a CPU. A single transistor represents 1 bit, like a 1 or a 0, by controlling the amount of electricity that flows through a piece of silicon. Now in order to do anything useful, the transistors need to be organized into logic gates like not, and, or, exclusive or, and so on. Ultimately, it's these very simple chunks of logic that perform the miracle of taking in some electricity as an input that can produce some other electricity as an output, and do it billions of times per second all over the world so you can play video games with your friend in Vietnam. If that was too easy, then you may want to look into the field of quantum electrodynamics to fully understand how these particles behave in the electromagnetic quantum vacuum. You can then use your skills to build a next gen blazingly fast quantum computer, and become the richest person in history. At this point in the iceberg, there's only one place left to go. The scariest place of all yourself. Once you know everything, the question becomes, what is knowledge? Epistemology is the theory of knowledge, and Philosophers still don't have a good answer to this day. Reality only exists within my own mind. For all I know, the entire external world and all the knowledge I've acquired are just illusions and projections chins from my own ego. Maybe there's a godlike being that controls all the sensations and knowledge received by my mind, or perhaps my real body isn't a vat of goo, and I'm already living in Herzberg's metaverse, or maybe I never came out of that Ayahuasca trip I took 10 years ago. The only thing I really know is that I know nothing. Thanks for watching, and I will see you in the next one.
You've
you've
likely
likely
seen
seen
videos
videos
on
on
YouTube
youtube
telling
telling
you
you
the
the
number
number
one
one
programming
programming
language
language
to
to
learn
learn
right
right
now
now
if
if
you
you
want
want
to
to
be
be
rich.
rich
That's
that's
not
not
what
what
we're
we're
doing
doing
today.
today
Instead,
instead
we're
we're
going
going
to
to
travel
travel
to
to
the
the
deepest
deepest
darkest
darkest
depths
depths
of
of
the
the
software
software
engineering
engineering
field
field
to
to
discover
discover
the
the
programming
programming
languages
languages
that
that
are
are
loved,
loved
hated,
hated
beautiful,
beautiful
ugly,
ugly
and
and
compiled,
compiled
interpreted,
interpreted
useful,
useful
full
full
weird
weird
and
and
everything
everything
in
in
between.
between
If
if
you
you
make
make
it
it
to
to
the
the
end,
end
you'll
you'll
have
have
a
a
road
road
map
map
for
for
everything
everything
you
you
need
need
to
to
know
know
to
to
land
land
a
a
job
job
as
as
a
a
junior
junior
developer
developer
in
in
2023.
2023
Or
or
it
it
might
might
just
just
make
make
you
you
extremely
extremely
depressed
depressed
because
because
this
this
iceberg
iceberg
is
is
just
just
the
the
tip
tip
of
of
the
the
iceberg
iceberg
of
of
what
what
you
you
actually
actually
need
need
to
to
learn.
learn
Choose
choose
any
any
language
language
and
and
you'll
you'll
find
find
another
another
iceberg
iceberg
within
within
this
this
iceberg
iceberg
that
that
goes
goes
on
on
forever
forever
like
like
a
a
Mandelbrot
mandelbrot
set,
set
which
which
ironically
ironically
you
you
can
can
represent
represent
in
in
code
code
with
with
any
any
one
one
of
of
the
the
languages
languages
we're
we're
about
about
to
to
look
look
at.
at
Before
before
we
we
get
get
started,
started
there's
there's
quite
quite
a
a
few
few
programming
programming
icebergs
icebergs
out
out
there,
there
but
but
this
this
one
one
ranks
ranks
languages
languages
based
based
on
on
where
where
I
i
think
think
you
you
might
might
encounter
encounter
them
them
as
as
a
a
beginner
beginner
learning
learning
how
how
to
to
code
code
from
from
scratch.
scratch
Each
each
level
level
has
has
its
its
own
own
theme,
theme
so
so
let's
let's
get
get
right
right
into
into
it
it
with
with
languages
languages
that
that
are
are
designed
designed
to
to
make
make
programming
programming
as
as
easy
easy
as
as
possible.
possible
If
if
you
you
know
know
absolutely
absolutely
nothing
nothing
about
about
programming,
programming
the
the
best
best
place
place
to
to
start
start
in
in
my
my
opinion
opinion
is
is
Scratch.
scratch
It
it
was
was
developed
developed
at
at
MIT
mit
like
like
some
some
other
other
languages
languages
on
on
this
this
list,
list
but
but
instead
instead
of
of
typing
typing
out
out
code,
code
you
you
drag
drag
and
and
drop
drop
these
these
blocks
blocks
together
together
like
like
Lego
lego
bricks
bricks
to
to
represent
represent
things
things
like
like
variables,
variables
control
control
flow,
flow
and
and
operators.
operators
It
it
makes
makes
the
the
thinking
thinking
process
process
behind
behind
programming
programming
much
much
more
more
accessible,
accessible
and
and
you
you
might
might
be
be
surprised
surprised
at
at
what
what
you
you
can
can
actually
actually
build
build
with
with
it.
it
Long
long
before
before
Scratch
scratch
though
though
we
we
had
had
basic
basic
or
or
beginners
beginners
all
all
purpose
purpose
symbolic
symbolic
instruction
instruction
code,
code
which
which
came
came
out
out
of
of
Dartmouth
dartmouth
in
in
1964.
1964
At
at
the
the
time,
time
Fortran
fortran
was
was
all
all
the
the
rage,
rage
but
but
it
it
wasn't
wasn't
beginner
beginner
friendly.
friendly
Basic
basic
TIC
tic
provides
provides
a
a
bunch
bunch
of
of
basic
basic
commands
commands
like
like
print,
print
go
go
to,
to
and
and
for,
for
and
and
was
was
included
included
in
in
most
most
personal
personal
computers,
computers
which
which
made
made
it
it
the
the
go
go
to
to
option
option
for
for
people
people
learning
learning
to
to
code
code
for
for
the
the
next
next
50
50
years.
years
Now,
now
Moving
moving
on
on
to
to
the
the
next
next
tier,
tier
we
we
have
have
the
the
extremely
extremely
popular
popular
dynamic
dynamic
high
high
level
level
languages.
languages
The
the
language
language
most
most
people
people
start
start
with
with
today
today
is
is
Python
python
primarily
primarily
because
because
of
of
its
its
minimal
minimal
syntax.
syntax
It
it
doesn't
doesn't
require
require
curly
curly
braces,
braces
semi
semi
colons,
colons
and
and
stuff
stuff
like
like
that,
that
and
and
instead
instead
uses
uses
indentation
indentation
to
to
represent
represent
different
different
blocks
blocks
of
of
code.
code
The
the
other
other
popular
popular
high
high
level
level
language
language
to
to
is
is
JavaScript.
javascript
Syntactically,
syntactically
it's
it's
pretty
pretty
ugly,
ugly
but
but
it's
it's
a
a
requirement
requirement
if
if
you
you
wanna
wanna
do
do
web
web
development
development
and
and
almost
almost
every
every
developer
developer
will
will
have
have
to
to
touch
touch
it
it
at
at
some
some
point
point
in
in
their
their
career.
career
Any
any
application
application
that
that
can
can
be
be
written
written
in
in
JavaScript
javascript
that
that
will
will
eventually
eventually
be
be
written
written
in
in
JavaScript.
javascript
Now,
now
after
after
learning
learning
one
one
of
of
these
these
languages,
languages
you'll
you'll
be
be
able
able
to
to
build
build
pretty
pretty
much
much
anything
anything
you
you
can
can
imagine,
imagine
and
and
you
you
could
could
have
have
an
an
entire
entire
career
career
as
as
a
a
software
software
Jeneer
jeneer
without
without
going
going
any
any
further
further
down
down
the
the
iceberg.
iceberg
But
but
you
you
don't
don't
wanna
wanna
be
be
on
on
your
your
deathbed
deathbed
wondering
wondering
if
if
you
you
should
should
have
have
tried
tried
out
out
PHP.
php
On
on
this
this
next
next
tier,
tier
we
we
have
have
languages
languages
that
that
are
are
extremely
extremely
popular,
popular
but
but
a
a
little
little
more
more
specialized.
specialized
Programmers
programmers
like
like
to
to
get
get
things
things
done
done
from
from
the
the
terminal
terminal
and
and
there
there
are
are
scripting
scripting
languages
languages
like
like
bash
bash
and
and
PowerShell
powershell
that
that
allow
allow
you
you
to
to
interact
interact
with
with
your
your
computer
computer
programmatically.
programmatically
Ly.
ly
Instead
instead
of
of
typing
typing
out
out
the
the
same
same
commands
commands
over
over
and
and
over
over
again,
again
write
write
a
a
bash
bash
script
script
to
to
make
make
it
it
reproducible.
reproducible
Now,
now
if
if
you
you
get
get
into
into
web
web
development,
development
you'll
you'll
also
also
need
need
to
to
learn
learn
HTML
html
and
and
CSS,
css
which
which
when
when
combined
combined
together
together
arguably
arguably
form
form
a
a
Turing
turing
complete
complete
programming
programming
language.
language
They're
they're
not
not
used
used
for
for
programming
programming
in
in
the
the
traditional
traditional
sense,
sense
but
but
rather
rather
to
to
define
define
the
the
structure
structure
and
and
style
style
of
of
a
a
website.
website
And
and
if
if
I
i
were
were
to
to
say
say
HTML
html
is
is
not
not
a
a
programming
programming
language,
language
I
i
would
would
be
be
immediately
immediately
canceled
canceled
by
by
the
the
tech
tech
community.
community
In
in
addition,
addition
most
most
apps
apps
need
need
a
a
database,
database
and
and
the
the
most
most
common
common
language
language
for
for
working
working
with
with
databases
databases
is
is
structured
structured
query
query
language.
language
You
you
can
can
call
call
it
it
SQL,
sql
SQL
sql
or
or
Sqeal.
sqeal
This
this
turned
turned
complete,
complete
although
although
not
not
used
used
for
for
regular
regular
programming,
programming
but
but
rather
rather
to
to
read
read
and
and
write
write
data
data
in
in
a
a
relational
relational
database.
database
Now
now
Python
python
is
is
great
great
and
and
all,
all
but
but
there
there
are
are
many
many
other
other
dynamic
dynamic
languages
languages
that
that
might
might
be
be
a
a
better
better
fit
fit
for
for
certain
certain
projects.
projects
Like
like
PHP
php
made
made
it
it
easy
easy
to
to
build
build
server
server
side
side
web
web
apps
apps
in
in
the
the
nineties
nineties
and
and
is
is
still
still
very
very
popular
popular
today.
today
Lua
lua
is
is
easier
easier
and
and
faster
faster
than
than
Python
python
and
and
is
is
embedded
embedded
into
into
many
many
engines
engines
like
like
Roblox
roblox
and
and
World
world
of
of
Warcraft.
warcraft
Ruby
ruby
is
is
an
an
easy
easy
to
to
learn
learn
object
object
oriented
oriented
language,
language
also
also
commonly
commonly
used
used
to
to
build
build
web
web
apps
apps
with
with
the
the
rails
rails
else
else
framework.
framework
If
if
you
you
work
work
in
in
data
data
science,
science
you'll
you'll
come
come
across
across
R,
r
which
which
is
is
used
used
for
for
statistics
statistics
and
and
data
data
viz,
viz
or
or
Julia,
julia
a
a
more
more
modern
modern
option,
option
and
and
also
also
used
used
for
for
scientific
scientific
computing.
computing
The
the
one
one
thing
thing
all
all
these
these
languages
languages
have
have
in
in
common
common
is
is
a
a
dynamic
dynamic
type
type
system.
system
However,
however
as
as
you
you
build
build
more
more
complex
complex
software,
software
you
you
may
may
realize
realize
that
that
you
you
need
need
a
a
more
more
rigid
rigid
framework,
framework
and
and
one
one
way
way
to
to
accomplish
accomplish
that
that
is
is
with
with
a
a
static
static
type
type
system.
system
This
this
tier
tier
makes
makes
up
up
the
the
bulk
bulk
of
of
production
production
code
code
out
out
in
in
the
the
world.
world
First
first
up,
up
we
we
have
have
Java,
java
which
which
kind
kind
of
of
revolutionized
revolutionized
programming
programming
with
with
the
the
Java
java
virtual
virtual
machine.
machine
It
it
compiles
compiles
to
to
bytecode
bytecode
that
that
runs
runs
on
on
the
the
JVM
jvm
and
and
that
that
allows
allows
developers
developers
to
to
target
target
any
any
computer
computer
architecture
architecture
from
from
a
a
single
single
codebase.
codebase
Syntactically,
syntactically
it's
it's
an
an
absolute
absolute
dumpster
dumpster
fire
fire
for
for
beginners.
beginners
I
i
made
made
an
an
entire
entire
video
video
about
about
why
why
people
people
hate
hate
Java,
java
but
but
having
having
explicit
explicit
types
types
in
in
your
your
code
code
can
can
make
make
it
it
much
much
easier
easier
to
to
understand
understand
and
and
refactor.
refactor
And
and
modern
modern
IDE's
ide's
like
like
IntelliJ
intellij
will
will
pretty
pretty
much
much
make
make
the
the
code
code
write
write
itself.
itself
Java
java
is
is
legendary,
legendary
but
but
it
it
was
was
load
load
up
up
by
by
Microsoft
microsoft
with
with
c
c
sharp.
sharp
It's
it's
similar
similar
to
to
Java
java
in
in
many
many
ways,
ways
but
but
gets
gets
a
a
lot
lot
more
more
love
love
from
from
its
its
users.
users
It's
it's
used
used
to
to
build
build
games
games
with
with
Unity,
unity
as
as
well
well
as
as
web
web
and
and
desktop
desktop
apps
apps
with
with
the
the
dot
dot
net
net
framework.
framework
Another
another
well
well
loved
loved
tool
tool
from
from
Microsoft
microsoft
is
is
TypeScript.
typescript
It
it
takes
takes
JavaScript
javascript
and
and
adds
adds
a
a
type
type
system
system
on
on
top
top
of
of
it,
it
making
making
it
it
much
much
easier
easier
to
to
work
work
with
with
on
on
large
large
search
search
complex
complex
projects.
projects
If
if
you're
you're
building
building
a
a
mobile
mobile
app
app
today,
today
you'll
you'll
likely
likely
be
be
working
working
with
with
Kotlin
kotlin
for
for
Android,
android
Swift
swift
for
for
iOS,
ios
or
or
Dart
dart
with
with
the
the
Flutter
flutter
framework.
framework
Work.
work
These
these
languages
languages
are
are
all
all
statically
statically
typed,
typed
but
but
they
they
go
go
about
about
it
it
in
in
a
a
more
more
modern
modern
concise
concise
way
way
with
with
features
features
like
like
type
type
inference
inference
that
that
minimize
minimize
boilerplate
boilerplate
code.
code
Next
next
up,
up
we
we
have
have
Go,
go
which
which
is
is
a
a
high
high
performance
performance
language
language
developed
developed
at
at
Google
google
to
to
build
build
low
low
level
level
systems.
systems
It
it
was
was
designed
designed
as
as
a
a
replacement
replacement
for
for
c,
c
and
and
Ken
ken
Thompson,
thompson
one
one
of
of
the
the
original
original
creators
creators
of
of
c,
c
helped
helped
design
design
it.
it
The
the
syntax
syntax
is
is
nice
nice
and
and
concise,
concise
making
making
it
it
approachable
approachable
to
to
beginners,
beginners
and
and
it
it
has
has
a
a
garbage
garbage
collector,
collector
which
which
means
means
unlike
unlike
to
to
developers
developers
don't
don't
need
need
to
to
worry
worry
about
about
manual
manual
memory
memory
management.
management
Okay.
okay
So
so
at
at
this
this
point,
point
we've
we've
reached
reached
the
the
level
level
of
of
the
the
iceberg
iceberg
where
where
most
most
people
people
are
are
afraid
afraid
to
to
go
go
any
any
deeper.
deeper
Things
things
are
are
gonna
gonna
get
get
weird.
weird
What
what
happens
happens
is
is
that
that
many
many
developers
developers
get
get
jaded
jaded
with
with
these
these
big
big
heavy
heavy
object
object
oriented
oriented
languages
languages
and
and
go
go
searching
searching
for
for
a
a
better
better
way.
way
At
at
this
this
level
level
we
we
have
have
functional
functional
languages,
languages
the
the
most
most
famous
famous
of
of
which
which
is
is
Haskell.
haskell
Instead
instead
of
of
classes,
classes
inheritance,
inheritance
and
and
all
all
kinds
kinds
of
of
crazy
crazy
design
design
patterns.
patterns
The
the
only
only
abstraction
abstraction
you
you
really
really
need
need
is
is
the
the
function.
function
It
it
was
was
inspired
inspired
by
by
the
the
Miranda
miranda
language
language
and
and
is
is
named
named
after
after
the
the
mathematician
mathematician
Haskell
haskell
Curry.
curry
Most
most
importantly,
importantly
Variables
variables
are
are
immutable
immutable
and
and
functions
functions
have
have
no
no
side
side
effects.
effects
Surprisingly,
surprisingly
you
you
can
can
build
build
almost
almost
anything
anything
with
with
these
these
limitations,
limitations
although
although
most
most
production
production
code
code
out
out
there
there
is
is
not
not
functional.
functional
Null.
null
Most
most
of
of
us
us
run
run
into
into
problems
problems
when
when
trying
trying
to
to
figure
figure
out
out
what
what
a
a
monad
monad
is,
is
which
which
in
in
layman's
layman's
terms
terms
is
is
just
just
a
a
monoid
monoid
in
in
the
the
category
category
of
of
enfunctors.
enfunctors
Haskell
haskell
is
is
great,
great
but
but
Microsoft
microsoft
developed
developed
a
a
functional
functional
sister
sister
language
language
to
to
c
c
sharp
sharp
called
called
f
f
sharp.
sharp
Unlike
unlike
Haskell,
haskell
which
which
is
is
purely
purely
functional,
functional
f
f
sharp
sharp
is
is
also
also
imperative
imperative
and
and
object
object
oriented,
oriented
making
making
it
it
more
more
approachable
approachable
to
to
developers
developers
coming
coming
from
from
higher
higher
up
up
in
in
the
the
iceberg.
iceberg
Now,
now
if
if
you
you
hate
hate
Java,
java
a
a
good
good
alternative
alternative
is
is
Scala.
scala
Like
like
f
f
sharp,
sharp
it
it
supports
supports
both
both
object
object
oriented
oriented
and
and
functional
functional
programming,
programming
but
but
it
it
runs
runs
on
on
the
the
JVM.
jvm
It's
it's
statically
statically
typed,
typed
but
but
there's
there's
another
another
JVM
jvm
language
language
called
called
Clojure
clojure
that
that
is
is
both
both
functional
functional
and
and
dynamic.
dynamic
This
this
makes
makes
it
it
more
more
well
well
suited
suited
for
for
getting
getting
things
things
done
done
quickly
quickly
with
with
the
the
trade
trade
off
off
of
of
type
type
safety.
safety
Other
other
popular
popular
functional
functional
languages
languages
include
include
OCaml,
ocaml
which
which
is
is
used
used
extensively
extensively
at
at
Facebook
facebook
and
and
Elixir,
elixir
which
which
has
has
a
a
very
very
nice
nice
Ruby
ruby
like
like
syntax
syntax
and
and
is
is
capable
capable
of
of
building
building
high
high
performance
performance
real
real
time
time
web
web
apps.
apps
There's
there's
also
also
Elm,
elm
which
which
is
is
a
a
purely
purely
to
to
a
a
language
language
that
that
compiles
compiles
to
to
JavaScript,
javascript
which
which
can
can
build
build
front
front
end
end
UIs
uis
with
with
0
0
runtime
runtime
errors.
errors
But
but
now
now
it's
it's
time
time
to
to
go
go
one
one
level
level
deeper
deeper
to
to
the
the
part
part
of
of
the
the
iceberg.
iceberg
These
these
languages
languages
are
are
absolute
absolute
chads.
chads
They're
they're
low
low
level
level
systems
systems
languages
languages
that
that
can
can
manually
manually
manage
manage
and
and
optimize
optimize
memory
memory
and
and
and
and
are
are
used
used
to
to
build
build
things
things
like
like
operating
operating
system
system
kernels
kernels
and
and
compilers
compilers
that
that
make
make
all
all
the
the
other
other
soy
soy
based
based
languages
languages
possible.
possible
The
the
most
most
legendary
legendary
of
of
which
which
is
is
c.
c
It
it
was
was
used
used
to
to
build
build
the
the
Windows,
windows
Mac,
mac
and
and
Linux
linux
operating
operating
system
system
kernels,
kernels
and
and
its
its
curly
curly
brace
brace
syntax
syntax
inspired
inspired
many
many
other
other
languages
languages
on
on
this
this
list.
list
Surprisingly,
surprisingly
it's
it's
not
not
all
all
that
that
hard
hard
to
to
learn
learn
and
and
has
has
a
a
relatively
relatively
small
small
set
set
of
of
keywords
keywords
to
to
memorize.
memorize
However,
however
being
being
able
able
to
to
use
use
it
it
effectively
effectively
requires
requires
extensive
extensive
knowledge
knowledge
of
of
algorithms
algorithms
and
and
computer
computer
architecture.
architecture
For
for
example,
example
C
c
doesn't
doesn't
have
have
hash
hash
maps
maps
or
or
dictionaries,
dictionaries
so
so
you'll
you'll
have
have
to
to
learn
learn
how
how
to
to
code
code
up
up
that
that
data
data
structure
structure
on
on
your
your
own.
own
C
c
was
was
the
the
perfect
perfect
programming
programming
language
language
when
when
it
it
came
came
out
out
in
in
1960
1960
benign,
benign
but
but
it
it
only
only
supported
supported
procedural
procedural
programming
programming
and
and
eventually
eventually
developers
developers
wanted
wanted
more.
more
C
c
plus
plus
plus
plus
was
was
originally
originally
a
a
superset
superset
of
of
c,
c
designed
designed
to
to
extend
extend
it
it
with
with
object
object
oriented
oriented
cramming
cramming
patterns,
patterns
like
like
classes
classes
and
and
inheritance.
inheritance
Unlike
unlike
c,
c
it's
it's
extremely
extremely
hard
hard
to
to
learn
learn
and
and
provides
provides
many
many
opportunities
opportunities
to
to
not
not
only
only
shoot
shoot
yourself
yourself
in
in
the
the
foot,
foot
but
but
blow
blow
your
your
entire
entire
leg
leg
off.
off
This
this
is
is
a
a
reference
reference
friends
friends
to
to
manual
manual
memory
memory
management
management
with
with
pointers,
pointers
which
which
got
got
that
that
name
name
because
because
they're
they're
just
just
as
as
dangerous
dangerous
as
as
pointing
pointing
a
a
gun
gun
at
at
someone.
someone
Despite
despite
its
its
learning
learning
curve,
curve
it's
it's
an
an
extremely
extremely
prolific
prolific
language
language
used
used
to
to
build
build
highly
highly
optimized
optimized
software
software
like
like
game
game
engines,
engines
compilers
compilers
and
and
so
so
on.
on
D
d
and
and
c
c
plus
plus
plus
plus
are
are
still
still
extremely
extremely
relevant
relevant
today,
today
but
but
the
the
modern
modern
Chad
chad
tends
tends
to
to
prefer
prefer
Rust
rust
for
for
low
low
level
level
programming.
programming
It
it
doesn't
doesn't
have
have
a
a
garbage
garbage
collector,
collector
but
but
unlike
unlike
c
c
and
and
c
c
plus
plus
plus
plus
it
it
It
it
uses
uses
a
a
technique
technique
called
called
borrow
borrow
checking
checking
instead
instead
of
of
pointers
pointers
for
for
memory
memory
management.
management
This
this
makes
makes
it
it
much
much
easier
easier
to
to
write
write
memory
memory
safe
safe
programs
programs
and
and
consistently
consistently
ranks
ranks
as
as
the
the
most
most
loved
loved
language
language
in
in
the
the
world.
world
The
the
languages
languages
on
on
this
this
tier
tier
are
are
extremely
extremely
popular,
popular
but
but
now
now
we
we
descend
descend
further
further
into
into
the
the
modern
modern
languages
languages
that
that
you
you
probably
probably
haven't
haven't
heard
heard
of.
of
First
first
up,
up
we
we
have
have
v,
v
which
which
is
is
a
a
high
high
performance
performance
systems
systems
language
language
that
that
feels
feels
very
very
similar
similar
to
to
Go,
go
but
but
unlike
unlike
Go,
go
it
it
doesn't
doesn't
use
use
a
a
a
a
garbage
garbage
collector,
collector
and
and
unlike
unlike
Rust,
rust
it
it
doesn't
doesn't
do
do
borrow
borrow
checking,
checking
but
but
it
it
can
can
still
still
create
create
memory
memory
safe
safe
applications
applications
with
with
its
its
own
own
auto
auto
free
free
innovation
innovation
where
where
the
the
compiler
compiler
basically
basically
cleans
cleans
everything
everything
up.
up
I
i
with
with
no
no
idea
idea
how
how
it
it
works,
works
but
but
it
it
looks
looks
cool.
cool
Another
another
modern
modern
replacement
replacement
for
for
c
c
is
is
Zig.
zig
It's
it's
designed
designed
to
to
simplify
simplify
low
low
level
level
programming
programming
by
by
eliminating
eliminating
features
features
like
like
macros
macros
and
and
meta
meta
programming,
programming
and
and
is
is
very
very
explicit
explicit
when
when
it
it
comes
comes
to
to
memory
memory
management,
management
and
and
it
it
can
can
cross
cross
compile
compile
c
c
and
and
c
c
plus
plus
plus
plus
just
just
like
like
Clang.
clang
Zig
zig
is
is
not
not
to
to
be
be
confused
confused
with
with
Nim,
nim
another
another
high
high
performance
performance
language
language
that's
that's
very
very
expressive
expressive
like
like
Python,
python
but
but
is
is
statically
statically
typed,
typed
and
and
interestingly,
interestingly
it
it
has
has
a
a
tunable
tunable
garbage
garbage
collector
collector
that
that
can
can
be
be
turned
turned
off
off
altogether
altogether
to
to
enable
enable
manual
manual
memory
memory
management.
management
Recently,
recently
Google
google
announced
announced
Carbon
carbon
designed
designed
to
to
be
be
a
a
successor
successor
to
to
C
c
plus
plus
plus
plus
What
what
makes
makes
it
it
special
special
is
is
that
that
it
it
can
can
fully
fully
interop
interop
with
with
a
a
legacy
legacy
C
c
plus
plus
plus
plus
codebase.
codebase
Another
another
low
low
level
level
specialty
specialty
which
which
is
is
Solidity.
solidity
It's
it's
a
a
statically
statically
typed
typed
object
object
oriented
oriented
language,
language
but
but
is
is
designed
designed
for
for
implementing
implementing
smart
smart
contracts,
contracts
especially
especially
on
on
the
the
Ethereum
ethereum
blockchain.
blockchain
And
and
then
then
we've
we've
got
got
hack
hack
from
from
Facebook,
facebook
which
which
is
is
designed
designed
to
to
interop
interop
with
with
PHP.
php
The
the
original
original
website
website
was
was
built
built
with
with
PHP,
php
but
but
they
they
needed
needed
a
a
language
language
with
with
better
better
performance
performance
and
and
a
a
type
type
system
system
to
to
scale
scale
it
it
up
up
to
to
the
the
monstrosity
monstrosity
that
that
it
it
is
is
today.
today
There
there
are
are
many
many
other
other
good
good
modern
modern
languages
languages
at
at
this
this
point
point
in
in
the
the
iceberg,
iceberg
like
like
Crystal,
crystal
Hax,
hax
and
and
Pharo
pharo
just
just
to
to
name
name
a
a
few.
few
But
but
now
now
it's
it's
time
time
to
to
go
go
down
down
to
to
the
the
next
next
level
level
where
where
we
we
look
look
at
at
languages
languages
that
that
are
are
still
still
either
either
widely
widely
used
used
or
or
historically
historically
important,
important
but
but
not
not
something
something
you
you
would
would
likely
likely
choose
choose
to
to
program
program
in.
in
Fortran
fortran
was
was
the
the
first
first
high
high
level
level
programming
programming
language
language
and
and
was
was
by
by
far
far
the
the
most
most
popular
popular
language
language
for
for
many
many
years
years
until
until
c
c
came
came
around.
around
Not
not
not
not
long
long
after
after
Fortran
fortran
Lisp
lisp
was
was
invented
invented
in
in
1958.
1958
It
it
pioneered
pioneered
many
many
ideas
ideas
we
we
take
take
for
for
granted
granted
in
in
computer
computer
science
science
today,
today
like
like
dynamic
dynamic
typing,
typing
higher
higher
for
for
functions,
functions
recursion
recursion
and
and
repel.
repel
It
it
inspired
inspired
many
many
other
other
languages
languages
like
like
Racket,
racket
Scheme,
scheme
Clojure,
clojure
and
and
to
to
a
a
certain
certain
extent
extent
JavaScript.
javascript
Another
another
highly
highly
influential
influential
language
language
that
that
came
came
out
out
this
this
year
year
was
was
algorithmic
algorithmic
language.
language
It's
it's
a
a
big
big
complex
complex
language
language
and
and
never
never
got
got
as
as
popular
popular
as
as
Fortran,
fortran
but
but
its
its
type
type
system
system
and
and
use
use
of
of
expressions
expressions
had
had
a
a
major
major
on
on
the
the
development
development
of
of
c
c
and
and
c
c
plus
plus
plus
plus
The
the
following
following
year
year
in
in
1959,
1959
COBOL
cobol
was
was
born.
born
If
if
you
you
wanna
wanna
make
make
money
money
in
in
the
the
20
20
twenties,
twenties
learn
learn
COBOL,
cobol
because
because
over
over
40%
40%
of
of
Thinking
thinking
systems
systems
still
still
use
use
it
it
with
with
over
over
200,000,000,000
200,000,000,000
lines
lines
of
of
code
code
in
in
production
production
today.
today
In
in
62,
62
APL
apl
first
first
appeared,
appeared
which
which
stands
stands
for
for
for
for
a
a
programming
programming
language.
language
It
it
implements
implements
linear
linear
algebra
algebra
directly
directly
into
into
the
the
language
language
with
with
a
a
multi
multi
dimensional
dimensional
array
array
or
or
matrix
matrix
being
being
the
the
central
central
data
data
type.
type
This
this
leads
leads
to
to
extremely
extremely
terse
terse
code
code
that
that
resembles
resembles
mathematical
mathematical
notation
notation
and
and
makes
makes
heavy
heavy
use
use
of
of
the
the
Greek
greek
alphabet.
alphabet
In
in
1970,
1970
Pascal
pascal
was
was
invented
invented
and
and
took
took
the
the
programming
programming
world
world
by
by
storm.
storm
It's
it's
a
a
procedural
procedural
language
language
with
with
a
a
familiar
familiar
syntax
syntax
and
and
also
also
had
had
very
very
fast
fast
compile
compile
times.
times
It
it
eventually
eventually
became
became
the
the
most
most
popular
popular
language
language
in
in
the
the
early
early
19
19
eighties
eighties
before
before
the
the
rise
rise
of
of
c
c
a
a
few
few
years
years
later.
later
There
there
are
are
many
many
other
other
important
important
languages
languages
from
from
this
this
time
time
period,
period
like
like
Simula,
simula
the
the
first
first
object
object
oriented
oriented
language,
language
that
that
went
went
on
on
to
to
inspire
inspire
small
small
talk,
talk
which
which
itself
itself
inspired
inspired
many
many
other
other
object
object
oriented
oriented
languages
languages
like
like
Python,
python
Java,
java
and
and
Ruby.
ruby
Then
then
there's
there's
Erlang,
erlang
a
a
concurrent
concurrent
functional
functional
programming
programming
language
language
that
that
basically
basically
powered
powered
the
the
entire
entire
telecom
telecom
industry
industry
and
and
is
is
still
still
in
in
use
use
today.
today
There's
there's
Ada,
ada
a
a
general
general
purpose
purpose
language
language
named
named
after
after
Ada
ada
Lovelace,
lovelace
who's
who's
generally
generally
considered
considered
the
the
world's
world's
1st
1st
computer
computer
programmer.
programmer
It
it
was
was
extremely
extremely
popular
popular
in
in
the
the
19
19
eighties
eighties
and
and
is
is
still
still
used
used
today
today
by
by
the
the
Department
department
of
of
Defense
defense
to
to
blow
blow
people
people
up.
up
In
in
addition,
addition
we
we
should
should
mention
mention
Prolog,
prolog
the
the
language
language
that
that
pioneered
pioneered
logic
logic
programming,
programming
and
and
Metalanguage,
metalanguage
which
which
pioneered
pioneered
the
the
polymorphic
polymorphic
type
type
system
system
used
used
by
by
other
other
statically
statically
typed
typed
functional
functional
which
which
is
is
like
like
Haskell.
haskell
There
there
are
are
many
many
other
other
historical
historical
languages
languages
we
we
could
could
talk
talk
about,
about
but
but
now
now
it's
it's
time
time
to
to
descend
descend
into
into
the
the
realm
realm
of
of
the
the
esoteric,
esoteric
where
where
we
we
find
find
rare
rare
and
and
bizarre
bizarre
languages
languages
that
that
feel
feel
more
more
like
like
works
works
of
of
art
art
than
than
engineering
engineering
tools.
tools
The
the
first
first
known
known
esoteric
esoteric
language
language
came
came
out
out
in
in
1972
1972
and
and
was
was
called
called
intercal,
intercal
which
which
stands
stands
for
for
compiler
compiler
language
language
with
with
with
with
no
no
pronounceable
pronounceable
acronym.
acronym
It
it
was
was
designed
designed
as
as
a
a
parody
parody
to
to
make
make
fun
fun
of
of
the
the
languages
languages
of
of
the
the
day
day
like
like
Algol
algol
and
and
Fortran.
fortran
It
it
has
has
an
an
entire
entire
paradoxical
paradoxical
with
with
a
a
reference
reference
manual
manual
that
that
makes
makes
no
no
sense
sense
and
and
has
has
an
an
interesting
interesting
choice
choice
of
of
keywords
keywords
like
like
please
please
and
and
mingle.
mingle
Please
please
doesn't
doesn't
actually
actually
do
do
anything,
anything
but
but
it
it
makes
makes
you
you
a
a
more
more
polite
polite
programmer.
programmer
Next
next
up,
up
we
we
have
have
brain
brain
Brainfucker
brainfucker
is
is
most
most
well
well
known
known
for
for
being
being
extremely
extremely
minimal.
minimal
Urban
urban
Mueller
mueller
created
created
brainfucker
brainfucker
in
in
college,
college
and
and
it
it
works
works
by
by
initializing
initializing
an
an
array,
array
then
then
gives
gives
to
to
a
a
pointer
pointer
and
and
8
8
different
different
characters
characters
to
to
manipulate
manipulate
memory
memory
in
in
that
that
array.
array
This
this
results
results
in
in
a
a
code
code
base
base
that
that
will
will
your
your
brain
brain
up.
up
It
it
inspired
inspired
another
another
language
language
called
called
male
male
Bulge,
bulge
or
or
maybe
maybe
it's
it's
Mount
mount
Bulgea,
bulgea
which
which
is
is
named
named
after
after
the
the
8th
8th
circle
circle
of
of
hell
hell
in
in
the
the
Divine
divine
Comedy,
comedy
or
or
Dante's
dante's
Inferno.
inferno
If
if
you
you
thought
thought
brain
brain
was
was
difficult,
difficult
this
this
language
language
takes
takes
things
things
to
to
a
a
whole
whole
another
another
level.
level
It
it
makes
makes
programming
programming
so
so
difficult
difficult
that
that
I
i
can't
can't
even
even
summarize
summarize
how
how
it
it
works
works
in
in
a
a
single
single
sentence.
sentence
If
if
that's
that's
a
a
little
little
too
too
dark,
dark
a
a
far
far
more
more
fun
fun
language
language
is
is
Chef,
chef
which
which
is
is
stack
stack
based
based
and
and
is
is
designed
designed
to
to
make
make
your
your
code
code
to
to
look
look
like
like
a
a
cooking
cooking
recipe.
recipe
Instead
instead
of
of
concise
concise
keywords,
keywords
it
it
uses
uses
sentences
sentences
like
like
put
put
ingredient
ingredient
into
into
mixing
mixing
bowl
bowl
to
to
push
push
a
a
value
value
onto
onto
the
the
stack.
stack
Put
put
these
these
commands
commands
together
together
to
to
create
create
a
a
hello
hello
world
world
to
to
play,
play
then
then
specify
specify
how
how
many
many
it
it
serves
serves
to
to
write
write
it
it
to
to
the
the
standard
standard
output.
output
That's
that's
pretty
pretty
cool,
cool
but
but
it
it
may
may
seem
seem
kind
kind
of
of
silly
silly
to
to
an
an
intellectual.
intellectual
The
the
Shakespeare
shakespeare
programming
programming
which
which
will
will
make
make
your
your
code
code
look
look
like
like
a
a
Shakespearean
shakespearean
play.
play
It
it
provides
provides
the
the
low
low
level
level
control
control
of
of
assembly
assembly
with
with
the
the
verbosity
verbosity
of
of
16th
16th
century
century
poetry.
poetry
But
but
if
if
words
words
aren't
aren't
really
really
your
your
thing,
thing
then
then
a
a
good
good
language
language
choice
choice
would
would
be
be
Piet,
piet
which
which
is
is
named
named
after
after
Piet
piet
Mondrian.
mondrian
It's
it's
also
also
stack
stack
based,
based
but
but
you
you
write
write
code
code
utilizing
utilizing
patterns
patterns
of
of
20
20
different
different
colors
colors
on
on
a
a
bitmap
bitmap
image.
image
The
the
end
end
result
result
is
is
a
a
code
code
base
base
that
that
looks
looks
like
like
abstract
abstract
art.
art
Now,
now
if
if
you're
you're
a
a
crazy
crazy
cat
cat
lady,
lady
you're
you're
really
really
going
going
to
to
love
love
this
this
next
next
language,
language
LOL
lol
code,
code
which
which
provides
provides
a
a
developer
developer
experience
experience
similar
similar
to
to
an
an
LOL
lol
cat
cat
meme.
meme
You
you
open
open
a
a
program
program
by
by
saying
saying
hi,
hi
then
then
end
end
it
it
by
by
saying
saying
k
k
thanks
thanks
bye.
bye
Loops
loops
can
can
be
be
performed
performed
with
with
from
from
in
in
your
your
or
or
broken
broken
out
out
of
of
with
with
I'm
i'm
out
out
of
of
your.
your
That's
that's
nice
nice
and
and
easy
easy
to
to
understand,
understand
but
but
it
it
would
would
be
be
even
even
better
better
if
if
it
it
included
included
emojis.
emojis
Emoji
emoji
code
code
is
is
a
a
language
language
where
where
the
the
syntax
syntax
is
is
entirely
entirely
based
based
on
on
emojis.
emojis
Modern
modern
developers
developers
like
like
to
to
use
use
so
so
many
many
emojis
emojis
in
in
their
their
documentation
documentation
that
that
this
this
language
language
would
would
just
just
streamline
streamline
the
the
entire
entire
process.
process
It's
it's
a
a
fully
fully
featured
featured
object
object
oriented
oriented
language
language
where
where
you
you
can
can
define
define
code
code
blocks
blocks
with
with
grapes
grapes
and
and
watermelons,
watermelons
classes
classes
with
with
rabbits,
rabbits
and
and
generics
generics
with
with
shells
shells
and
and
eggplants.
eggplants
To
to
another
another
language
language
that's
that's
not
not
necessarily
necessarily
esoteric
esoteric
is
is
C-.
c-
It's
it's
designed
designed
as
as
a
a
portable
portable
assembly
assembly
language
language
that
that
borrows
borrows
heavily
heavily
from
from
C,
c
but
but
omits
omits
many
many
of
of
its
its
features.
features
The
the
ultimate
ultimate
dialect
dialect
of
of
c
c
though
though
is
is
holy
holy
c,
c
which
which
was
was
created
created
by
by
Terry
terry
a
a
Davis
davis
and
and
used
used
to
to
build
build
TempleOS,
templeos
an
an
operating
operating
system
system
written
written
under
under
the
the
direction
direction
of
of
God.
god
Holy
holy
c
c
is
is
actually
actually
really
really
cool
cool
because
because
it
it
works
works
like
like
c,
c
but
but
it's
it's
just
just
in
in
time
time
compiled
compiled
on
on
the
the
operating
operating
system,
system
which
which
means
means
you
you
can
can
use
use
a
a
scripting
scripting
language
language
that
that
can
can
interact
interact
directly
directly
with
with
the
the
operating
operating
system
system
kernel.
kernel
And
and
that
that
brings
brings
us
us
to
to
the
the
final
final
tier,
tier
the
the
absolute
absolute
lowest
lowest
level
level
you
you
can
can
go
go
with
with
your
your
learning
learning
as
as
a
a
software
software
engineer.
engineer
Assembly
assembly
is
is
a
a
language
language
of
of
which
which
there
there
are
are
many
many
variations
variations
that
that
correspond
correspond
directly
directly
to
to
the
the
architecture
architecture
on
on
the
the
CPU.
cpu
You.
you
Different
different
CPU
cpu
architectures
architectures
like
like
x86
x86
and
and
ARM
arm
require
require
different
different
machine
machine
code
code
instructions.
instructions
Assembly
assembly
allows
allows
you
you
to
to
represent
represent
this
this
code
code
with
with
simple
simple
commands
commands
that
that
manipulate
manipulate
values
values
on
on
the
the
CPU's
cpu's
registers.
registers
Now,
now
if
if
that
that
looks
looks
too
too
easy,
easy
the
the
next
next
level
level
down
down
is
is
machine
machine
code.
code
At
at
this
this
point,
point
we're
we're
looking
looking
at
at
ones
ones
0s
0s
or
or
raw
raw
binary,
binary
usually
usually
represented
represented
in
in
hexadecimal
hexadecimal
format.
format
To
to
code
code
at
at
this
this
level,
level
you'll
you'll
need
need
to
to
have
have
intimate
intimate
knowledge
knowledge
of
of
the
the
computer's
computer's
architecture
architecture
and
and
also
also
be
be
able
able
to
to
count
count
in
in
an
an
area.
area
But
but
if
if
we
we
go
go
beyond
beyond
machine
machine
code,
code
now
now
we're
we're
looking
looking
at
at
billions
billions
of
of
transistors
transistors
on
on
a
a
CPU.
cpu
A
a
single
single
transistor
transistor
represents
represents
1
1
bit,
bit
like
like
a
a
1
1
or
or
a
a
0,
0
by
by
controlling
controlling
the
the
amount
amount
of
of
electricity
electricity
that
that
flows
flows
through
through
a
a
piece
piece
of
of
silicon.
silicon
Now
now
in
in
order
order
to
to
do
do
anything
anything
useful,
useful
the
the
transistors
transistors
need
need
to
to
be
be
organized
organized
into
into
logic
logic
gates
gates
like
like
not,
not
and,
and
or,
or
exclusive
exclusive
or,
or
and
and
so
so
on.
on
Ultimately,
ultimately
it's
it's
these
these
very
very
simple
simple
chunks
chunks
of
of
logic
logic
that
that
perform
perform
the
the
miracle
miracle
of
of
taking
taking
in
in
some
some
electricity
electricity
as
as
an
an
input
input
that
that
can
can
produce
produce
some
some
other
other
electricity
electricity
as
as
an
an
output,
output
and
and
do
do
it
it
billions
billions
of
of
times
times
per
per
second
second
all
all
over
over
the
the
world
world
so
so
you
you
can
can
play
play
video
video
games
games
with
with
your
your
friend
friend
in
in
Vietnam.
vietnam
If
if
that
that
was
was
too
too
easy,
easy
then
then
you
you
may
may
want
want
to
to
look
look
into
into
the
the
field
field
of
of
quantum
quantum
electrodynamics
electrodynamics
to
to
fully
fully
understand
understand
how
how
these
these
particles
particles
behave
behave
in
in
the
the
electromagnetic
electromagnetic
quantum
quantum
vacuum.
vacuum
You
you
can
can
then
then
use
use
your
your
skills
skills
to
to
build
build
a
a
next
next
gen
gen
blazingly
blazingly
fast
fast
quantum
quantum
computer,
computer
and
and
become
become
the
the
richest
richest
person
person
in
in
history.
history
At
at
this
this
point
point
in
in
the
the
iceberg,
iceberg
there's
there's
only
only
one
one
place
place
left
left
to
to
go.
go
The
the
scariest
scariest
place
place
of
of
all
all
yourself.
yourself
Once
once
you
you
know
know
everything,
everything
the
the
question
question
becomes,
becomes
what
what
is
is
knowledge?
knowledge
Epistemology
epistemology
is
is
the
the
theory
theory
of
of
knowledge,
knowledge
and
and
Philosophers
philosophers
still
still
don't
don't
have
have
a
a
good
good
answer
answer
to
to
this
this
day.
day
Reality
reality
only
only
exists
exists
within
within
my
my
own
own
mind.
mind
For
for
all
all
I
i
know,
know
the
the
entire
entire
external
external
world
world
and
and
all
all
the
the
knowledge
knowledge
I've
i've
acquired
acquired
are
are
just
just
illusions
illusions
and
and
projections
projections
chins
chins
from
from
my
my
own
own
ego.
ego
Maybe
maybe
there's
there's
a
a
godlike
godlike
being
being
that
that
controls
controls
all
all
the
the
sensations
sensations
and
and
knowledge
knowledge
received
received
by
by
my
my
mind,
mind
or
or
perhaps
perhaps
my
my
real
real
body
body
isn't
isn't
a
a
vat
vat
of
of
goo,
goo
and
and
I'm
i'm
already
already
living
living
in
in
Herzberg's
herzberg's
metaverse,
metaverse
or
or
maybe
maybe
I
i
never
never
came
came
out
out
of
of
that
that
Ayahuasca
ayahuasca
trip
trip
I
i
took
took
10
10
years
years
ago.
ago
The
the
only
only
thing
thing
I
i
really
really
know
know
is
is
that
that
I
i
know
know
nothing.
nothing
Thanks
thanks
for
for
watching,
watching
and
and
I
i
will
will
see
see
you
you
in
in
the
the
next
next
one.
one
success
The benefits of learning programming languages are discussed, including the ability to build a roadmap for a job and create a passion for a language. Different types of programming languages are used, including SQL, SQL, and TypeScript, and they offer various uses, including low-level systems and fast, efficient programs. Different classes and their history are also discussed, including Erlang, Prolog, and LOL code, as well as popular writing classes like Fortran, CO-cell, and APL. The transcript provides examples of language classes that have been popular and their history, and encourages viewers to learn and use them.
God-Tier Developer Roadmap
You've likely seen videos on YouTube telling you the number one programming language to learn right now if you want to be rich. That's not what we're doing today. Instead, we're going to travel to the deepest darkest depths of the software engineering field to discover the programming languages that are loved, hated, beautiful, ugly, and compiled, interpreted, useful, full weird and everything in between. If you make it to the end, you'll have a road map for everything you need to know to land a job as a junior developer in 2023. Or it might just make you extremely depressed because this iceberg is just the tip of the iceberg of what you actually need to learn. Choose any language and you'll find another iceberg within this iceberg that goes on forever like a Mandelbrot set, which ironically you can represent in code with any one of the languages we're about to look at. Before we get started, there's quite a few programming icebergs out there, but this one ranks languages based on where I think you might encounter them as a beginner learning how to code from scratch. Each level has its own theme, so let's get right into it with languages that are designed to make programming as easy as possible. If you know absolutely nothing about programming, the best place to start in my opinion is Scratch. It was developed at MIT like some other languages on this list, but instead of typing out code, you drag and drop these blocks together like Lego bricks to represent things like variables, control flow, and operators. It makes the thinking process behind programming much more accessible, and you might be surprised at what you can actually build with it. Long before Scratch though we had basic or beginners all purpose symbolic instruction code, which came out of Dartmouth in 1964. At the time, Fortran was all the rage, but it wasn't beginner friendly. Basic TIC provides a bunch of basic commands like print, go to, and for, and was included in most personal computers, which made it the go to option for people learning to code for the next 50 years. Now, Moving on to the next tier, we have the extremely popular dynamic high level languages. The language most people start with today is Python primarily because of its minimal syntax. It doesn't require curly braces, semi colons, and stuff like that, and instead uses indentation to represent different blocks of code. The other popular high level language to is JavaScript. Syntactically, it's pretty ugly, but it's a requirement if you wanna do web development and almost every developer will have to touch it at some point in their career. Any application that can be written in JavaScript that will eventually be written in JavaScript. Now, after learning one of these languages, you'll be able to build pretty much anything you can imagine, and you could have an entire career as a software Jeneer without going any further down the iceberg. But you don't wanna be on your deathbed wondering if you should have tried out PHP. On this next tier, we have languages that are extremely popular, but a little more specialized. Programmers like to get things done from the terminal and there are scripting languages like bash and PowerShell that allow you to interact with your computer programmatically. Ly. Instead of typing out the same commands over and over again, write a bash script to make it reproducible. Now, if you get into web development, you'll also need to learn HTML and CSS, which when combined together arguably form a Turing complete programming language. They're not used for programming in the traditional sense, but rather to define the structure and style of a website. And if I were to say HTML is not a programming language, I would be immediately canceled by the tech community. In addition, most apps need a database, and the most common language for working with databases is structured query language. You can call it SQL, SQL or Sqeal. This turned complete, although not used for regular programming, but rather to read and write data in a relational database. Now Python is great and all, but there are many other dynamic languages that might be a better fit for certain projects. Like PHP made it easy to build server side web apps in the nineties and is still very popular today. Lua is easier and faster than Python and is embedded into many engines like Roblox and World of Warcraft. Ruby is an easy to learn object oriented language, also commonly used to build web apps with the rails else framework. If you work in data science, you'll come across R, which is used for statistics and data viz, or Julia, a more modern option, and also used for scientific computing. The one thing all these languages have in common is a dynamic type system. However, as you build more complex software, you may realize that you need a more rigid framework, and one way to accomplish that is with a static type system. This tier makes up the bulk of production code out in the world. First up, we have Java, which kind of revolutionized programming with the Java virtual machine. It compiles to bytecode that runs on the JVM and that allows developers to target any computer architecture from a single codebase. Syntactically, it's an absolute dumpster fire for beginners. I made an entire video about why people hate Java, but having explicit types in your code can make it much easier to understand and refactor. And modern IDE's like IntelliJ will pretty much make the code write itself. Java is legendary, but it was load up by Microsoft with c sharp. It's similar to Java in many ways, but gets a lot more love from its users. It's used to build games with Unity, as well as web and desktop apps with the dot net framework. Another well loved tool from Microsoft is TypeScript. It takes JavaScript and adds a type system on top of it, making it much easier to work with on large search complex projects. If you're building a mobile app today, you'll likely be working with Kotlin for Android, Swift for iOS, or Dart with the Flutter framework. Work. These languages are all statically typed, but they go about it in a more modern concise way with features like type inference that minimize boilerplate code. Next up, we have Go, which is a high performance language developed at Google to build low level systems. It was designed as a replacement for c, and Ken Thompson, one of the original creators of c, helped design it. The syntax is nice and concise, making it approachable to beginners, and it has a garbage collector, which means unlike to developers don't need to worry about manual memory management. Okay. So at this point, we've reached the level of the iceberg where most people are afraid to go any deeper. Things are gonna get weird. What happens is that many developers get jaded with these big heavy object oriented languages and go searching for a better way. At this level we have functional languages, the most famous of which is Haskell. Instead of classes, inheritance, and all kinds of crazy design patterns. The only abstraction you really need is the function. It was inspired by the Miranda language and is named after the mathematician Haskell Curry. Most importantly, Variables are immutable and functions have no side effects. Surprisingly, you can build almost anything with these limitations, although most production code out there is not functional. Null. Most of us run into problems when trying to figure out what a monad is, which in layman's terms is just a monoid in the category of enfunctors. Haskell is great, but Microsoft developed a functional sister language to c sharp called f sharp. Unlike Haskell, which is purely functional, f sharp is also imperative and object oriented, making it more approachable to developers coming from higher up in the iceberg. Now, if you hate Java, a good alternative is Scala. Like f sharp, it supports both object oriented and functional programming, but it runs on the JVM. It's statically typed, but there's another JVM language called Clojure that is both functional and dynamic. This makes it more well suited for getting things done quickly with the trade off of type safety. Other popular functional languages include OCaml, which is used extensively at Facebook and Elixir, which has a very nice Ruby like syntax and is capable of building high performance real time web apps. There's also Elm, which is a purely to a language that compiles to JavaScript, which can build front end UIs with 0 runtime errors. But now it's time to go one level deeper to the part of the iceberg. These languages are absolute chads. They're low level systems languages that can manually manage and optimize memory and and are used to build things like operating system kernels and compilers that make all the other soy based languages possible. The most legendary of which is c. It was used to build the Windows, Mac, and Linux operating system kernels, and its curly brace syntax inspired many other languages on this list. Surprisingly, it's not all that hard to learn and has a relatively small set of keywords to memorize. However, being able to use it effectively requires extensive knowledge of algorithms and computer architecture. For example, C doesn't have hash maps or dictionaries, so you'll have to learn how to code up that data structure on your own. C was the perfect programming language when it came out in 1960 benign, but it only supported procedural programming and eventually developers wanted more. C plus plus was originally a superset of c, designed to extend it with object oriented cramming patterns, like classes and inheritance. Unlike c, it's extremely hard to learn and provides many opportunities to not only shoot yourself in the foot, but blow your entire leg off. This is a reference friends to manual memory management with pointers, which got that name because they're just as dangerous as pointing a gun at someone. Despite its learning curve, it's an extremely prolific language used to build highly optimized software like game engines, compilers and so on. D and c plus plus are still extremely relevant today, but the modern Chad tends to prefer Rust for low level programming. It doesn't have a garbage collector, but unlike c and c plus plus it It uses a technique called borrow checking instead of pointers for memory management. This makes it much easier to write memory safe programs and consistently ranks as the most loved language in the world. The languages on this tier are extremely popular, but now we descend further into the modern languages that you probably haven't heard of. First up, we have v, which is a high performance systems language that feels very similar to Go, but unlike Go, it doesn't use a a garbage collector, and unlike Rust, it doesn't do borrow checking, but it can still create memory safe applications with its own auto free innovation where the compiler basically cleans everything up. I with no idea how it works, but it looks cool. Another modern replacement for c is Zig. It's designed to simplify low level programming by eliminating features like macros and meta programming, and is very explicit when it comes to memory management, and it can cross compile c and c plus plus just like Clang. Zig is not to be confused with Nim, another high performance language that's very expressive like Python, but is statically typed, and interestingly, it has a tunable garbage collector that can be turned off altogether to enable manual memory management. Recently, Google announced Carbon designed to be a successor to C plus plus What makes it special is that it can fully interop with a legacy C plus plus codebase. Another low level specialty which is Solidity. It's a statically typed object oriented language, but is designed for implementing smart contracts, especially on the Ethereum blockchain. And then we've got hack from Facebook, which is designed to interop with PHP. The original website was built with PHP, but they needed a language with better performance and a type system to scale it up to the monstrosity that it is today. There are many other good modern languages at this point in the iceberg, like Crystal, Hax, and Pharo just to name a few. But now it's time to go down to the next level where we look at languages that are still either widely used or historically important, but not something you would likely choose to program in. Fortran was the first high level programming language and was by far the most popular language for many years until c came around. Not not long after Fortran Lisp was invented in 1958. It pioneered many ideas we take for granted in computer science today, like dynamic typing, higher for functions, recursion and repel. It inspired many other languages like Racket, Scheme, Clojure, and to a certain extent JavaScript. Another highly influential language that came out this year was algorithmic language. It's a big complex language and never got as popular as Fortran, but its type system and use of expressions had a major on the development of c and c plus plus The following year in 1959, COBOL was born. If you wanna make money in the 20 twenties, learn COBOL, because over 40% of Thinking systems still use it with over 200,000,000,000 lines of code in production today. In 62, APL first appeared, which stands for for a programming language. It implements linear algebra directly into the language with a multi dimensional array or matrix being the central data type. This leads to extremely terse code that resembles mathematical notation and makes heavy use of the Greek alphabet. In 1970, Pascal was invented and took the programming world by storm. It's a procedural language with a familiar syntax and also had very fast compile times. It eventually became the most popular language in the early 19 eighties before the rise of c a few years later. There are many other important languages from this time period, like Simula, the first object oriented language, that went on to inspire small talk, which itself inspired many other object oriented languages like Python, Java, and Ruby. Then there's Erlang, a concurrent functional programming language that basically powered the entire telecom industry and is still in use today. There's Ada, a general purpose language named after Ada Lovelace, who's generally considered the world's 1st computer programmer. It was extremely popular in the 19 eighties and is still used today by the Department of Defense to blow people up. In addition, we should mention Prolog, the language that pioneered logic programming, and Metalanguage, which pioneered the polymorphic type system used by other statically typed functional which is like Haskell. There are many other historical languages we could talk about, but now it's time to descend into the realm of the esoteric, where we find rare and bizarre languages that feel more like works of art than engineering tools. The first known esoteric language came out in 1972 and was called intercal, which stands for compiler language with with no pronounceable acronym. It was designed as a parody to make fun of the languages of the day like Algol and Fortran. It has an entire paradoxical with a reference manual that makes no sense and has an interesting choice of keywords like please and mingle. Please doesn't actually do anything, but it makes you a more polite programmer. Next up, we have brain Brainfucker is most well known for being extremely minimal. Urban Mueller created brainfucker in college, and it works by initializing an array, then gives to a pointer and 8 different characters to manipulate memory in that array. This results in a code base that will your brain up. It inspired another language called male Bulge, or maybe it's Mount Bulgea, which is named after the 8th circle of hell in the Divine Comedy, or Dante's Inferno. If you thought brain was difficult, this language takes things to a whole another level. It makes programming so difficult that I can't even summarize how it works in a single sentence. If that's a little too dark, a far more fun language is Chef, which is stack based and is designed to make your code to look like a cooking recipe. Instead of concise keywords, it uses sentences like put ingredient into mixing bowl to push a value onto the stack. Put these commands together to create a hello world to play, then specify how many it serves to write it to the standard output. That's pretty cool, but it may seem kind of silly to an intellectual. The Shakespeare programming which will make your code look like a Shakespearean play. It provides the low level control of assembly with the verbosity of 16th century poetry. But if words aren't really your thing, then a good language choice would be Piet, which is named after Piet Mondrian. It's also stack based, but you write code utilizing patterns of 20 different colors on a bitmap image. The end result is a code base that looks like abstract art. Now, if you're a crazy cat lady, you're really going to love this next language, LOL code, which provides a developer experience similar to an LOL cat meme. You open a program by saying hi, then end it by saying k thanks bye. Loops can be performed with from in your or broken out of with I'm out of your. That's nice and easy to understand, but it would be even better if it included emojis. Emoji code is a language where the syntax is entirely based on emojis. Modern developers like to use so many emojis in their documentation that this language would just streamline the entire process. It's a fully featured object oriented language where you can define code blocks with grapes and watermelons, classes with rabbits, and generics with shells and eggplants. To another language that's not necessarily esoteric is C-. It's designed as a portable assembly language that borrows heavily from C, but omits many of its features. The ultimate dialect of c though is holy c, which was created by Terry a Davis and used to build TempleOS, an operating system written under the direction of God. Holy c is actually really cool because it works like c, but it's just in time compiled on the operating system, which means you can use a scripting language that can interact directly with the operating system kernel. And that brings us to the final tier, the absolute lowest level you can go with your learning as a software engineer. Assembly is a language of which there are many variations that correspond directly to the architecture on the CPU. You. Different CPU architectures like x86 and ARM require different machine code instructions. Assembly allows you to represent this code with simple commands that manipulate values on the CPU's registers. Now, if that looks too easy, the next level down is machine code. At this point, we're looking at ones 0s or raw binary, usually represented in hexadecimal format. To code at this level, you'll need to have intimate knowledge of the computer's architecture and also be able to count in an area. But if we go beyond machine code, now we're looking at billions of transistors on a CPU. A single transistor represents 1 bit, like a 1 or a 0, by controlling the amount of electricity that flows through a piece of silicon. Now in order to do anything useful, the transistors need to be organized into logic gates like not, and, or, exclusive or, and so on. Ultimately, it's these very simple chunks of logic that perform the miracle of taking in some electricity as an input that can produce some other electricity as an output, and do it billions of times per second all over the world so you can play video games with your friend in Vietnam. If that was too easy, then you may want to look into the field of quantum electrodynamics to fully understand how these particles behave in the electromagnetic quantum vacuum. You can then use your skills to build a next gen blazingly fast quantum computer, and become the richest person in history. At this point in the iceberg, there's only one place left to go. The scariest place of all yourself. Once you know everything, the question becomes, what is knowledge? Epistemology is the theory of knowledge, and Philosophers still don't have a good answer to this day. Reality only exists within my own mind. For all I know, the entire external world and all the knowledge I've acquired are just illusions and projections chins from my own ego. Maybe there's a godlike being that controls all the sensations and knowledge received by my mind, or perhaps my real body isn't a vat of goo, and I'm already living in Herzberg's metaverse, or maybe I never came out of that Ayahuasca trip I took 10 years ago. The only thing I really know is that I know nothing. Thanks for watching, and I will see you in the next one.
The benefits of learning programming languages are discussed, including the ability to build a roadmap for a job and create a passion for a language. Different types of programming languages are used, including SQL, SQL, and TypeScript, and they offer various uses, including low-level systems and fast, efficient programs. Different classes and their history are also discussed, including Erlang, Prolog, and LOL code, as well as popular writing classes like Fortran, CO-cell, and APL. The transcript provides examples of language classes that have been popular and their history, and encourages viewers to learn and use them.