見出し画像

書籍「一般教養としてのプログラミング」を読む(その3)

マガジンリスト > 書籍「一般教養としてのプログラミング」を読む > その3


アルゴリズムとは


上記の「一般教養としてのプログラミング」を読み進めています。
今回は、「Chapter 2 学ぶべきこと」を読みました。

アルゴリズムは、問題解決のための手順や操作を組み合わせたもの、と言うことができます。
ここで何が言いたいかというと、アルゴリズムというのは、何もコンピュータ内のことに限ったものではなく、私たち人間の日常生活にたくさん潜在しているわけです。そしてそれは意識的にしろ無意識的にしろ、日々行っていることなのです。

p.56

プログラミング力をつける上で一番重要なことは、プログラミング言語を覚えることではなく、アルゴリズムをきちんと考えることができるようになることだと考えています。
連載「高校数学をプログラミングで解く」では、高校数学で出てくる数式や公式をアルゴリズム化し、そのアルゴリズムをもとに高校数学の問題を解くプログラムを作成しています。これにより、アルゴリズムを考えることが比較的容易にできるようになると考えます。

ただ、このように考えると、アルゴリズムがちょっと難し気に感じますね。
上記のように、「アルゴリズムは日常生活にたくさん潜在している、日々行っている」と考えると比較的とっつきやすくなるのではないでしょうか。

コンピュータ観

プログラミングを学ぶということは、自ずとコンピュータの頭脳であるプログラムの原理の理解を深めることになります。
さらに、そのような学習を通して、コンピュータの仕組みを「想像」できるようになる状態を、コンピュータ観と表現しています。

p.60

プログラミングを学ぶと、確かにこの「コンピュータ観」というものが育ちますね。コンピュータ観が育つと、自分がコンピュータで実現したいことについてどんなプログラムを作ればよいか、ある程度想像できるようになります。そうなると、プログラミングすることにあまり抵抗を感じなくなります。

では、この「コンピュータ観」が育つのにどの程度学んでいく必要があるかというと、一概に言えないところがあり、すぐに育つ人もいれば、何年もかかる人もいるようです。ただ、「コンピュータ観」を持てる人の一つの要素としては、高校数学をはじめとする数学の理解度が大きく左右していると考えています。簡単に言えば、経験上ですが、数学がきちんとできる人のコンピュータ観は成長が早いと言えます。


本来の「目的」を見失ってはいけない

プログラムはあくまでビジネス上の課題を解決するための「手段」の1つにすぎないということです。
ですので、何でもプログラムが解決してくれるわけでもなく、適材適所、その扱い方次第であるということを、忘れないでいただきたいと思います。

p.63-64

連載「高校数学をプログラミングで解く」では、「覚えた数学」を「使える数学」にすることを目的としています。
高校数学の問題は往々にして、プログラミングするよりも手計算で行う方が簡単です。ただ、そこを敢えてアルゴリズム化してプログラミングするという手順を踏むことで、高校数学のより深い理解を目指しています。
また、手計算で行うことができる高校数学の問題をプログラミングして正しく解くことができるようになれば、今度は手計算では明らかに難しい問題に対してプログラムを有効に応用できるようになるはずです。
このように「使える数学」を身につけることが連載「高校数学をプログラミングで解く」の目的となりますので、何でもかんでもプログラミングで解決させようとしているわけではないことに注意してください。


プログラミング教育の開始

いまこの教育を受けている子供たちは、将来大人になったときには、ビジネス教養としてのプログラミング知識やスキルの学習基盤ができていると言えるでしょう。まさに、「読み・書き・プログラミング」の時代がそこまできているのです。

p.67

これに関しては、あまりピンとこない部分もあります。以前『(コラム)書籍「子どもたちの未来を創ったプログラミング教育」を読む』でも書きましたが、プログラミング教育が盛り上がりに欠けるというか・・・。もちろんいろんなところで盛り上げようと頑張っている方々(自分もそのうちの一人)がいるのですが、その一方でその効果に半信半疑の方々も大勢いるようです。

英語も中学、高校、大学と何年も勉強している割には、しゃべることができる人はあまり多くないですよね。プログラミングも同じように結局できる人がすくなくなるのではと・・・。

いやいや、こんな弱気ではだめですね。高校でも「情報I」という科目が加わり、今年度(2025年度)の大学入試共通テストでも新しい科目として追加されています。つまり、国も本腰を挙げて情報教育、プログラミング教育に乗り出してきています。頑張って盛り上げていこう!


転職力のアップ

