ねこものがたり

いちにちいっぽ

プログラミングの基礎 #21

13章  一般化と高階関数 をつづきから。 https://nerimarb.esa.io/posts/34

「引数の型がなんでもいいことを多相性という」という説明が出てきたのですが、英語ではPolimophizmと書いてあったので「え!ポリモーフィック思ってたんと違う!」となったのが個人的に難しくて発見があってワクワクした箇所です。

Rubyでは、引数には型を求めないので(中でエラーになることはあるかもしれないけれど)、そういうのもポリモーフィズムっていうん?と思ったのが疑問のきっかけです。

Rubyの文脈でのポリモーフィズムはダックタイピングみたいな理解をしているのだけど、本当にそうなのか、もう何もわからないって気持ちでいます。

で、やや混乱気味だし難しいことに足を突っ込んでしまった感はあり、情報が整理できていないのですが、多相性にも種類があるということまではわかりました。

ポリモーフィズム - Wikipedia

"Ruby 多相性"で検索すると、もれなく結果のトップに松本宗太郎さんの論文が並ぶので、”なるほど、これがいつか松田さんがおっしゃっていた、sotaroさんは型を何年も研究しているスペシャリスト”ということかと、その一端を感じた気がしました。 f:id:neko314:20200621123102p:plain

Asakusa.rb 第556回

参加しました

meetup/2020/06/16/第566回 - asakusarb.esa.io

Gatherというツールでの開催で、ビット絵な世界で世界観は楽しかったです。 使い方はちょっと難しくて、かなり近くじゃないと声が聞こえないとか、その範囲外に出てしまうと全く声が聞こえなくなるとか、アイコンにIDが表示されているけれど配色と文字の大きさの関係でだいぶ見づらくて誰かわからんとか。

でも他のツールで起きてたような「帯域をくってしまう」とかは、他の方の様子をみてもなさそうで、それは複数で参加できてこそのオンラインコミュニケーションツールとしてはよかったんじゃないかなと感じました。(と言いつつ、そのへんの詳しいことはわからん)

そんな感じでわいわいとしつつ、自分は久しぶりに開いたチェリー本をやっていました。その流れでRubycatchとかthrowについて”いつ使うのか”という質問をして、教えていただいておりました。

私が触っているようなコードではcatch/throwを使いたいっていう場面がなくて、自分で書いたことも他の人が使っているもの見たことがなかったので。

やっぱり用途としてはレアみたいで、ようさんも書いたことないとおっしゃっていました。 柴田さんがrailsではthrowを使っているよと調べて教えてくださって、主にはテストの中で、”サーバーのプロセスを起動しっぱなしにしておいて終了するという”というのをやりたいときに使ってあるとのこと。(自分では読み切れていない・・・) https://github.com/rails/rails/search?q=throw&unscoped_q=throw

大域脱出ということ自体はわかる気がしているのだけどややこしくて楽しい話でした。 すぐすぐ使いこなせるまでわかりたいというよりは、もしrailsとかほかのコードリーディングなどしていて出会ったときには動作が読みとけるくらいではいたいなって思いました。