プログラム未経験向け、大雑把に分かる「プログラムとは何か」

パソコンにプログラミングする人

情報化社会の進歩により、ITやプログラムの重要性が増しています。 その一環で学校教育にもプログラミング授業が取り入れられるようになりました。

しかし既に学校を卒業した人はプログラムに縁がないままです。 そんな人に向けて分かりやすく「プログラムとは何か」をお話します。

プログラムとは

モニタに表示されるプログラムのソースコード

プログラムを一言で説明すると「コンピュータへの指示」です。 関連用語でプログラムを書くことを「プログラミング」、職業でプログラミングする人を「プログラマ」と言います。

プログラムを知らない人が抱くプログラムのイメージは「意味不明な英語の塊」と言ったところでしょう。 以下は入門書の最初のページに載っているレベルの簡単なプログラムですが、それでも知らない人からすれば意味不明です。

lass Hello{
  public static void main(String[] args) {
      System.out.println("Hello");
  }
}

ちなみに上のプログラムは「Helloと言ってね」という内容です。

プログラムはコンピュータへの指示

プログラムはコンピュータへの指示をコンピュータに伝わるように翻訳したものに過ぎません。

人に何かをやって欲しい時、口頭なり文章なりで指示を出しますよね。 プログラムはその対象が人からコンピュータになっただけです。

プログラマは人とコンピュータの間を取り持つ通訳・教師と言えます。

プログラム自体は難しくない

外国語でスピーチする時は、まず母国語で原文を考え、それから外国語に翻訳します。 難しいのは外国語それ自体よりも、原文をどうするか考える方です。

プログラムもそれと同じで、まず自然言語で論理を組み立て、それをプログラムに翻訳します。 難しいのはプログラムそれ自体よりも、要件定義や設計の方なのです。

先進的な試みだったり、要件が厳しい場合は難しいプログラムになる場合もありますけどね。 ただ普通に働ける程度に習熟するのは、そこまで難しい話ではありません。

プログラムが難しいのは、コンピュータは融通が効かないから

ポンコツそうなロボット

コンピュータは全く融通が効きません。 指示したことを指示した通りにしか実行しませんし、想定外のことが起きればどのような動きをするか分かりません。

人間相手ならたった一言で済むような簡単な指示でも、コンピュータには全く通用しないのです。 プログラマの役割はそんな優秀で融通の効かないコンピュータに仕事を教えることと言えます。

ロボットを部屋から出したい時の指示は?

部屋にいる人に外へ出て欲しい時は「部屋から出てください」の一言で済みます。 しかしこれがロボットだった場合は、同じ指示では無理なのです。

例えば部屋のドアが閉じていた場合、ロボットは外に出られず立ち往生します。 そのため先に「ドアを開ける」指示が必要です。

しかし「ドアを開けて部屋から出てください」では、ドアがあらかじめ開いていたらドアを開けられずに立ち往生してしまいます。 なので「ドアが閉じている場合、ドアを開けて部屋から出る」「ドアが開いている場合、そのまま部屋から出る」となりますね。

他にも「ドアが複数あった場合」「行動中に他の要因でドアが開閉した場合」「人が部屋に入って来た場合」「ドアの開閉方法」「退室後にドアをどうするか」「部屋から出た後どうするか」など、考慮が必要そうなことは沢山あります。

人間相手なら一言で終わる指示が、なんだかとんでもないことになってきましたね。 プログラムが難しいと言われる理由は、プログラムそれ自体よりも、このような要件定義や設計にあると言えます。

指示できないことはプログラムにできない

自然言語で具体的に整理できていないことをプログラムにすることはできません。 プログラムにできることはあくまで翻訳であり、原文を素晴らしいものに変える機能はないからです。

設計が曖昧でふわふわしていると、プログラムは意味不明なものになります。 いくらプログラムが出来てもこれは変わらないので、まずは自然言語でしっかり設計する必要があります。

まとめ

プログラムのことを知らない人にとって、プログラムは意味不明な英語の塊に見えるかもしれません。 しかしプログラムは設計した内容を実現するための定型文に過ぎません。

きちんと設計すれば、外国語を翻訳するように定型文に置き換えるだけです。 プログラムの本質はプログラム自体よりも、論理や設計にあると言えます。

プログラムはそう難しい話ではないので、興味があれば気軽に勉強を始めてみてください。 その経験はあなたの論理的思考を成長させるでしょう。

eyecatch

謎のキー「CapsLock」「NumLock」「Ins」の効果と用途

eyecatch

キロバイト、メガバイト、テラバイト…まだまだ上があるバイトの単位

ITの記事

eyecatch

「http」と「https」の違い

eyecatch

ネットに書いたことは消えない!そんなネットと「忘れられる権利」

eyecatch

ホームページとウェブサイトとブログの違い

eyecatch

プログラミング言語とマークアップ言語(HTML・CSS)の違い

eyecatch

「ハッカー」と「クラッカー」の違い

eyecatch

匿名化アプリとTorの仕組み

ITの記事一覧HOME