パズルとプログラミング

codewarsというサイトがある。
https://www.codewars.com/

色々なお題があって、それをプログラムで解決するというもので、色々な言語に対応している。

プログラミングは武道と同じように常日頃から体を鍛え、技を磨いておくものだ。という考え方があり、日本の武道で使われる用語が使われることがある。
https://en.wikipedia.org/wiki/Kata_%28programming%29

codewars でも kata(型) や kumite(組手)、kyu(級)、dan(段)などの日本語が使われている。いちおう言っておくと、dojo-yaburi、okunote、kinjite、ougi / higi などの言葉は使われていない。

色々なプログラミング言語に対応しているが、日本語には対応していないのはこれいかに。karate の用語を使っているのに、日本語には対応していない。ちょうど英語の勉強になってよい。

わたしはプログラムをパズルのように感じていて、とても好きなのだけど、なぜかこのサイトにハマってはいない。結構前に知ったんだけど、未だに 7kyu という初心者の烙印を押されている。

なぜなんだろう。何かが違う。

子供のころ、「この勉強いつ役立つねん。」というのがあった。
例えば、サイン・コサイン・タンジェント。
ただ単に勉強したくない言い訳だったのかもしれないけど、全く興味なかったし、面白いとも思わなかった。

未だに何の役にも立っていない人の方が多いとも思えるこいつらですが、今ではわたしはよく使うのです。座標や角度の計算ができるので、クリエイティブコーディングとかする時よく使うのです。

実際必要になって勉強とかしてみると、ぜんぜん苦など無く、むしろ楽しいく感じるのですから、人間とは不思議なものです。

この前、 codewars でやったお題は、0~9の数字を適当に埋めた 9 × 9 マスのデータが数独のルール上、間違っていないかチェックするというものだった。ちなみに 0 は空白を意味する。

お題としては面白い。確実に面白い。パズル好きのプログラマが、パズルを題材にしたパズルみたいな問題を、プログラミングでパズルのように感じながらといている。この構図からしておもしろい。面白いとおもうんだけど・・・

まさに「この勉強いつ役立つねん。」という感情にも似た感情とともに問題に向き合っても面白く感じなかった。

プログラミングを勉強したいと言う人にアドバイスする事があるけど、わたしは、何かを実際に作ってみる事をお勧めしている。

もちろん、プログラミング言語の基本的な書き方は覚える必要があるし、色々なテクニックを知っているに越したことはない。
けど、プログラミングの勉強のための本や、サイトなどに載っているサンプルを写経しつづけても、リアルワールドの問題は解決できない。

何かを作る道中には、解決しなければいけない小さなパズルのような問題は腐る程あって、それは必要なことだから、調べるのも勉強するのも苦はなく、たのしいのだ。

感じ方、考え方は人それぞれだから、何が正解と言うことはないけど、わたしはそういう感じ方をしているということだと思う。

たぶん、そういうことなんだろう。