2021/01/15
プログラミング言語その8【C】

Cコンパイラのセルフホストまで書いたから、C書いたことあるってことでいいんだろうけど、セルフホストのために特定の機能を「使わない」という意思決定をいくつかしてるわけで、むしろ全然C書いてない気持ちのほうが大きい。他には、メモリ管理をほぼ捨ててるからfreeしたことない。「この構造体は関数内でしか使わないからヒープにアロケートしなくていいね」みたいなのはメモリ管理と言えなくもないか。Cコンパイラを書くというのはCを知るということだから、ある意味ではKotlinよりCのこと知ってるのかもしれない。いろいろ知らないと書けない言語と、いろいろ知らなくても書ける言語を比べても仕方ないのだけど、書ける感・書いた感の得られ方がかなり変わってくるのはちょっと面白い。

その体感を支えてそうな個人的な要因としては、ちゃんとC言語の勉強してない、というのもありそう。書きながら学んでいったほぼ唯一の言語のはず。BNF眺めてたら知らないCの仕様に気づいたのは楽しい体験だった。

セルフホストにもいろいろあるけど、プリプロセッサはgcc任せで、libcはglibcのバイナリを使いつつ、プリプロセス後のlibcヘッダファイルからも逃げて独自の扱いやすいヘッダファイルを作ったから、おそらくセルフホストの中では最も簡単な部類で、libcにもうちょっと向き合えばC書いた感に繋がったかもしれない。コードを見返しながらそのあたりの状況をおさらいしてたら、libcのコードは一部書いてもいいけど、プリプロセッサは興味わかない、という気持ちを掘り起こした。まあ「Cが扱ってる問題領域に興味はあってもC自体には興味無い」ということなんでしょうね。プリプロセッサがCの仕様の一部かどうかは覚えてないけど。

static local variableって言えばいんですかね、あれ好き。

日付
タイトル

2026/03/14
読んだ本〜2026冬
2026/03/05
聴いてるポッドキャスト
2026/01/30
レンダリング?
2026/01/27
Live
2026/01/26
レンダリング!
2026/01/13
2025年まとめ
2025/09/23
読んだ本〜2025夏
2024/07/24
健康er
2024/02/10
健康
2023/05/19
喪/2
2023/04/24
コンサル
2023/02/01
それはそう
2022/12/17
2022/06/11
動かないもの
2022/06/05
スタイル
2022/04/23
JSX as data
2022/04/08
数学
2021/12/18
Activeな話
2021/09/05
Goのmultiple ABI
2021/07/31
『Goならわかるシステムプログラミング』
2021/07/28
ここにはタイトルが入ります
2021/01/25
これは日記ではない
2021/01/24
修行
2021/01/23
Considered Harmful
2021/01/22
雑感オブSwing
2021/01/21
雑感オブAndroid
2021/01/20
雑感オブiOS
2021/01/19
プログラミング言語その9【Groovy】
2021/01/18
1回休み
2021/01/17
会社を作る
2021/01/16
外国語
2021/01/15
プログラミング言語その8【C】
2021/01/14
プログラミング言語その7【OCaml】
2021/01/13
to be continued
2021/01/12
プログラミング言語その6【Kotlin】
2021/01/11
プログラミング言語その5【Swift】
2021/01/10
プログラミング言語その4【TypeScript】
2021/01/09
プログラミング言語その3【JavaScript】
2021/01/08
Comme d'habitude
2021/01/07
プログラミング言語その2【Java】
2021/01/06
プログラミング以前【Lisp】
2021/01/05
プログラミング言語その1【Objective-C】
2021/01/04
言語処理系入門
2021/01/03
ブログのようなもの
2021/01/02
Next.jsとPHPと私
2021/01/01
新年