![見出し画像](https://assets.st-note.com/production/uploads/images/158786449/rectangle_large_type_2_bd2b7bceaef649d52e143cad3aea4867.jpeg?width=1200)
10月17日 論理学とプログラミング
10月17日ですね。
「入門!論理学」という本を読んでいます。タイトル通り、論理学の入門書です。ただ、本来は論理学とは記号だらけの記述になるところを著者の方が頑張って日本語だけで著してくれています。
が、これがなかなか難しいです。
この本に出てくるのは、実はプログラミングの際には必ず扱うような条件判断に関わる部分です。and とか or とか <> や != とか。
ところが、これを日本語で扱うのがこれほど難しいとは私も思いませんでした。
まだこの本を読んでいる途中なので、この先にさらに理解を深めていくつもりですが、現時点で二つほど気づきがありました。
1、 プログラミングを教える際は、論理学よりも実践プログラムで教えた方がよい。
2、 言葉における接続詞の重要性
言葉の場合、その言葉の意味も踏まえて考える必要があります。
例えば、
これを書く長井は人間である。
と書いた時は、その答えは True つまり真です。
ただ、
これを書く長井は無能である。
と書くと、たちまち問題が生じます。
無能とはそもそもどういう意味か。
この先長井が無能かどうかを証明するには、あらゆる可能性を考えてもなお難しいのです。ひょっとしたらこの先、長井が無能ではない片鱗を示すかも知れず、それは誰にも(私本人ですら)分からないのですから。
これがプログラミングだと、言葉の意味論を考えることは不要です。
ある変数に 1 という値が入っていたら、例えばJavaScriptの場合、変数 == 1 と書けば、それがTrue かどうか判断できます。より厳密に変数のデータ型も含めて比較する場合でも、 変数 === 1 と書けば良いのです。違うかどうか、False 偽を判断したい場合は != や !== を書けば良いのです。
プログラミングでは変数に何が入っているかを厳密に判断できます。
これが言葉では言葉の意味を考える必要があるため、難しい。だから、プログラマーになりたい人には、論理学を教えるより、実践のプログラムを教えた方が良いのでしょう。
もう一つの、
言葉における接続詞の重要性もそう。
言葉は意味が曖昧です。そのため、せめて接続詞を適切に挟むことで、前後の言葉の関係を定義して話してあげないと聞き手は混乱します。
論理的な話とは、接続詞が適切に繋がっていることです。
接続詞を扱えれば、読みやすく聞きやすい文書が発信できます。
本書はまだ読んでいる途中ですが、ためになりそうです。
いいなと思ったら応援しよう!
![Yoshikazu Nagai(長井 祥和)](https://assets.st-note.com/production/uploads/images/2511383/profile_fd0b0bd04ef61ae58d6f6f9fde934db6.jpg?width=600&crop=1:1,smart)