CPANに上がってるモジュール、一つ一つの粒度が小さいから読みやすいし、ドキュメントもテストもしっかり揃ってて挙動を把握しやすくて、自分にとっては最高の教科書だったな
— magnoliak🍧 (@magnolia_k_) 2021年1月7日
今でも他の言語で分からない時に同じ目的のPerlモジュールを見る事があるし
自分が学んだ頃の、時代的なものもあるけど、今でもPerlのモジュールは粒度が小さく、ドキュメント、テストがしっかり用意されているので、参考にするにはちょうど良いと思っている。
ScalaのScalatraっていうWAFのメンテナンスに参加しているんだけど、HTTPプロトコルだったり、Webのお作法的なところが分からないことが有ったら、たいていPlackか、Rackのソースを見て理解するところから始める、みたいなことしてる
— magnoliak🍧 (@magnolia_k_) 2021年1月6日
とはいえ、今更新しくPerlを学ぶか?という話は有るので、身近な人が教えてくれる言語をまずは選んだ方がいい。
あと、現代的な言語を学ぶ上では、その言語で使えるテスティングフレームワークをなるべく早く覚えると良い。アサーションで書く、「どう動いて欲しいか」という意図が明示的に書けるようになった段階で、コーディングを学んだと言えると思う。
最初の頃って、自分でも「どう動いて欲しいのか」という所があいまいなまま書いていることが有って、動いてみて初めて「あぁ、これだ」と思うことが有ったのだけど、今なら早いうちからテストを書くことでそこに近づけると思う。
おすすめは「テスト駆動開発」に出てくるお題を、書籍で取り扱っているJavaやPython以外の言語で試してみること。
最初は驚くくらい書けない。
写経と、自分でゼロから書くのでは全然違うので、まずその感覚が比較的短いコードで理解できる。
分からなくても、とりあえず元のお題の通りにJavaやPythonで動かしてみれば、「どう動くのが意図通りなのか」という正解がすぐに分かる。
そこで慣れてきたら、やはり他の言語で書かれたプログラムを移植したり、ログのフィルタとか、JSONの単純なパーサーみたいに比較的小さなコードで実現できるものを書くといいと思う。
その先は、たくさんコードを読んで、たくさん書いて、ときどき良いプラクティスが書かれた本を読んで、またコードを書いて…の繰り返し。
例えばOSSのissueを勝手に解決するPRをどんどん書いてみるとかも良い。特に作りたいものが思い浮かばなくても生きたお題がそこにたくさん用意されているのだから。