Programming languages that everyone should learn | George Hotz and Lex Fridman

Поделиться
HTML-код
  • Опубликовано: 24 окт 2020
  • Lex Fridman Podcast full episode: • George Hotz: Hacking t...
    Please support this podcast by checking out our sponsors:
    - Four Sigmatic: foursigmatic.com/lex and use code LexPod to get up to 40% & free shipping
    - Decoding Digital: appdirect.com/decoding-digital
    - ExpressVPN: expressvpn.com/lexpod and use code LexPod to get 3 months free
    PODCAST INFO:
    Podcast website: lexfridman.com/podcast
    Apple Podcasts: apple.co/2lwqZIr
    Spotify: spoti.fi/2nEwCF8
    RSS: lexfridman.com/feed/podcast/
    Full episodes playlist: • Lex Fridman Podcast
    Clips playlist: • Lex Fridman Podcast Clips
    CONNECT:
    - Subscribe to this RUclips channel
    - Twitter: / lexfridman
    - LinkedIn: / lexfridman
    - Facebook: / lexfridmanpage
    - Instagram: / lexfridman
    - Medium: / lexfridman
    - Support on Patreon: / lexfridman
  • НаукаНаука

Комментарии • 1 тыс.

  • @arsnakehert
    @arsnakehert 3 года назад +2594

    "I'm not a great Haskell programmer, I wrote a compiler in Haskell once"
    Bruuh

    • @mohamadeen
      @mohamadeen 3 года назад +88

      I struggled in school to build a full compiler with java lol

    • @badhombre4942
      @badhombre4942 3 года назад +5

      Pfftttt....yeah....rookie.

    • @karthikshinde6739
      @karthikshinde6739 3 года назад +5

      @@mohamadeen omg..i am so backward

    • @mksybr
      @mksybr 3 года назад +44

      @@mohamadeen Thats actually an interesting "feature" of the Haskell paradigm, is that it's really geared towards "pure-data transformations" that are compilers. I'm not a Haskell user but I've used a parser combinator and a page of code gives you an AST-like structure, if you leverage the hosted environment you're close to done.

    • @joshuasolomon8971
      @joshuasolomon8971 3 года назад +13

      The flex

  • @timothy6966
    @timothy6966 Год назад +572

    “I’m not a great Haskell programmer. I wrote a compiler in Haskell once.”
    - George Hotz

    • @dzienisz
      @dzienisz 11 месяцев назад +1

      XD

    • @Massenko
      @Massenko 11 месяцев назад +12

      Yeah wtf

    • @long-live-linux
      @long-live-linux 11 месяцев назад +12

      As an English learner, I doubted my ears lol

    • @david88va
      @david88va 11 месяцев назад +4

      Yeah I'm so disappointed w myself lol

    • @greglane501
      @greglane501 11 месяцев назад +2

      Like who does that?

  • @omarnomad
    @omarnomad 3 года назад +891

    Languages mentioned:
    - Assembly (1949) [Imperative Programming]
    - C (1972) [Imperative Programming]
    - Python (1991) [Imperative Programming]
    - PyTorch (2016) [Differentiable Programming]
    - Haskell (1990) [Functional Programming]
    - Coq (1989) [Dependently Typed]
    - Verilog (1984) | VHDL (1980) [Hardware]

    • @omarnomad
      @omarnomad 2 года назад +7

      @@delete7316 I don't think so 🤣

    • @godfather7339
      @godfather7339 2 года назад +21

      No LISP?

    • @clerooth
      @clerooth 2 года назад +15

      @@geocam2 rust is not mentioned in george's list. the list is for learning different types of programming paradigms (george's most important paradigms). What paradigm do you learn in rust that is not mentioned in the list?

    • @kent2724
      @kent2724 2 года назад +20

      @@geocam2 parallel programming is available in a lot of programming languages and is closer to a concept rather than a paradigm. rust is imperative programming.

    • @geondaf
      @geondaf 2 года назад +1

      ​@@godfather7339 that's what I was thinking lisp declarative language , Emacs

  • @NytronX
    @NytronX 3 года назад +1676

    Plot twist: There was a nudist parade happening outside of Lex's window.

    • @frankcastillo2855
      @frankcastillo2855 3 года назад +114

      at 2:19-2:20, you can tell he saw some shit.

    • @blackraider777
      @blackraider777 3 года назад +41

      @@frankcastillo2855 he had nam flashback right there

    • @mennovanlavieren3885
      @mennovanlavieren3885 3 года назад +4

      @@blackraider777 😐He is Russian 🤭 😄 😅 😂 🤣 🤣 😆 🤧 🙄

    • @blackraider777
      @blackraider777 3 года назад +11

      @@mennovanlavieren3885 things Lex saw in that jungle can't be unseen....

    • @bassam.2023
      @bassam.2023 3 года назад +7

      Not at all. He simply doesn't respect his interviewee.

  • @hackerculture7391
    @hackerculture7391 3 года назад +367

    This dude knows the importance of fundamentals. Loving the programming binge you've been on lately.

  • @hnasr
    @hnasr 3 года назад +406

    Well said, understanding how things work makes you appreciate the tech more.

    • @younisamedi
      @younisamedi 3 года назад +7

      Another super RUclipsr watching this... nice!

    • @hargunbeersingh8918
      @hargunbeersingh8918 2 года назад +2

      @@randiaz95 you have existential crisis ig

    • @jrcenina85
      @jrcenina85 2 года назад +4

      @@randiaz95 I can think of an analog relating to the English language. I studied classical languages in college and those years of studying e.g. Latin has made me hyper aware of English word etymology/word-roots.
      I don’t read much literature these days because I write code for work, but I have a friend who teaches English at the college level who sometimes asks me if I know the meaning of obscure words and I can deduce their meaning with a high degree of accuracy because I “appreciate” where English words come from having studied an ancestor to this language.
      An appreciation of English via dead and ancient (perhaps useless) languages makes me able to outperform someone who teaches English to college students.
      I have a feeling that there might be grammatical errors in my response since I said all that hahaha.

    • @alexzander__6334
      @alexzander__6334 2 года назад +4

      sometimes you just need to get the job done because life is short and maybe you dont especially want to go on the rabbit hole.

    • @jrcenina85
      @jrcenina85 2 года назад +10

      @@alexzander__6334 i can tell you from personal experience, as someone who writes software for a living but studied dead languages (Latin etc) in college, that even a surface study of assembly language has helped me in a “practical” sense.
      Even one week of studying assembly made me view how a computer functions in a much clearer way. No rabbit holes necessary - merely a couple weeks and good source material.

  • @dustincadelina8941
    @dustincadelina8941 3 года назад +1152

    this is podcast is like joe rogan for nerds.

    • @wiskasIO
      @wiskasIO 2 года назад +19

      More controversial sometimes!🤓🤣

    • @Centori88
      @Centori88 2 года назад +1

      😂😂😂😂😂

    • @JS-bk4pn
      @JS-bk4pn 2 года назад +7

      Idk about nerds, I am just getting into programming and I find it really cool. Programmers are some of the highest paid people too.

    • @dlaminidlamini7844
      @dlaminidlamini7844 2 года назад +2

      geeks not nerds😂😂

    • @xjar215x
      @xjar215x 2 года назад

      @@JS-bk4pn shut it nerd

  • @pfschuyler
    @pfschuyler 3 года назад +276

    This channel is great, it's like those late night college brain sessions have been cut free of the University. Dorm not required.

    • @sanjj_1
      @sanjj_1 3 года назад +2

      such a great way to put it.....

  • @daveoatway6126
    @daveoatway6126 3 года назад +12

    Excellent advice. I started out in machine code for the RCA 1802, then graduated to assembler for 8080, and a bit of C. Now I understand what is going on behind the curtain in Python. Building an early machine in wirewrap gave insight into the read internals. I'm very happy with Anaconda and the help it gives - also happy to understand what it is doing. As usual great conversations with guests. You let them answer!

  • @aarongzmn
    @aarongzmn 2 года назад +463

    Note for anyone wanting to learn programming, it might not be a good idea to learn the languages in that order (though some people might enjoy it). Programming has many layers and concepts, and for a beginner it can be overwhelming. One of the nice things about starting with Python is that you can focus on just the programming aspect (instead of worrying about compiling and other more low level concepts). Then once you get comfortable with that, you can choose to go as deep as you want.
    I'm just speaking from experience. I spent years trying to learn C++ and it didn't click (I was pretty young at the time). Then later on I got to use Python and it clicked. I definitely see the benefits of learning assembly and C, but I don't think they are always great for a first introduction to programming.

    • @tsepten7930
      @tsepten7930 2 года назад +6

      i think java then going to c++ is best. Then finally python

    • @gondoravalon7540
      @gondoravalon7540 2 года назад +31

      I would argue that one thing which will absolutely help you no matter what language you learn is a good teacher - someone who can teach in a way that you will understand, can explain the concepts simply, visualize the concepts so it clicks (including practical examples). The quality of the teacher makes all the difference in the world, IMO.

    • @matsfrommusic
      @matsfrommusic 2 года назад

      +1

    • @ilikecommenting6849
      @ilikecommenting6849 2 года назад +4

      If you want to do something with AI, Java is pretty much useless. Java is a web language. If you actually want to build technology, as in actual programs, no need for Java.

    • @jeffereycountryman6771
      @jeffereycountryman6771 Год назад +1

      I agree with you

  • @bruterasta
    @bruterasta 3 года назад +354

    1:40 "I'm not a great haskell programmer, I wrote compiler in haskell once." Ow.

    • @glircom
      @glircom 3 года назад +27

      To be fair, parsing and compiler writing are some of the strong suits of Haskell. It makes things like tokenization and building ASTs relatively easy and intuitive, at least compared to C-like langauges

    • @Guztav1337
      @Guztav1337 3 года назад +23

      Everybody should write a compiler. It is a journey everybody should try.

    • @johndoesson
      @johndoesson 3 года назад +1

      @@Guztav1337 what would you say you got out of it?

    • @czonios
      @czonios 3 года назад +4

      @@johndoesson I wrote a compiler for some obscure Pascal-like language in C and Assembly for a class, and I learned a lot about regular expressions and state machines, some smaller instruction set Assembly (we used MIPS), abstraction and layering, how a computer actually works, and (very important) how many actual instructions you need for a single C instruction (z = x + 1 is not the same as z = x + y because in the second case you have to additionally load y to a register, maybe use a temp variable etc) and how registers work. Keep in mind I was already employed as a programmer for half a year already at that time, so I wasn't new to the game.
      Years later I got into microcontrollers and after a while had to use registers again, this time in C. Understanding what's happening underneath probably saved me a fair bit of time I would probably not have invested otherwise.

    • @johndoesson
      @johndoesson 3 года назад +2

      @@czonios Cool, just finished a course where we learned MIPS assembly and now taking another course in theoretical comp sci where we are learning about state machines and regular expressions. Yes, I agree on the part about assembly giving a greater understanding of how it works. But do you mean that a compiler is basically assembly code using state machines are regular expressions? Because that would make sense. Also dabble with microcontrollers, mostly Arduinos up until now, great stuff.

  • @256k_
    @256k_ Год назад +30

    I've embarked on this path as of late, after years of being a high level web developer with no formal degree in CS, i'm embarking on a knowledge journey all the way back to assembly and machine code and C and really trying to understand what a computer does and how it works from a mere transistor point upwards. it's a great and long journey but one that i find fascinating and the more i learn the more i feel like i have superpowers. low level programmers who fundamentally understand these. concepts are like computer whisperers

    • @akshaymanta55
      @akshaymanta55 3 месяца назад +1

      Do you mind pointing out the benefits for a web developer of learning assembly because I also feel the urge inside of me to know what's actually happening under the hood and at the bare metal level. I would really appreciate if you could highlight some of the benefits you've received in your web development journey by learning assembly.

  • @10livesimple19
    @10livesimple19 3 года назад +24

    The algorithm loves “best programming languages” videos. Good job Lex, keep feeding the algorithm what it wants, the world needs to watch your podcast

  • @giovannipezzin5707
    @giovannipezzin5707 3 года назад +8

    I started with arduino/PIC micros, but when I had to do fast stuff (measuring speed of a projectile from 12 photodiodes in a barrel) I tried to do that in assembly. Man, that opened my mind

  • @g.alexander1807
    @g.alexander1807 Год назад

    Love your videos mate ! great interviews!

  • @MrNickBreen
    @MrNickBreen 3 года назад

    That was great, thanks for looping back to talk about this part Lex.

  • @hmdz150
    @hmdz150 3 года назад +4

    Actually, designing a “sequential circuit” in HDL language is the ART, since they are by nature parallel languages. The beauty is creating FSMD (Finite State Machines) + (Data-flow) in VHDL that accelerates algorithms in Hardware.

  • @semtex6412
    @semtex6412 3 года назад +191

    "...yyyeah, i'm not a great haskell programmer. i wrote a compiler in haskell once." holy crap balls! one can only imagine everything he did in C!

    • @SergeiPoliakov
      @SergeiPoliakov 3 года назад +23

      It depends on the type of compiler he wrote. If it's a small compiler for a small subset of a language, it wouldn't be that complicated. But I guess he didn't specify, so possibly it could have been something very complex.

    • @SamuelHauptmannvanDam
      @SamuelHauptmannvanDam 3 года назад +1

      Stuck with me as well. xD Classic Hotz

    • @joshuastein1888
      @joshuastein1888 3 года назад +7

      there are things that can be "simpler" in haskell than C/C++ etc. like parsing. Dont get me wrong, i struggle with haskells "higher" concepts a lot but you can do a lot of powerfull stuff with just some basics knowledge. my first project was a sloppy brainfuck interpreter. Its not an easy language but you can do really elegant stuff with it in a way thats impossible in imperative languages

    • @SergeiPoliakov
      @SergeiPoliakov 3 года назад

      @@joshuastein1888 facts

    • @Kalernor
      @Kalernor 3 года назад +5

      Probably wrote a program that solves the halting problem in C (and a python program that solves the travelling salesman problem in polynomial time while we're at it)

  • @MrTecphdb
    @MrTecphdb 3 года назад

    Great man, awesome episode 👏🏻👏🏻👏🏻

  • @kalebyeneneh7693
    @kalebyeneneh7693 8 месяцев назад +1

    I love this podcast so much
    Great job

  • @Theodore_Pugin
    @Theodore_Pugin 3 года назад +93

    Trying to build Tic-Tac-Toe using Javascript and to me they're speaking a foreign language. One step at a time.

    • @giorgionapoli85
      @giorgionapoli85 3 года назад +1

      Same here! Plus, they're actually speaking a foreign language, since I'm not native English ;)

    • @Mark__
      @Mark__ 3 года назад

      @Theodore Pugin How'd everything end up for ya?

    • @Kalernor
      @Kalernor 3 года назад +3

      "One step at a time." Very wise! These guys are speaking a foreign language to you now, but at one point they were in the same position as you, also taking it one step at a time for many years. Before you know it, you will have taken enough steps to be where they are right now:)

    • @exnihilonihilfit6316
      @exnihilonihilfit6316 26 дней назад

      ​@@giorgionapoli85Your circumstances and excitements over this or that are not important to others. Don't you realize that? So save them to yourself and don't pollute the internet with even more trash.

  • @abdulelahsm
    @abdulelahsm 3 года назад +34

    oh so George is the 10X engineer that I kept hearing about on twitter a while ago

  • @LukeAvedon
    @LukeAvedon 7 месяцев назад

    Such great advice!

  • @silentbranch
    @silentbranch 3 года назад +201

    Lex’s lack of eye contact has me dying lololol me too Lex

    • @pietart3596
      @pietart3596 3 года назад +7

      He's looking straight at George

    • @pery1952
      @pery1952 3 года назад +24

      Like these both have to be on autism spectrum if not autistic, right?

    • @ոakedsquirtle
      @ոakedsquirtle 3 года назад +1

      @@pery1952 nah

    • @pery1952
      @pery1952 3 года назад +9

      @@ոakedsquirtle If not Lex then definitely George.

    • @d8J47QpR
      @d8J47QpR 3 года назад +8

      @@pietart3596 is George outside?

  • @NeerajGupta-fy1bv
    @NeerajGupta-fy1bv 3 года назад +338

    I dont code to appreciate programming languages. I code to get shit done and solve problems. Most programming advice is like "You should learn this because I had to learn this".

    • @erdmax_
      @erdmax_ 3 года назад +13

      Well said.

    • @wumi2419
      @wumi2419 3 года назад +49

      That is no excuse for black box towers. You still have to understand what is going on unless you do not care about code quality and performance.

    • @stackercoding2054
      @stackercoding2054 3 года назад +55

      @@wumi2419 it depends on your role, its like the difference between the architect and the worker but translated into software projects, if you are going to design a whole system then yeah probably knowing assembly and C and how they interact with the hardware in such a low level is going to be very useful in order to design a good and efficient system, but if you are just a hired programmer to build that system, you literally dont have to know what even assembly is, the same way an architect can design a complex building structure but the only thing the worker needs to know is how to place bricks properly, he doesnt even care about how bricks are made or why the building has this specific structure.
      My point is that not every construction worker wants to become an architect, and not every programmer wants to become a George Hotz.

    • @mtbjason4
      @mtbjason4 3 года назад +30

      I agree. This guy is kind of an idiot. Do you have to be a blacksmith to wield a sword in battle?

    • @NeerajGupta-fy1bv
      @NeerajGupta-fy1bv 3 года назад +16

      @@wumi2419 but you don’t need to learn assembly to understand what is going on. The whole mission of computer science is to provide abstraction to solve problems faster.

  • @grkuntzmd
    @grkuntzmd 7 месяцев назад +5

    I haven't written a line of assembly language in many years, but it was the first language I learned, and it has been had a huge impact on my programming for over 45 years as a software engineer. I agree with George that if you want to be a really good programmer, learning assembly language will help.

    • @DanReh
      @DanReh 2 месяца назад +1

      really ? Please elaborate ?
      How does learning assembly help you if you are working as a backend java developer. It doesn't seem useful at all.

    • @fargoth391
      @fargoth391 29 дней назад

      @@DanReh MY ASS

  • @halfbrain86
    @halfbrain86 3 года назад +8

    2:02 when I understood this concept during my electrical engineering study a whole new dimension in programming was introduced to me.

    • @RafQ321
      @RafQ321 3 года назад

      How is it possible ? Code is transformed into instruction set and it is executed from the begining to the end, if it were at once there everything would work instantaneously. Perhaps he mean that functions do not quite execute in the order thay are written ?

    • @halfbrain86
      @halfbrain86 3 года назад +2

      @@RafQ321 The hardware of the FPGA gets "programmed" according to the description thats coded. You basically describe the functionality and the hardware to implement that gets built on the FPGA meaning the circuit structure to have the functionality gets built on the chip physically. Just google FPGA and ASIC for more info.

    • @RafQ321
      @RafQ321 3 года назад

      Thanks, I definitly will read about that ;)

    • @rhetoric5173
      @rhetoric5173 3 года назад

      Yes, it's important for electrical engineering, and computer engineering, but no one else.

    • @lesstor99
      @lesstor99 2 года назад

      ​@@RafQ321 It helps thinking about it this way:
      when you power on a piece of hardware, all the registers, arithmetic and logic units etc. power on at the same time. This is why all 'blocks' in verilog are executed at the same time.
      Regarding your point of instructions executing from beginning to the end: there is no concept of 'execution' for a piece of code written in Verilog.
      Its either simulation or synthesis.
      when it comes to simulation, all the blocks in verilog start executing at the same 'time step'

  • @iJamesGuo
    @iJamesGuo 3 года назад +1

    Wow, the way of thinking is revealing!

  • @laszlosarosdi5417
    @laszlosarosdi5417 3 года назад +90

    I have not a clue what these two were saying, still watched it till the end.

    • @stoicforall
      @stoicforall 3 года назад +4

      Hahahaha! Yes, me too.

  • @Lazdinger
    @Lazdinger 3 года назад +27

    Makes sense man. When I took a fundamental course in accounting, we learned to do everything by hand... reconciling books, ledger entries, prepare proper financial statements and once wet had that down, we learned the software that does all of that.

    • @shantanukulkarni8883
      @shantanukulkarni8883 Год назад +5

      Great analogy! Now I understand why it is important to know the base layers of programming like assembly and c

    • @centripetal6157
      @centripetal6157 Год назад +2

      maybe if you want to waste a bunch of time or are focusing on circuit boards... Then learn assembly.

    • @Lazdinger
      @Lazdinger Год назад +3

      @@centripetal6157 I love to waste time. *And* circuit boards. haha

  • @nickkings7881
    @nickkings7881 3 года назад

    WOW I was just getting into this guys ideas and i find he was on your show Lex!! I was so excited cuz knew you think like me somewhat. Then I see this eas uploaded LAST MONTH!!! WOW what a coincidence!!

  • @olitonottero7620
    @olitonottero7620 Год назад

    super helpful thank you

  • @ToddsDiscGolf
    @ToddsDiscGolf 2 года назад +19

    I’m learning JavaScript HTML and CSS right now. I studied a little Python and a little GO.
    When I hear Lex saying he’s up all night programming, I wonder what language he’s using and what exactly he’s working on? Stuff he gets paid for? Stuff he does due to pure interest? Creating AI?

    • @graydhd8688
      @graydhd8688 7 месяцев назад

      Check out the game Turing Complete. I started with the webdev stuff too, TC is a game that will teach you all the most basic low level programming concepts by guiding you through building a computer circuit by circuit.

  • @RamZThaMarine
    @RamZThaMarine 3 года назад +85

    Quick question,, what's a com pu ter?

  • @alicechained1
    @alicechained1 3 года назад

    Man i love your podcast your are amazing Lex.... hands down the best damn podcast.

  • @KJBtheMosFett
    @KJBtheMosFett 3 года назад

    Agreed.... especially working on embedded stuff.

  • @JorgeRamos-xw6dy
    @JorgeRamos-xw6dy 3 года назад +17

    This program gives me the confort to know that there are great minds working on solving world issues.

  • @matteopennacchietti9831
    @matteopennacchietti9831 3 года назад +12

    I believe the technical term for a software paradigm for machine learning is called Differential Programming. en.m.wikipedia.org/wiki/Differentiable_programming

    • @BitwiseMobile
      @BitwiseMobile 3 года назад

      Makes sense. Neural nets are based on differentials and gradients. It all comes down to the weights in the end.

  • @attilabpc542
    @attilabpc542 Год назад +1

    Absolutely agree with that. Machine Language, Assembly, C (++), Python, etc...

  • @petersuvara
    @petersuvara 3 года назад +1

    The thing with ML is that it defines only a small subset of concepts that are pure maths. These things have been around for around 50 years now. Classification, Regression, Association, Control and Clustering. The rest is based on the fitness of the developer to utilise that decision to facilitate a particular outcome.
    I don’t know if it’s really a programming paradigm. It’s more a collection of algorithms.

  • @facundoalvarado9
    @facundoalvarado9 3 года назад +28

    Great vid. Used to think Uni was just for the degree. Once I learned data structures, and C, I fell in love with what's behind the code. Not saying you have to go to uni, not at all, just saying that uni opened my eyes to that part of coding.

  • @WebSprocket
    @WebSprocket 3 года назад +67

    Great choice of programming languages: assembly, C, Python. I think Python could probably be replaced by any number of other languages but the first two would definitely be keepers in any list of mine.

    • @hwstar9416
      @hwstar9416 Год назад +11

      @Bebtelovimab what are you talking about? Have you ever coded in C and Assembly?

    • @justsomeguy8385
      @justsomeguy8385 2 месяца назад

      @Bebtelovimab Do you even know what PyTorch is? How is an ML framework "Python on steroids?"

    • @exnihilonihilfit6316
      @exnihilonihilfit6316 26 дней назад

      He didn't say "Python".

  • @tommychong4prez
    @tommychong4prez Год назад

    Phenomenal energy, Lex.

  • @macrosense
    @macrosense 3 года назад +1

    I could understand c. I had a harder problem understanding a command line compiler and operating system.

  • @realchrishawkes
    @realchrishawkes 3 года назад +77

    Nice video

  • @bondjam8
    @bondjam8 Год назад +23

    This is so true. I went through CS50 which is mostly in C. Now Im learning python and i have to keep myself is check not to go the long way around a problem, because sometime I dont even think theres a simple method or function built in for something thats like 10+ lines of custom code in C.

    • @bharatjeevan
      @bharatjeevan 3 месяца назад

      Do you think C should be the first language you learn ?

    • @bondjam8
      @bondjam8 3 месяца назад

      @@bharatjeevan i am really not qualified to give such advice. But I for fure recommend the CS50 course. It veeery difficult but worth it.

  • @alpineflauge909
    @alpineflauge909 3 года назад +1

    fire, thanks

  • @GerhardKupferGreyvenstein
    @GerhardKupferGreyvenstein 3 года назад +13

    I 100% agree with Hotz’s approach (understanding how a processor actually executes instructions) although I’d start with BASIC, specifically for the reason most people dislike it, the GOTO function (as it’s essentially a jump instruction). Writing your first function in assembly you’ll actually grasp how the processor knows where to go (with the return address being the last variable pushed onto the stack).
    1. BASIC
    2. ASM x51 (yes, for a micro controller)
    3. ASM x86
    4. Plain C
    5. Java (just as an introduction to VMs and garbage collection)
    6. NodeJS (with TypeScript)

    • @hectorcanizales5900
      @hectorcanizales5900 2 года назад

      Something that I haven’t heard in a while: C also has a goto statement

  • @folsdaman
    @folsdaman 3 года назад +45

    Damn someone finally mentioned HDLs.

    • @BitwiseMobile
      @BitwiseMobile 3 года назад +6

      Technically not a computer language. If you treat it as such you will have problems. I know Verilog looks like C and HDML looks like Ada/Pascal, but they are not imperative in any way. You can't think of it as a computer language or programming language. It's a hardware description language - hence the name.

    • @ko-Daegu
      @ko-Daegu 3 года назад

      @@BitwiseMobile
      So which own to learn as a software guy Verilog or HDL

    • @BitwiseMobile
      @BitwiseMobile 3 года назад

      @@ko-Daegu They both have plus and minuses, so it really depends on your needs. In some cases you don't even need to know any HDL and can use RTL instead.

  • @piotrjasielski
    @piotrjasielski 3 года назад +88

    1:35 "Is Haskell your goto?" - no pun intended?

    • @SergeiPoliakov
      @SergeiPoliakov 3 года назад +1

      I think he meant within the Functional Programming Paradigm

  • @trejohnson7677
    @trejohnson7677 3 года назад

    Dataflow programming, which is an abstraction layer to get the ideas of DATAFLOW architectures to be amenable to Von Neumann architectures.

  • @Kniffel101
    @Kniffel101 3 года назад

    Yup, George is spot on with that.

  • @ElliotRock
    @ElliotRock 3 года назад +6

    Data engineering is exceptional useful, especially in event driven systems.

  • @chishikiendeavourer8663
    @chishikiendeavourer8663 Год назад +6

    I learn assembly because of his suggestion, now I can actually visualise how machine code executes in CPU. I loved it. My understanding is broadened. ❤ he is a 10X developer, not a myth anymore

  • @grenadier4702
    @grenadier4702 9 месяцев назад +1

    Assembly is about hardware as well. You literally write the instructions that are almost always directly understood by your hardware

  • @980616
    @980616 Год назад

    At the end of the day, most of the programming standards are moving towards abstractions, you can learn python without knowing a thing about C. I love C(incl C++) because it gives you more control of the hardware and embedded systems.

  • @thethoughtcabin3379
    @thethoughtcabin3379 3 года назад +5

    If you dont stand outside with flashlights turning them on and off then writing down wether or not you turned that light on or off to write binary code, you have no idea whats going on

  • @arthurmorgan8966
    @arthurmorgan8966 2 года назад +3

    0:45 Or study electronics, you will learn how to code with physical logic gates. It will make you appreciate even assembly.

    • @exnihilonihilfit6316
      @exnihilonihilfit6316 26 дней назад

      That's what we have "Turing Complete" by Zachtronics for. 😅

  • @sergeyjakobsen2281
    @sergeyjakobsen2281 2 года назад +2

    Dissapointed he didn't mention declarative programming. Understanding how Prolog and SQL (and perhaps Maude) work is definitely a worthy perspective to have!

  • @nunomiguel4
    @nunomiguel4 3 года назад +1

    Dude this is why Maniacs like this should rule the World,
    everyone wonders why he Knows everything,
    he simply dos not cut corners, he leaned it all.
    Dear in head light moment 4 me

  • @airpods4
    @airpods4 3 года назад +56

    farming rice is my best programming lamguage.
    It can literally start a new civilization.

    • @mokus603
      @mokus603 3 года назад +6

      Yeah man, like if you don't know how people made money to build and manufacture computers, whats the point.

    • @hassanjacobs7506
      @hassanjacobs7506 3 года назад +3

      @@mokus603 right and honestly we should all know the theory of everything by Steven Hawkins because if you don't know why things "are" then why even bro

  • @TheR971
    @TheR971 3 года назад +7

    Data-driven programming already exists though. And it has nothing to do with machine learning.
    The existing paradigm that is closest to pytorch et al is declarative.
    en.wikipedia.org/wiki/Data-driven_programming

    • @randomseed
      @randomseed 2 года назад +1

      That is correct. Data-driven means you are not wrapping input data in some artificial models in order to process it and then convert back to data. Also means data structures are exposed in your source code and are generic enough to handle 90% data processing cases. No data hiding. Generic structures. Data-oriented abstractions (for handling sequential, textual, associative, ordered and unique collections of data). No interpretation or very late interpretation. I wouldn't tell that in ML data is exposed. There are a lot of black boxes.

  • @namesame
    @namesame 3 года назад +1

    @3:33 "Imperative, functional, hardware... I don't know a better word for it..." The word is "concurrent", it will help you become a good concurrent programmer. As a side note Verilog is not a programming language, so its better to concurrent programming over Verilog if one is constrained by time (or at least that should be the priority).

  • @karlkastor
    @karlkastor Год назад

    I'm glad that I learned all of these in Uni. I don't think I would have had any reason or motivation to learn VHDL

  • @Aaron-sy5yx
    @Aaron-sy5yx 3 года назад +17

    This makes so much sense to me. Been learning to program for the past year and am now realizing that a ton of the things i want to do i can't because i don't have a CS background

    • @tombackhouse9121
      @tombackhouse9121 3 года назад +3

      You can if you believe!

    • @damuffinman6895
      @damuffinman6895 Год назад +1

      What are you talking about? You don't need a CS background at all. Just work

    • @Chessmapling
      @Chessmapling Год назад +1

      Don't focus on having a CS background. If there's one topic that the Internet has an abundance of information on, it's coding and computers. You can learn everything you would've at a university for free online. Can't say the same about other subjects.

  • @Bratek193
    @Bratek193 3 года назад +21

    George for me is like a rockstar in programming world. He is on this high level which I won't never achieve, because of my own limitations. Total respect for him

    • @Dekibtw
      @Dekibtw Год назад

      what limitations?

    • @Bratek193
      @Bratek193 Год назад +3

      @@Dekibtw ADHD

    • @Dekibtw
      @Dekibtw Год назад

      @@Bratek193 oh, wow. I thought you underestimated your abilities. Sorry to hear that

    • @Chessmapling
      @Chessmapling Год назад

      @@Bratek193 Genuine question, have you tried Adderall? I don't have ADHD so I won't pretend to understand it, but it seems to really help people with ADHD take back some control.

    • @fargoth391
      @fargoth391 6 месяцев назад

      @@Bratek193 Same here but Concerta has worked wonders for me, I can literally code and sift through documentation for hours. Please try to get medicated, it will make a world of difference. It felt like I had just opened my eyes for the first time.

  • @richardbenes9
    @richardbenes9 3 года назад

    What about the Logic paradigm & Prolog? That requires a huge mind-twist too..

  • @gogyoo
    @gogyoo Год назад

    How does the scheduler of the OS deal with a Verilog program, to execute/evaluate several code statements at once?

  • @TrooperJet
    @TrooperJet 3 года назад +22

    Wow I actually did learn all of those in this order!
    I've been envying those people who jump straight to web-dev courses and know usefull stuf, and here I am with all those hardware knowledge
    But perhaps it is actually good if such god of programming says so

  • @ilkinq.8646
    @ilkinq.8646 3 года назад +3

    2:49 when i messing with junior ml engineer at first day of work

  • @johnharrington4205
    @johnharrington4205 3 года назад +1

    Entity Component System Architecture seems like a paradigm to me as well........

  • @schuremtheworm688
    @schuremtheworm688 3 года назад +3

    Learning VHDL makes you appreciate any other language other than assembly

  • @burner918
    @burner918 3 года назад +76

    *me trying for hours to center a div using CSS* uhuh, what else

    • @capekraken2672
      @capekraken2672 3 года назад +6

      i gotchu:
      You have to 'wrap' the element that you want to center (div for example) with a div element, put a class on that div then use css to relate to that div to set "display:flex" and "justify-content: center".
      There are definitely other ways to do it (for just text you can only do "text-align: center" on the child div but this is just to have bases covered.
      Hope this works lol

    • @amey7064
      @amey7064 3 года назад +2

      Display: grid;
      Place-items: center;
      That's it.

    • @HELLOWORLD-ix9eg
      @HELLOWORLD-ix9eg 3 года назад +2

      HTML+CSS is like using magic the gathering to draw rectangles. Fuck that. Give me my shader code.

    • @jazzyniko
      @jazzyniko 3 года назад

      CSS is not programming but styling or dressing HTML.
      I tell you this:
      You will learn CSS a 100 times faster than actually learning how to program.

    • @jaypostsvideos4011
      @jaypostsvideos4011 3 года назад +6

      @@jazzyniko css is a lot more annoying than anything I've done with c++. I won't say harder, but I've seen many people who'd rather spend 12hours on a single c++ program than on css.

  • @frenchmike
    @frenchmike 3 года назад +1

    I am sure he is right, but being more practical I think I should start with Javascript, and Python, maybe c++ if one wants to go a bit deeper. but i don't see how assembly or even c++ will help you code with python or js which are super usefull

  • @davidzwitser
    @davidzwitser 7 месяцев назад

    What about the stack based (Forth) and array based (APL, BQN, etc) paradigms.

  • @baskoning9896
    @baskoning9896 3 года назад +11

    Assembly. At least the basics of it, to learn how a cpu works etc
    C. Industry standard.
    Python. Perhaps the most human friendly language.

  • @gandalfgrey91
    @gandalfgrey91 3 года назад +207

    “Code in assembly”
    Take your meds

  • @phen2841
    @phen2841 3 года назад

    Anyone got any ideas why George mentioned that we should learn pyTorch over Tensorflow? It seems like everything on the internet points the other way.

  • @synthlord3878
    @synthlord3878 2 года назад

    I came to this EXACT combo on my own! Validation

  • @peterebode
    @peterebode 3 года назад +11

    Something makes me think either something weird is going on outside the window or Lex is trying to scare Hotz..

  • @rmarinero
    @rmarinero 3 года назад +8

    I had programmed a lot in x86 assembly and also abstracted some classes and functions that generate ASM (I also know C, python and some HDL). However, I do not agree that you need to learn assembly, unless you need to implement complilers, or maybe work in high performance embeded systems. Honestly, I am no better programmer by knowing assembly. C in the other hand will make you a good programmer, giving you a good understanding on how memory, arrays, and pointers work.

    • @tetsuoiiii
      @tetsuoiiii 3 года назад +1

      I think it's necessary to know C because you need to understand memory layout to write efficient programs. Assembly is useful to understand how the processor works, and necessary when optimization is needed because high throughput dictates it.

    • @rmarinero
      @rmarinero 3 года назад +2

      @@tetsuoiiii yes agree, but assembly, for most programmers is not required, as an analogy, you do not need to know physics to balance chemistry equations and make predictable and precise compounds. But in some cases physics can be useful in chemistry to explaining things, I see it as different abstraction levels.

  • @socaljusticewarrior558
    @socaljusticewarrior558 3 года назад +2

    I struggled to get started with programming until I started learning assembly. Not that I know assembly, I just have a basic idea of how it works and now I'm not going "What the heck is going on?" when I'm practicing Java

  • @clpr635
    @clpr635 Месяц назад

    pythorch suggestion was actually good for its time

  • @glyphsuritos6588
    @glyphsuritos6588 2 года назад +14

    TLDR of this video according to Hotz: 4 types of paradigm/discipline of programming.
    - imperative language (your generic programming language where most of you would be in this category), his top 3: C , Assembly (learning this is important as it helps build intuition on what goes behind the scenes when any code is compiled), and Python.
    - functional language: Haskell.
    - hardware description language: Verilog (if you've taken an EE/CE course then you know whats up), builds up intuition on concurrent programming
    - differentiable language (aka data-driven programming, mainly used for machine learning programs): Pytorch > Tensorflow

  • @d3thtr4p10
    @d3thtr4p10 3 года назад +4

    While I don’t want to push aside the possibility of benefits gained from learning Assembly or C, I disagree with the notion of the latter two being a requirement in a programmers toolkit.
    Programming ultimately is a way of solving a problem. While there may be a vast collection of tools to use for tackling that problem, ultimately, you should pick whatever you’re most comfortable with or whatever gets the job done most efficiently.
    Say, I am a frontend developer. Surely, I could get down to the atomic level of how a webpage is constructed and do all of that in either C or Assembly. But why would you do that when you could all do it just as easily at a 100th of the time and effort in languages like JS?
    Unless your work requires being closer to the architecture of the computer, there is no reason to not choose whatever works best for you and gets the job done time efficiently.

  • @xMPGx
    @xMPGx 6 месяцев назад

    computers can build beautiful things , after a couple years of studying it becomes clear that machine learning is on another level , 1 that i will hopefully reach sometime in the near future. The best thing about Computer Science is that all you need is a computer to explore it

  • @lincolnsand5127
    @lincolnsand5127 3 года назад

    0:28 tbh assembly is very high level and barely tells you what is going on with a computer. Assembly isn't going to teach you about TLB misses, cache misses, branch prediction, hardware prefetching, pipelining, branch target prediction, or virtual memory. And those are all more important than being able to read assembly imo. I still think assembly analysis can be useful though for looking for branches and loads in the binary and generally getting a very rough idea of how efficient something is (also for checking if SIMD and FMA instructions are being emitted).

    • @lincolnsand5127
      @lincolnsand5127 3 года назад

      Maybe it's because I do 3d graphics that I find Data Oriented Design to be very important. But I did agree with George Hotz's list and found it interesting. My list would be different, but nothing I really disagreed with him on.

  • @botfantasies6229
    @botfantasies6229 3 года назад +21

    IMO, master the one language that will enable you to create the one thing, or things, that you are most passionate about. Then when you've "made it", however you measure that, learn whatever else you find interesting.

    • @pickledparsleyparty
      @pickledparsleyparty 3 года назад +9

      There's learning to code for yourself, and then there's learning to code for someone else. My advice is that learning to code for yourself will guarantee your success. If you need to automate your work, and Python's the simplest way to get that done, then learn Python. Even if companies don't say they need your language skills, you will have built so much on your own that there's bound to be someone who will pay for what you're able to create
      Learning to code for someone else gives you a clear career goal (get a job with Epic), but the real result of that is that you're fine-tuning yourself for a job competition. One in 350 coders will be selected for the job you're tuning yourself to get. And coding skill probably won't even be what gets the winner their job. It will be the way the candidate made the interviewer feel during the interview. Or the random delightful conversation had in the bar after a conference. Sounds risky.

  • @hanabimock5193
    @hanabimock5193 3 года назад +8

    He just described what we learnt in electrical engineering.

  • @caroldanvers265
    @caroldanvers265 2 года назад

    I always wanted to learn C programming. I just found this amazing channel for nerds like me.

  • @blipojones2114
    @blipojones2114 3 года назад

    the "rooting for success" problem, or lack thereof, related to current platforms is very interesting.....sounds a bit like linkedIn, everyone is forced, largely, to be positive cause its tied to their profressional image

  • @keffbarn
    @keffbarn 3 года назад +187

    Disclamer: The question answered really is "Programming languages that a computer scientist should learn ".

    • @Macatho
      @Macatho 3 года назад +39

      Tbh "Programming languages that a computer enthusiast should learn that needs to understand the journey and does not care about the results".

    • @JR-mk6ow
      @JR-mk6ow 3 года назад +3

      I was thinking in a way to explain Assembly and C to people that dont know what's the different between Source Code and an App and man it was going to be looong conversation.

    • @Guztav1337
      @Guztav1337 3 года назад +13

      I still think everybody should learn to make a very basic program in Assembly, C, and Python.
      A program that computes the area of a rectangle, for example.
      _Everybody_ should do that at school or something.

    • @johndoesson
      @johndoesson 3 года назад +3

      @@Guztav1337 I think programming will be mandatory in the west to at least some extent in school, it's creeping in into every field and will probably become more mainstream curriculum, but I think few will actually work with it, will not become mainstream. Most people tend to shy away from pure logic, just look at math.

    • @austra77777
      @austra77777 3 года назад +1

      @@johndoesson Math is an axiomatic system. Requires integration into a scientific discipline to explain objectivity.
      Math in subjective avenues is a fruitless endeavour

  • @DoubleAgent25
    @DoubleAgent25 3 года назад +11

    I have one: ladder logic for industrial automation.

    • @ThisIsAnglerTV
      @ThisIsAnglerTV 3 года назад +2

      Yeah, PLCs are fun lol

    • @ka9dgx
      @ka9dgx 3 года назад +1

      Verilog is like ladder logic, unrolled back into actual gates (instead of relays).... all the lines execute simultaneously.

    • @boblefest
      @boblefest 3 года назад

      It's so basic that one won't really learn anything new from it.

  • @wilhelmsarasalo3546
    @wilhelmsarasalo3546 2 года назад

    Knowing Assembly often answers the question "what is it really?" Writing in a high level language while having a mental picture of what it translates to, I find valuable. BTW, what came of in the end writing the compiler in the language to be compiled?

    • @exnihilonihilfit6316
      @exnihilonihilfit6316 26 дней назад

      "Human Resource Machine" and esp. "Turing Complete" give you the rest. 😅

  • @alexwilliams4781
    @alexwilliams4781 Год назад

    For not complete novices but programmers in the early stages of their journey, what tools does anyone recommend to learn these low-level programming concepts (no CS degree) or languages such as Assembly and C

  • @mcorleone77
    @mcorleone77 3 года назад +8

    pretty much all languages learnt in an electrical engineering degree, assembler/C/C++/VHDL , except Pytorch

    • @dooby5953
      @dooby5953 3 года назад

      Verilog to

    • @treadstonecorporation9555
      @treadstonecorporation9555 3 года назад

      I took and Computer Eng elective and got Prolog as well

    • @adobovs271
      @adobovs271 3 года назад

      @@treadstonecorporation9555 loved Prolog ... 35+ years ago

  • @Lucretia9000
    @Lucretia9000 3 года назад +4

    Well, he's right about knowing assembly gives you knowledge about the machine. C gives you memory issues and segfaults. He's wrong in saying those 3 "to start."
    Anyone learning should start with Ada, it'll teach you better design from a data and code perspective and you don't really have to use pointers. Start higher, then go lower. Yes, you should learn C, only because of the amount of stuff written in it and so you can bind to those libraries from a higher level language when you need to.
    Could the interviewer be anymore bored?

  • @EzraSchroeder
    @EzraSchroeder 2 года назад

    2 second version: assembly C python verilog haskell (write a compiler) pytorch

  • @hellsalve017196
    @hellsalve017196 2 года назад +1

    George hotz, the legend

  • @RandyDiver1
    @RandyDiver1 3 года назад +9

    Heck ya C rocks! Made my fortune coding C. Love it because it is readable yet the syntax will fit in your head without a great deal of effort.

    • @zarni000
      @zarni000 3 года назад

      not much you can do with it though. c++ is where its at

    • @Moviemakerminutes
      @Moviemakerminutes 3 года назад +3

      @@zarni000 The entire Linux kernel is written in C. You can definitely do a lot of things in C. C++ is an eyesore.

    • @zarni000
      @zarni000 3 года назад

      @@Moviemakerminutes of course it is. But do you know how much work it was? I didnt say you cannot do all things. But you basically have to do most everything from scratch. There is a reason c++ was the next generation of c.

    • @Moviemakerminutes
      @Moviemakerminutes 3 года назад

      @@zarni000 Your literal words were “not much you can do with it though” which implies you couldn’t do all things in it. C and C++ can both do all the things. It’s about tradeoffs. There were reasons for C++, yes, but unfortunately these reasons haven’t been addressed.

    • @zarni000
      @zarni000 3 года назад

      @@Moviemakerminutes well I guess I misspoke. I meant not much you can do as efficiently as with c++. Technically you can if course do everything in assembly too that you can do with c++ but the time cost is absurd