見出し画像

プログラミングの超基本的な考え方をド文系の人に説明した動画

哲学者の東浩紀さんと思想史と近代科学史(特にコンピュータ史)の本を一緒に書いてみようという企画が今年から立ち上がった。

すると東さんがある日の生放送で、「しかし俺も最低限プログラムくらいかける必要があるんじゃないか。しかし最低限のプログラムとは何か」と言っていたところ、シラスの桂さんが「エラトステネスのふるいとかですかねえ」と言っていて、もうエラトステネスと聞いたら黙ってはいられない吾輩が怒涛の勢いで生放送したところ、東さんが一番乗りで入ってきてくれたのでその場でライブコーディングしながらプログラムの書き方を簡単に教えることにした。

https://shirasu.io/t/zelpm/c/shi3zlab/p/20240105163405


本編は1時間くらいあるので、YouTubeに10分の予告編を公開しました。

極力、初心者でもわかるように説明しているつもりですが、おっさんの哀しさ、基本的なところはすっ飛ばしているのでわかんないところがあったらPythonのマニュアル読んでください。

プログラミング言語習得のコツ

プログラミング言語は、言語であるため、マニュアルを頭からお尻まで読んで内容を暗記するよりも、「これってどうやんの?」「このプログラムのこの記号ってどう言う意味?」という疑問が生まれた時に、逆引き的に探すと理解が早いです。

英語の教科書みたいに頭からお尻まで文法を学んでテストで満点をとれたとしても、いざアメリカ人と話そうとすると全然言葉が出てこないのと同じで、プログラミング言語も、文法だけ学んでも何の意味もありません。大切なのは、「何が言いたいか」プログラムで言えば「何を表現したいか」もしくは、プログラムで書かれた「ここに表現されたものを理解したい」というモチベーションがあることです。

たとえば今回の動画にはあまり説明なく「range」というキーワードが出てきますが、「Python range」で検索してもいいし、ChatGPTに「Pythonのrangeってどう言う意味?」と聞いてもいいです。

ただ、大抵この手の説明は正確性を優先してわかりやすさが犠牲になり、ある単語で調べると別の新しい単語が出てきて迷宮化するので、聞き方にテクニックが必要です。

たとえば先ほどの質問をChatGPTに投げると・・・

と、こんな感じで「シーケンス」とか「イテレータ」とか初心者が聞いたことない単語が出てくるので初心者は「じゃあシーケンスとはなんだろう」とか「イテレータとはなんだろう」と検索したくなるのですが、それは絶対にやめましょう。迷宮に入って却って混乱するだけです。

プログラミングを学ぶコツは、「わからない単語は適当に無視する」という習慣を持つことです(この習慣のせいでプログラマーは時々対人関係に支障をきたすという副作用があります)。

今はChatGPTがあるので昔に比べると随分簡単にプログラミングが学べるようになりました。

去年に比べるとChatGPTのプログラミングに関する知識はかなりアップデートされているので、今や僕でもまずChatGPTに聞いてからそのあとの行動を決めています。

この場合、「range」は「for」と一緒に使っているので、「forで使う例を出して」と聞いてみます。

「Copy Code」を押すとこのコードをコピーできるので、Macなら「ターミナル」から「Python」を起動することで実際にコードを試してみることができます(Windowsの場合はPythonを別途インストールしてください/もしくはコマンドラインから使うならAnacondaをインストールするとMacと同じ感じで使えます)。

以下はMacのターミナルを使った動作確認の例です

shi3z@shi3zettonoMacBook-Air ~> python                                                                    (base) 
Python 3.9.13 (main, Aug 25 2022, 18:29:29) 
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> for i in range(0, 10, 2):
...     print(i)
... 
0
2
4
6
8
>>> 

こうすると、さきほどChatGPTが示した最後の例range(0,10,2)が、0から10未満の数まで、2ずつ数え上げるんだな、ということがわかります。

こんな感じで疑問を一つずつ解決していくと、コードがぐんと読みやすくなります。

また、ChatGPTは、直接コードを放り込んで意味を教えてくれとか、バグをとってくれ、とかの無茶振りにもある程度対応できます。


以下のコードの意味を教えて のあとにコードをいきなり貼り付ける

実際にすごく細かく解説してくれます。

まあこのくらい基本的なコードだと解説も丁寧にしてくれる

プログラミングの質問は全てChatGPTにしてもいいくらいなので、ぜひChatGPTを活用しましょう。有料版のほうが高性能ですが、無料版のChatGPTも十分使えます