Tumblrどうも、21日目を担当する肉体派プログラマの48代tomiokaです。プログラミングのテクニックとLisp入門と何を書こうかそれなりに迷ったのですが、今回はあまりプログラミングと関係ない記事を書こうと思います。「○○」には好きなモノを入れてください。この前、みすの活動内で発表をする機会がありました。その発表は大分適当なものでしたが、特に分かりにくい部分を説明しているときに前に座っていた人から「それってつまりなんなんですか?」という質問を受けました。プログラミングに限らず、初めて勉強する分野の本を読んでいると「説明がわからない」とか「説明は読んだけど結局○○って何だったの?」という疑問が浮かび、自分が理解できていないということが浮き彫りになることがよくあります。すれば自分で理解できたと感じることができるのでしょうか?この記事を読んでいる人はおそらく「コンピュータ」というものを(程度の差はあれど)理解していると思います。ある人は「ディスプレイとキーボードがあって、キーを叩くと何かの処理をしてディスプレイに表示してくれるものだよ」と答えるかもしれません。この答えを聞いて質問者が納得してくれるとは思いにくいですし、そもそもこの定義に当てはまらないコンピュータが存在します(スマートフォンにはキーボードが付いていませんね)。相手に理解させるのに一番早い方法は何と言っても使わせることです。実際に触ってみて、目的を達成し、時には失敗し、コンピュータの可能性と限界を少しずつ学んでいきます。しているうちに、その人の中で「コンピュータとはこういうものだ」という理解が生まれます。場合、○○の説明で可能なのは「○○は××からできている」とか「○○は△△をする」といった〇〇に関する性質を列挙することのみです。コンピュータのように実際に触れるものであれば良いのですが、より抽象的なもの、例えば数学的概念のようなものはどうでしょう。専門書などでは定義などを並べ立てたり、定理を示していたりしますが、「○○はこういうもので、これこれこういう性質があるんだよ」ということを(厳密さを損なわないように)頑張って説明しているわけです。定義コンピュータは、1つ以上の入力装置を持つ。コンピュータは、1つ以上の出力装置を持つ。コンピュータは、数値の計算を行う。定理1コンピュータが入力装置としてキーボードを持つとき、ユーザはキーボードに印字されている文字をコンピュータに入力することができる。ように定理が加えられるわけです。(ここに書いてあることは適当なので本気にしないでください)こういった性質を基にこねくり回してみることで、「入力装置としてタッチパネルを使うこともできるんだな」とか「キーボードの入力を行うにはテキストフィールドにフォーカスしてないとダメなのか」といった定理にない暗黙的な性質を体験し、自分なりの理解を深めていくわけです。ある日、ふと振り返ってみるとコンピュータの大先生になっていた......ということですね。コンピュータの例では実際に触ってみるということが重要であると言ったわけですが、○○の場合でも同じです。......どうやってやればいいのでしょうか。そこで、プログラミングの出番です。抽象的な○○の場合は、自分で再現(シミュレーション)してみることが「触ってみる」ということにあたります。紙とペンを使ってみるのはとても良い(というか一番良い)方法なわけですが、それが困難な場合はプログラミングは強力なシミュレーションツールとなります。(Lispがうまく使えないなら自分でLisp処理系を書いてみれば良いのです......とこれは違うか)〇〇に入るものが何であれ、体を使って覚えることが理解の上では不可欠です。プログラミングはすぐに成果が実感できるため、その点について有用であると言えます。要はわかんねーって言ってる間に手を動かせってことですね!(脳筋)以上、肉体派プログラマの脳内からお送りしました。サークル代表としての抱負【カウントダウンカレンダー2019冬14日目】2019-12-24Vulkanの道も一歩から【カウントダウンカレンダー2019冬13日目】2019-12-23【blender】ポリゴンモデリングで顔をつくるときの話【カウントダウンカレンダー2019冬12日目】2019-12-22超手抜きで覚える将棋【カウントダウンカレンダー2019冬11日目】2019-12-21企画で大忙しだったお話。(3)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。