結城浩の「コミュニケーションの心がけ」2018年5月15日 Vol.320
はじめに
結城浩です。
いつも結城メルマガをご愛読ありがとうございます。
ここ数日の温度変化がとても大きいです。コートがいるかもという日の次が半袖という気温。身体への負担も少なくありません。とはいうものの、いまの季節は寒いよりは温かい方がいいですけれど。
もうちょっとすると雨の季節になるのでしょうか。春の気候ももうすぐ終わりです。
最近「結城浩の数学ノート」というWebサイトを作り始めました。この「結城メルマガ」でも何度か書いていますが、結城は「シンプルで小さなWebサイト」を作るのが大好きで、定期的にのめりこむようにしてWebサイトを作っています。
「結城浩の数学ノート」というWebサイトは、ちょっとした数学の話題を紹介するものです。まだページは少ないですけれど、少しずつ継続して書き溜めていきたいと思います。ぜひちらっとのぞいてみてください。
◆結城浩の数学ノート
https://math.hyuki.net
こういうWebサイトを作るときには、何をどんなふうに考えているかについてもまたいつか文章にしてみたいと思います。
それでは、今回の結城メルマガを始めましょう。
目次
- はじめに
- 目次
- 数学の素養の有無とプログラマ
- 思い浮かぶことを一つの文章にまとめるのが苦手です - 文章を書く心がけ
- 恋し続けたならば必ず逢える - 古今和歌集を読む
- 本を書くテンションを保つ工夫 - 本を書く心がけ
- ブートストラップ - 再発見の発想法
- 高校生が数学力をつけるには「復習あるのみ!」ですか? - 学ぶときの心がけ
- おわりに
数学の素養の有無とプログラマ
質問
「数学の素養があるプログラマ」と「数学の素養がないプログラマ」の大きな違いは何だと思いますか。
回答
ご質問ありがとうございます。
なかなか難しいので、ものすごくざっくり答えますね。
数式に関して
「数学の素養」と呼べるかどうかわかりませんが、たとえばそれは技術文書や仕様書に「数式」が出てきたときに「数式を読もうとするか否か」という態度に現れるのではないでしょうか。くだけた表現を許していただけるなら「数式にビビるかどうか」ともいえます。
プログラミングが扱う問題は多岐に渡りますので、数学のことをあまり知らなくても問題なくプログラミングできる場合はたくさんあります。その一方で、機械学習や3Dグラフィクスの問題などで、数学の深い理解が必要になる場合もありますね。
「数学の素養」といっても「ある・なし」の二段階ではありません。でも、どんなものであれ「数式」が出てきたとたん思考をストップさせてしまうようでは困ると思います。
「数式」が出てきたときに「ビビる」ことなく、
- まずは読んでみようとする
- 自分が理解できるかどうか判断できる
- すぐに理解できない場合でも、調べれば理解できそうか判断できる
などの点が重要になるのではないでしょうか。
定義に関して
「数学の素養」に入れるかどうかはわかりませんが「概念を定義して適切に名前を付ける」というのは、プログラミングにおいて重要な活動であると思います。「定義」が重要であることは数学ではもちろんのこと、プログラミングにも当てはまります。
そしてしばしば、プログラマはとても抽象的な概念をきちんと「定義」することを要求されます。一見ばらばらに見える概念の共通点を見つけ出してそれを定義し、名前を付け、それを利用してプログラミングを行うというのは珍しいことではありません。抽象クラスやインタフェースなどはそのようにして作られています。
もちろん、プログラミングで適切な「定義」を行うためには数学を学ぶ必要があるといいたいわけではありません。ただ「数学の素養」がある人は、プログラミングで抽象的な概念が登場したときも理解が早かったり、その概念の良し悪しを判断する力がある可能性は高そうです。
論理に関して
数学で論理が重要なのはいうまでもありませんが、プログラミングでも論理は必要です。プログラムを書く上で重要なだけではなく、デバッグをしてプログラム中の誤りを見つける作業においても論理は重要です。
これは「数学の素養」というよりも「科学者の素養」かもしれませんね。「プログラムを動かしたら、このような現象が起きた。ということは、あのライブラリが悪いのではないか」のように考えるのは科学者が行う「自然現象の観察」に似ています。また「あのライブラリが悪いということは、こういう入力を与えたなら、こういう出力が出るのではないか」と考えることは、科学者が行っている「仮説の検証」に似ています。
他にもありそうですが、私は以上のように考えました。
ご質問ありがとうございました。
思い浮かぶことを一つの文章にまとめるのが苦手です - 文章を書く心がけ
質問
はじめまして。
恥ずかしながら、私は文章を書くということがまったくできません。
いくつか思い浮かぶことがあっても、それらの関係性を考え、論理的なひとつの文章にまとめることがどうにも苦手です。完成まで何とか持っていけたとしても、そのためには途方もなく時間がかかります。
このような状況を克服するために有用な練習方法をおうかがいしたいです。
現在は、人の文章から構成を読み取ってそれを参考にするといったことをしています。
回答
ご質問ありがとうございます。
三点お話ししましょう。
まず第一点目。あなたは、頭の中だけで最終的な文章を考えていませんか。
「いくつか思い浮かぶこと」をあなたは紙やコンピュータに書いていますか。自分の頭の中から思い浮かぶことを取り出すことはとても大切です。思い浮かんだことを頭の中に保持し、関係性を考え、文章にまとめるなんていうのは大変な作業です。思い浮かんだことをまず書くのは基本。たくさんの短文として頭から取り出します。そして、コンピュータの上で並べ替えたり、関係を考える方がずっと楽です。
コンピュータの操作に慣れている人やタイピングが速い人は、ツールを使ってコンピュータ上で考えるのもいいですが、そうでない場合はいったん紙にプリントアウトして、順番を考えたり、関係を考えたりする作業をします。そしてもう一度コンピュータ上で短文の入れ換え作業を行うということを繰り返します。
いずれにせよ、「頭の中」で作業をするのではなく、いわば「頭の外」で作業をするのが大事です。
第二点目。あなたは、言いたいことをずばりと言い切ることを恐れていませんか。
先ほど書いた「思い浮かんだことを短文として取り出す」ときでもそうですが、自分の考えをずばりと言い切ることは重要です。「ずばりと言い切る」というのは、「AはBである」や「CとDは違う」や「EとFは合わせるとGになる」のように書くという意味です。
「AはBだけれど、Bとはいいがたい場合もあるし、Xという条件があると、Bには絶対ならないし……」のように、ふわふわっと話を展開するのはやめます。
そうではなくて、ずばりと言い切った短文として、頭の中から取り出すのです。
「AはBである」 「AはBにならないこともある」 「Xという条件では、絶対にBにならない」
というように。そして頭の中から取り出したこれらの短文を眺めて、気付いたことを書いていきます。
「AはBである」(いつも?) 「AはBにならないこともある」(どんなとき?) 「Xという条件では、絶対にBにならない」(X以外の条件では?)
そうして、それらの気付いたことをさらに膨らませていくことになります。
第三点目。あなたは、いっぺんに全体を完成させようとしていませんか。
頭の中からまず考えていることを取り出すのもそうですし、ずばりと言い切る短文を操作するのもそうですが、いっぺんに全体を完成させるのではなく、ステップ・バイ・ステップで、ちょっとずつ整えていくのが大事です。
人間は全体をまとめるのが苦手です。それに対して、細かい部分に注目してちょっと付け加えたり、ちょっと順番を正したり、他のケースをちょっと考えたりするのは難しくありません。
時間は掛かります。それはしょうがありません。何度も読んで、少しずつ「前よりはちょっぴり整った状態にしていく」というのは、文章を書く上でめずらしいことではありません。
あなたが書いていた「人の文章から構成を読み取ってそれを参考にする」というのも決して悪いことではありません。それは自分が「整えていく先」の例を見つけていることになりますね。
まとめます。
- 「頭の外」で作業しよう
- ずばりと言い切る短文を集めよう
- ステップ・バイ・ステップで整えていこう
参考にしていただければうれしいです。
ご質問ありがとうございました。