とりあえず移転してみました

ニュースねたや、IT系の記事を書いていくつもり・・・ですが、どうなるかわかりません。まあ、とりあえず やってみます。

プログラミングの基礎がわかっても・・・

f:id:imsdJava:20170220112752j:plain
久々に、C#やJavaの本などを読んでみると、あれ?そうだっけ?みたいなことがあって色々と勉強になる。自分では理解しているつもりでも、正確には理解していないところなんてある。

まあ、全部覚えなくても本やネットでコードを調べればなんとかなるんですがね・・・
基本の基本くらいの部分さえ覚えておけばなんとかなります。
インスタンスとか継承とか、メソッド、インターフェースの意味とか使い方とか。

ループ文とか、if文とかは、どの言語でも使われるので、覚えておけばある程度コードを読めるようになるし。

そういう意味では、小学生からプログラミングの勉強を始めるなら「変数」から始めるというのがいいかも知れないのだけど、いきなり「変数」って言われても頭の中で「?????」ってなるだけだろうし。

コードを読むのは大変だって!

普通の考え方や計算式とは違うので、そこを勉強しておけば違和感が少なくなっていくのですが、コードを見ない勉強をしてしまうのは、後を考えると不安になってしまう。

正直、コードを読むのって面倒だし、しんどい。人が書いたコードなんか意味わからん!わけだし、自分が書いたコードだって、数ヶ月すれば「あれ?これって何してるんだっけ?」ってなってしまう。

プログラミングなんて面倒なことの積み重ねでしかない。コードを書いても、コンパイルの段階でエラーになったりするし、うまく実行できても予想と反した動きになったり例外処理が起こってプログラムが止まったりね・・・

結局、そういう経験をしながら動かしていくので、早い段階でややこしい事を知っていないと後から知って「聞いてないよー!」ってなるのが一番可愛そうだと思う。

f:id:imsdJava:20170220112848j:plain

人は、経験から予測できる

ホームページなどの文章から目的の言葉を検索するというコードを作るにしても、目的の文章を読み込んで、検索対象となる文字と1文字ずつ検索するという処理を文章の最後までやっている。

これが人間なら、ざっと文章の全体を見てから検索する言葉から「文章のどのあたりにあるか?」目星をつけて探すことになる
例えば、「最後になりますが・・・」なんて言葉を検索する場合は、当然「文章の終わりにある」と予想というか・・・そこから探す。コンピュータは、一番最初から全て検索していく。

コンピュータは、処理速度が早いので人間より早く処理できるけど、行っている動作をみると、コンピュータのほうが優れているとは言えない。
人間の経験にあたる部分を人工知能で再現しようとしている。

f:id:imsdJava:20170220112917j:plain

プログラムで対処することも可能で、先の事例のように「最後になりますが・・・」というような「最後」という言葉がある場合は、文章の終わりから検索するとか改良することも可能。その場合は、言葉によって文章のどの部分にあることが多いのか?というデータが必要になる。

人の経験は、コピーしてそのまま他の人に提供することはできないけど、コンピュータの場合はデータなのでコピーして使うことができる。そういう意味では、多くのコンピュータが経験したことを共有することで、コンピュータの性能は格段に向上する可能性が高い。

そんなことを考えていると、普段なにがなくやっていることが実は色々な判断だったり経験に基づいて行われているんだなと感心してしまう。食事の際に、なにげなく使っている箸だって、生きている中で覚えたからだし。

人間が一番、人間を理解していないかも知れない。

f:id:imsdJava:20170220112940j:plain