自称週末ファーマーの国家試験受験記

自己啓発の延長なのか、自己実現の手段なのか、はたまた意地の張り合いか。生きているうちに“何か”を成し遂げたいから走り続けているような感じがする

第127話 経営情報システム⑳ プログラム言語

今回からプログラム言語について概観します。
プログラム設計で定められたアルゴリズム(処理手順)をコンピュータ上で実行するためにはプログラムが必要になる。このプログラムを記述するための言語をプログラム言語という。
プログラム言語には、人間が理解しにくいプログラム言語である「低水準言語」と、人間が理解しやすい「高水準言語」とがある

1.低水準言語
 そもそもCPUは、0と1で記述された命令を理解する。それ以外は理解出来ない。このような0と1の羅列を「機械語」とよぶ
機械語は0と1のビット列で表されるから人間には分かりづらい。だから機械語
さらに、英語の意味をもとに機械語の命令に置き換えた「アセンブラ」という言語がある。アセンブラは、CPUが行う入力・演算・出力をそのまま記述するため、CPUの機能を直接利用する場合(家電に組み込まれているマイコンを制御するプログラム)に適した言語である。

2.高水準言語
 機械語アセンブラも人間にとっては分かりづらい。そんな中で人間が使う言語に近い表現で記述できるプログラム言語が開発された。このように人間が理解しやすいプログラム言語を、高水準言語とよぶ。
 CPUは高水準言語で書かれたプログラムをそのままでは理解することが出来ない。そこで高水準言語で記述されたプログラムを機械語プログラムに翻訳する必要性がある。

3.プログラム言語のあれこれ
 一応、プログラム言語を並べてみる。
機械語 <低水準言語> 
 CPUが直接解釈できる言語。機械語はCPUによって異なる
アセンブラ <低水準言語>
 命令が機械語と1対1になっている言語。
FORTRAN <高水準言語><手続き型>
 科学技術計算に適している。
COBOL <高水準言語><手続き型>
 事務処理計算に適している。
C <高水準言語><手続き型>
 アメリカ規格協会によって標準化され、ISOやJISにも標準として採用されている。UNIXC言語で記述されている。
BASIC <高水準言語><手続き型>
 初心者向けとして普及しているインタプリタ言語。
C++ <高水準言語><非手続き型>
 C言語オブジェクト指向の考え方を取り入れた言語。
Java <高水準言語><非手続き型>
 C++をもとにして、汎用性や機能性を高めた言語。
手続き型言語は処理手順やアルゴリズムを、一つずつ順を追って記述する言語
※非手続き型言語とは、処理手順やアルゴリズムを意識しないで作成できる言語

4.Java
 Javaは1990年代前半に Sun Microsystems 社が開発したプログラミング言語
Javaには以下のような優れた特徴がある。
・プラットフォームを選ばない
オブジェクト指向言語である
・プログラムを安全に実行できる
・ネットワーク関連の機能が充実している
 通常プログラムを実行する時には、最終的に各プラットフォームに対応したネイティブコードに変換されて実行される。このネイティブコードが各プラットホームごとに違うため、あるプラットホームで動いていたプログラムが、別のプラットホームでは動かない。
 この問題をJavaJava仮想マシンと呼ばれるソフトウェアを使うことで、見事に解決した。Javaソースコードコンパイルすると、バイトコードと呼ばれる中間コードに変換される。バイトコードが書かれたファイルをクラスファイルといい、Javaのプログラムはクラスファイルの状態で配布される。
 このクラスファイルをJava仮想マシンが各プラットフォームに対応したネイティブコードに変換して実行Java仮想マシンがプラットフォーム間の違いを吸収してくれるので、プログラマーはプログラミングする時に、プラットフォームの違いを意識しなくてもよくなったわけ。
 また、Javaは作れるプログラムの範囲の広さも魅力。Javaアプリケーションやサーバーサイドプログラム、デジタル家電、携帯電話など様々なシステムがJavaで作ることができる。
しかしJavaオブジェクト指向言語なので、初心者にはわかりにくい。

Javaアプレット
 要求に応じてクライアント側のWebブラウザにダウンロードされ、ブラウザ上のウィンドウに埋め込まれて実行されるプログラムのこと。Webブラウザ上で動的なコンテンツを動作させたり、ユーザーの操作によって何らかの結果を返すようなアプリケーションを実現できる。

Javaサーブレット
 サーバ側に常駐して動作し、各クライアントからの要求を受けて処理を行うプログラム。Webサーバ上で動くJavaプログラムのこと。

5.スクリプト言語
 スクリプト言語は、アプリケーション開発の補助に用いられる比較的簡素な文法体系を持つプログラム言語で、ソフトウエアを実行させる手順を記述したもの。サーバ上で実行する簡易なプログラムやブラウザ上で解釈・実行する処理などを記述するのに使われている。
いくつか例を挙げてみる。
JavaScript
 HTML文書内に<script>というタグを使用することで記述可。Java言語の文法を参考にしているが互換性は全くない。主要なウェブブラウザのほとんどにエンジンが搭載されており、HTML内にプログラムを埋め込むことでWebページに様々な機能を付加できる。
Perl
 CGIの開発やUNIX用のテキスト処理などに用いられる。テキストの処理能力に優れていて、テキストエディタで作成が出来る。インタプリタ型であるため実行が容易。基本的な文法や記法やC言語に似ているが、多様で自由度が高く、記号などを組み合わせた簡潔な記法で処理を記述することができる。言語仕様の一部に正規表現を取り込むなどテキスト(文字)処理のための豊富な機能が用意されており、また、連想配列(ハッシュ)やリファレンス(変数などのメモリ上の位置を扱う機能)など高度な機能も標準で用意されている。積極的に新しい機能を取り入れる開発姿勢でも知られ、オブジェクト指向プログラミングを可能にする拡張や、プログラムのモジュール(部品)化およびモジュールの読み込み機能、Unicodeなど多言語環境への対応、スレッド、クロージャ、リフレクション、ガーベジコレクションなどが追加された。
PHP
 あらかじめデータベースを操作する命令(SQL)が組み込まれた言語であり、Webアプリケーション開発に特化している。レイアウトの「雛形」となるHTMLファイル内に、処理内容を記述したスクリプトを埋め込み、処理結果に応じて動的に文書を生成し、送出することができる。正式名称の「PHP: Hypertext Preprocessor」にもあるように、動的に生成されるページの作成に向いている。
Ruby
 オブジェクト指向プログラミングを実現するためにいろんな機能を有する言語。テキスト処理関係の能力などに優れ、Perlと同等の機能を有する。「まつもとゆきひろ」氏が開発しているフリーウエア。コードの可読性に配慮したシンプルな構文や文法を採用しており、手軽にプログラミングを始められるとされる。正規表現などテキスト処理が充実しているほか、クラス定義やMixinなどのオブジェクト指向機能、例外処理、演算子オーバーロードクロージャイテレータガベージコレクションなど豊富な機能や仕様を備えている。

 JavaScript → HTML内にプログラムを組む
 ●Perl → CGIUNIXインタプリタ
 ●PHP → 動的に生成されるページの作成。Webアブリに特化
 ●Ruby → オブジェクト指向プログラミング


今日は疲れたからもうおしまい。

続く。