Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

GopherのMakefile愛はどこからきているのか教えてほしい #fukuokago/Go...

quiver
October 23, 2024

GopherのMakefile愛はどこからきているのか教えてほしい #fukuokago/Gophers love Makefile

quiver

October 23, 2024
Tweet

More Decks by quiver

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 2 • 名前 ◦ よしだ じょうじ • 福岡歴 ◦

    去年の9⽉から(関⻄→関東→󰎲→福岡) • 普段の業務 ◦ クラスメソッド(株)AWS事業本部ソリューションアーキテクト • 会社ブログ ◦ https://dev.classmethod.jp/author/quiver/ • プログラミング ◦ SWEではないです ◦ ⺟国語:Python ◦ Goスキルレベル:Hello Worldをコピペで動かせる程度 • X ◦ @vevnica
  2. Make(Makefile)の⽣い⽴ち 16 • 1976年 Bell Labs発祥 • Bell Labs =

    UNIXの発祥地 • 作者は Stuart Feldman • 2003年にMakeの作者としてACM Software System Award受賞 ◦ Stuart Feldman is the creator of the Unix program make which he authored while working at Bell Labs. Make was the first program of its kind to automate the compilation and installation of computer programs on Unix-like systems. ◦ https://www.facesofopensource.com/stuart-feldman/ • 当時としては画期的 ◦ It began with an elaborate idea of a dependency analyzer, boiled down to something much simpler, and turned into Make that weekend. Use of tools that were still wet was part of the culture. Makefiles were text files, not magically encoded binaries, because that was the Unix ethos: printable, debuggable, understandable stuff. ◦ Stuart Feldman, The Art of Unix Programming, Eric S. Raymond 2003
  3. Goの⽣い⽴ち 17 • ⾔語設計者 = UNIX⽂化圏 ◦ Robert Griesemer ◦

    Rob Pike(ex. Bell Labs) ◦ Ken Thompson(ex. Bell Labs) • FAQから ◦ Robert Griesemer, Rob Pike and Ken Thompson started sketching the goals for a new language on the white board on September 21, 2007. ◦ https://go.dev/doc/faq
  4. Makefile/JSON/YAMLを並べる 18 JSON(c.a. 2000) YAML(c.a. 2000) # Variables CC =

    gcc TARGET = app .PHONY: all clean # Default target all: $(TARGET) $(TARGET): main.o $(CC) -o $(TARGET) main.o main.o: main.c $(CC) -c main.c clean: rm -f *.o $(TARGET) Makefile(1976) { "key": "val", "num": 123, "arr": [ 1, 2, 3 ], "bool": true } key: val num: 123 arr: - 1 - 2 - 3 bool: true キモカワ?構⽂
  5. Ninja x 1名(技術選定のみ) 28 • https://ninja-build.org/ • C++製 • Makeっぽい

    • Chromiumの開発体験から⽣まれた ◦ https://neugierig.org/software/chromium/notes/2011/02/ninja.html