見出し画像

効率よく『写経』でプログラミングを学ぶ方法

お疲れ様です。Y研究員です。2023年もよろしくお願いいたします。

さて前回は本物の写経を実施して、プログラミングの『写経』との違いを体験しました。今回はそこで得られた感想を元に、『写経』でプログラミングを学ぶための方法を考えてみたいと思います。

お手本は難しいと思うくらいが丁度良さそうです。理解できるものは簡単すぎるので、繰り返しても上達しません。般若心経は何度書き写しても理解は難しいので、その点はよく出来ていると思います。プログラムも、読んでみて処理が分からない、くらいの難易度が良いと思います。

K研究員からは、変数の名前変えていると教わりました。本物の写経と違いプログラムの『写経』は「実行する」行為が伴います。つまりコンパイルできない、思ったとおりに動かない、などの問題が発生します。実はこの問題とその解決こそがプログラミング上達への道なのです。変数名を変えることで、プログラミングの構造を考えつつ、捉え方が間違っていれば正しい結果が出ないこの方法は使えそうです。

さて、例のC言語の古典的教科書ですが、ポインタの章を読んでいます。配列とポインタの関係を重点的に説明していていました。この説明を最初に読めばポインタは理解しやすいのかもしれません。

あとは、上級者はこの様に書く、とのコメント付きで出されたサンプルがとてもコンパクトだったので共有します。Linuxのレポジトリにもほぼ同じコードがあったのでそこからの引用です。

char *strcpy(char *dest, const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}

https://github.com/torvalds/linux/blob/150aae354b817f540848476bace2b2ba9931b197/lib/string.c#L79

whileの条件式に処理を押し込んで、メインの処理は何もしない;です。本の中では更に「!= '\0'」まで省略していました。

ポインタの章は前半の解説を読み終わって、後半部分の実用例に入り始めたところです。また読み進めて、面白かったら記事で共有します。

ではまた!


追記:その2も書きました。『写経』はまだまだ極められそうです。


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