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