情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsで始めるプログラミング入門講座 第2回 プログラミング言語とは何か

この記事は「Node.jsで始めるプログラミング入門講座」という連載記事の2つ目の記事です。

その他の記事に関しては下を参照してください。

プログラミング言語とは何か?

前回、パソコンは10を使って「計算」を行っていると言いました。

そして、ソフトはユーザに提供する機能をパソコンの「計算する能力」を使って実現しているとも言いました。

そして、プログラマはソフトの機能を「計算」に落とし込んだものをプログラミングするのでした。

それでは、プログラマはパソコンに対してどのような「計算」をしてほしいか指示しようとする際に、10を使って指示を行わなければならないのでしょうか。

確かに、そうすることもできます

しかし、それはとても面倒臭いです

考えてもみてください。

10を使って指示を出すということは、1011100101みたいな10の羅列が「画面に線を描く」みたいなパソコンに対する1つの指令になる訳です。

そして、パソコンに対する一連の指令は10の並びがずっとずっと気が遠くなるくらいに長く続いていくということです。

つまり、こういうことです。

1010111100101010011010101010100011110101010101000010101010101100101010011010101010100011110101010101000010101010110101010101000010101010101100101010010101011010100001010101010110010101001010100110101011010100011110101010101000010101010101100101010011011010101010001111010101011010000101010101010101010100001010101001011001010110010101010101000010101010101100101001001010100110101010101000111010101011010100001010101010110010101001101010101010001111010101010100000101010101010101010100001010101010110010101100101010101010000101010101011001010100・・・

これがパソコンが理解できる唯一の言葉です。これを機械語と言います。前回、パソコンは電気で動く機械だと言いました。機械語の1が電気が流れている状態となり、0が電気が流れていない状態となることによって、パソコンはこの言葉を理解することができるのです。

なので、この機械語を使ってパソコンに指示を与えることはできます。

しかし、幾らプログラマがプログラミングの訓練をするといっても、機械語をすらすらと読んで書けるようになるのは難しいでしょう。

皆さんももし「プログラマは10の羅列をひたすら読み書きしなければならない」などと言われたらげんなりしてしまうのではないでしょうか。

実は、コンピュータが発明された当初は機械語を使ってプログラミングを行っていたこともありましたが(当時はまだ「科学者」がコンピュータを取り扱っていた時代です)、すぐに

  • これは無理だ

ということに気付きました。

10だけから成る言葉は人間にはあまりにも分かりにく過ぎるのです。

そして、機械語の代わりとなる様々な「人間に分かりやすい言葉」が考案されるに至りました。

そのような言葉をプログラミング言語と言います(厳密には機械語も含めてプログラミング言語とされることが多いです。しかし、最近は機械語を言語として扱うことはほぼないため、機械語を指してプログラミング言語と言うことはまずありません)。

つまり、こういうことです。

  • プログラマは人間に分かりやすいプログラミング言語を使ってパソコンに対する命令を記述する。
  • プログラマは自分が記述した命令を「翻訳ソフト」に渡してパソコンが理解できる形(10の並び)に変換してもらう。
  • 変換された命令はパソコンが直接理解できるものなのでパソコンに実行させることができる。

プログラミング言語を使って書かれたパソコンに対する命令をソースコードと言います。そして、ソースコードを「翻訳ソフト」で翻訳したものをオブジェクトコードと言います。

つまり、ソフトの実体はオブジェクトコードなのです(実際には、完全なソフトとなるためには他にも幾つかのものが必要ですが)。

もしかしたら、プログラマはソフトを作る人間だというのに、「プログラマがソフトを作るのにも別のソフトを使わなければならない」というのはちょっと不思議かもしれませんが、そういうものです(「プログラマが使うソフトは誰が作ったのか?」という疑問が自然と湧いてくるかもしれませんが、あまり気にしないでおきましょう)。

プログラマとは既にあるものを上手く利用しながら効率的に必要なソフトを組み上げる存在なのです。

皆さんもこれからプログラマになっていくのですから他人の作った便利なものは積極的に利用していくようにしましょう。

さて、ソースコードをオブジェクトコードに変換する「翻訳ソフト」には大きく分けて2種類のものがあります。コンパイラインタープリタです。

コンパイラとは何か?

