Lecture 8: Metaprogramming (2020)

Поделиться
HTML-код
  • Опубликовано: 12 сен 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

  • @strmwalker
    @strmwalker 4 года назад +44

    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!

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

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

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

  • @DutchmanDavid
    @DutchmanDavid 4 года назад +136

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

  • @11vag
    @11vag 4 года назад +17

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

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

  • @dmitrij34
    @dmitrij34 4 года назад +15

    Is this
    Jon Gjengset? Immediately recognized that voice.

  • @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 RUclips channel that he does a lot of Rust programming. Check him out for sure!

  • @phoehtaung
    @phoehtaung 4 года назад +12

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

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

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

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

  • @LLZ52
    @LLZ52 4 месяца назад

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

  • @srikrishna_97
    @srikrishna_97 4 года назад +12

    Love his deathstar-pokemon shirt.

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

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

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

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

  • @user-up6cz9zp1m
    @user-up6cz9zp1m Месяц назад

    Extremely helpful!

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

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

    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)

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

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

    Powerful lecture!

  • @nirnejak
    @nirnejak 4 года назад

    Great lecture, very informative

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

    Very helpful. Thank you.

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

  • @ilyboc
    @ilyboc 4 года назад +1

    Why these lectures really feel like a "missing semester"

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

    thank you !

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

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

  • @DevduttShenoi
    @DevduttShenoi 11 месяцев назад

    Finding Jon in random places on the internet

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

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

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

    get prof into top right corner in the vid

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

    🦀 🐐

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

  • @michaelkohlhaas4427
    @michaelkohlhaas4427 4 года назад

    *You can do better than that!*