プログラミングの上達に必要な3つの資質

 現在、計算機の向上により、パソコンがより身近な世の中になってきました。パソコンのアプリケーションの開発はもちろんのこと、スマホアプリの開発も素人でも少ない初期投資で可能となっています。プログラミングは社会人としての素養として当たり前な世の中になりつつあるのです。ここでは、プログラミングの上達に必要な3つの資質について紹介します。

1. パソコンの仕組みを理解している

 パソコンがどのような仕組みで動作しているか説明できるでしょうか?パソコンは基本的にCPUという演算器とメモリというデータ保存を用いて計算を進めていきます。CPUがメモリに保存してあるプログラムを上から順に読んで、演算を実行していきます。

 このことを理解しておくと、CPUに負担が大きくなると演算時間がかかることや、メモリ容量には限りがありその容量を超える記憶はできないことがわかります。また、C言語などに出てくるアドレスの概念もメモリに保存することから理解できます。

 さらに細かくいうなら、CPUはANDやORなどの電子回路から構成されています。入力信号に応じた命令が設計の段階で決められており、プログラミングではそれらの命令を使います(アセンブラ言語)。電子回路に情報を記憶するにはフリップフロップという回路を使用します。この回路により0と1を記憶でき、情報をメモリに保存できるのです。

 いいプログラミング(さくさく動作するもの)作りたいなら、ハードウェアの仕組みを理解しなければなりません。理解するのに一番の方法は実際にCPUをつくることです。一度、CPUを製作すると、パソコンの動作がよく理解できます。慣れるより慣れろです。

2. 数学が得意

 プログラミングはただのアルゴリズムです。要するに数学です。例えば、1から100足し合わせるプログラムを作ったとします。単純にfor文を使ってパソコンに1から100を足しあわせていってもいいのですが、数学の公式n(n+1)/2を使うと少ない計算量で計算できます。計算の次元でいうと一桁異なります。

 図形を描写する際も、幾何学やベクトルの知識が必要となります。これらの知識があるのとないのとでは、できてくるアプリのよさは大きく変わります。少なくとも高校程度の数学はマスターしておきましょう。

3. 計算量を見積もり減らすことができる

 最後に、計算量を見積もれることは、ソフトを速く動作させるために必要です。計算量が2次元と3次元では計算時間が大きく異なります。計算量を見積もり、計算量を減らすようにプログラムを組む力が求められます。計算量を減らす基本はメモリをうまく使用することです。メモリをうまく利用して余分な計算を飛ばすのです。

 計算量を見積もり、減らす力をつけるには、ある程度のノウハウを勉強することが有効です。幅優先探査や深さ優先探査などいろいろと研究されているので、勉強して応用できるようになるといいでしょう。

 以上、いろいろ述べましたが、結局のところプログラミングが好きかどうかがかなり重要です。好きなら書いているうちに、工夫していきどんどん速くてシンプルなコードが書けるようになります。一方、プログラミングが嫌いだと、どうしようもありません。プログラミングは人によって生産性が大きく異なるので、得意な人に頼るのもいい選択だと思います。プログラミングできるのも大事ですが、何を作るかはもっと大事ですから。

著者:安井 真人(やすい まさと)