Lecture 8: Metaprogramming (2020)

Поділитися
Вставка
  • Опубліковано 30 вер 2024
  • You can find the lecture notes and exercises for this lecture at missing.csail....
    Help us caption & translate this video!
    amara.org/v/C1...
  • Наука та технологія

КОМЕНТАРІ • 55

  • @DutchmanDavid
    @DutchmanDavid 4 роки тому +137

    I expected (C++?) metaprogramming, but got meta about programming instead.
    I'm OK with this.

  • @strmwalker
    @strmwalker 4 роки тому +45

    What I did not expect: the best beginner's guide to Make.

  • @jajajajam
    @jajajajam 4 роки тому +41

    This is the stuff I wish they taught at my university. I had to learn all of this the hard way on my own!

  • @ashwinkraghu1646
    @ashwinkraghu1646 4 роки тому +8

    Am I the only person liking these lectures before watching them?
    Thank You Jose, Anish and Jon

  • @dmitrij34
    @dmitrij34 4 роки тому +15

    Is this
    Jon Gjengset? Immediately recognized that voice.

  • @phoehtaung
    @phoehtaung 4 роки тому +12

    Holy man.. its really the missing semester from my CS course in NTU

  • @ManuelBTC21
    @ManuelBTC21 4 роки тому +8

    13:00 If you got this far, the next thing you wan to do is "watch -c make". And you can have the pdf auto generate any time you edit and save your input files.

    • @fierles7989
      @fierles7989 3 роки тому

      echo "myfile" | entr -p make
      Only on edits instead of running randomly
      find . -type d -name \*.dat | entr -p make
      When any dat file in any subdir changes.
      In case you didn't know entr: execute a command when the files specified from stdin change 😉

  • @dinoscheidt
    @dinoscheidt 4 роки тому +13

    Senior dev here that expected something totally different (prototype mutation, passing functions etc.) but stuck here because the style of delivery is sooo nice. Very very nice - will refer people to this channel 🙏👏

  • @ralphwalters906
    @ralphwalters906 2 роки тому +1

    CMake stands for Cross_Platform Make. Has nothing to do with C compiler and associate libraries.

  • @srikrishna_97
    @srikrishna_97 4 роки тому +12

    Love his deathstar-pokemon shirt.

  • @lyingcat9022
    @lyingcat9022 4 роки тому +13

    Hands down my favorite programmer in the world!!! I aspire to be just like him.

    • @lyingcat9022
      @lyingcat9022 4 роки тому +3

      Hussain Bharmal his name is Jon Gjengset. He has an awesome little UA-cam channel that he does a lot of Rust programming. Check him out for sure!

  • @11vag
    @11vag 4 роки тому +17

    Again, again and again. UA-cam’s algorithm keeps doing a massive job. So glad I was introduced to this channel. Thank you for sharing.

  • @Flackon
    @Flackon 2 місяці тому

    If it's about the things surrounding programming, shouldn't it be Peri-programming? To me Metaprogramming suggests programming about itself...
    (source: My mother tongue is a Latin language)

  • @ilyboc
    @ilyboc 4 роки тому +1

    Why these lectures really feel like a "missing semester"

  • @vaibhavksh
    @vaibhavksh 4 роки тому +1

    What vim plugin is used to style and display extra info on the status bar here and also by other instructors?
    The vimrc file they provided doesn't add that.

  • @LLZ52
    @LLZ52 5 місяців тому

    Interesting that many people mentioned the great guidance on Makefile / make, however, that section only last for couple minutes.. Great lecture thu!

  • @DevduttShenoi
    @DevduttShenoi 11 місяців тому

    Finding Jon in random places on the internet

  • @dmsalomon
    @dmsalomon 4 роки тому

    Make is not good for very complex software? Uhh, Linux is built with Make and its doesn't really get more complex than that.

  • @metaltyphoon
    @metaltyphoon Рік тому

    🦀 🐐

  • @李双乐
    @李双乐 2 місяці тому

    Extremely helpful!

  • @doubletoned5772
    @doubletoned5772 3 роки тому

    Why do we have to sloth through dull office work when the world has such interesting things in store? I am not a compsci grad, but the tech jargons and their logic are so well explained !

  • @gregorriegler
    @gregorriegler 4 роки тому

    thank you for your great content. when you're talking about CI, i think it would be necessary to explain where the term originated, and what it actually means. nowadays people think CI is a server or a build tool. No, it's a source code management strategy.

  • @scottnash70
    @scottnash70 4 роки тому

    Wonderful lecture, though I was also hoping to hear a little about the use of metadata in systems development and some thoughts on the pros and cons of metadata versus enumeration in code (e.g., flexibility versus performance.)

  • @nexovec
    @nexovec 4 роки тому +6

    So is CMake a meta-meta-programming tool then? :D

    • @davidjohnston4240
      @davidjohnston4240 4 роки тому +20

      No CMake is just a mistake.

    • @shpluk
      @shpluk 4 роки тому

      @@davidjohnston4240 I would say the devil, but yeah..

  • @rohitdhankar9100
    @rohitdhankar9100 3 роки тому

    get prof into top right corner in the vid

  • @Lexitivium
    @Lexitivium 4 роки тому

    "A tab and NOT 8 spaces..." So I conclude that your tab settings is set to 8... not 3 or 4 (as us normal software developers) - but 8...?? wut?

    • @joseduarte9823
      @joseduarte9823 4 роки тому

      In the case of Make what it really wants is "\t". You'll notice most editors standard rendering size for a tab in makefile is 8

    • @Lexitivium
      @Lexitivium 4 роки тому

      @@joseduarte9823 Not the editors I've used. They all have 4 for makefiles. 8 is just plain too wide. I know why it's so, visually separated, but it just looks terrible

  • @chakreshsingh
    @chakreshsingh 3 роки тому

    Very helpful. Thank you.

  • @pabloosorio6647
    @pabloosorio6647 4 роки тому +3

    I have been looking for a course like this a long time ago.
    I can not believe it is free.
    Thank you very much.

  • @imjavierpalma
    @imjavierpalma 2 роки тому

    Powerful lecture!

  • @beardymonger
    @beardymonger 4 роки тому +2

    First, thank you, great content!!
    Second, make needs tabs in the rules, literally a tab, spaces trigger error
    Third the orignal use-case for the touch command was to update the creation date for the file, file creation was secondary.

  • @tempvariable
    @tempvariable 3 роки тому

    thank you !

  • @nirnejak
    @nirnejak 4 роки тому

    Great lecture, very informative

  • @michaelkohlhaas4427
    @michaelkohlhaas4427 4 роки тому

    *You can do better than that!*

  • @yhaskell
    @yhaskell 4 роки тому +2

    I like joke about make not usable for big projects

    • @varkokonyi
      @varkokonyi 4 роки тому +1

      Was it a joke, or did you mean you can write super complex makefiles?

    • @ximalas
      @ximalas 4 роки тому +1

      @@varkokonyi Does FreeBSD count as a small project?

    • @LesterFD
      @LesterFD 4 роки тому +2

      you can also program photoshop in emacs. Does it mean emacs is made for large projects?

  • @siddharthgarg1985
    @siddharthgarg1985 4 роки тому +7

    Love from India. Thanks a lot as a computer science sophomore I found these lectures really amazing. Just a suggestion I think containerization and use of technologies like Docker would fit really well in this course in any future iterations. Also I personally would have wanted one .. Is there any resource you would recommend for properly understanding concepts underlying Docker and using it?

    • @TheSrishanbhattarai
      @TheSrishanbhattarai 4 роки тому +4

      I'm not sure if you've already stumbled upon it but this series does have a VM and Containers lecture.

    • @fhajji
      @fhajji 4 роки тому

      My thought exactly. Especially topics such as development containers, which lock the development environment (compilers, libraries, ...), are a perfect fit to this lecture. Btw, VSCode supports those now too, which is awesome.

  • @cybernessful
    @cybernessful 4 роки тому +4

    OK, the title is confusing and it is especially weird, because what you guys are talking about here has precise name: Build automation systems. This is how it is called and this is what industry meant by it. Yes, it is a form of metaprogramming, but only if you apply the term very broadly. In most cases by metoprogramming we mean a technique when software is manipulating with its code in runtime. Not some other's code, but it's own. So, things like Lisp macros or dynamic SQL are more relevant examples for Metaprogramming.

    • @fhajji
      @fhajji 4 роки тому

      Metaprogramming... I was expecting a talk about code generators, a la Lex, Yacc/Bison, etc. But this is good too.

    • @vvzen
      @vvzen 4 роки тому

      Well I like to think that as Aristotle called Meta-physics everything that stands after the physics (literally, as some say, since they appear later in his corpus of work), Meta-programming is everything that stands after programming. So for me the title choice was perfect.

  • @nzdeepak
    @nzdeepak 3 роки тому

    any student who is going to start an internship must go through these lectures.