Learning New Programming Languages | Brian Kernighan and Lex Fridman

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ก.ค. 2020
  • Full episode with Brian Kernighan (Jul 2020): • Brian Kernighan: UNIX,...
    Clips channel (Lex Clips): / lexclips
    Main channel (Lex Fridman): / lexfridman
    (more links below)
    Podcast full episodes playlist:
    • Lex Fridman Podcast
    Podcasts clips playlist:
    • Lex Fridman Podcast Clips
    Podcast website:
    lexfridman.com/ai
    Podcast on Apple Podcasts (iTunes):
    apple.co/2lwqZIr
    Podcast on Spotify:
    spoti.fi/2nEwCF8
    Podcast RSS:
    lexfridman.com/category/ai/feed/
    Brian Kernighan is a professor of computer science at Princeton University. He co-authored the C Programming Language with Dennis Ritchie (creator of C) and has written a lot of books on programming, computers, and life including the Practice of Programming, the Go Programming Language, his latest UNIX: A History and a Memoir. He co-created AWK, the text processing language used by Linux folks like myself. He co-designed AMPL, an algebraic modeling language for large-scale optimization.
    Subscribe to this TH-cam channel or connect on:
    - Twitter: / lexfridman
    - LinkedIn: / lexfridman
    - Facebook: / lexfridman
    - Instagram: / lexfridman
    - Medium: / lexfridman
    - Support on Patreon: / lexfridman
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 102

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

    I got to see Kernighan speak during college. Had him sign my copy of the "C Programming Language" too. So cool to meet him.

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

      You met Mr. K 👍. lord of C. oh how lucky and wonderful. Happy and jealous 😁. Have Great day Best of luch on whatever you do. TC.

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

      $800, what do you say?

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

    "Hello world" is haunting me....
    Doesn't matter the language, it always begins with it.

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

      Just like led blinking if you are working with a new hardware.

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

      @@hofandor yeah

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

      Well, not if you use esoteric languages

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

    Learn at least a language from every programming paradigm (procedural, object oriented, functional, logic), and then will be easier picking new languages. A language usually comes down to a paradigm, which is just a way of thinking, once you are able to think "in that way", you can practically pick any language under that paradigm without any problem.

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

      Rust, Java, Lisp, Prolog, and Python should cover my bases. Is JS procedural?

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

      @@mohdig9 More specifically, it's prototype based. My personal recommendation is, pick a "pure" language to learn a paradigm well, since many of the languages are actually multi paradigm and a pure language will somehow _force_ you to think in the paradigm (like for example Haskell).

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

      @@TheMinchio Thanks Luis. What language would you recommend for each paradigm?

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

      @@ArrKayLondon Start learning C and Scheme. One will give you a nice foundation into procedural programming with some _low level_ taste, and the other will help you to introduce a more functional paradigm with some nice CS concepts. Then move to Haskell and Smalltalk for purely functional and object oriented languages, after that you already should have a nice base for: imperative/procedural, objected oriented and functional/declarative programming, imho you are all set for any other language out there. (You can also learn some type of assembly that always help to think more in terms of the "machine"). Also, I tend to recommend _old_ languages to actually learn, because curiously enough, most of new languages are just descendants or take a lot of ideas from them, so for example, you start learning JavaScript, you will find a mix of C+Smalltalk+Scheme there, you move to Rust, you can find a mix of C+Haskell , and so on.... :)

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

      How does a language connect to the hardware? this is the bridge that I would like to understand more

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

    Great watch. I need to get myself one of these to relive the good old days.

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

    I have this feeling now. I am just getting comfortable with JavaScript and React but I want to learn Python, Golang, Dart etc. There's always that shiny new language, framework or library sitting there waiting to be learned and used.

  • @MohitSharma-hy9st
    @MohitSharma-hy9st 3 ปีที่แล้ว +24

    2:41 the watch that Brian is wearing says it all

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

    1:55 "I did it in Haskell, it took several weeks" LMAO. That language gave me such a hard time, just to scratch the surface. I guess it's hard to unlearn programming prior to learn Haskell.

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

      i will never be able to use a dynamically typed language again.

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

      It's ironic that I find functional composition plus lazy evaluation in Haskell to be conceptually close to UNIX pipelines...

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

      @@pedrovasconcelos8260 Clojure has lazy infinite sequences & dynamic type system. Surprising things are "functions" (they implement the IFn interface), for example dictionaries! It was quite easy to transition to from Python, compared to Haskell. Functions aren't required to be pure but it is encouraged.

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

      Pedro Vasconcelos Yep, one of breakthrough moments I had with Haskell was basically just mimicking a complex Unix pipeline. Quite a few concepts fall into place when you think of it that way.

    • @Jack-sy6di
      @Jack-sy6di 3 ปีที่แล้ว +1

      @@unclerojelio6320 But like with UNIX pipelines, often you find yourself restricted by them and have to bust out a full shell script with variables and loops. Some problems just aren't most naturally modelled as "do this to the result of doing this to the result of doing this to..."

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

    Would be interesting to know what his example is I wonder if I could get it to sub 15 lines in Clojure without code golf

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

    what project should one try to do whenever learning a new programming language

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

    Rust has quickly become my favourite language

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

    exactly, you have to have something you want to do first

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

    Yes.

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

    Been coding in js (react and node ) and java (spring boot) and swift for about 3 years. University made me hate c and c++ eventho i know they are wonderful languages

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

    I'm way out of date, so I suppose things might have changed, but in my experience, once you know one the others come easier and easier. Regular languages work that way, too; the more languages you know, the easier it is to learn a new one.

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

      I would push back slightly in terms of functional programming. Unless if you're using Java or C++ functional programming, going from C -> Haskell is a different way of thinking about things that takes a bit to get used to. Or hell, even going from Java -> Assembly can be much the same. It's different paradigms I believe.

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

      it is true. most languages are just slight variations on the older languages, they share a lot of concepts.

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

      @@janmatula1534 I read that "they are shallow concepts" and thought you meant they don't bring much new to the table since they are so similar to pre-existing languages :)

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

      Niko Nyrhila well they really dont. most languages are just new combinations of the same old concepts.

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

    Kerninghan dissing Rust is what I needed to hear. The docs and community are still subpar. I've tried to write rust like 7 times over 6 years, it's always been a time consuming mess. Even Haskell was easier for me to study, and that's saying something

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

      Correct, i dont know why rust is the most loved language according to SO..it Just a pure mess.. don't get me start with lifetime annotations

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

      I think that if you like certain language its becasue you think in similiar pattern that language uses

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

      i had a decent time studying rust from the book. the same for haskell.

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

      he dissed to two best languages :)

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

      But he didn't "diss" Rust. He said that, at the time, the documentation and examples tended to be out of date. This clearly means that he tried it before, or right after 1.0
      This was a long time ago, and the APIs have stabilized since then. He then says that he'd like to revisit the language, which might mean he is aware of the different situation the language is now on.

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

    Julia is Awesome

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

    Rust has a lot of growth potential!

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

      So is Julia

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

      worship in the church of C

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

      @@saulgoodman5662 it’s well deserved worship though

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

      One day, someone will invent Rust++ and then the world will end

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

    All the top languages you can learn the basics quickly if you already know a language unless it like assembly or brainfuck

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

    rust fanboys 👀

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

      Lesgoooooo

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

      Stimpee has entered the channel

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

      We here

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

      Rust forever :)

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

    Nice

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

    Learn Assembly, then C then C++. The only way you understand how computing really works and see what language you really need to learn after. But then optimization can only be done usually in C or Assembly you'll be busy with that where pay is higher usually. Maybe you should then improve Python because it's just soo sloowwww....The hardcore programmers usually works in C or C++ where you can work on OS, compilers drivers, GPU computations, game engines, compute libraries....that's at the heart of computing.

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

    I did projects in C, C++, C#, python, java, Pascal, basic, php, assembler for x51 and AVR processors and VHDL. And I have to say, that If I was to write something right now, I would be confident only with C and C#. I somehow find it hard to remember all the syntax and quirks that some languages have, especially if I don't use that language for a longer time (and I don't, because I work as hardware engineer).

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

      Yeah, I too would make the jump from C straight to C#. C++ is so bloated nowadays that it's better to simply use multiple separate languages on a project than do it all in C++.

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

      i would probably go with rust (after learning python, java, kotlin, haskell, idris, prolog, rust, c, x86_64)

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

    ☑️✅

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

    Swift has a very bright future ahead of it.

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

      It's locked-in to Apple devices so not really.

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

      Noface this is incorrect. It’s fully open source, and general purpose. Swift is already officially supported on Linux and official support for Windows is about to be released with Swift 5.3 (5.2 is current release as of 7-30-2020).

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

    Everything in the rust world changes so rapidly 😆

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

    C Will Never Loose It's Place Until Whenever We Are Fully In To Quantum Computing. Easy To Program With Python And Can Produce Great Stuff With Minimal Effort, Thanks To It's Huge Collection Of Libraries.

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

    He has a Casio watch you can get at Walmart lol

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

      It's a sign of intelligence. I also have a Casio watch. It cost about 20 bucks and it's more accurate than a Rolex Peppermint Oyster.

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

      @@vapourmile I recognize the watch because I wore a Casio just like it lol. I gave it away to a friend and replaced it with a more expencive Timex

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

      @@noomade
      That idiotic remark hasn't overturned what I just said.
      You don't need to be able to tell the time at all.

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

    Have learned C/C++, Go, Rust and Python.. but no language is replacing Java in my mind.

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

      C#?

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

      Some says kotlin is the new java: But hey, i’m nobody

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

      Tried scala, Kotlin or clojure ?

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

      Java is for noobs

  • @JoeJoe-qy2bb
    @JoeJoe-qy2bb 3 ปีที่แล้ว +1

    Anyone Julia? 🤔

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

      Julia is nice, but I prefer just using Cython, because it gives you access to the ecosystem of both Python and C! Basically, you can write nicely abstracted Python, and only turn to Cython for the most performance critical sections.

    • @JoeJoe-qy2bb
      @JoeJoe-qy2bb 3 ปีที่แล้ว +1

      Thanks for brief intro to Cython (actually never heard of it before , though i've used python before). Gonna take a look into it (:

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

    It seems a few people weren't particularity engaged by this video but I found it quite poignant, especially Brian's point at the end about it being fairly pointless learning a language if you aren't going to do anything with it.
    By extension I realise in my job my knowledge of java and C is pretty weak compared to what it could be. Even though I primarily use these languages, I hardly ever get to build anything new, or any kind of proper architectural projects. As a result it feels like my knowledge and skills in Java and C, and even programming in general has regressed a bit. The job seems to be all bug fixing and boiler plate coding here and there, never building anything truly meaty, from scratch. Pretty damning really.
    Probably need to get another job if I really want to push on, as I'm not sure I'd get much opportunity for that kind of work in my current job even if I really did push for it.

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

    /* RECURSIVE PROGRAMMING

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

    ?.

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

    Hear me out try elixir.

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

      skipmonday why is elexir gaining so much popularity recently? also, how would you approach learning it if you had to start learning it from scratch today?

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

    For me learning new programing languages is too easy iam eleven Currently and I Know C# python c++ c HTML java script and iam thinking of learning php

    • @quazar-omega
      @quazar-omega 3 ปีที่แล้ว +4

      Lol, html thrown in there is pretty funny

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

      Good for yah. Keep learning more.

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

      you sound like me when i was 11, yeah you can make a basic calculator in each of those languages, but i doubt you could make a GUI calculator in ANY of them, you should focus on one language at a time, also it doesn't add up, first off, HTML is a markup language not a programming language, and why would you learn HTML and not CSS? That is why I believe you know VERY little of ANY of those languages and are just full of yourself, focus on ONE language, for a year or so then go and learn something else.

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

      @@ergpopler413 I can make a nural Network in all of those languages

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

      @@turtle8558 dude, you can't make a neural network in HTML, HTML isn't even a programming language, please stop lying.

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

    Good grief more Kernighan videos, enough already. Talks a lot, but doesn't impart anything useful. Now if you want a history lesson regarding Unix or C, he is your man.