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

Sdílet
Vložit
  • čas přidán 24. 10. 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 CZcams channel
    - Twitter: / lexfridman
    - LinkedIn: / lexfridman
    - Facebook: / lexfridmanpage
    - Instagram: / lexfridman
    - Medium: / lexfridman
    - Support on Patreon: / lexfridman
  • Věda a technologie

Komentáře • 1K

  • @timothy6966
    @timothy6966 Před 11 měsíci +516

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

  • @arsnakehert
    @arsnakehert Před 3 lety +2516

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

    • @mohamadeen
      @mohamadeen Před 3 lety +81

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

    • @badhombre4942
      @badhombre4942 Před 3 lety +5

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

    • @karthikshinde6739
      @karthikshinde6739 Před 3 lety +5

      @@mohamadeen omg..i am so backward

    • @mksybr
      @mksybr Před 3 lety +42

      @@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 Před 3 lety +13

      The flex

  • @omarnomad
    @omarnomad Před 3 lety +869

    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 Před 2 lety +7

      @@delete7316 I don't think so 🤣

    • @godfather7339
      @godfather7339 Před 2 lety +21

      No LISP?

    • @clerooth
      @clerooth Před 2 lety +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 Před 2 lety +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 Před 2 lety +1

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

  • @NytronX
    @NytronX Před 3 lety +1644

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

    • @frankcastillo2855
      @frankcastillo2855 Před 3 lety +112

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

    • @blackraider777
      @blackraider777 Před 3 lety +40

      @@frankcastillo2855 he had nam flashback right there

    • @mennovanlavieren3885
      @mennovanlavieren3885 Před 3 lety +4

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

    • @blackraider777
      @blackraider777 Před 3 lety +10

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

    • @bassam.2023
      @bassam.2023 Před 3 lety +7

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

  • @dustincadelina8941
    @dustincadelina8941 Před 3 lety +1100

    this is podcast is like joe rogan for nerds.

    • @wiskasIO
      @wiskasIO Před 2 lety +19

      More controversial sometimes!🤓🤣

    • @Centori88
      @Centori88 Před rokem +1

      😂😂😂😂😂

    • @JS-bk4pn
      @JS-bk4pn Před rokem +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 Před rokem +2

      geeks not nerds😂😂

    • @xjar215x
      @xjar215x Před rokem

      @@JS-bk4pn shut it nerd

  • @hackerculture7391
    @hackerculture7391 Před 3 lety +360

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

  • @hnasr
    @hnasr Před 2 lety +400

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

    • @younisamedi
      @younisamedi Před 2 lety +7

      Another super CZcamsr watching this... nice!

    • @hargunbeersingh8918
      @hargunbeersingh8918 Před 2 lety +2

      @@randiaz95 you have existential crisis ig

    • @jrcenina85
      @jrcenina85 Před 2 lety +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 Před 2 lety +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 Před 2 lety +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.

  • @pfschuyler
    @pfschuyler Před 3 lety +273

    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 Před 3 lety +2

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

  • @10livesimple19
    @10livesimple19 Před 3 lety +22

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

  • @aarongzmn
    @aarongzmn Před 2 lety +455

    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 Před rokem +6

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

    • @gondoravalon7540
      @gondoravalon7540 Před rokem +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 Před rokem

      +1

    • @ilikecommenting6849
      @ilikecommenting6849 Před rokem +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 Před rokem +1

      I agree with you

  • @256k_
    @256k_ Před rokem +28

    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 Před měsícem

      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.

  • @daveoatway6126
    @daveoatway6126 Před 3 lety +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!

  • @bruterasta
    @bruterasta Před 3 lety +351

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

    • @glircom
      @glircom Před 3 lety +25

      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 Před 3 lety +23

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

    • @johndoesson
      @johndoesson Před 3 lety +1

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

    • @czonios
      @czonios Před 3 lety +3

      @@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 Před 3 lety +1

      @@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.

  • @NeerajGupta-fy1bv
    @NeerajGupta-fy1bv Před 3 lety +335

    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_ Před 3 lety +13

      Well said.

    • @wumi2419
      @wumi2419 Před 3 lety +48

      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 Před 3 lety +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 Před 3 lety +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 Před 3 lety +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 Před 5 měsíci +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 Před 26 dny +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.

  • @semtex6412
    @semtex6412 Před 3 lety +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 Před 3 lety +22

      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 Před 3 lety +1

      Stuck with me as well. xD Classic Hotz

    • @joshuastein1888
      @joshuastein1888 Před 3 lety +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 Před 3 lety

      @@joshuastein1888 facts

    • @Kalernor
      @Kalernor Před 3 lety +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)

  • @WebSprocket
    @WebSprocket Před 3 lety +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 Před rokem +11

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

    • @justsomeguy8385
      @justsomeguy8385 Před 23 dny

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

  • @Theodore_Pugin
    @Theodore_Pugin Před 3 lety +90

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

    • @giorgionapoli85
      @giorgionapoli85 Před 3 lety +1

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

    • @Mark__
      @Mark__ Před 3 lety

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

    • @Kalernor
      @Kalernor Před 3 lety +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:)

  • @hmdz150
    @hmdz150 Před 3 lety +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.

  • @abdulelahsm
    @abdulelahsm Před 3 lety +33

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

  • @laszlosarosdi5417
    @laszlosarosdi5417 Před 3 lety +89

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

  • @giovannipezzin5707
    @giovannipezzin5707 Před 3 lety +7

    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 Před rokem

    Love your videos mate ! great interviews!

  • @MrTecphdb
    @MrTecphdb Před 3 lety

    Great man, awesome episode 👏🏻👏🏻👏🏻

  • @ToddsDiscGolf
    @ToddsDiscGolf Před 2 lety +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 Před 5 měsíci

      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.

  • @halfbrain86
    @halfbrain86 Před 3 lety +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 Před 3 lety

      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 Před 3 lety +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 Před 3 lety

      Thanks, I definitly will read about that ;)

    • @rhetoric5173
      @rhetoric5173 Před 2 lety

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

    • @lesstor99
      @lesstor99 Před 2 lety

      ​@@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'

  • @kalebyeneneh7693
    @kalebyeneneh7693 Před 6 měsíci +1

    I love this podcast so much
    Great job

  • @silentbranch
    @silentbranch Před 3 lety +201

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

    • @pietart3596
      @pietart3596 Před 3 lety +7

      He's looking straight at George

    • @pery1952
      @pery1952 Před 3 lety +24

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

    • @nakedsquirtle
      @nakedsquirtle Před 3 lety +1

      @@pery1952 nah

    • @pery1952
      @pery1952 Před 3 lety +9

      @@nakedsquirtle If not Lex then definitely George.

    • @d8J47QpR
      @d8J47QpR Před 3 lety +8

      @@pietart3596 is George outside?

  • @Bratek193
    @Bratek193 Před 3 lety +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

    • @Alchemistbtw
      @Alchemistbtw Před rokem

      what limitations?

    • @Bratek193
      @Bratek193 Před rokem +3

      @@Alchemistbtw ADHD

    • @Alchemistbtw
      @Alchemistbtw Před rokem

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

    • @Chessmapling
      @Chessmapling Před rokem

      @@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.

    • @lexxxsuperior
      @lexxxsuperior Před 5 měsíci

      Are you sure you have ADHD? @@Bratek193

  • @GerhardKupferGreyvenstein
    @GerhardKupferGreyvenstein Před 3 lety +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 Před 2 lety

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

  • @LukeAvedon
    @LukeAvedon Před 6 měsíci

    Such great advice!

  • @realchrishawkes
    @realchrishawkes Před 3 lety +77

    Nice video

  • @Lazdinger
    @Lazdinger Před 3 lety +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 Před rokem +5

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

    • @centripetal6157
      @centripetal6157 Před rokem +2

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

    • @Lazdinger
      @Lazdinger Před rokem +3

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

  • @folsdaman
    @folsdaman Před 3 lety +45

    Damn someone finally mentioned HDLs.

    • @BitwiseMobile
      @BitwiseMobile Před 3 lety +5

      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 Před 3 lety

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

    • @BitwiseMobile
      @BitwiseMobile Před 3 lety

      @@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.

  • @iJamesGuo
    @iJamesGuo Před 3 lety +1

    Wow, the way of thinking is revealing!

  • @nickkings7881
    @nickkings7881 Před 3 lety

    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!!

  • @JorgeRamos-xw6dy
    @JorgeRamos-xw6dy Před 2 lety +16

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

  • @arthurmorgan8966
    @arthurmorgan8966 Před 2 lety +3

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

  • @olitonottero7620
    @olitonottero7620 Před rokem

    super helpful thank you

  • @MrNickBreen
    @MrNickBreen Před 3 lety

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

  • @matteopennacchietti9831
    @matteopennacchietti9831 Před 3 lety +11

    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 Před 3 lety

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

  • @facundoalvarado9
    @facundoalvarado9 Před 3 lety +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.

  • @alicechained1
    @alicechained1 Před 3 lety

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

  • @petersuvara
    @petersuvara Před 3 lety +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.

  • @piotrjasielski
    @piotrjasielski Před 3 lety +88

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

    • @SergeiPoliakov
      @SergeiPoliakov Před 3 lety +1

      I think he meant within the Functional Programming Paradigm

  • @RamZThaMarine
    @RamZThaMarine Před 3 lety +85

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

  • @KJBtheMosFett
    @KJBtheMosFett Před 3 lety

    Agreed.... especially working on embedded stuff.

  • @attilabpc542
    @attilabpc542 Před rokem +1

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

  • @bondjam8
    @bondjam8 Před rokem +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 Před měsícem

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

    • @bondjam8
      @bondjam8 Před měsícem

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

  • @airpods4
    @airpods4 Před 3 lety +56

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

    • @mokus603
      @mokus603 Před 3 lety +6

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

    • @hassanjacobs7506
      @hassanjacobs7506 Před 3 lety +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

  • @tommychong4prez
    @tommychong4prez Před rokem

    Phenomenal energy, Lex.

  • @alpineflauge909
    @alpineflauge909 Před 3 lety +1

    fire, thanks

  • @peterebode
    @peterebode Před 3 lety +11

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

  • @gandalfgrey91
    @gandalfgrey91 Před 3 lety +207

    “Code in assembly”
    Take your meds

  • @wilhelmsarasalo3546
    @wilhelmsarasalo3546 Před rokem

    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?

  • @chishikiendeavourer8663
    @chishikiendeavourer8663 Před 10 měsíci +5

    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

  • @TheR971
    @TheR971 Před 3 lety +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 Před 2 lety +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.

  • @nunomiguel4
    @nunomiguel4 Před 3 lety +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

  • @Kniffel101
    @Kniffel101 Před 2 lety

    Yup, George is spot on with that.

  • @keffbarn
    @keffbarn Před 3 lety +186

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

    • @Macatho
      @Macatho Před 3 lety +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 Před 3 lety +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 Před 3 lety +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 Před 3 lety +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 Před 3 lety +1

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

  • @thethoughtcabin3379
    @thethoughtcabin3379 Před 3 lety +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

  • @sergeyjakobsen2281
    @sergeyjakobsen2281 Před 2 lety +2

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

  • @grenadier4702
    @grenadier4702 Před 8 měsíci +1

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

  • @Aaron-sy5yx
    @Aaron-sy5yx Před 3 lety +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 Před 3 lety +3

      You can if you believe!

    • @damuffinman6895
      @damuffinman6895 Před rokem +1

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

    • @Chessmapling
      @Chessmapling Před rokem +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.

  • @glyphsuritos6588
    @glyphsuritos6588 Před 2 lety +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

  • @gogyoo
    @gogyoo Před rokem

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

  • @macrosense
    @macrosense Před 3 lety +1

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

  • @schuremtheworm688
    @schuremtheworm688 Před 3 lety +3

    Learning VHDL makes you appreciate any other language other than assembly

  • @baskoning9896
    @baskoning9896 Před 3 lety +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.

  • @namesame
    @namesame Před 3 lety +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).

  • @alexwilliams4781
    @alexwilliams4781 Před 11 měsíci

    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

  • @TrooperJet
    @TrooperJet Před 2 lety +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

  • @ElliotRock
    @ElliotRock Před 3 lety +6

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

  • @frenchmike
    @frenchmike Před 2 lety +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

  • @980616
    @980616 Před rokem

    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.

  • @hmx21
    @hmx21 Před 3 lety +11

    Bro Lex talks like he's a supervillain giving his final speech.

  • @ilkinq.8646
    @ilkinq.8646 Před 3 lety +3

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

  • @trejohnson7677
    @trejohnson7677 Před 2 lety

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

  • @user-or7ji5hv8y
    @user-or7ji5hv8y Před 3 lety +2

    Does it not depend on your goals?

  • @d3thtr4p10
    @d3thtr4p10 Před 3 lety +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.

  • @burner918
    @burner918 Před 3 lety +74

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

    • @capekraken2672
      @capekraken2672 Před 3 lety +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 Před 2 lety +2

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

    • @HELLOWORLD-ix9eg
      @HELLOWORLD-ix9eg Před 2 lety +2

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

    • @jazzyniko
      @jazzyniko Před 2 lety

      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 Před 2 lety +5

      @@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.

  • @karlkastor
    @karlkastor Před rokem

    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

  • @phen2841
    @phen2841 Před 3 lety

    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.

  • @abhijeetdey
    @abhijeetdey Před 2 lety +24

    "everyone should learn" part of the title really grinds my gears.

    • @InformaticageNJP
      @InformaticageNJP Před 2 lety

      Everyone involved with computer science and programming...

    • @victornascimento4580
      @victornascimento4580 Před 2 lety +1

      @@InformaticageNJP Maybe not even in those ecosystems. Haskell? I get it... dude is a machine but let's be reasonable.

    • @InformaticageNJP
      @InformaticageNJP Před 2 lety

      @@victornascimento4580 I am not a machine, I studied the same stuff..

    • @victornascimento4580
      @victornascimento4580 Před 2 lety +1

      @@InformaticageNJP Yea I'm studying that stuff too, but its not necessary. Especially with all the other crap you have to learn.

    • @InformaticageNJP
      @InformaticageNJP Před 2 lety

      @@victornascimento4580 I talking about a computer scientist again..
      Maybe u wanna be a web developer or something like that

  • @botfantasies6229
    @botfantasies6229 Před 3 lety +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 Před 3 lety +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.

  • @richardbenes9
    @richardbenes9 Před 3 lety

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

  • @socaljusticewarrior558
    @socaljusticewarrior558 Před 3 lety +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

  • @carloscubas2824
    @carloscubas2824 Před 3 lety +7

    Im the first one to think that Lex with a shaved head will be the perfect agent 47?

    • @mennovanlavieren3885
      @mennovanlavieren3885 Před 3 lety +1

      No, this topic has been in the comment section before. Not by me though.

  • @rmarinero
    @rmarinero Před 3 lety +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 Před 3 lety +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 Před 3 lety +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.

  • @milominderbinder6209
    @milominderbinder6209 Před 3 lety +1

    Guys, What language will you suggest to a complete outsider from humanities to get a feel of what computer programming is all about?

    • @nekdo9590
      @nekdo9590 Před 3 lety

      probably python, that is the most universal one

  • @johnharrington4205
    @johnharrington4205 Před 3 lety +1

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

  • @Lucretia9000
    @Lucretia9000 Před 3 lety +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?

  • @mcorleone77
    @mcorleone77 Před 3 lety +8

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

  • @brandonbarash9177
    @brandonbarash9177 Před 2 lety

    I’m just starting out and eventually want to make my way into programming hardware…any advice on the languages I need to focus on the most?

  • @xMPGx
    @xMPGx Před 5 měsíci

    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

  • @hanabimock5193
    @hanabimock5193 Před 3 lety +8

    He just described what we learnt in electrical engineering.

  • @justinlynch6691
    @justinlynch6691 Před 3 lety +3

    He just cited a lifetime of work for most people

  • @hellsalve017196
    @hellsalve017196 Před 2 lety +1

    George hotz, the legend

  • @saidrahal
    @saidrahal Před 2 lety

    so you have to study maths and an engineer carreer in order to proper manage these incredible programing languages?

  • @bryanurizar
    @bryanurizar Před 3 lety +8

    I’m gonna learn C and then Assmebly. I’ll report back once I have.

    • @tallon3925
      @tallon3925 Před 3 lety +2

      Good luck

    • @stompinknowledge3968
      @stompinknowledge3968 Před 3 lety +2

      A week later, how's it going?

    • @bryanurizar
      @bryanurizar Před 3 lety

      @@stompinknowledge3968 It's going well - decided on using 'The C Programming Language'! Got a long way of course, but really enjoying the 'low levelness' of C!

    • @bryanurizar
      @bryanurizar Před 3 lety

      @Николай Аверин No, I’ve started a company called apostrophe ai.

    • @stompinknowledge3968
      @stompinknowledge3968 Před 3 lety

      @@bryanurizar Great that you're committing. What are you using for learning resources? And what's this business 'apostrophe ai' all about?
      I'd like to learn C too, one day - until then, its vicarious living through the comment section.