God-Tier Developer Roadmap

Fireship
24 Aug 202216:42

Summary

TLDRThis video script explores the vast landscape of programming languages, from beginner-friendly options like Scratch and Python to specialized and esoteric languages. It delves into the complexities of software engineering, highlighting the journey from junior developer to mastering various languages like Java, JavaScript, and even assembly. The script humorously touches on the overwhelming nature of the field, suggesting that learning one language may lead to a never-ending quest to understand them all, while also pondering deeper philosophical questions about knowledge and reality.

Takeaways

  • 🌐 The video discusses a variety of programming languages, not focusing on the most lucrative, but rather on their unique characteristics and use cases.
  • 📚 Scratch is highlighted as an accessible starting point for complete beginners, utilizing a block-based system to simplify the programming process.
  • 🔢 The script mentions BASIC and FORTRAN as early languages designed to be beginner-friendly and their historical significance in making programming accessible.
  • 🐍 Python is noted for its minimal syntax and widespread use, especially as a starting point for many programmers today.
  • 🌐 JavaScript's necessity in web development is underscored, despite its syntactic quirks, due to its ubiquity in application development.
  • 🛠️ The video touches on specialized languages like Bash and PowerShell for scripting and automation, emphasizing their role in terminal efficiency.
  • 📘 HTML and CSS are recognized for their role in structuring and styling web content, with a humorous nod to their Turing completeness.
  • 🔑 SQL is identified as the go-to language for database interactions, despite not being used for traditional programming.
  • 🔄 The script discusses dynamic languages like PHP, Lua, Ruby, and their importance in specific domains such as web apps and game engines.
  • 📐 Java and C# are presented as examples of statically typed languages that have shaped a significant portion of the software industry with their structure and scalability.
  • 📱 For mobile app development, Kotlin, Swift, and Dart are mentioned as modern, statically-typed languages that are concise and feature-rich.

