結論から先に言えば、出来る。
プログラミングと大きなくくりで言っても、どんなプログラムを組むのか。
まったく自分の知らない事柄を、知っている人から話しを聞きながら、もしくはネットなどの情報から、プログラムに落とし込むとのがプログラミングだとするならば、
・コミュニケーション能力、理解力、読解力、論理的思考、経験則、…
・向上心、好奇心、興味、…
・やる気、根気、情熱、気力、体力、精神力、忍耐力、…
といったところだろうか。
どれが一番重要とかは、各自で考えていただこうか。
数学というワードは出てこなかったですね。
しかし、コンピュータやパソコン、もっと言えばCPUは、数学を基盤として、数値演算をしている。
一番コンピュータに近い言語は機械語やマシン語と呼ばれるもので、0と1だけの羅列でしかありません。
少し人間の言語に近づけていくと、アセンブリ言語、いわゆるアセンブラと呼ばれるものです。
アセンブラは、加算、減算、シフト演算、論理演算といった簡単な演算しかありません。
もう少し人間の言語に近づけていくと、高級言語と呼ばれるものになります。
BASIC、FORTRAN、C言語、Perl、Ruby、Java、…といったものです。
関数と呼ばれるものがいくつか定義されているので、その関数の仕様を理解していれば良く、内部的な詳細を知らずして使うことが出来るのです。
つまり、コンピュータにしろ、プログラミング言語にしろ、数学の上に成り立っているものであるからして、数学をまったく知らずにとは行かない。
さて、私のやってるプログラミングは、科学技術計算の類が多い。
特に、数学関連に偏っているので、当然数学が出来なければ話にならない。
数学の計算を劇的に速くするようなアルゴリズムを考えるのが楽しいのです。
そのアルゴリズムの正しさ、速さを確認するために、プログラミングをしているというのもあります。
こういったアルゴリズムがどんどんと確立されていくと、高度な数学の知識がなくとも、プログラミングが出来るとなるわけです。
しかし、すべての事象が高速なアルゴリズムとして確立されるといった、そんな未来は永遠に来ないでしょうから、現代に生きている我々は、個々に自分の知識レベルでプログラミングをすれば良いのだ、というところに帰結するわけです。
プログラミングとは、積み木やブロックに近いものである。
積み木やブロックであれば、幼稚園児でも遊んでいるだろう。
ただ、自分の欲求に答えるような、新しい形や色や大きさの積み木やブロックが無ければどうするのだろうか?
既存の積み木やブロックで誤魔化すのか。
結果的に、積み木が崩れてしまったり、ブロックは自分の想像と違う形になったりしてしまうことだろう。
新しい積み木やブロックを自作するのか。
それを作るための道具や知識や経験が必要になるだろう。
先にも書いた通り、コンピュータやプログラミング言語は数学の上に成り立っているので、出来上がったプログラムが自分の欲求を満たしていない場合、原点である数学に立ち返る必要があるということです。
つまり、数学が出来なくても、プログラミングは出来る。
ただ、出来上がったプログラムに納得が行くかは別問題である。
そういうことです。
ではでは