エンジニア端くれ。

それに所属してはいるが、末に連なるつまらぬ者。末輩。

hello world をやる意味

入門で必ずやる"hello world"

プログラミングの勉強を始めると、必ずやらされるのが"hello world"。
画面に"hello world"と表示させるだけで簡単なプログラムであるが、これをやる意味を初心者が自発的に理解するのは難しい。

私は大学の授業で"hello world"を始めて実行したとき、「入力した文字が出るのだから当然じゃん。意味なくねー?」と思った。

"hello world"をやって何になる?

プログラム、またはプログラムを実装するもの(PC、マイコン、アプリケーション…)は全て次の動作を行う。

  1. プログラムにデータを入力する
  2. データを処理する
  3. 処理したデータを出力する

例えば体重計であれば、以下のような動作になる。

  1. 重さをデータにしてプログラムに入力する
  2. データを計算する
  3. データを表示する

"hello world"はこの流れをもっとも簡単に把握できるプログラムである。
その動作を理解できることに意味があり、授業や入門書で必ず触れるようになっている(と思う)。
ただ、講義や入門書でその説明がない場合があるので、意味を感じにくい。
以下は"hello world"の動作。

  1. "hello world"を入力する *1
  2. "hello world "が表示される

"hello world"の次

"hello world"が出来た。
何かやりたいことがあるのだが…次はどうすればいいか?

入力をデータにすることを考えてみよう。

データにすれば、計算や処理ができるので何とかなる。
重さ、タッチ反応、加速度でも、なんでも。

「入力ってそもそも何よ?」とか「どうやってデータにするんだ?」という知識がないと、プログラム作成で躓いてしまう*2
以下は入力とデータに変換する方式のヒント。参考になれば幸い。

例:「やりたいこと」→「変換方式」→「出力」

  • 温度を数値化して表示したい→温度センサをつかってデータを取得 *3→処理して表示
  • スマホのタッチ反応を感知したい→ライブラリを使ってタッチを感知*4→感知後関数処理
  • twitterを自動で呟きたい→呟き内容を入力してAPIに渡す→自動で呟くように処理

参考文献

汎用的な考えとして、以下の書籍を紹介する。
読むのに中学数学の知識が必要であるが、比例や合同の知識はプログラム作成の上で必修だと思っている。

いかにして問題をとくか

*1:表示するだけなので計算や処理はこの場合無い

*2:データ変換は恒常的な問題と思う

*3:プログラムを使ってセンサと通信しデータを取得する

*4:ライブラリは処理を行ってくれるプログラム