2021/01/07
プログラミング言語その2【Java】

書いたことある順とは言ったものの、次あたりから順番テキトーになりそう。

「Lisperの気持ちを分かるようになりたい」とプログラミング言語およびプログラマに興味をもった後、どこで偏見を仕入れてきたのか「いきなり関数型言語はアレなんでしょ?」ということでJavaの勉強をすることにした。まず、やさしさを掲げてる風の本が「引数」の読み方を教えてくれず(自分はどこかで知っていた)、そういう本を警戒するようになった。次に、分厚くて大きい翻訳本に手を出してみると、何も教えてくれない(分かってると分かる)系の本で悲しくなった。少なくとも読み物にはなっておらず、何一つ説明された気持ちになれなくて放り出した。

最終的に行きついたのが『Introduction to Programming Using Java』で、正確にはその6th Edition。アメリカのどこかの大学の先生が作ってるオンラインテキストで、ペーパーバック版だと700ページぐらいらしい。紙のページ数を先に知ってたら読まなかったかもね。目次はこんな感じ。

  • Chapter 1: Overview: The Mental Landscape
  • Chapter 2: Programming in the Small I: Names and Things
  • Chapter 3: Programming in the Small II: Control
  • Chapter 4: Programming in the Large I: Subroutines
  • Chapter 5: Programming in the Large II: Objects and Classes
  • Chapter 6: Introduction to GUI Programming
  • Chapter 7: Arrays
  • Chapter 8: Correctness, Robustness, Efficiency
  • Chapter 9: Linked Data Structures and Recursion
  • Chapter 10: Generic Programming and Collection Classes
  • Chapter 11: Advanced Input/Output: Streams, Files, and Networking
  • Chapter 12: Threads and Multiprocessing
  • Chapter 13: Advanced GUI Programming

「コンピュータというのはね」みたいなところから始まって、ずっと文章が楽しくて嬉しくて感動してた。タイトルにそのままあるように、これで(Javaというより)プログラミングに入門したんだと思う。これは本当に良い出会いだった。Free Programming Booksというページで見つけたことは記録から分かっているのだけど、このページをどうやって見つけたかは覚えていなくて、たぶん雑にググったんだと思う。

楽しくて嬉しくて感動したものの、Javaは何も書かないままiOSアプリの仕事をするようになって、その半年後ぐらいにAndroidアプリの仕事で初めてJavaを書くようになった。Javaはenumがね、enumが好きでした。なんで過去形なのか。JavaでIntersection Typesを書いたのはその最初のAndroid仕事だけで、今も時々あれは正解だったのか考えてしまう。豪快にアニメーションするボタンについて通常時とクラスを分けて描画関連の機能制限したらアニメーションからちらつきが消えて勝利した、その勝利への道すがらにIntersection Typesが自然と出てきた思い出として美化されているから強い。このまま額縁に飾っておきます。

enumもジェネリクスも、Objective-Cの反動で嬉しがってたんだろうね。さすがにこういうのは実際にプログラミング経験が無いと生じない感触っぽい。きっとプログラミング言語も制約と誓約で強くなるもので、念能力者以外には分からないことがあって、こういう体験のためにプログラミングに興味をもったはず。初心を忘れず、一喜一憂してこうな。

Swingの話もJavaの一部のような気がするけど、今日は疲れたからまた今度。

日付
タイトル

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
新年