God-Tier Developer Roadmap

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments

în sfârșit văd Fireship menționat pe grupul acesta.. chiar era trist să nu fi știut nimeni de el. 🥲

👍︎︎ 23 👤︎︎ u/GroundbreakingLeg833 📅︎︎ Sep 25 2022 🗫︎ replies

un post educativ si despre programare? ce a ti patit fratilor? unde e dascalu si pfa vs srl?

👍︎︎ 14 👤︎︎ u/n0thing17 📅︎︎ Sep 25 2022 🗫︎ replies

E mișto. Îl văzusem și eu cu ceva timp în urmă dar mă gândeam că nu e genul de content la care ar da click cei de pe aici.

👍︎︎ 9 👤︎︎ u/vasile666 📅︎︎ Sep 25 2022 🗫︎ replies

HolyC cel mai smecher

👍︎︎ 2 👤︎︎ u/Arogantu 📅︎︎ Sep 26 2022 🗫︎ replies
Captions
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 weird and everything in between if you make it to the end you'll have a roadmap 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 and 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 beginner's 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 provides a bunch of basic commands like print go to and four 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 semicolons and stuff like that and instead uses indentation to represent different blocks of code the other popular high-level language is javascript syntactically it's pretty ugly but it's a requirement if you want to 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 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 engineer without going any further down the iceberg but you don't want to 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 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 squeal this turn 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 90s 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 framework if you work in data science you'll come across r which is used for statistics and data vis or julia a more modern option 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 ides like intellij will pretty much make the code write itself java is legendary but it was followed 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.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 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 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 c 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 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 n-functors 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 and 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 functional language that compiles to javascript which can build front-end uis with zero runtime errors but now it's time to go one level deeper to the heart of the iceberg these languages are absolute chats they're low-level systems languages that can manually manage and optimize memory 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 1969 but it only supported procedural programming and eventually developers wanted more c plus was originally a super set of c designed to extend it with object-oriented programming 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 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 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 cnc plus plus 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 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 have no idea how it works but it looks cool another modern replacement 4c 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 cnc 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 code base another low-level specialty language is solidity it's a statically typed object-oriented language but is designed for implementing smart contracts especially on the ethereum blockchain 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 hacks and pharaoh 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 intel c came around 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 order functions recursion and repel it inspired many other languages like racket scheme closure 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 influence on the development of c and c plus plus the following year in 1959 cobalt was born if you want to make money in the 2020s learn cobol because over 40 percent of banking systems still use it with over 200 billion lines of code in production today in 62 apl first appeared which stands 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 1980s 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 first computer programmer it was extremely popular in the 1980s and is still used today by the department of defense to blow people up in addition we should mention prologue the language that pioneered logic programming and meta language which pioneered the polymorphic type system used by other statically type functional languages 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 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 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 brain is most well known for being extremely minimal urban mueller created breakback in college and it works by initializing an array then gives you a pointer and eight 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 malbulgia which is named after the eighth circle of hell in the divine comedy or dante's inferno if you thought brain was difficult this language takes things to a whole nother 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 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 souffle 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 language 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 piap 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 llcap meme you open a program by saying hi then end it by saying k thanks bye loops can be performed with i'm in your or broken out of with i'm out of year 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 another language that's not necessarily esoteric is c minus minus it's designed as a portable assembly language that borrows heavily from sea but omits many of its features the ultimate dialect of c though is holy see which was created by terry a davis used to build temple os 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 it like 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 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 and zeros 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 binary but if we go beyond machine code now we're looking at billions of transistors on a cpu a single transistor represents one bit like a one or zero 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 ore and so on ultimately it's these very simple chunks of logic that perform the miracle of taking 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 you 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 from my own ego maybe there's a god-like 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 zuckerberg'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
Info
Channel: Fireship
Views: 2,382,347
Rating: undefined out of 5
Keywords: webdev, app development, lesson, tutorial
Id: pEfrdAtAmqk
Channel Id: undefined
Length: 16min 42sec (1002 seconds)
Published: Wed Aug 24 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.