プログラミング言語の話

記事
IT・テクノロジー

プログラミング言語の話

Raspberry Pi を利用したデジタル通信の話をお届けしていますが、今日は記事にするだけの進捗がなかったので少し違う話を書いてみました。 いろいろなプログラミング言語がありますが、どの言語を使うかをどうやって選んでいますか?人気のプログラミング言語というのは存在しますが、万能なわけではありません。この記事では、プログラミング言語について少し考えてみました。


プログラミング言語の選択肢

プログラミング言語は、「流行り」もありますが、いろいろな種類のプログラミング言語があって、学習する際にどれを選んだら良いのか、開発ではどの言語を使ったら良いのか迷う場合も多くなります。

最初に考えるのは、まず「選択肢」があるのかどうかを考えてみます。 実際に、開発の内容によっては、選択肢がない場合もありますし、いろいろな選択肢がある場合もあります。その違いはどこから来るのかを最初に考えてみます。


殆ど選択肢がない場合の良い例は、Web プログラミングのフロントエンドです。Web アプリなどのフロントエンドのプログラムは、Web ブラウザ上で動作します。現在標準的に利用されている Web ブラウザは、Javascript のプログラムしか実行できません。従って、フロントエンドの開発を目的にする場合は、利用するプログラミング言語は必然的に Javascript になります。

このように書くと、Typescript でも出来ると言われる方もいらっしゃると思います。Typescript は Javascript の延長上にあるプログラミング言語で、型をより厳格に扱う言語になります。Javascript と書式的には似ていますが、Web ブラウザでは Typescript のコードのままでは実行できません。Typescript のコードを Javascript に変換して実行するという形式をとっています。書式は厳密には違いますが、Javascript に準じた書き方でコーディングができます。このように考えると、フロントエンドの開発の場合は、Javascript か Typescript を選択する事になります。

一方で、同じ Web 開発でもバックエンド(サーバーサイド)の開発の場合はもっと自由度があります。 これは、プログラムを実行するのは Web サーバー上という事になるので、Web サーバー側に実行できる環境があれば基本的に言語は何を選んでも良い事になります。実際に、バックエンドでよく利用される言語は、PHP や Java、NodeJS(基本的に Javascript)などになります。日本では、Ruby などもよく利用されていますし、Python も利用できます。

選択肢の決め手は?

では、何がプログラミング言語の選択肢を決めているかですが、これは、実行環境と呼ばれている、プログラムを動かす仕組みで決まっています。Web ブラウザの場合は、基本的に Javascript に限定されてしまいますが、バックエンドの場合は、実行環境を作ることができれば基本的に何でもかんでも良いという感じです。

例えば、Web ブラウザ以外で Javascript を動作させるためには、NodeJS の実行環境が必要です。 同じように、Python のプログラムを動作させるには、Python の実行環境が必要になります。


ところで、実際にプログラムを実行しているのは CPU という事になりますが、CPU が実行できるプログラムは、CPU のタイプによって違います。 殆どの、Windows の PC の場合は、インテルの CPU(x86)になりますが、最近出た新い Mac の場合は、M1(M1MAX/M1PRO)という ARM ベースの CPU が使われています。それぞれ実行できるプログラミが違います。

Mac の場合は、M1 系の CPU が搭載される前は、Windows の PC と同様にインテルの CPU が利用されていました。従って、古いインテルの CPU を使った Mac のアプリは、基本的に新しい M1 系の CPU では実行できないことになってしまいます。こうした問題を避けるために、アップルは、実行できるプログラムの「通訳」をするソフトウエア(Rosetta2)を使って、スムーズに機種の移行ができるようにしています。

いずれにしても、プログラミング言語の選択は、動作させたいコンピュータに実行するための仕組みがあるプログラミング言語が決め手になるという事です。

Python のプログラムはどこでも実行できる!

最近、Python などの言語がよく利用される大きな理由は、Linux でも、Windows でも、Mac でも利用できる点にあります。 Web アプリもよく利用される理由は、Web ブラウザがあれば OS や PC・スマホに関係なく利用できる事にあります。

ちょっと前に Java が流行った理由も同じような所にありました。

殆どのプログラミング言語は、人間の言葉に近い形で処理のやり方を記述しています。基本的には英語をベースにしてコンピュータに指示をするやり方が主流です。しかし、CPU が実際に実行できるコードは数字で表された「命令(instruction)」です。従って、殆どのプログラムは実際にプログラミング言語で書かれた「ソースコード」を CPU が理解できる実行可能な「命令(insturction)」(機械語などとも呼ばれています)に変換する必要があります。

この変換のやり方が大きく二つの方法があってそれによって実行の仕方が違います。

* プログラム全体をまとめて変換(コンパイル方式)
* 実行しながら一行毎に変換(インタープリター方式)
コンパイル方式の場合、最初に全部変換してしまうので、実行時には変換する必要がないので一般的により高速で実行できます。一方でインタープリター方式の場合、実行しながら毎回変換するので通常は実行速度は遅くなります。

Python のプログラムは、インタープリター方式になります。従って、Python で書かれたプログラムを実際に使用している CPU が実行できる形にする仕組みが必要です。これが Python の実行環境と呼ばれるもので、CPU や OS 毎に別の実行環境が使われるます。インタープリターは通訳のようなもので、CPU によって話す言葉が、英語と中国語のように違っていると考えるとわかりやすいかと思います。 つまり、Python のプログラムの場合、Python という共通の言語を使ってプログラムを書いて、それぞれの OS と CPU に合わせて変換するインタープリタを利用するため、同じプログラムが別の環境で実行できるという仕掛けになっています。

C 言語は古い言語なのか?
C 言語や C++などは、最近では利用される機会が減っていると言えますがこれは、アプリなどの開発の場合です。 C 言語や C++は基本的に、コンパイル方式で実行されるので、一度コンパイル(変換)してしまえば、その後は実行の度に変換を行う必要がないので高速かつ効率的に実行できます。また、ハードウエアを制御するデバイスドライバなどは、アドレスを指定する必要が多いため都合が良い場合も多く、OS、デバイスドライバなどでは現在でも主流のプログラミング言語になっています。

目につくところで余り利用されなくなっているので、古い言語というイメージを持つ方も多いですが、現在でも重要な言語の一つになっています。逆に言えば、そうしたエリアのプログラムをやりたい場合には、こうした「古典的」な言語が重要になってきます。

このように考えると、プログラミング言語の選択は、そのプログラムの目的と、プログラムを実行する環境(仕組み)によって変わってくるという事になります。

まとめ
プログラミング言語はたくさんの種類があって、学習や開発時の選択で迷う事も多いと思います。実際はその選択は、プログラムの目的、プログラムを実行する環境である程度決まります。

一見古いプログラミング言語と思われているプログラミング言語でも、分野によっては主流で利用されているケースはたくさんあります。学習者が多いプログラミング言語や、よく、目につくプログラミング言語が良いと思いがちですが、たくさんのプログラミング言語が存在するのにはそれなりの理由があります。プログラミングを利用する仕事も非常に広い分野でいろいろなプログラムが利用されているので調べたり、専門家の話を聞いたりすると世界が広がります。

いずれにしても、選択の基本は、「目的」と「実行環境」で決まります。 便利なのは、Web 開発で利用される Javascript や、実行環境が豊富な Python などは、利用されている場所も多く、仕事が多くなっています。この辺りが、現在「主流」とされている理由で、人気の秘密だと言えます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す