news

プログラムは魔法の言葉ではない

プログラムは魔法の言葉ではない

こんばんは、システムの知恵袋の細谷です。

 

新卒研修会でいろいろとこちらの準備の時間が取れず申し訳ありません、

今回もちょっと認識合わせをしていきたいと思います。

 

 

 

プログラムは難しくないよと前回お話いたしましたが。

そうです、プログラム自体は難しくありません、自体は、、、

 

何が大変なのかって、プログラムにできないことはないといえるぐらいできる事は多いんですが、、

凄く細かいんです。、、

 

例えば、「歩くロボットを作る」とするとします。

歩くのであれば、

・右足を前に出す。

・左方の足を前に出す

・右足を前に出す

これだけでいいような気がしますが、プログラムの世界ではそうはいきません。

 

・右膝をXまで持ち上げる。

・足先をY先に放り出す

・足が地面についたら、崩れたバランスを戻す

・重心を前にもっていき、左足の負担を0にする

・上記をワンセットとし、次は左で同じ事を行う

・上記を指定の回数繰り返す。

とここまで命令しなければいけません。

更に言うとこれだけだと上半身が動いていないので、それらもプログラムに組み込む必要があります。

 

面倒だなぁと思うでしょうが、これ「私たちもやっていること」なんです。

歩く際には足を動かすだけではなく「手を振った勢いを使って前に加速する」などでサポートしていますし。(これは左右に身体が流れるのを防ぐ意味もあります。)

足の力で体を前に出しているのではなく「意図的に前に倒れるようにして、足を交互に使って倒れる防いでいる」だけだったりします。

 

実際に上半身を固定して足の力だけで歩こうとしてみると、すごく力が要りますし、すごく大変です。

アスリートの人がフォームを教えてもらっているシーンがありますが、これと全く同じでプログラムの時は私たちがトレーナーに当たるわけですね。

 

つまり、プログラムは「当たり前のことを当たり前に書けばいい」という事です。

以前に文字に直すと意味が分かりますよと言ったのですが、

これはその続きで、プログラムも現実も法則はおおよそは同じです。

ただし、普段意識しない部分も意識する必要があるので、それが「難しい」と感じてしまう部分ですね。

 

逆に言えば突飛な事はフローの中に書いてないわけです、

先ほどの例で行くと、いきなり「空を飛ぶ」みたいな命令は入ってきません。(その場合はプロペラを回す、などの命令が必ず前に居ます。)

順番に一つ一つ追っていくことで、それが何をしているのかが分かるようになっています。

 

これが読めるようになってくると、他の人がなぜこのようなプログラムを書いたのかが分かります。

すると、なら私はこうしようとか、多分目的のプログラムはここにある、というのが自然と出てくるようになります。

これが「プログラムで会話する」という事ですね。

 

「プログラムで会話する」のは日常会話をプログラム言語にするとかではありませんよ。

「エコー カッコ おひるどうする カッコトジ セミコロン」とか会話しても面倒なだけですw

(エイプリルフールネタだとは思いますが、昔に教えてもらって笑った覚えがあります。)

 

以上です。

なんだか適当に書いているような気がしていますが、そんなことはないと信じたい(需要があるかは別)

 

それでは本日はこの辺で、失礼いたします。