<IT情報・ソフトウェア編> IT情報TOPヘ

プログラミング言語いろいろ

(2020年03月10日)

 私は仕事を始めて以来モータ設計に携わっていましたが、会社人生半ば頃マイコン(マイクロコンピュータ)の出現を機にコンピュータとの関りが始まりました。以降は仕事の主体がモータのマイコン制御になり、扱ったプログラム言語はアセンブリ言語とC言語の2つです。定年後はホームページを作り続けていますが、少しはボケ防止になるかと知的に?過ごしているつもりです。
 さて、現在世界でプログラム言語は200以上あるといわれています。それらのプログラム言語はどのようにして生まれ、どのように分類され、どんな用途に使われているか、その概要を調べてみました。

<プログラミング言語の使用度>
 日経xTECH が2019年9月26日~10月18日、プログラミング言語実態調査をWebサイト上で実施した結果を転載します。「あなたが現在使っているプログラミング言語は何ですか」という設問に対し、会員440人からの回答で1人当たり最大3つの選択してもらった結果です。
 IT業界では右図のように実に多様なプログラミング言語が使われています。こんな言語はどのような必要性から作られ、どんな用途に使われているのか、などについて順次みていくことにします。

<機械語とアセンブリ言語>

 コンピュータが直接解釈し実行できる言語は、2進数「1,0」の羅列で表現される機械語のみです。ただ、この「1,0」では人間は理解できないので、機械語と1対1に対応した英文字の命令(ニーモニック)を並べてプログラミングします。これをアセンブリ言語といい、俗にアセンブラと呼ぶこともあります。アセンブリ言語はコンピュータの頭脳CPUのメーカから、CPUごとに個別に作られて提供されます。
 アセンブリ言語で書かれたプログラムはアセンブラと呼ばれるソフトウェアによって機械語に変換して使用します。この機械語への変換操作をアセンブルするといいます。コンピュータの仕組みやプログラミングの知識を根本から学びたい人は、アセンブリ言語から学ぶと理解がより深まります。
 また、アセンブリ言語は一般に低級言語(低水準言語)といわれますが、一般的な意味の低級ということではなく、ハードウェアCPUに最も近くに関わっている言語ということです。アセンブリ言語はマイコン組み込みの家電などハードウェアに近い分野のプログラミングなどに多く使用されています。

<コンパイラ言語とインタプリタ言語>
 現在の本格的な言語である C言語・C++・Javaや、昔懐かしいCOBOLやFORTRANなどは総称してコンパイラ言語といい、これを俗にコンパイラと呼ぶこともあります。コンパイラ言語は人間の自然言語に近い感覚で記述する言語で、そのプログラムをコンパイラと呼ばれるソフトウェアで実行可能な機械語「1,0」に変換して使用します。この機械語へ変換操作することをコンパイルするといいます。
 コンパイラ言語はこのように自然言語に近い記述をするので、一般に高級言語(高水準言語)と呼びますが、中でもC言語やC++ はよりハードウェアCPUに近い、すなわち低級言語に近い高級言語です。 

 また、コンパイラ言語と同じく自然言語に近い記述をする高級言語の仲間にインタプリタ言語があり、これを俗にインタプリタと呼ぶこともあります。ただ、コンピュータの実行に先立って機械語「1,0」にはしません。インタプリタと呼ばれるソフトウェアが、プログラムを部分ごとに実行可能な機械語に変換しながら、逐次実行していきます。

 すでに述べたようにコンピュータは、機械語「1,0」しか理解できません。そしてこの機械語「1,0」への変換効率が高いほど、すなわち同じ働きをするのに「1,0」のデータ量が少ないほど、コンピュータの動作速度は速くなります。
 従って、プログラム言語によるコンピュータの動作速度は次のようになります。速度が優先される家電やロボット制御、さらにOSやゲームなどに C/C++言語 がよく使われる所以です。
 アセンブリ言語 > コンパイラ言語 > インタプリタ言語 (右に行くほど遅い)


<スクリプト言語とWebアプリ開発>
 Webアプリの開発の現場では他の言語に比べて、比較的簡単にプログラムを記述できる言語が多く使われており、その総称をスクリプト言語と呼びます。スクリプト(Script)とは 台本・原稿・下書きなどのことで、転じて簡単にプログラムを記述できる言語を意味するようになり、結果としてソースコードを記述したら即座に実行できる、インタプリタを搭載したプログラム言語をいうようになりました。
 世間一般では スクリプト言語 ≒ インタプリタ言語 と思われている所以です。ネット上ではプログラミング言語はざっくりと分けて、「コンパイラ言語」と「スクリプト言語」があるという説明をしているページもあります。

<4社のプログラミング言語アンケート>
 世界にはおよそ200種類以上のプログラミング言語が存在するといわれています。先に日経xTECHの「あなたが現在使っているプログラミング言語は何?」のアンケート結果を示しましたが、その他のページの調査結果も転載します。
 GitHubferretG Talentマイナビ の4つのページです。

 この図表あるプログラム言語を中心に、いろんな角度からこれらの言語を分類してみます。

・大規模な開発向き:
  C/C++、Java など
・小規模な開発向き:
  Ruby、Python、PHP など
・Webアプリ制作に特化
  Ruby、PHP、Python、JavaScript、Perl など
