見出し画像

スライディングウィンドウを「写経」した

お疲れ様です。Y研究員です。プログラミング文体練習を「写経」しています。あと2章で本が終わりです。全部通して「写経」することができそうです。関係ない「スライディング」ですが、選抜高校野球の記事を読みました。群馬県勢が初優勝は驚きですが、「これで負けたら仕方がない」と思えるまで煮詰められたチームだったらしいです。おめでとうございます。

般若心経とプログラミング文体練習は何を説いているか比較した

毛筆の写経で有名な般若心経ですが、調べてみると般若経という経典群の一つだそうです。最も短いお経です。手で書き移すのにちょうどよい長さなので、日本では人気になったようです。

このプログラミング文体練習もプログラムの集まりと考えると、経典群と似ているかもしれないと思いました。どうやら般若経は般若波羅蜜という大乗仏教の中心概念を強調して説く経典群のようです。そこでプログラミング文体練習は何を説いているか、改めて「まえがき」を読んでみました。かなり長いので要約すると的が外れそうですが、個人的に気になったところだけ抜粋します。

プログラミング言語には、それぞれ制約があります。その制約の中で求める結果を得るために推奨する書き方があります。しかし、プログラミング言語を何十個も習得するのは至難の業です。そこで、書き方(スタイル)に注目して、横断的に見渡せるようにしたのが本書です。もとは文学作品を書く練習をするための本があり、そこから着想を得たそうです。一つの物語を99のスタイルで書く練習みたいです。

上級プログラマは性能が良いプログラムを書くだけではなく、どのように書くかが大事だと説いています。プログラムはコンピューターが解釈をして計算をするだけではなく、人間にも読まれる情報伝達の手段と書いてありました。可読性という言葉はありますが、もう少し深い考え方について言っているように思われます。

この「写経」の次が悩ましい

各章の練習問題は、殆どが「別言語でスタイを維持して実装せよ」です。いままでは「写経」を通して終わらせることを目標に、すべての練習問題を飛ばしてきました。書籍「エラーで学ぶPython」でも変えてみる事が大事と言っています。この別言語での実装も、変えてみることの一種では無いかと思いました(ハードルは高めですが)。

他にも読んでみたい本はありますが、学びが多い本なのでもう一周じっくりやろうかなと今のところは思っています。あとは言語をC++にするか、新しい言語を学ぶかです。まともに書いたことがあるのはPythonとC++だけなので。Haskelには昔から興味をもっていますが、全然違う言語なので難しそうです。時代はRustだ!と思っていた時期もありますが、今はそこまで熱がありません。あと2章あるので少し悩むことにします。

今日の「写経」

英語の入力で、大文字は小文字に、その他の文字はスペースに変換して、アルファベット1文字は落とすニューラルネットです。前回は文章の1行をそのまま受け付ける無駄な設計でしたが、今回は3文字づつスライドして判定していく形でした。

結果が文字化けをしておかしいなと思ったら、関数の一部を忘れていました。全部を書き写したらちゃんと動きました。

実際に出した文字化け。精神衛生上よくないバグでした。

おわりに

次回はRNNです。入力の前後を見ることができるニューラルネットです。ChatGPTとかに使われる技術に少し近づいてきましたね。それではまた!

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。