Q & A

  • What is the main focus of the video script discussing programming languages?

    -The main focus of the video script is to explore various programming languages across different categories, from beginner-friendly to complex and specialized, rather than suggesting the top language for making money.

  • Why is Scratch considered a good starting point for absolute beginners in programming?

    -Scratch is considered a good starting point for beginners because it allows users to drag and drop code blocks like Lego bricks, making the thinking process behind programming more accessible without the need to type out code.

  • What was the significance of BASIC in the history of programming languages?

    -BASIC (Beginner's All-purpose Symbolic Instruction Code) was significant because it provided a simple set of commands and was included in most personal computers, making it the go-to option for people learning to code for many years.

  • Why is Python often the first high-level language that people start learning today?

    -Python is often the first high-level language that people start learning today due to its minimal syntax that doesn't require curly braces or semicolons, and uses indentation to represent different blocks of code, making it beginner-friendly.

  • What is the role of JavaScript in web development?

    -JavaScript is essential for web development as it is required for creating interactive web applications. It is syntactically not as clean as some other languages but is a necessity for any developer working in web development.

  • What are some of the scripting languages that are useful for terminal-based tasks?

    -Scripting languages like Bash and PowerShell are useful for terminal-based tasks as they allow for programmatic interaction with the computer, enabling the automation of repetitive tasks instead of typing the same commands over and over.

  • What is the importance of SQL in the context of software development?

    -SQL (Structured Query Language) is important in software development as it is used for working with databases. It is not used for traditional programming but is essential for reading and writing data in a relational database.

  • Why might a developer choose to learn a language like PHP, Lua, or Ruby?

    -A developer might choose to learn languages like PHP, Lua, or Ruby because they are dynamic languages that are well-suited for certain projects. PHP is popular for server-side web apps, Lua is known for its speed and use in game engines, and Ruby is an easy-to-learn, object-oriented language used with the Rails framework for web apps.

  • What is the significance of Java in the history of programming languages?

    -Java is significant because it revolutionized programming with the Java Virtual Machine (JVM), allowing bytecode compiled from Java code to run on any computer architecture that supports the JVM, making it a versatile choice for developers.

  • What are some of the modern, low-level programming languages mentioned in the script?

    -Some of the modern, low-level programming languages mentioned in the script include Rust, which is preferred for its memory safety features, Go for its high performance and simplicity, and V, which is similar to Go but without a garbage collector and with its own auto-free innovation.

Outlines

00:00

🌐 Introduction to the Diverse World of Programming Languages

The script begins by setting the stage for an exploration of programming languages beyond the typical 'get rich quick' advice. It emphasizes the vast and varied landscape of software engineering, highlighting languages that are loved and loathed, and everything in between. The goal is to provide a roadmap for potential junior developers in 2023, while acknowledging the overwhelming nature of the field. The journey starts with beginner-friendly languages like Scratch and BASIC, moves through popular high-level languages such as Python and JavaScript, and then delves into more specialized and powerful languages, including PHP, Lua, Ruby, and SQL. The summary underscores the complexity and depth of the programming iceberg, suggesting that mastery of any single language is just the beginning of a much larger learning process.

05:01

🔧 Navigating the Intermediate and Specialized Programming Languages

This paragraph delves into the intermediate tier of programming languages, focusing on those that are popular but more specialized. It discusses the importance of scripting languages like Bash and PowerShell for terminal-based productivity, as well as HTML and CSS for web development. The paragraph also touches on the necessity of learning SQL for database interactions. It then transitions to the dynamic languages that are fit for various projects, such as PHP, Lua, Ruby, R, Julia, and the significance of static type systems in languages like Java, C#, TypeScript, Kotlin, Swift, Dart, and Go. The summary captures the transition from general-purpose languages to those that serve specific needs in software development, emphasizing the need for a deeper understanding as one progresses in their career.

10:03

🛠️ The Low-Level and Systems Programming Languages

The script takes a deep dive into the world of low-level and systems programming languages, which are essential for building operating systems, kernels, and compilers. It starts with the legendary C language, known for its influence on many other languages and its role in system development. The paragraph then moves on to discuss C++, a language that extends C with object-oriented features but is notorious for its complexity. It also mentions Rust, a modern alternative to C and C++, praised for its safety features and ease of use. The summary includes other languages like V, Zig, Nim, and Carbon, which are designed to improve upon the foundations laid by C and C++, each with its unique approach to memory management and system-level programming.

15:04

📚 Historical and Esoteric Programming Languages

This paragraph explores the historical significance of programming languages like FORTRAN, COBOL, Lisp, ALGOL, and their impact on the development of modern languages. It also touches on less conventional 'esoteric' languages designed more as art pieces or parodies, such as INTERCAL, BRAINF***, Chef, Shakespeare, Piet, LOLCODE, and Emojicode. The summary highlights the evolution of programming languages from their inception to the present day, acknowledging the contributions of older languages to the field and the playful creativity found in esoteric languages, which challenge traditional notions of coding.

🧠 The Philosophical Depths of Knowledge and Programming

In the final paragraph, the script takes a philosophical turn, pondering the nature of knowledge and reality in the context of software engineering. It questions the certainty of what is known about programming and the external world, touching on concepts like epistemology and the possibility of illusions or external control over one's mind. The summary encapsulates this existential reflection, suggesting that beyond the technical mastery of programming lies a deeper inquiry into the nature of understanding and existence itself.

Mindmap

Keywords

💡Programming Languages

Programming languages are formal languages designed to communicate instructions to a computer. They are essential tools in software engineering and vary greatly in their purpose, syntax, and application. In the script, a wide range of programming languages is discussed, from beginner-friendly to highly specialized, illustrating the vast landscape one must navigate to become a well-rounded developer.

💡Scratch

Scratch is a visual programming language developed at MIT, designed to make programming accessible to beginners by using a drag-and-drop interface to create programs. It's mentioned in the script as an excellent starting point for those with no prior programming knowledge, emphasizing its role in making the foundational concepts of programming more tangible.

💡Python

Python is a high-level, interpreted programming language known for its readability and minimal syntax. It is highlighted in the script as a popular choice for beginners due to its simplicity and the extensive support it receives from the developer community, making it a gateway to a wide range of programming applications.

💡JavaScript

JavaScript is a high-level, dynamic, and untyped language that is essential for web development. The script notes its syntactic peculiarities but underscores its ubiquity, suggesting that almost every developer will encounter it in their career due to its necessity in creating interactive web applications.

💡Static Typing

Static typing refers to a programming language feature where variable types are explicitly declared and checked at compile-time. The script discusses the transition from dynamic to static typing as developers move towards more complex software projects, highlighting languages like Java and C# that use static typing to enforce a more rigid and maintainable code structure.

💡Functional Programming

Functional programming is a paradigm where computation is treated as the evaluation of mathematical functions without changing state or data. The script introduces functional languages like Haskell, which emphasizes immutability and pure functions, as an alternative to object-oriented programming, offering a different approach to building software.

💡Assembly Language

Assembly language is a low-level programming language that is specific to a particular computer architecture. It is used to write programs in a form that is closely related to machine code and is mentioned in the script as the lowest level of programming before reaching the hardware itself, illustrating the deep end of the programming iceberg.

💡Esoteric Programming Languages

Esoteric programming languages are languages designed as a joke, for experimental purposes, or as art rather than practical use. The script humorously describes several esoteric languages, such as Chef and Shakespeare, which are characterized by their unconventional syntax and the playful or artistic intent behind their creation.

💡TypeScript

TypeScript is a statically typed superset of JavaScript that adds optional types to the language. The script mentions TypeScript as a way to enhance JavaScript with a type system, making it more suitable for large-scale applications and improving code maintainability and development efficiency.

💡Rust

Rust is a systems programming language that is designed to be memory-safe without the need for a garbage collector. The script highlights Rust as a modern alternative to C and C++, emphasizing its ability to provide safety and performance, which are critical for low-level programming and systems development.

💡Machine Code

Machine code is the lowest-level programming language, consisting of binary numbers that are directly executed by a computer's CPU. The script touches on machine code as the fundamental building block of software, representing the raw binary instructions that dictate the operation of computer hardware.

Highlights

The video explores programming languages beyond the popular ones, focusing on their place in the software engineering field.

Scratch is introduced as an accessible starting point for beginners with its block-based coding approach.

The historical significance of BASIC as a beginner-friendly language is discussed, highlighting its widespread availability in personal computers.

Python's popularity is attributed to its minimal syntax and indentation-based code blocks, making it a go-to for many developers.

JavaScript's necessity in web development, despite its syntactic quirks, is emphasized.

Bash and PowerShell are highlighted as scripting languages that allow for programmatic interaction with the computer.

HTML and CSS are recognized as non-traditional programming languages that define website structure and style.

SQL is identified as the common language for database manipulation, despite not being used for regular programming.

The video discusses the dynamic type system of languages like PHP, Lua, Ruby, R, and Julia, and their specific use cases.

Java's impact with the Java Virtual Machine and its syntactic challenges for beginners are covered.

C# is presented as a similar yet more user-friendly alternative to Java, with applications in Unity and .NET Framework.

TypeScript extends JavaScript with a type system, improving manageability in large projects.

Kotlin, Swift, and Dart are mentioned as modern, statically-typed languages for mobile app development.

Go is introduced as a high-performance language designed for low-level systems, with a simple syntax for beginners.

Functional programming languages like Haskell are explored, emphasizing immutability and lack of side effects.

F# and Scala are highlighted as functional languages that also support object-oriented and imperative programming.

C and C++ are recognized for their influence and use in building operating systems and highly optimized software.

Rust is introduced as a modern alternative to C and C++, with memory safety features and no garbage collector.

Esoteric languages like INTERCAL, Brainfuck, and LOLCODE are presented for their artistic and unconventional approaches to programming.

Assembly language and machine code are discussed as the lowest levels of programming, tied directly to CPU architecture.

The philosophical question of knowledge and reality is raised, suggesting the limits of human understanding even in the field of software engineering.

Transcripts

play00:00

you've likely seen videos on youtube

play00:01

telling you the number one programming

play00:03

language to learn right now if you want

play00:04

to be rich that's not what we're doing

play00:06

today instead we're going to travel to

play00:08

the deepest darkest depths of the

play00:10

software engineering field to discover

play00:12

the programming languages that are loved

play00:13

hated beautiful ugly and compiled

play00:15

interpreted useful weird and everything

play00:17

in between if you make it to the end

play00:19

you'll have a roadmap for everything you

play00:21

need to know to land a job as a junior

play00:23

developer in 2023 or it might just make

play00:25

you extremely depressed because this

play00:27

iceberg is just the tip of the iceberg

play00:28

of what you actually need to learn

play00:30

choose any language and you'll find

play00:31

another iceberg within this iceberg that

play00:33

goes on forever like a mandelbrot set

play00:35

which ironically you can represent and

play00:37

code with any one of the languages we're

play00:38

about to look at before we get started

play00:40

there's quite a few programming icebergs

play00:42

out there but this one ranks languages

play00:44

based on where i think you might

play00:45

encounter them as a beginner learning

play00:47

how to code from scratch each level has

play00:49

its own theme so let's get right into it

play00:51

with languages that are designed to make

play00:52

programming as easy as possible if you

play00:55

know absolutely nothing about

play00:56

programming the best place to start in

play00:57

my opinion is scratch it was developed

play01:00

at mit like some other languages on this

play01:02

list but instead of typing out code you

play01:04

drag and drop these blocks together like

play01:05

lego bricks to represent things like

play01:07

variables control flow and operators it

play01:10

makes the thinking process behind

play01:11

programming much more accessible and you

play01:12

might be surprised at what you can

play01:14

actually build with it

play01:16

long before scratch though we had basic

play01:18

or beginner's all-purpose symbolic

play01:20

instruction code which came out of

play01:22

dartmouth in 1964. at the time fortran

play01:25

was all the rage but it wasn't beginner

play01:26

friendly basic provides a bunch of basic

play01:28

commands like print go to and four and

play01:31

was included in most personal computers

play01:33

which made it the go-to option for

play01:34

people learning to code for the next 50

play01:36

years now moving on to the next tier we

play01:38

have the extremely popular dynamic

play01:40

high-level languages the language most

play01:42

people start with today is python

play01:44

primarily because of its minimal syntax

play01:46

it doesn't require curly braces

play01:47

semicolons and stuff like that and

play01:49

instead uses indentation to represent

play01:51

different blocks of code the other

play01:53

popular high-level language is

play01:54

javascript syntactically it's pretty

play01:56

ugly but it's a requirement if you want

play01:58

to do web development and almost every

play02:00

developer will have to touch it at some

play02:01

point in their career any application

play02:03

that can be written in javascript will

play02:04

eventually be written in javascript now

play02:06

after learning one of these languages

play02:08

you'll be able to build pretty much

play02:09

anything you can imagine and you could

play02:10

have an entire career as a software

play02:12

engineer without going any further down

play02:13

the iceberg but you don't want to be on

play02:15

your deathbed wondering if you should

play02:16

have tried out php on this next tier we

play02:18

have languages that are extremely

play02:20

popular but a little more specialized

play02:22

programmers like to get things done from

play02:23

the terminal and there are scripting

play02:25

languages like bash and powershell that

play02:27

allow you to interact with your computer

play02:28

programmatically instead of typing out

play02:30

the same commands over and over again

play02:32

write a bash script to make it

play02:33

reproducible now if you get into web

play02:35

development you'll also need to learn

play02:36

html and css which when combined

play02:39

together arguably form a turing complete

play02:41

programming language they're not used

play02:42

for programming in the traditional sense

play02:44

but rather to define the structure and

play02:46

style of a website and if i were to say

play02:47

html is not a programming language i

play02:49

would be immediately canceled by the

play02:50

tech community in addition most apps

play02:52

need a database and the most common

play02:54

language for working with databases is

play02:56

structured query language you can call

play02:57

it sql sql or squeal this turn complete

play03:00

although not used for regular

play03:02

programming but rather to read and write

play03:04

data in a relational database now python

play03:06

is great and all but there are many

play03:07

other dynamic languages that might be a

play03:09

better fit for certain projects like php

play03:12

made it easy to build server-side web

play03:14

apps in the 90s and is still very

play03:15

popular today lua is easier and faster

play03:18

than python and is embedded into many

play03:20

engines like roblox and world of

play03:21

warcraft ruby is an easy to learn object

play03:24

oriented language also commonly used to

play03:25

build web apps with the rails framework

play03:27

if you work in data science you'll come

play03:28

across r which is used for statistics

play03:31

and data vis or julia a more modern

play03:33

option also used for scientific

play03:35

computing the one thing all these

play03:36

languages have in common is a dynamic

play03:38

type system however as you build more

play03:40

complex software you may realize that

play03:42

you need a more rigid framework and one

play03:44

way to accomplish that is with a static

play03:46

type system this tier makes up the bulk

play03:48

of production code out in the world

play03:49

first up we have java which kind of

play03:51

revolutionized programming with the java

play03:53

virtual machine it compiles to bytecode

play03:55

that runs on the jvm and that allows

play03:57

developers to target any computer

play03:59

architecture from a single codebase

play04:01

syntactically it's an absolute dumpster

play04:03

fire for beginners i made an entire

play04:04

video about why people hate java but

play04:06

having explicit types in your code can

play04:08

make it much easier to understand and

play04:10

refactor and modern ides like intellij

play04:13

will pretty much make the code write

play04:14

itself java is legendary but it was

play04:16

followed up by microsoft with c-sharp

play04:18

it's similar to java in many ways but

play04:20

gets a lot more love from its users it's

play04:22

used to build games with unity as well

play04:24

as web and desktop apps with the.net

play04:26

framework another well-loved tool from

play04:28

microsoft is typescript it takes

play04:30

javascript and adds a type system on top

play04:32

of it making it much easier to work with

play04:34

on large complex projects if you're

play04:36

building a mobile app today you'll

play04:37

likely be working with kotlin for

play04:39

android swift for ios or dart with the

play04:41

flutter framework these languages are

play04:43

all statically typed but they go about

play04:45

it in a more modern concise way with

play04:47

features like type inference that

play04:49

minimize boilerplate code next up we

play04:51

have go which is a high performance

play04:52

language developed at google to build

play04:54

low-level systems it was designed as a

play04:56

replacement for c and ken thompson one

play04:58

of the original creators of c helped

play05:00

design it the syntax is nice and concise

play05:02

making it approachable to beginners and

play05:04

it has a garbage collector which means

play05:06

unlike c developers don't need to worry

play05:08

about manual memory management okay so

play05:11

at this point we've reached the level of

play05:12

the iceberg where most people are afraid

play05:14

to go any deeper things are gonna get

play05:16

weird what happens is that many

play05:17

developers get jaded with these big

play05:19

heavy object-oriented languages and go

play05:21

searching for a better way at this level

play05:23

we have functional languages the most

play05:25

famous of which is haskell instead of

play05:27

classes inheritance and all kinds of

play05:29

crazy design patterns the only

play05:31

abstraction you really need is the

play05:32

function it was inspired by the miranda

play05:34

language and is named after the

play05:36

mathematician haskell curry most

play05:38

importantly variables are immutable and

play05:40

functions have no side effects

play05:42

surprisingly you can build almost

play05:43

anything with these limitations although

play05:45

most production code out there is not

play05:46

functional most of us run into problems

play05:48

when trying to figure out what a monad

play05:50

is which in layman's terms is just a

play05:51

monoid in the category of n-functors

play05:54

haskell is great but microsoft developed

play05:56

a functional sister language to c-sharp

play05:58

called f-sharp unlike haskell which is

play06:00

purely functional f-sharp is also

play06:02

imperative and object-oriented making it

play06:04

more approachable to developers coming

play06:06

from higher up in the iceberg now if you

play06:08

hate java a good alternative is scala

play06:10

like f-sharp it supports both

play06:11

object-oriented and functional

play06:13

programming but it runs on the jvm it's

play06:15

statically typed but there's another jvm

play06:17

language called clojure that is both

play06:19

functional and dynamic and this makes it

play06:21

more well suited for getting things done

play06:23

quickly with the trade-off of type

play06:24

safety other popular functional

play06:26

languages include ocaml which is used

play06:28

extensively at facebook and elixir which

play06:30

has a very nice ruby-like syntax and is

play06:33

capable of building high-performance

play06:35

real-time web apps there's also elm

play06:37

which is a purely functional language

play06:38

that compiles to javascript which can

play06:40

build front-end uis with zero runtime

play06:43

errors but now it's time to go one level

play06:44

deeper to the heart of the iceberg these

play06:46

languages are absolute chats they're

play06:48

low-level systems languages that can

play06:50

manually manage and optimize memory and

play06:53

are used to build things like operating

play06:54

system kernels and compilers that make

play06:56

all the other soy-based languages

play06:58

possible the most legendary of which is

play07:00

c it was used to build the windows mac

play07:02

and linux operating system kernels and

play07:04

its curly brace syntax inspired many

play07:06

other languages on this list

play07:07

surprisingly it's not all that hard to

play07:09

learn and has a relatively small set of

play07:10

keywords to memorize however being able

play07:12

to use it effectively requires extensive

play07:14

knowledge of algorithms and computer

play07:16

architecture for example c doesn't have

play07:18

hash maps or dictionaries so you'll have

play07:20

to learn how to code up that data

play07:21

structure on your own c was the perfect

play07:23

programming language when it came out in

play07:25

1969 but it only supported procedural

play07:27

programming and eventually developers

play07:29

wanted more c plus was originally a

play07:31

super set of c designed to extend it

play07:33

with object-oriented programming

play07:35

patterns like classes and inheritance

play07:37

unlike c it's extremely hard to learn

play07:39

and provides many opportunities to not

play07:40

only shoot yourself in the foot but blow

play07:42

your entire leg off this is a reference

play07:44

to manual memory management with

play07:46

pointers which got that name because

play07:48

they're just as dangerous as pointing a

play07:49

gun at someone despite its learning

play07:51

curve it's an extremely prolific

play07:52

language used to build highly optimized

play07:54

software like game engines compilers and

play07:57

so on d and c plus are still extremely

play07:59

relevant today but the modern chad tends

play08:01

to prefer rust for low level programming

play08:03

it doesn't have a garbage collector but

play08:05

unlike cnc plus plus it uses a technique

play08:08

called borrow checking instead of

play08:10

pointers for memory management this

play08:12

makes it much easier to write memory

play08:13

safe programs and consistently ranks as

play08:15

the most loved language in the world the

play08:17

languages on this tier are extremely

play08:19

popular but now we descend further into

play08:21

the modern languages that you probably

play08:23

haven't heard of first up we have v

play08:25

which is a high performance systems

play08:27

language that feels very similar to go

play08:29

but unlike go it doesn't use a garbage

play08:31

collector and unlike rust it doesn't do

play08:33

borrow checking but it can still create

play08:35

memory safe applications with its own

play08:37

auto free innovation where the compiler

play08:39

basically cleans everything up i have no

play08:41

idea how it works but it looks cool

play08:43

another modern replacement 4c is zig

play08:45

it's designed to simplify low level

play08:47

programming by eliminating features like

play08:49

macros and meta programming and is very

play08:51

explicit when it comes to memory

play08:53

management and it can cross compile cnc

play08:55

plus plus just like clang zig is not to

play08:57

be confused with nim another high

play08:59

performance language that's very

play09:00

expressive like python but is statically

play09:02

typed and interestingly it has a tunable

play09:04

garbage collector that can be turned off

play09:06

altogether to enable manual memory

play09:08

management recently google announced

play09:10

carbon designed to be a successor to c

play09:12

plus plus what makes it special is that

play09:14

it can fully interop with a legacy c

play09:16

plus code base another low-level

play09:18

specialty language is solidity it's a

play09:20

statically typed object-oriented

play09:21

language but is designed for

play09:23

implementing smart contracts especially

play09:25

on the ethereum blockchain then we've

play09:26

got hack from facebook which is designed

play09:28

to interop with php the original website

play09:31

was built with php but they needed a

play09:32

language with better performance and a

play09:34

type system to scale it up to the

play09:36

monstrosity that it is today there are

play09:38

many other good modern languages at this

play09:40

point in the iceberg like crystal hacks

play09:42

and pharaoh just to name a few but now

play09:44

it's time to go down to the next level

play09:45

where we look at languages that are

play09:47

still either widely used or historically

play09:49

important but not something you would

play09:50

likely choose to program in fortran was

play09:52

the first high-level programming

play09:54

language and was by far the most popular

play09:55

language for many years intel c came

play09:58

around not long after fortran lisp was

play10:00

invented in 1958 it pioneered many ideas

play10:03

we take for granted in computer science

play10:04

today like dynamic typing higher order

play10:07

functions recursion and repel it

play10:09

inspired many other languages like

play10:11

racket scheme closure and to a certain

play10:13

extent javascript another highly

play10:15

influential language that came out this

play10:16

year was algorithmic language it's a big

play10:19

complex language and never got as

play10:20

popular as fortran but its type system

play10:23

and use of expressions had a major

play10:24

influence on the development of c and c

play10:26

plus plus the following year in 1959

play10:29

cobalt was born if you want to make

play10:31

money in the 2020s learn cobol because

play10:33

over 40 percent of banking systems still

play10:35

use it with over 200 billion lines of

play10:37

code in production today in 62 apl first

play10:40

appeared which stands for a programming

play10:42

language it implements linear algebra

play10:44

directly into the language with a

play10:45

multi-dimensional array or matrix being

play10:47

the central data type this leads to

play10:49

extremely terse code that resembles

play10:51

mathematical notation and makes heavy

play10:53

use of the greek alphabet in 1970 pascal

play10:55

was invented and took the programming

play10:57

world by storm it's a procedural

play10:59

language with a familiar syntax and also

play11:01

had very fast compile times it

play11:03

eventually became the most popular

play11:04

language in the early 1980s before the

play11:06

rise of c a few years later there are

play11:08

many other important languages from this

play11:10

time period like simula the first

play11:12

object-oriented language that went on to

play11:13

inspire small talk which itself inspired

play11:16

many other object-oriented languages

play11:18

like python java and ruby then there's

play11:20

erlang a concurrent functional

play11:22

programming language that basically

play11:23

powered the entire telecom industry and

play11:25

is still in use today there's ada a

play11:27

general purpose language named after ada

play11:29

lovelace who's generally considered the

play11:31

world's first computer programmer it was

play11:33

extremely popular in the 1980s and is

play11:35

still used today by the department of

play11:36

defense to blow people up in addition we

play11:38

should mention prologue the language

play11:40

that pioneered logic programming and

play11:41

meta language which pioneered the

play11:43

polymorphic type system used by other

play11:45

statically type functional languages

play11:47

like haskell there are many other

play11:48

historical languages we could talk about

play11:50

but now it's time to descend into the

play11:52

realm of the esoteric where we find rare

play11:54

and bizarre languages that feel more

play11:56

like works of art than engineering tools

play11:58

the first known esoteric language came

play11:59

out in 1972 and was called intercal

play12:02

which stands for compiler language with

play12:04

no pronounceable acronym it was designed

play12:06

as a parody to make fun of the languages

play12:07

of the day like algol and fortran it has

play12:10

an entire paradoxical reference manual

play12:12

that makes no sense and has an

play12:13

interesting choice of keywords like

play12:15

please and mingle please doesn't

play12:16

actually do anything but it makes you a

play12:18

more polite programmer next up we have

play12:20

brain brain is most well known for being

play12:22

extremely minimal urban mueller created

play12:24

breakback in college and it works by

play12:26

initializing an array then gives you a

play12:28

pointer and eight different characters

play12:29

to manipulate memory in that array this

play12:32

results in a code base that will

play12:33

your brain up it inspired another

play12:35

language called male bulge or maybe it's

play12:37

malbulgia which is named after the

play12:39

eighth circle of hell in the divine

play12:40

comedy or dante's inferno if you thought

play12:42

brain was difficult this language takes

play12:44

things to a whole nother level it makes

play12:46

programming so difficult that i can't

play12:48

even summarize how it works in a single

play12:49

sentence if that's a little too dark a

play12:51

far more fun language is chef which is

play12:53

stack based and is designed to make your

play12:55

code look like a cooking recipe instead

play12:57

of concise keywords it uses sentences

play12:59

like put ingredient into mixing bowl to

play13:01

push a value onto the stack put these

play13:03

commands together to create a hello

play13:05

world souffle then specify how many it

play13:07

serves to write it to the standard

play13:08

output that's pretty cool but it may

play13:10

seem kind of silly to an intellectual

play13:11

the shakespeare programming language

play13:13

will make your code look like a

play13:14

shakespearean play it provides the low

play13:16

level control of assembly with the

play13:18

verbosity of 16th century poetry but if

play13:20

words aren't really your thing then a

play13:22

good language choice would be piet which

play13:23

is named after piap mondrian it's also

play13:26

stack based but you write code utilizing

play13:28

patterns of 20 different colors on a

play13:30

bitmap image the end result is a code

play13:32

base that looks like abstract art now if

play13:34

you're a crazy cat lady you're really

play13:35

going to love this next language lol

play13:37

code which provides a developer

play13:38

experience similar to an llcap meme you

play13:41

open a program by saying hi then end it

play13:43

by saying k thanks bye loops can be

play13:45

performed with i'm in your or broken out

play13:47

of with i'm out of year that's nice and

play13:49

easy to understand but it would be even

play13:51

better if it included emojis emoji code

play13:53

is a language where the syntax is

play13:55

entirely based on emojis modern

play13:57

developers like to use so many emojis in

play13:58

their documentation that this language

play14:00

would just streamline the entire process

play14:02

it's a fully featured object-oriented

play14:04

language where you can define code

play14:05

blocks with grapes and watermelons

play14:07

classes with rabbits and generics with

play14:09

shells and eggplants another language

play14:11

that's not necessarily esoteric is c

play14:13

minus minus it's designed as a portable

play14:15

assembly language that borrows heavily

play14:17

from sea but omits many of its features

play14:19

the ultimate dialect of c though is holy

play14:22

see which was created by terry a davis

play14:24

used to build temple os an operating

play14:26

system written under the direction of

play14:28

god holy c is actually really cool

play14:29

because it works like c but it's just in

play14:31

time compiled on the operating system

play14:33

which means you can use it like a

play14:34

scripting language that can interact

play14:36

directly with the operating system

play14:37

kernel and that brings us to the final

play14:39

tier the absolute lowest level you can

play14:41

go with your learning as a software

play14:43

engineer assembly is a language of which

play14:45

there are many variations that

play14:46

correspond directly to the architecture

play14:49

on the cpu different cpu architectures

play14:51

like x86 and arm require different

play14:53

machine code instructions assembly

play14:55

allows you to represent this code with

play14:57

simple commands that manipulate values

play14:59

on the cpu's registers now if that looks

play15:01

too easy the next level down is machine

play15:03

code at this point we're looking at ones

play15:05

and zeros or raw binary usually

play15:07

represented in hexadecimal format to

play15:09

code at this level you'll need to have

play15:11

intimate knowledge of the computer's

play15:12

architecture and also be able to count

play15:15

in binary but if we go beyond machine

play15:16

code now we're looking at billions of

play15:18

transistors on a cpu a single transistor

play15:21

represents one bit like a one or zero by

play15:24

controlling the amount of electricity

play15:25

that flows through a piece of silicon

play15:27

now in order to do anything useful the

play15:29

transistors need to be organized into

play15:31

logic gates like not and or exclusive

play15:34

ore and so on ultimately it's these very

play15:37

simple chunks of logic that perform the

play15:38

miracle of taking some electricity as an

play15:41

input that can produce some other

play15:42

electricity as an output and do it

play15:44

billions of times per second all over

play15:45

the world so you can play video games

play15:47

with your friend in vietnam if that was

play15:48

too easy then you may want to look into

play15:50

the field of quantum electrodynamics you

play15:52

fully understand how these particles

play15:54

behave in the electromagnetic quantum

play15:56

vacuum you can then use your skills to

play15:58

build a next-gen blazingly fast quantum

play16:00

computer and become the richest person

play16:02

in history at this point in the iceberg

play16:04

there's only one place left to go the

play16:05

scariest place of all yourself once you

play16:08

know everything the question becomes

play16:10

what is knowledge epistemology is the

play16:12

theory of knowledge and philosophers

play16:14

still don't have a good answer to this

play16:15

day reality only exists within my own

play16:17

mind for all i know the entire external

play16:19

world and all the knowledge i've

play16:20

acquired are just illusions and

play16:22

projections from my own ego maybe

play16:24

there's a god-like being that controls

play16:26

all the sensations and knowledge

play16:27

received by my mind or perhaps my real

play16:29

body isn't a vat of goo and i'm already

play16:31

living in zuckerberg's metaverse or

play16:33

maybe i never came out of that ayahuasca

play16:34

trip i took 10 years ago the only thing

play16:36

i really know is that i know nothing

play16:38

thanks for watching and i will see you

play16:40

in the next one

Rate This

5.0 / 5 (0 votes)

Étiquettes Connexes
Programming LanguagesSoftware EngineeringBeginner's GuideCareer AdviceWeb DevelopmentDynamic LanguagesStatic TypingFunctional ProgrammingEsoteric LanguagesTechnical Learning
Besoin d'un résumé en anglais ?