文系でもプログラミング ありがちなプログラミングの誤解をとく

先に具体的な話を勧めてしまったため、プログラミング言語とはなにかということを置いて、
文系でもプログラミングなどということを話してしまった。

プログラミング言語について何も知らない人はハードルを高く思っているかと思うが、
そもそもプログラミング言語とはなにかということから話し、あらぬ誤解を解いてから具体的な話に入るべきだった。
(記事がある程度たまったら目次を作るので、これを最初に持ってくる予定にする)

誤解

  • プログラミング言語は数学ができなくちゃだめじゃない?
  • 0と1を組み合わせるんでしょ?
  • 高価なパソコンを使って専門的な機材が無いとできないんじゃない?
  • 専門教育を受けないとダメなんじゃない?

よく聞く誤解はこういったものがある。

一つ一つ回答していく。

数学が必要か?

数学は、それほど必要はない。
それほど複雑なものでなければ四則演算(足し算、引き算、掛け算、割り算)で十分。

ゲームなどでは落下についての物理法則の計算などは、高校卒業レベルの数学が必要なのかも知れない。
高度に専門的な地震動を察知してリアルタイムに震源地の距離を導き出すとか、そういう物は高度な数学が必要でしょう。

でも、全員が全員そのレベルが必要なのではなく分業されている。

たとえば、僕がスマホでGPSの機能を使って今居る場所を取得するアプリを作ったとしよう。
GPSは複数の衛星からの数値を取得して計算をしている。
衛星が発信した時刻と衛星の座標を受信して、GPS機器は受信した時刻との差を計算してどれほど衛星から現在地は離れているのかを計算する。
さらに大気による電波の乱れや、地球は完全に球体ではないことによる誤差なども修正をして計算をする。

しかし、これは勝手にスマホがやってくれる。
僕らスマホアプリを作る人は、スマホに対して「現在地をGPS使ってしらべて」と命令をするだけ。

こういうように予め決まった計算や処理は予め用意されているし、用意されていなくても別に公開されている『ライブラリ』と言われる物を使うことで自分らはただ命令をするだけで事足りる。

平方根を出して欲しいならば平方根を求める仕組みは多くのプログラミング言語に備わっているので、数学はそれほど必要はない。

0と1を組み合わせるかどうか

組み合わせているのは組み合わせているが、僕らはそれを全く意識をしない。
意識をしている人たちもいるけれど、それはCPUを作ったりするレベルの人だと思う。

ご存知の通りコンピュータは0と1の組み合わせですべてを表現している。
これらの0と1で行われるコンピュータへの指令は『機械語』というものが行っている。

機械語はとても読みづらく、意味しているものが理解しづらい。
ほんの素朴なものならば人間でも作れるが、僕らが日々扱っているアプリのようなものを機械語で作るのは不可能。
手計算で何万桁の円周率を計算するようなもの。

プログラミング言語の歴史は、このような煩わしさを如何に単純化して分かりやすくしていくかの歴史でもある。

コンピュータにやらせたい処理の中には誰がやっても同じ処理になるところがある。
そういう部分をまとめて『抽象化』させていく。

例えば、
右足を前に出して右足が地面につく前に左足をつま先に力を入れて蹴りだす。その時に同時に右足はつま先から着地して左足は反動で右足より前に移動をして着地をしつつ、右足も左足と同様に蹴りだす。それを太ももの筋肉と膝の柔軟さを利用して高速に繰り返す。
という煩雑な処理を『走る』という一つの処理として抽象的に表現をしてしまえればいい。

だからプログラミング言語において、複雑でわかりにくい処理でもただ決まった事をやるだけで動くわけだ。

一つの処理の中に多くの0と1がコンピュータ内を駆けまわったとしても、僕らはどう動いているのかは知らなくても良い。

高価なパソコンと機材は必要か??

実は僕は貧乏で、小遣い10000円でやりくりしているけれども、何故か余る。

パソコンなんて6年くらい買っていない。
ほとんどお古。
OSはLinuxでタダ。

プログラミング言語の殆どは開発をするために必要なソフトは無料で揃えることができる。

プログラミング言語の多くは、誰もが中身を知ることができ誰もが使うことができるそういう企業や権力にとらわれない自由な場であるという思想が広く支持されている。

フリーソフトが多いと思うけれども、フリーは無料という意味ではなく自由であるという意味だ。

すべてがそうではないのだけれども、多くのプログラミング言語は自由だ。
ハッカー文化の気質は、反権威主義であり自由主義であり、秘密を好まないからで、
そういう土壌ですべてを公開しコピーを良しとする文化が育まれ、そして多くのプログラミング言語やLinuxなどのOSが成長していった。
だから、そういう文化の恩恵を無料という形で受けることができる。
まあ、たまには寄付とかそれ以外のサポートも自発的にしたり、その他の強力も必要ではある。

こういう文化は日本のオタクにも近いとおもう。
オタクの聖地コミケはアレはボランティアで成り立っているファンが共同でやっている即売会であって、あの場に行く人はお客さんではなくて参加者という位置づけ。

話しはずれたけれども多くは無料でできるということだ。
(企業が出資しているようなものはお金がかかる。だがそういうものはあまり流行ってはいない)

専門教育は必要か?

プログラミングを始めるにあたってのスタートラインには全く必要ないと思う。

多くのハッカーたちは中学の頃からやっていただろうし、
そういう学校勉強脳で物事を考えると立ちどころにプログラミングはできなくなると思う。

絵と同じ、好きだからやる。

でも、そのうちハッカー中学生が高度に専門的なことをやるならば大学にいくことになるだろう。
でも、それは絵画少年が美大に行って師匠を見つけるようなものだ。

スタートは身一つで良い。
あと年も関係ない。

そもそも、多くのことに置いて年齢は重要なファクターには成り得ない。
年齢でごまかしてスタートを切らないのはただ臆病なだけか、年と共に肥大化した自尊心を未知の領域で傷つけたくないだけのどちらかだ(あ、どちらも臆病ってことか)

 次

次はプログラミング言語について具体的な話に入っていくとおもうが、未定

スポンサードリンク

関連コンテンツ