※感想というよりもポエムです。
Perl(パール)と私の8年間
私がPerl(パール)を中心にプログラミングのことだけを書いてるブログがあるんですが、そのブログの一番古い記事が2010年です。
ということは、Perl(パール)とはかれこれ8年くらいの付き合いになる訳です。2010年から私はWEB屋だったんですが、「プログラミングを始める」ってなったときの選択肢としてはPHPやPerl(パール)が有力な候補でした。PHPは習得が簡単という事でWEB界隈でも人気が高かったです。またPerl(パール)はメールフォームなどのCGIに使われることが多く、当時ワードプレスよりも人気だったMovableTypeというCMSもPerl(パール)製だったからです。
「なんとなくPerl(パール)の方が硬派っぽい」という理由で、Perl(パール)を中心に独学していきました。それなりに自分の欲しいツールみたいなのは作れるようになって幸せなPerl(パール)ライフを送ってきました。
時は経ち、2018年。あの頃は想像もしてなかったんですが、WEBアプリを作るという仕事に巡りあった私は、右往左往しながらもそれなりのものを形にし、運用に載せました。ただ、振り返ってみるとプログラミングの基礎みたいなのが絶望的に足りてないなーと猛省し、新しく出版された『初めてのPerl(パール) 第7版』で基礎を固め直そうと本屋に足を運びました。
プログラミングは打ち込んで実行してナンボ
33時間。それが、この本をしっかり読んで動かせるスクリプトは全部動かして、練習問題も解いて、紹介されてるモジュールとかはmeta cpanでドキュメントに目を通して、という感じで読破するのにかかった時間です。長いような、短いような33時間でした。これまでにないくらい深く突っ込んで読んだので、Perl(パール)触り始めて8年経つけど、新発見がポロポロ出てきました。しかもバージョンが5.24になったから出てきた新発見じゃなくって、昔からある機能を知らなかっただけっていう。
同じ本の第3版を持っていて、何度も読み直してたんですが、どれだけテキトーに読み流していたのか痛感しました。すっごく当たり前のことですが、プログラミングは打ち込んで実行して、エラー修正して初めて挙動がわかる、っていうケースが多いです。読んだら大体意味わかるよーっていうものも、動かしてみたら「思ってたのと違った・・・」という経験が、ままあります。
初めてプログラミングを学習される方は、とにかく動かしてみましょう。コンパイルが必要ならコンパイルしましょう。で、魔改造しまくりましょう。飛躍的に理解度が増すと思います。
プログラミングを始めるとき、どの言語を選べばよいか?
どうせ勉強するなら「一生使えるスキルを効率的に学びたい」。そう思ってしまう気持ち、すごくわかります。だからプログラミングを始めるときも、「できるだけ簡単に学べて、すぐに役立てるのがいい」ってなりますよね。そういう背景があるからか、プログラミングを始めようという方はどのプログラミング言語を選べばいいかを迷ったりします。あまり役に立ちそうにないですが、私の見解を少々お伝えします。
ゴリゴリにPerl(パール)びいきな私ですが、「Perl(パール)から始めるのがベストだよ」とは言いません。というのも、結局プログラミング言語って何かを実現するための手段でしかないので、「自分が実現したいことのために最適なものを選ぶ」というのが最良だったりするからです。しかし、プログラミングのことよくわかってない状態で最適なものが選べるわけない、という現実が立ちはだかります。
私もこんな記事を書いていると、「Perl(パール)に出会えて最高だった。Perl(パール)でやりたいことは大体実現できていて満足してます。みんなPerl(パール)始めるといいよ。」みたいに見えるかもしれません。でも、初めは何が最適かなんてわからなかったですし、なんだかんだでPythonもRubyもPHPもJavascriptもCもC++もC#もJavaも書いてきました。めちゃくちゃ右往左往してます。今もScalaとかRustとかHaskellとかに手を出したり。
そんなしっちゃかめっちゃかで独学プログラマーな私ですが、それでも要件に応じて最適なプログラミング言語を選んでいると思います。要件を実現するためのライブラリやフレームワークが揃ってる言語で納期内に実装して、納得のいくパフォーマンスが出れば問題は解決しますからね。
まー、どうしても迷ってしまって動き出せない!っていう方はPython(ぱいそん)から始めてみればいいんじゃないでしょうか。最近は本屋のプログラミング書コーナーに行くとPython書籍だらけです。そんな感じで如実に盛り上がってますし、初心者向けの情報も豊富に揃ってるし、いいんじゃないかな。
深く掘っていけば、入り口は何でもいい
プログラミングの情報収集をしていると、「どのプログラミング言語が偉いとか偉くないとか、どーでもいい議論」を目にすることがあります。動的型付け言語の方が開発効率がいいとか、静的型付け言語の方が堅牢で速いとか、結局C++が最強とか、LISPをマスターしたら神の視点を得られるとか。どれも事実の一部を含んではいるものの、狭い範囲での主観をベースにした議論なので不毛です。自分が使っているプログラミング言語がどのように言われていようがあまり気にせずコード書きましょう。
スゴイ人たちの書いてるソースコードを読んで、真摯に学び続けていけば、どのプログラミング言語から入っても誤差の範囲だと思います。私の失敗事例ですが、WEBアプリを作るために色んなフレームワークを試しました。Ruby on Rails, Django, Mojolicious, CakePHP, Spring, CodeIgnighter, PlayFrameworkなどなど。どれもチュートリアルと簡単なWEBアプリの実装・デプロイまで行いました。で、気づいたんですが「結局やること同じ」なんですよね。プログラミング言語とかフレームワークのルールとかが違うだけで。その気づきがあっただけでも、時間を使いまくった価値はあったなぁと思ってます。
最近座右の銘に追加した言葉が2つあります。「Always Be Coding!(毎日コード書け)」「Always Be Learning!(学び続けろ!)」の2つです。世の中の役に立つサムシングをスピーディーかつ省メモリでお届けし、保守・カイゼンできるように日々研鑚です。オープンソースのコミッターの方などの第一線級のエンジニアの方をウォッチしていると、自分との実力の差に愕然とすることばかりです。が、そんな比較してても何もうまれないのでやるっきゃナイト!迷わずいけよ、いけばわかるさ。
初めてのPerl(パール) 第7版
退屈なことはPerl(パール)にやらせよう!
単行本(ソフトカバー): 408ページ
出版社: オライリージャパン; 第7版 (2018/1/20)
言語: 日本語
ISBN-10: 4873118247
ISBN-13: 978-4873118246
発売日: 2018/1/20
コメント