sironekotoroの日記

Perl で楽をしたい

Perl入学式 2018 in東京 秋開講 第3回 お疲れ様でした

受講された方、サポーターの方、お疲れ様でした。 講師をやったジャージの人です。

スライド中の練習問題と復習問題ですが、昨年夏に書いた解答例をblogに掲載しています。
参考にしてください。
sironekotoro.hateblo.jp

あと、時々つかったスライドも置いておきます。

docs.google.com

リファレンスは難しい

リファレンス、自分も苦労した覚えがあります。というか、リファレンスがあると何が便利になるのか?何が良くなるのか?が、まずわからなかった。
自分が複雑なデータ構造を扱うことはないと思ってました。
「すっぱいブドウ」の話ではないですが、リファレンス使わなくてもいいもんね!と思っていたものです。
その時は斜に構えたままでしたが、Perlに慣れ、自分がしたいことを実現するためにはリファレンス使えばいけそう!となってから一気に理解が進みました。

リファレンスは教えるのも難しい

リファレンス、Perl入学式の現在のテキストでは、「リファレンスじゃないとできないことがある」「便利だから使う」ってな感じで進めています。

そんな中、毎回試行錯誤、苦労しながら捻り出しているのがリファレンスの「たとえ」です。
「変数が格納されているメモリのアドレス」という説明でわかる人はそれで良いのですが、「メモリのアドレス」でわかる初心者さんがどれほどいるのか。
C言語のポインタのようなもの」といっても、C言語もポインタも知らなければ伝えられません。

※ そもそも、うち自身がC言語は名前だけ、ポインタも「Perlのリファレンスみたいなやつ?」って程度の理解です。

ということで、今回は「雑多な人間の属性と値(ハッシュ)が GPS を通すことで1つの座標(緯度経度)に定まるように、配列やハッシュをリファレンスにすることで一つのスカラーとして扱うことができる」という言い方とスライドを用意しました。

f:id:sironekotoro:20190124123242p:plain
雑多な人間の属性と値(ハッシュ)がGPSを通すことで1つの座標(スカラー)になる

f:id:sironekotoro:20190124123241p:plain
ハッシュをリファレンス化することで1つのスカラーになる

もし、リファレンスについて良い言い回しや、こういう例えはどうだろう?ってのがあれば是非教えてください。

オススメ参考書

以前のエントリでも書きましたが、深澤千尋さんの「すぐわかるオブジェクト指向Perl」これがいいです。

gihyo.jp

タイトルにはないですが、この本の半分程度がPerlのリファレンスについての説明に当てられています。
これは、Perlオブジェクト指向はハッシュリファレンスを利用するためなのですが、微に入り細に入り、噛み砕いて説明してくれている良い本です。

そして、なんとその著者の深澤さんがくるPerlのイベント「YAPC::Tokyo 2019」が今週末に開催です。
様々なPerlやシステムについてのセッションが多数行われるイベントです。是非参加ください!

yapcjapan.org

yukicoder

yukicoder.me

講義の後のピザ会で紹介したyukicoderです。うちもサポーターのmotiさんから教えてもらいました。

競技プログラミングアルゴリズムを 練習する目的で運営されています。

とのことですが、★1つのレベルの問題であれば、Perl入学式第1回〜第3回の内容で解けるものもあります。
例えば

No.56 消費税

この問題は

  • 標準入力
  • スカラー変数
  • 改行の削除
  • 文字列の分割
  • 配列(リスト)
  • 四則演算
  • 標準出力

で解くことが可能です。

まずは下記の初心者向けチュートリアルから始めてみてください。

yukicoder.me

Perl入学式の課題で物足りない、とか、プログラムで問題を解くことを習慣にしたい、という方にもオススメです。

Googleトレンドの非公式APIから情報を取ってきていい感じにする

恒例、ピザ回のお題です。別エントリであげます。