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

แชร์
ฝัง
  • เผยแพร่เมื่อ 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 TH-cam channel
    - Twitter: / lexfridman
    - LinkedIn: / lexfridman
    - Facebook: / lexfridmanpage
    - Instagram: / lexfridman
    - Medium: / lexfridman
    - Support on Patreon: / lexfridman
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 1K

  • @timothy6966
    @timothy6966 11 หลายเดือนก่อน +528

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

    • @dzienisz
      @dzienisz 10 หลายเดือนก่อน +1

      XD

    • @Massenko
      @Massenko 10 หลายเดือนก่อน +11

      Yeah wtf

    • @long-live-linux
      @long-live-linux 10 หลายเดือนก่อน +10

      As an English learner, I doubted my ears lol

    • @david88va
      @david88va 9 หลายเดือนก่อน +4

      Yeah I'm so disappointed w myself lol

    • @greglane501
      @greglane501 9 หลายเดือนก่อน +2

      Like who does that?

  • @arsnakehert
    @arsnakehert 3 ปีที่แล้ว +2522

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

    • @mohamadeen
      @mohamadeen 3 ปีที่แล้ว +81

      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 ปีที่แล้ว +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 3 ปีที่แล้ว +13

      The flex

  • @NytronX
    @NytronX 3 ปีที่แล้ว +1648

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

    • @frankcastillo2855
      @frankcastillo2855 3 ปีที่แล้ว +113

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

    • @blackraider777
      @blackraider777 3 ปีที่แล้ว +40

      @@frankcastillo2855 he had nam flashback right there

    • @mennovanlavieren3885
      @mennovanlavieren3885 3 ปีที่แล้ว +4

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

    • @blackraider777
      @blackraider777 3 ปีที่แล้ว +10

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

  • @omarnomad
    @omarnomad 3 ปีที่แล้ว +874

    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

  • @dustincadelina8941
    @dustincadelina8941 3 ปีที่แล้ว +1114

    this is podcast is like joe rogan for nerds.

    • @wiskasIO
      @wiskasIO 2 ปีที่แล้ว +19

      More controversial sometimes!🤓🤣

    • @Centori88
      @Centori88 ปีที่แล้ว +1

      😂😂😂😂😂

    • @JS-bk4pn
      @JS-bk4pn ปีที่แล้ว +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

      geeks not nerds😂😂

    • @xjar215x
      @xjar215x ปีที่แล้ว

      @@JS-bk4pn shut it nerd

  • @hackerculture7391
    @hackerculture7391 3 ปีที่แล้ว +361

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

  • @hnasr
    @hnasr 3 ปีที่แล้ว +401

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

    • @younisamedi
      @younisamedi 2 ปีที่แล้ว +7

      Another super TH-camr 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.

  • @aarongzmn
    @aarongzmn 2 ปีที่แล้ว +456

    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 ปีที่แล้ว +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 ปีที่แล้ว

      +1

    • @ilikecommenting6849
      @ilikecommenting6849 ปีที่แล้ว +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

  • @pfschuyler
    @pfschuyler 3 ปีที่แล้ว +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 3 ปีที่แล้ว +2

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

  • @bruterasta
    @bruterasta 3 ปีที่แล้ว +351

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

    • @glircom
      @glircom 3 ปีที่แล้ว +26

      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 ปีที่แล้ว +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 3 ปีที่แล้ว +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.

  • @10livesimple19
    @10livesimple19 3 ปีที่แล้ว +23

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

  • @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 ปีที่แล้ว +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 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)

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

  • @256k_
    @256k_ ปีที่แล้ว +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 หลายเดือนก่อน

      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.

  • @Theodore_Pugin
    @Theodore_Pugin 3 ปีที่แล้ว +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 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:)

  • @NeerajGupta-fy1bv
    @NeerajGupta-fy1bv 3 ปีที่แล้ว +334

    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 ปีที่แล้ว +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 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.

  • @giovannipezzin5707
    @giovannipezzin5707 3 ปีที่แล้ว +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

  • @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 หลายเดือนก่อน

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

  • @laszlosarosdi5417
    @laszlosarosdi5417 3 ปีที่แล้ว +89

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

    • @stoicforall
      @stoicforall 3 ปีที่แล้ว +4

      Hahahaha! Yes, me too.

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

  • @abdulelahsm
    @abdulelahsm 3 ปีที่แล้ว +33

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

  • @grkuntzmd
    @grkuntzmd 5 หลายเดือนก่อน +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 หลายเดือนก่อน +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.

  • @g.alexander1807
    @g.alexander1807 ปีที่แล้ว

    Love your videos mate ! great interviews!

  • @MrTecphdb
    @MrTecphdb 3 ปีที่แล้ว

    Great man, awesome episode 👏🏻👏🏻👏🏻

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

  • @RamZThaMarine
    @RamZThaMarine 3 ปีที่แล้ว +85

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

  • @kalebyeneneh7693
    @kalebyeneneh7693 6 หลายเดือนก่อน +1

    I love this podcast so much
    Great job

  • @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 6 หลายเดือนก่อน

      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.

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

  • @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?

    • @nakedsquirtle
      @nakedsquirtle 3 ปีที่แล้ว +1

      @@pery1952 nah

    • @pery1952
      @pery1952 3 ปีที่แล้ว +9

      @@nakedsquirtle If not Lex then definitely George.

    • @d8J47QpR
      @d8J47QpR 3 ปีที่แล้ว +8

      @@pietart3596 is George outside?

  • @iJamesGuo
    @iJamesGuo 3 ปีที่แล้ว +1

    Wow, the way of thinking is revealing!

  • @LukeAvedon
    @LukeAvedon 6 หลายเดือนก่อน

    Such great advice!

  • @JorgeRamos-xw6dy
    @JorgeRamos-xw6dy 2 ปีที่แล้ว +16

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

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

    • @Alchemistbtw
      @Alchemistbtw ปีที่แล้ว

      what limitations?

    • @Bratek193
      @Bratek193 ปีที่แล้ว +3

      @@Alchemistbtw ADHD

    • @Alchemistbtw
      @Alchemistbtw ปีที่แล้ว

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

    • @lexxxsuperior
      @lexxxsuperior 5 หลายเดือนก่อน

      Are you sure you have ADHD? @@Bratek193

  • @KJBtheMosFett
    @KJBtheMosFett 3 ปีที่แล้ว

    Agreed.... especially working on embedded stuff.

  • @olitonottero7620
    @olitonottero7620 ปีที่แล้ว

    super helpful thank you

  • @burner918
    @burner918 3 ปีที่แล้ว +74

    *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 2 ปีที่แล้ว +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.

  • @folsdaman
    @folsdaman 3 ปีที่แล้ว +45

    Damn someone finally mentioned HDLs.

    • @BitwiseMobile
      @BitwiseMobile 3 ปีที่แล้ว +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 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.

  • @MrNickBreen
    @MrNickBreen 3 ปีที่แล้ว

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

  • @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 หลายเดือนก่อน

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

    • @bondjam8
      @bondjam8 หลายเดือนก่อน

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

  • @realchrishawkes
    @realchrishawkes 3 ปีที่แล้ว +77

    Nice video

  • @matteopennacchietti9831
    @matteopennacchietti9831 3 ปีที่แล้ว +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 3 ปีที่แล้ว

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

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

  • @alicechained1
    @alicechained1 3 ปีที่แล้ว

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

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

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

  • @tommychong4prez
    @tommychong4prez ปีที่แล้ว

    Phenomenal energy, Lex.

  • @attilabpc542
    @attilabpc542 ปีที่แล้ว +1

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

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

  • @gandalfgrey91
    @gandalfgrey91 3 ปีที่แล้ว +207

    “Code in assembly”
    Take your meds

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

  • @Kniffel101
    @Kniffel101 2 ปีที่แล้ว

    Yup, George is spot on with that.

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

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

  • @grenadier4702
    @grenadier4702 8 หลายเดือนก่อน +1

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

  • @wilhelmsarasalo3546
    @wilhelmsarasalo3546 ปีที่แล้ว

    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?

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

  • @peterebode
    @peterebode 3 ปีที่แล้ว +11

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

  • @alpineflauge909
    @alpineflauge909 3 ปีที่แล้ว +1

    fire, thanks

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

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

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

  • @macrosense
    @macrosense 3 ปีที่แล้ว +1

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

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

  • @keffbarn
    @keffbarn 3 ปีที่แล้ว +186

    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

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

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

  • @ElliotRock
    @ElliotRock 3 ปีที่แล้ว +6

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

  • @schuremtheworm688
    @schuremtheworm688 3 ปีที่แล้ว +3

    Learning VHDL makes you appreciate any other language other than assembly

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

  • @trejohnson7677
    @trejohnson7677 2 ปีที่แล้ว

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

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

  • @chishikiendeavourer8663
    @chishikiendeavourer8663 11 หลายเดือนก่อน +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

  • @johnharrington4205
    @johnharrington4205 3 ปีที่แล้ว +1

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

  • @alexwilliams4781
    @alexwilliams4781 11 หลายเดือนก่อน

    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

  • @ilkinq.8646
    @ilkinq.8646 3 ปีที่แล้ว +3

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

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

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

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

  • @TrooperJet
    @TrooperJet 2 ปีที่แล้ว +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

  • @hmx21
    @hmx21 3 ปีที่แล้ว +11

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

    • @magne6049
      @magne6049 2 ปีที่แล้ว

      Lex Luthor!

  • @gogyoo
    @gogyoo ปีที่แล้ว

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

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

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

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

  • @frenchmike
    @frenchmike 2 ปีที่แล้ว +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

  • @za7304
    @za7304 ปีที่แล้ว

    Respect for saying c and assembly

  • @hanabimock5193
    @hanabimock5193 3 ปีที่แล้ว +8

    He just described what we learnt in electrical engineering.

  • @carloscubas2824
    @carloscubas2824 3 ปีที่แล้ว +7

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

    • @mennovanlavieren3885
      @mennovanlavieren3885 3 ปีที่แล้ว +1

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

  • @synthlord3878
    @synthlord3878 2 ปีที่แล้ว

    I came to this EXACT combo on my own! Validation

  • @richardbenes9
    @richardbenes9 3 ปีที่แล้ว

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

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

  • @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?

  • @xMPGx
    @xMPGx 5 หลายเดือนก่อน

    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

  • @milominderbinder6209
    @milominderbinder6209 3 ปีที่แล้ว +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 3 ปีที่แล้ว

      probably python, that is the most universal one

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

  • @justinlynch6691
    @justinlynch6691 3 ปีที่แล้ว +3

    He just cited a lifetime of work for most people

  • @saidrahal
    @saidrahal 3 ปีที่แล้ว

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

  • @user-or7ji5hv8y
    @user-or7ji5hv8y 3 ปีที่แล้ว +2

    Does it not depend on your goals?

  • @abhijeetdey
    @abhijeetdey 3 ปีที่แล้ว +24

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

    • @InformaticageNJP
      @InformaticageNJP 3 ปีที่แล้ว

      Everyone involved with computer science and programming...

    • @victornascimento4580
      @victornascimento4580 3 ปีที่แล้ว +1

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

    • @InformaticageNJP
      @InformaticageNJP 3 ปีที่แล้ว

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

    • @victornascimento4580
      @victornascimento4580 3 ปีที่แล้ว +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 3 ปีที่แล้ว

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