コンパイラとは「翻訳ソフト」の中でも、ソフトをユーザに提供する前に予めソースコードをオブジェクトコードに変換してしまうもののことを言います。

プログラマはプログラミング言語を使ってソースコードを書き上げたら、コンパイラを使ってソースコードをオブジェクトコードに変換します。

そして、オブジェクトコードをソフトとしてユーザに提供し、ユーザはソフトを利用します。

つまり、「ソースコードをオブジェクトコードに変換する」という工程が独立した1工程となっており、プログラマがそれを行います。

図にすると下のようになります。

インタープリタとは何か?

インタープリタとは「翻訳ソフト」の中でも、ユーザがソフトを動かす際に適宜ソースコードをオブジェクトコードに変換するもののことを言います。

プログラマはプログラミング言語を使ってソースコードを書き上げたら、ユーザに対してソースコードをソフトとして提供し、更にユーザがインタープリタを持っていない場合にはインタープリタも提供します(インタープリタ自体はプログラマが作成するのではなく、サードパーティが提供しているインタープリタをユーザに提供します)。

ユーザはインタープリタを自身のパソコンにインストールし、ソフトをインタープリタの上で実行します。

インタープリタはソースコードを適宜オブジェクトコードに変換し、変換したオブジェクトコードをパソコンに実行させます。

つまり、「ソースコードをオブジェクトコードに変換する」という工程が独立した1工程にはなっておらず、ユーザがソフトを動かす裏で変換が行われています。

図にすると下のようになります。

コンパイラやインタープリタの利点は何か?

コンパイラの利点はコンパイラをインストールしなければならないのはプログラマだけであるということです。

つまり、ユーザのパソコンにはコンパイラをインストールする必要はありません。

それは、コンパイラを使ってソースコードをオブジェクトコードに変換するのはプログラマの仕事だからです。

ユーザは既にオブジェクトコードに変換されているソフトを「ウィンドウズ」の助けを借りて立ち上げ、利用するだけです。

インタープリタの利点は「ソースコードをオブジェクトコードに変換する」という工程をプログラマが行う必要がないということです。

つまり、プログラマがソースコードを書きさえすれば、後のことはソフトの実行時にインタープリタが裏で自動的に行ってくれるということです。

コンパイラ方式もインタープリタ方式も一長一短であり、どちらの方式が適しているかはどのようなソフトを開発し、どのようにユーザに提供するかによっても変わります。

この連載記事は初心者向けのものなので、コンパイラとインタープリタについてこれ以上は深入りしません。

しかし、これからプログラミングを行っていく以上、出来上がったプログラムをソフトとして実行するためにコンパイラ方式かインタープリタ方式のどちらかを使わなければなりません。

この連載記事ではインタープリタ方式を使用することにします

これは、インタープリタ方式の方が「ソースコードをオブジェクトコードに変換する」という作業がない分初心者向けであろうということと、その結果、この連載記事の目的である「プログラミングの習得」に集中できると考えられるからです。

しかし、一口にインタープリタ方式と言っても様々なものがあり、インタープリタに応じて使えるプログラミング言語も変わってきます

この連載記事では「Node.js」(「ノードジェイエス」と読みます)というインタープリタ方式の「翻訳ソフト」を使用することにします

「Node.js」は無料で利用することができ、インストールが簡単にでき、簡単にプログラミングすることができ、主にウェブの世界ではそこそこ流行っていて、ウェブにはそこそこ情報が溢れていて、これらのことを考慮するとまあまあ初心者向けだと考えられるからです。

実を言うと、「初心者向け」(=プログラミングの習得に向いている)という一点だけを考えるならばもっと適切な選択肢はあるかもしれません。

しかし、「Node.js」は特にウェブの世界では広く使われています。様々な有名な大企業が自社のプロダクトを構築するために「Node.js」を採用しています。

つまり、「Node.js」は実践的です。子供のおもちゃとは違うのです。

この連載記事は「プログラミングの習得」だけでなく、その後の「実践」をも念頭に置いていることから、習得ステージからスムーズに実践ステージに移行することができるだろう「Node.js」をプログラミングの解説に採用したいと思います。

漸くこの連載記事のタイトルの「Node.js」の部分を回収することができました。

Node.jsとは?

しかし、先程から「Node.js」「Node.js」と連呼していますが、Node.jsとは一体何なのでしょうか?

