プログラム

皆様こんにちは、株式会社コアブリッジの柳です。
今回は、先号記した「アルゴリズム」を実装するプログラム(Program/Programme)を取り上げます。
プログラミング(Programing/Programming:プログラムを作成する行為)が義務教育で必修化され、小学生以上は知っていて当然となる中、大人が「知らない」とは言ってもいられなくなってきました。いつものようにプログラムにまつわることをつらつらと書き連ねていきます。

プログラムとは

Programは、Pro(前もって)+Gram(書いたもの)からなる単語で、これから行われることを事前に決めて記述したものを指します。実際に、「計画」「放送予定」「訓練課程」などの意味で使われますね。
ITのプログラムも全く同じで、コンピュータに行わせたい処理を、所定の文法で記述したものです。「コンピュータに行わせたい処理」とは「アルゴリズム」のことであり、アルゴリズムを「コンピュータ向けの言語(後述します)」で記述した命令書がプログラムです。
最終的には、プログラムはコンピュータが直接解読できる形式に変換され、その結果出来上がったものがソフトウェア(Software)です。アプリケーション(Application:文書作成やメッセージ交換など特定の用途に使用するソフトウェア)やドライバ(Driver:コンピュータに周辺機器などを接続して利用可能にするための仲介のソフトウェア)など、様々な用途で使用されます。
新聞その他でLinux(WindowsやiOSなどと同様、コンピュータ機器自体を動かすための基本ソフトウェア)などの無料のソフトウェア(Open Source Software:OSSと言います)について「ソフトウェアの”設計図”が無料で公開されている」と書かれていますが、あれは正しくは”プログラム”が公開されています(設計図は、プログラムとは別に存在するか、もしくは作られていません)。
ITやプログラムは、詰まるところ、「人間がいかに楽をするか」という欲求(?)によって生まれ、発展してきたものです。一度命令書を書いてしまえば、何度でもコンピュータに仕事をやらせることができるわけです。
なお、プログラマー(programer/programmer:プログラム作成者)とは「楽をするためならば苦労を厭わない」という興味深い習性を持った人種のことです。私がプログラミングの研修をご提供する時には、受講者に「皆さんもモノ臭の仲間入りです!」と褒め称えて鼓舞します。

プログラム言語

先に「コンピュータ向けの言語」と記したものをプログラム言語あるいはプログラミング言語といい、現在使われているものでおおよそ数百種類存在します。ただ、人間が話す自然言語に、日本語、英語、スペイン語・・・などと様々な種類があるのとはちょっと事情が異なり、コンピュータに何をさせるか(人間がどのような用途で使うか)に合わせて使い分けます(ちなみに、自然言語の数はおよそ数千種類あると言われ、すごい数ですね)。
人間の言語は人の共同体において自然発生的に生まれたものですが、プログラム言語は、コンピュータに何をやらせるかによって命令書の書き方や書く内容が異なるという理由で、楽に記述できるような言語が考案され、用途によりプログラマーが選択していきます。何を食べるのかによって箸やフォークやスプーンを使い分けるのと同じです。
古くから存在するプログラム言語は文法が簡素で、新しいものは複雑なことを簡潔に書き表せる仕組みが入っていたりしますが、前回書いたように「3つの制御構造で全てのアルゴリズムを記述できる」という原理がある以上、一つの言語を習得していれば他言語の理解は容易です。

開発者以外に何の役に立つか

仕事あるいは趣味でソフトウェアを開発して他者に提供するあるいは自分で使っているという人はさておき、そうでない人にとってプログラムは何の役に立つでしょうか。
あくまで私見ですが、本音と建前を述べると…
【建前】論理的思考を養える、仕事の効率化を図れる
【本音】ぶっちゃけ、必要がなければ不要
元も子もない本音も混じっていますが、以下ご説明します。

論理的思考を養える、仕事の効率化を図れる

コンピュータはプログラムに書かれていることを正確に高速に実行します。書いた通りにしか動いてくれません。勘で書いても正しく動かず、論理的に正しい手順を記すことが絶対です。私は論理的思考よりも感覚で動きたくなる人間で、プログラミングを学んだ時にはえらい苦労しました。直感で書いたプログラムは誤動作し、頭を使わない試行錯誤による修正では直ることもなく、面倒で苦手な論理を組み立てるという訓練を続けてようやく修得していきました。
しかし、これができるようになると、色々なことに応用が聞くことになります。
大量の単純処理をプログラムとして記述してしまえば、高速かつ正確に処理してくれます。先述の「プログラマーは楽をするための苦労を厭わない」理由です。別にプログラミング言語を習得しなくても、Excelの関数の組み合わせだったり、OS(WindowsやmacOSやLinuxなど)のコマンドの羅列(バッチ処理とかスクリプトなどと呼びます)であっても、手作業とは比較にならない効果が得られます。複数段階にわたってとんでもない数の処理をしなければならい時にスクリプトによる一発処理で片付けることができると、プログラムを苦労して学んで良かった、と今でも思います。

必要がなければ不要

はい、書いた通りです。だって、必要ないんですから!
母親が存命中に、便利だからとiPadをあげました。「こんな高価なものを!」と喜んでくれましたが、何に使っていいか思い当たらず、結局使わずじまいでした。食事の献立を探せるアプリとか、調べ物の仕方を教えましたが、本人は必要としていないのですから、そりゃ使いません。母親の遺品を整理した時に出てきたiPadを見て、親切の押し売りをちょっとだけ悔やみました…
ですので「便利だから」「こういう時代だから」という理由で押し付けることはいたしません。「プログラムならばこの部分に役に立つな」「これ面倒臭い、楽をしたい!」と思うことがあれば是非学んで実際に使ってみてください。相応の益はありますよ。

今号は以上です。
では、また次回お会いしましょう。

※本文中の情報、状況、数値等は執筆時点のものです