・スマホアプリ制作に特化
  Androidの場合:Kotlin、JavaScript、C# など
  iOSの場合:Swift、JavaScript、C# など
・ウェブサイト制作に特化した言語
  クライアントの場合:HTML/CSS、JavaScript など
  サーバの場合:PHP、Python、Java など
・OS開発やPCアプリ
  C/C++、C#、Java、VBA など
・組み込み制御プログラム
  アセンブリ言語、C言語、C++、Java など

<プログラム言語各論>
 よく使われるプログラム言語についてその概要を説明します。

◇Java:
 Java(ジャバ)は世界的に最も人気を集めている言語で、その最大の理由はOSに依存しないで開発できることと、大規模システムの構築に適しておりその安定性と信頼性の高さです。Javaはプログラミング言語の中で難易度が高く、求人数もトップクラスになります。
 Javaは「他言語でできることはほとんどできる」といわれるほど適用範囲の広い言語です。Webアプリやデスクトップのアプリの開発のほか、AndroidのスマホアプリなどはすべてJavaで作られており、さらに組み込みシステムの開発も得意としています。

◇JavaScript:
 JavaScript はWebページに動きを与えるスクリプト言語で、Webブラウザで働くクライアントサイドの言語です。現在ではほとんどのWebページにJavaScriptが記述されているといっても過言ではありません。奇妙なことですが、Javaとは名前が似ている以外に関係ない言語です。

◇Python:
 Python(パイソン=ニシキヘビ)は歴史の古い言語ですが、人工知能分野で使われるようになり近年注目を集めています。Pythonは高度なプログラム言語ですが、文法がシンプルで他人が書いたプログラムでも読み取りやすいといわれます。
 Pythonは特にAIやビッグデータ、IoTなどの分野での活用が進んでいます。また、使われている代表的なサービスとして、YoutubeやInstagramがあります。

◇PHP:
 PHPはWeb開発で使用されるスクリプト言語で、動的でインタラクティブなWebサイトの作成に使われます。フェイスブックやヤフーといった大規模サイトがPHPを使って構築されています。CMSとして注目のWordPressはPHPで書かれています。
 PHPはHTMLと一緒に記述することができます。例えば、お問い合わせフォームや検索機能を追加する際に有用です。Web系のプログラミング言語の入門編として適しています。

◇Ruby:
 Ruby(ルビー)は ホームページなどWeb上で利用するシステムを効率良く開発するスクリプト言語です。日本で開発され Cookpad(クックパッド)や食べログなどで使用されています。

◇Swift:
 Swiftは2014年9月に Appleからリリースされたプログラミング言語で、 現在は iPhoneアプリの基幹言語として使われています。コードが読みやすく書きやすいなどのメリットから、iOSアプリ開発をSwiftへ移行する企業が増えています。

◇VBA・VB・VB.NET:
 VB(Visual Basic)はExcelマクロのことで、VB.NET(Visual Basic.NET)は VB の一時期のバージョン名です。VBA(Visual Basic for Application)は、VBをMicrosoftアプリ用にカスタマイズした言語で、Excelを含むOfficeのアプリで使用するためのプログラミング言語です。

◇C#:
 C# はC++ とJavaの優れた点を取り入れたプログラミング言語で、Cに似た文法ですがCやC++との関連はありません。C# は開発したMicrosoft社のOSであるWindows専用の言語でしたが、今はMacOSやAndroidなどと幅広く対応しています。

◇C言語:
 C言語は1970年代に開発された古いプログラミング言語で、現在でも史上最も広く使われておりプログラミング言語の源流のような存在です。C言語はCPU寄りの言語となるため、コンピュータの仕組みも理解する必要があります。数ある言語の中でもプログラムの本質的な部分を深くまで学べるので、高いプログラミング技術を志す人にとって必須の言語です。
 C言語ではソースの中にアセンブリ言語を入れ込む仕組みもあり、古くは高級アセンブラと呼ぶ人もいました。そのくらいアセンブラ言語に近いことを簡潔に記述できることから、OS開発を始め 制御システムやロボット開発まで幅広く使われています。近年話題の IoT(あらゆるモノがインターネットに繋がる仕組み)でも活躍しています。また、ブラウザやゲームの開発にとって中核のプログラム言語となっています。

◇C++:
 C++ は前述したC言語の拡張版として1993年に開発されたオブジェクト指向型のプログラミング言語で、日本では「シープラプラ」の通称で呼ばれます。C++ はC言語との互換性もあるため、アプリ開発でC言語と一緒に使われることもあります。
 C++ はC言語と同様に汎用性が高く、OS、ゲーム、ブラウザ、ロボットなど身近なシステムに幅広く使われています。さらに高速処理を実現できるため、画像解析システムの開発にも重宝されています。

◇HTML/CSS:
 先に示した「プログラミング言語」の図表の中に、ホームページを記述するHTML/CSSが多く使用されていることが確認されます。しかし、HTML(Hyper Text Markup Language)は Language(言語)となっていますがプログラミング言語ではありません。
 そもそも広義のプログラミング言語をコンパイラ方式とインタプリタ方式でカテゴライズすることは、もう実情にあっていないようです。HTMLをしいて分類するとすればデータ記述言語であり、データベースを操作するSQLも含めて次のようになるでしょう。

 コンピュータ言語 - プログラミング言語
          - データ記述言語 - HTML/CSS
          - データベース操作言語 - SQL


ページ
トップ