インタープリタ方式の「翻訳ソフト」であることは先程書いた通りですが、それだけなのでしょうか?

実を言うと、Node.jsに関して初心者の方に知っておいてもらいたいことは今の段階ではそう多くありません。

今ここでNode.jsの特徴や利点をどんなに書き立てようとも専門的過ぎて初心者の方には理解できないでしょう。

しかし、2つだけ明確にしておくべきことがあります。

1つ目はNode.jsはただの「翻訳ソフト」ではないということです。

Node.jsは「翻訳ソフト」の機能「も」提供しますが、それだけではありません。

実は、具体例は挙げないでおきますが、Node.jsはそれ自体がプログラミングを容易にするための様々な機能を提供しています。

そのため、Node.jsを一言で言い表すのに「翻訳ソフト」とか「インタープリタ」とか言うのは不適切で、ソフトの開発や実行を様々な形で支援する「開発環境」「実行環境」あるいは「プラットフォーム」と言うのが適切です。

Node.jsはプログラミングを行ったり、出来上がったソフトを実行したりするための、1つのプラットフォーム、すなわち、「基盤」なのです

2つ目はNode.jsで使用することのできるプログラミング言語です。

Node.jsでは基本的に「JavaScript」というプログラミング言語を使ってプログラミングを行います。

つまり、プログラマはJavaScript言語でソースコードを記述し、そのソースコードをソフトとして提供し、Node.jsはそのソースコードを内部でオブジェクトコードに変換し、パソコンに実行させます。

その結果、ユーザはソフトを利用することができます。

図にすると下のようになります。

JavaScriptとは?

では、JavaScriptとはどのようなプログラミング言語なのでしょうか。

これに関しても初心者の方に知っておいてもらいたいことは今の段階ではそう多くありません。

JavaScriptに関しては今後プログラミング自体について解説していくのと同時に少しずつ解説していくことになるですから。

とは言え、2、3言葉を連ねるとしたら、まず第一に、JavaScriptは非常に人気の高いプログラミング言語です。

「RedMonkプログラミング言語ランキング」というプログラミング言語の人気ランキングがあるのですが、JavaScriptは2016年6月時点で堂々の1位となっています。

それから、取り敢えず動くものを作るだけなら割と楽に使えるという特徴があります。

プログラミング言語の中にはプログラマに対して非常に厳格な様式を強いるようなものもありますが、JavaScriptはそういった言語とは対極に位置し、プログラミングに慣れた人間にとっては割と「適当に」書ける言語です(これはあくまでもプログラミングにある程度慣れた人間にとってのもので、初めてプログラミングをする方にとってはルールだらけで大変だと感じるかもしれません。しかし、ある程度経験を積めばJavaScriptの柔軟さが心地よく感じられるようになってくるに違いありません)。

一方で、「使いこなす」にはかなりの鍛錬が必要になる言語でもあります。柔軟な書き方ができるということが「困難」として跳ね返ってくることもあるのです。

JavaScriptを真髄まで理解するには中々骨が折れると思っていただければ良いでしょう。そういう意味では、闇の深い言語でもあります。JavaScriptを真に理解しようとして底なし沼に嵌った感覚に陥ることも、もしかしたらあるかもしれません。

JavaScriptは様々な場所で使われていて、色々な面を持っているのは確かです。

全容を把握しようとすれば大変かもしれませんが、しかし、簡単なプログラムを作るためにはもってこいの言語でもあります。

という訳で、今後少しずつJavaScript言語による初歩的なプログラムの書き方も解説していきたいと思います(JavaScript言語自体の高度な使い方に関してはこの連載記事では取り上げ切れないかと思います。幸いJavaScriptに関する情報はウェブに溢れていますので、この連載記事を一通り読み終わったら、別の記事を参考に更に高度なJavaScriptの使い方にチャレンジするのも良いでしょう)。

今回はここまで

今回はここまで

お疲れ様でした。

今回は「プログラミング言語とは」ということで前回に引き続き文章ばかりになってしまいました。

プログラミングでやらなければならないことが少しずつ見えてきたでしょうか?

次回はNode.jsを使ってプログラミングをするための準備をしていきたいと思います。具体的にはNode.jsのインストールです。

次回から実際にパソコンで作業をしていくことになります。

あでぃおすぐらっしあー。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-プログラミング, 講座