厚生労働省の働き方改革が提言されてから久しいですが、そのWebページにも、「働く方の置かれた個々の事情に応じ、多様な働き方を選択できる社会をすること」とあります。
そのような時代には、転職力を伸ばすのも1つの選択肢です。これは何も必ず転職しなければならないということではなく、いつでも転職できるための知識やスキルを備えておくということが重要だと思います。その観点から、プログラミングの学習は1つの有力手段だと言えます。
なぜなら、プログラミングを少し頑張れば、どのような業種でもビジネス教養として役立つ知識やスキルが身につけられるからです。

p.69-70

いわゆる「手に職を」というやつでしょうか。

「プログラミングを少し頑張れば」の「少し頑張れば」がポイントですね。確かに昔に比べて、プログラミングは学びやすくなりましたので、少し頑張れば身につけることができます。
敢えて付け加えて「プログラミングを少し頑張れば、プログラミングのおもしろさに気付き、学ぶ気持ちもぐんぐん上がって、どのような業種でもビジネス教養として役立つ知識やスキルが身につけられる」と言いたいところですが、ちょっと言いすぎでしょうか。

とにかく、筆者も

プログラミングを身につけるには、いまが絶好のチャンスと言えるでしょう。

p.70

と言っているように、まだ始めていない人はプログラミングを始めてみることをお勧めします。そして、いつでも転職できるための知識やスキルを備えておきましょう。


プログラミングの学び方

通常、何らかのモノづくりの場合、その作る動機としてアイデアがあります。例えば、何か日常生活や仕事上で困っていることやこういうものがあったら楽しくなるかも?のように、アイデアをまず考案し、そしてそれを実現するプログラムを書いていくことを目指してもよいかもしれません。

p.88

昔を思い出すと、自分が最初に学んだプログラミング言語はC言語でした。大学院での研究でどうしても解析的に解くことが難しい積分を数値積分で計算する必要が出てきたからでした。ですので、私はどちらかというと「仕事上で困った」からプログラミングを覚え始めたという感じですね。

それまではプログラミングにほとんど興味はなかったので、この「数値積分を行う」という目的がなかったら、プログラミングは行っていなかったかもしず、今の自分はいなかったかもしれません。そう考えると、こういうプログラミングする目的に出会えたことは自分の人生にとって幸運なことだったと思います。

手前味噌ですが、まだプログラミングする目的を得ていない人は、まず高校数学をかたっぱしからプログラミングして解いてみるというのはいかがでしょうか。プログラミングする目的としては少し弱いかもしれませんが、これをやることで、高校数学の理解が深まったり、情報Iの問題に対応しやすくなったりと多少のモチベーションを上げることはできると思っています。


どのプログラミング言語を習得するべきか

プログラミングの世界でも、商品や業種、会社ごとにそれぞれですが、多くの開発現場でよく使われている言語は確かに存在します。
例えば、第1章で紹介した Python をはじめ、C言語、Java などです。ですので、どの言語で学ぶか迷っている方は、これらの多くの開発現場で使われている言語から着手するとよいでしょう。

p.91

自分が始めに学ぶプログラミング言語としてお勧めするのは、C言語、C++、Java の3つです。筆者がお勧めしている Python は現在人工知能、生成系AIなどの先端技術の研究開発でよく使われているので、もちろん勉強する必要があると思います。ただ、プログラミングの基礎を最初にしっかり身につけるためには、C言語、C++、Java の3つをお勧めです。

といいつつ、連載「高校数学をプログラミングで解く」では、プログラミング言語として Processing というものを利用しています。なぜ、 Processing を利用しているかというと、以下の理由からです。

1.Processing は Java をベースとしたプログラミング言語となっています。そのため、プログラミングの基礎をしっかりと学べます。その上、ソースコードも最小限の記述を行って、実行ボタンを行うだけで簡単に実行することができます。

2.Processing はそもそも電子アートとビジュアルデザインのためのプログラミング言語となっています。そのため、数学で扱う図形やグラフを比較的簡単に描くことができます(他のプログラミング言語で図形やグラフを描くことは他の設定ファイルやライブラリなどの設定を行う必要があり、手間がかかります)。

3.Processing は導入がとても簡単です。Processing の公式サイトからファイルをダウンロードしてきて、それを解凍するだけですぐに利用することができます。設定作業がほぼありません。

以上のような理由から、連載「高校数学をプログラミングで解く」では、プログラミング言語として Processing を利用しています。
※詳しくは、マガジン『高校数学をプログラミングで解く(準備編)1.プログラム基礎を読んでみてください。


まとめ

今回は、Chapter 2 を読んで気になる箇所にコメントしました。自分にとってすごく示唆に富んだ話が多く、勉強になりました。今回得られた知識は、今後の連載「高校数学をプログラミングで解く」で活かせるようにしたいと思います。


今回は、ここまで。
次回は Chapter 3 について、コメントしていきたいと思います。

MK's papa

この記事が気に入ったらサポートをしてみませんか?