プログラムの考え方

これもよく聞く話だけど、”プログラマやシステムエンジニアは、理系の方がいいの?”

といわれていますが、私は、関係ないと思っています。

文系・理系と分けるのがナンセンスだって話は置いておくとして、何かアプリケーションを作るという段階においては、専門性が重要視されるだけで、それが文系だろうが理系だろうが関係ない事です。

専門性は、八百屋でもいいし、アプリケーションを必要だから作っていくが取っ掛かりとしては、一番わかり易いのです。八百屋さんでも、帳簿を付けます。それは帳簿のソフトがあると思います。でも、八百屋特有の仕入れや管理には適していないかもしれない。その時に、今ある物で我慢するか、手書きに戻るかではなく、手書きでやる事をアプリケーションにしてみるという考えが、プログラムの最初なのです。全体は無理かもしれない。それなら、一部だけでもいい。そうして、作ってみれば他にはない専門的な物が出来上がってきます。

簡単に言っていますが、そのアプリケーションが難しいといわれるのかもしれないが、それは当然です。
それを生業としている人が居るのですから・・・。そう言ってしまえば話は終わってしまいますが、その生業としている人と同じ事ができると考えるのではなく、自分が必要としている物だけを作る事に集中すればそれほど難しくないでしょう。

プログラムを大きく考えれば、運動会の順番もプログラムという。あれと同じで、まずは自分がやりたい事の手順を紙に書き出す所から始めればいい。
書き出せれば、プログラムの前段は終わった様な物だ。
そこから、今度は、その一つのてzyんをまた細かくしていけばいい。その時に、出てくるのが、
”判断”と”繰り返し”だ。八百屋なら、みかんの在庫が10個を下回ったら仕入れるとかなると思う。これが判断になる。
店頭に、3個ずつにした玉ねぎを台の上に並べる場合は、何回並べるのか解らないがこれが、繰り返しになる。

こうして、業務を細かく細かくしていけば、次に実際に人間がやる事と、アプリケーションにやらせる事を区別する。
人間がやる事は、人間がやればいい。アプリケーションにやらせる部分は、ここまでできていれば、実際に言語を使って記述するわけだが、ここからは言語の世界の話しになってくる。

でも、プログラムはできるようになっているのは間違いない。言語知識が足りないだけという事になる。
ここまで来てやっと言語の選択になるというわけです。

言語の学習

プログラムの学習=言語の習得
だと思われている人が多いようですが、プログラムの学習と言語の習得は別物です。

個人的には、プログラムか考え方であって、言語はその人間が考えた事を、パソコンやスマホに解るように記述する命令だと思っている。したがって、どう勉強したらいいかと聞かれたら、まずは、プログラムを覚えようという事になる。

しかし、ここで問題になるのが、考え方をつらつらやっていても、なかなか覚えられない。実際に動かしたほうが覚えやすい。そう考えて、言語をから入るのも悪くはない。悪くはないが、正解でもないという事になってしまう。

最初に勉強する言語はなんでも良いと思うが、コンパイル言語でスタンドアローンで動く物が良いと思っている。

Javaでもいいと思うし、VB.NETやC#と言った物でもいい。
最近の開発ツールは優秀だから、ヒントも大量に出るので、最初の取っ掛かりさえ間違えなければ、十分プログラムを書けるようになると思う。

言語的なブラックボックスが少ないのは、C++などだろうとは覆うが、すこし敷居が高いように思える。

初めて演るのなら、Java か C#だろうと思っている。PHPやRubyと言った言語もいいとは思うが、すこしブラックボックスが多いように思える。それに、言語理解の時に、ネットワークの理解やら動作原理の理解が入ってくる。無くてもプログラムは作れるが、PHPしかかけない人間が出来上がってしまう。会社などで即戦力とか言っているがそれは間違っている。使い潰されるだけだ。
古い古い話で、COBOL だけで育った人をVB.NETが使えるようにして欲しいといわれた事がある。

プログラムとしては書けるが、汎用機的な考え方が抜けないので、なかなかイベントやプロパティやメソッドという考え方に馴染めないでいた。しかし、内部のコードに関しては完璧に書くことができる。多少の戸惑いはあるが、コードを書くという事では、COBOLだろうと、VB.NETだろうと、PHPだろうと変わりはない。言語特有の考え方ができるようになるかどうかに関わってくる。

だからこそ言いたい。
プログラムの学習は、言語に依存しない部分だけを教えて、そこから、各言語特有の考え方を、ハードウェアやネットワーク交えて教えていく。それがいいと思っている。

プログラムをやるという事

小学校/中学校の技術の時間で、パソコンに関しての授業が行われる事になっている。教える側に立って考える時に、『何を教えたら良いのか?』そんな事を考えてしまう。プログラムを教えると言う事も幅が広い、セキュリティ関連の事を教えるにしても基礎ができていなければ、海外で通じない英語と同じような事になってしまう。また、社会に出てから必要になって覚えるのでは遅くなってしまう事も考えられる。

プログラムを作るだけなら、本に乗っている物をコピーして動かすだけで十分です。これで終わっては、何も楽しい事は起こりませんし、プログラムを作る上で大切になってくる考え方を考察していきます。

プログラム以外では、ネットワークの基礎/ハードウェアの基礎を考察する事で、作るプログラムに幅を持たす事が出来ます。また、動作環境の違いからくる得手不得手・言語による動作の違いや得手不得手を代表的な物からまとめる事で、何か『作りたい』と思った時の選択肢が広がる事につながっていく。

再開

長らく停止していましたが、再開します。