見出し画像

「プログラミング文体練習」が良書だった

お疲れ様です。Y研究員です。前回の記事で、次に「写経」する本を探していると書きました。とりあえず簡単に初められそうな本を読み始めたら意外と良かったので、何故良かったのか共有します。

読み始めた本

「プログラミング文体練習」です。オライリーの新刊です。課題は、テキストファイル内の単語を出現頻度順に並べて表示する、です。Pythonを使って40ものスタイルで書き比べをします。元ネタはプログラミングではなく、小説でそういう練習する本があるらしいです。以下に、どのへんが良いのかをまとめます。

スタイルを把握できる

この本の目的でもある、様々な書き方が一気に見通せます。半分がソースコードで、あとは簡潔な解説です。一部はとても似通っているので「写経」するのは気になった物だけで良い気がします。ほぼすべてのスタイルで、他の言語でもやってみる、という課題がついてました。しかしPythonより簡単に書ける言語は無いような気がします。

全部Pythonで書ける

どんなに古いスタイルでもPythonで書けるのは魅力的です。たとえばForthに着想を得て、中間の値をスタックに保存するとしても、Pythonで書くことができます。試しにGNUのForthであるGforthをChatGPT-4に書かせてみましたが、デバッグ困難でした。初見のプログラミング言語をデバッグするのは至難の業です。

説明が簡潔で読み通せる

解説が短いので、簡単に通読できます。挫折や積読化の恐れが低いので、気軽に着手できるのも魅力的です。「写経」しない、深堀しないなら2,3日で読み終えられそうです。

サクサク読んでいくと、短く書く例や数珠つなぎみたいなmain文の例が続きました。そこでshellのワンライナーを思い出しました。つまるところ、以下のようにも解決できると分かりました。

cat input_file.txt | tr '[:upper:]' '[:lower:]' |\
    tr -d '.,' | tr -s ' ' '\n' | sort | \
    grep -v -w -f <(tr ',' '\n' < stop_words.txt) |\
    uniq -c | sort -nr | head -n 25

実行時間もPythonのと体感的に変わらなかったです。

次はオブジェクト指向なので、続きも読んでいきたいと思います。

写真はビリヤードです。プログラムも玉突きも連鎖反応ですね。それではまた。



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