Upgrade to Pro — share decks privately, control downloads, hide ads and more …

技術文書の中のサンプルコードについて諸々

 技術文書の中のサンプルコードについて諸々

kanazawa.rb#109のLT資料です。
https://meetup.kzrb.org/109/

842515eaf8fbb2dfcc75197e7797dc15?s=128

Satoru Takeuchi

September 18, 2021
Tweet

Transcript

  1. 技術文書の中の サンプルコードについて諸々 Sep, 18th, 2021 kanazawa.rb #109 LT Satoru Takeuchi

    twitter: satoru_takeuchi
  2. はじめに • これまで対外的にIT技術についての文書をたくさん書いてきた ◦ 単著「Linuxのしくみ」 ◦ Software Design誌の連載: 「Linuxのしくみ パワーアップ番外編」

    ◦ エンジニアHub: 「いま知っておきたい Linux」 ◦ その他Software Designの特集記事など • 文中のサンプルコードに対するご意見、それへの対策を共有
  3. 英語に対するご意見 • 具体的なコメント ◦ 英語を見るだけで読む気が失せる ◦ 文法などが微妙だと嫌 ◦ 📝 twitterで投票したら英語が無理という人は多かった

    • そうしていた理由 ◦ 日本人だけに見せるコードを書いたことがないことから来た癖。強い意味はない • 対策 ◦ メッセージやコメントはできるところは日本語にすることにした ▪ 📝 「日本語だとがイラつく」という声もある。正解は無い
  4. C言語に対するご意見 • 具体的なコメント ◦ 文法が洗練されていないので辛い ▪ 配列とポインタの差が曖昧とか「 .」と「->」の使い分けがめんどいとか諸々 ◦ とにかくポインタが無理

    ◦ 「.c」のファイルというだけで見る気を無くす • そうしていた理由 ◦ 10年以上カーネルプログラムなどで C言語ばかり使っていた名残 ◦ 低レイヤの説明には C言語を使うのが適切ということもある (後述) • 対策 ◦ できるところはPythonやGoで書き直すことにした ▪ 普及している&比較的読みやすい
  5. C言語のようなハードに近い言語でないとツラいとき • システムコールの説明に使いづらいことがある ◦ たとえばfork() syscallの説明時にGoは使いにくい ◦ Goのsyscallパッケージにfork()は存在しない ◦ (多分)並列処理用機能のgoroutineと共存がしんどい

    • メモリを直接扱いたいときに困ることがある ◦ ほとんどの言語はメモリアドレス空間を抽象化して隠している ◦ たとえばメモリのアライメントが必要な処理が面倒だとか • マイクロベンチをとりたいときに外乱要因となりうる処理が走ることがある ◦ ガベージコレクタなど
  6. おわり Any comments?