プログラミング言語とは?
こんにちは。開発担当のマットです。
以前も言ったことがありますが、開発はとても楽しい仕事です。
何らかのアイディアを分解してパソコンに文字を書けば、面白いものを作ることができます。
では、その文字とは何でしょう?
その前に、機械語を・・・
パソコンの中心にはCPU(中央処理装置)が存在します。
このCPUはとても忠実で、ユーザやアプリケーションからの命令を受けてその命令に従います。
つまり、何かのアプリケーションを作りたい場合、プログラマーはCPUへの命令をCPUが理解できる言語で書く必要があります。
いや、ちょっとまって・・・
CPUが理解できる言語のことを「機械語」と言います。
機械語はバイナリです。(つまり、0と1の列)
01100011 01101111 01100100 01100101
CPUの構成バージョンによって、コードの書き方は異なります。
人間が機械語を直接書くことはどう考えても不可能です。
では、どうしたらいい?
人間は0と1を直書きすることはできませんが、英語のような文章は書くことができます。
例えば、
answer = 1+1;
とか、
name = "山田太郎";
なら、人間は理解できます。
ならば、こういう文章を、機械語(010010…)に翻訳できるものがあればいいのです!
そしてその翻訳できるものは存在します。コードの解釈・翻訳機をしてくれるものを「コンパイラ」と言います。
コンパイラの種類は多くてコンパイラによって、翻訳対象となる「人間が書くコードの書き方」が異なり、それぞれの書き方を「言語」と言います。
言語の特徴
それぞれの言語には特徴があり、使われる場面は異なります。
例えば、iOSアプリの場合、SwiftやObjective-Cを使わなければなりません。
3Dゲームの場合、C#やJavaが人気です。
ウェブサイトならPHPやRubyを使うことが多いです。
いくつかの言語と使われる場面と特徴をピックアップして紹介したいと思います。なお、各言語で、「Hello World!」というメッセージを画面に出力する例も挙げたいと思います。
JavaScript
JavaScriptはちょっと特別な言語です。
一番使われる場面はウェブサイトのブラウザーです。
ChromeやFirefoxはこのJavascriptを解釈して、ブラウザで実行します。
つまり、メモ帳でコードを書いて、ブラウザで開くだけでプログラムを書くことができるのでとても簡単です。
その反面、ブラウザによって、動作が異なるデメリットもあり、ブラウザに解釈される前のコードは丸見えので、JavaScriptで面白いものを作っても、パクられちゃうことも考えられます。
console.log("Hello World!");
実は、ブラウザ側だけではなく、2009年にnode.jsというフレームワークも開発され、ウェブサイトのサーバー側でも使えるようになりました。
Python
Pythonは多くの開発者に愛されている言語です。
理由としては、書き方が簡単で読みやすいのが特徴だからです。しかも、多くの場面で使えます。
ここ数年ではディープラーニングのアプリケーションにもよく使われており、これからもずっと愛されるでしょう。
print("Hello World!")
C
Cはとても代表的な言語です。
1973年に発明されて、現在使われているほとんどの言語に大きな影響を及ぼしました。
あまりにも影響を及ぼしたため、C++、C#、Perl、PHP、Swift、Javaなど、50種類以上の言語が「C系言語」と呼ばれています。
現在、直接C言語で作られているプログラムは少なくなってきていますが、Cに極めて近いC++(シー・プラス・プラス)やC#(シー・シャープ)はまだ多くの開発者が利用しているかと思います。
#include
int main()
{
printf("Hello World!");
return 0;
}
かなり古い言語のため、「Hello World」を出力させるだけで、入力・出力を対応するstdio.hライブラリーを明示的にロードしなければなりません。現代の言語のほとんどは、こういうことを勝手にやってくれます。
Java
Javaは良い言語だと思いますが、一番の特徴は、別にダウンロードできる Java Run Environment というものです。 コンパイラーは人間のコードを機械語に翻訳するものですが、Windowsにしかコンパイルできないコンパイラーを使っていると、折角書いたプログラムをMacやLinuxで実行できません。
しかし、Javaでコンパイルしたコードは、直接OSではなく、上記のJava Run Environmentに実行されます。そして、そのJava Run EnvironmentのWindows版、Mac版、Linux版も存在しますので、Javaで一度プログラムを書くだけで、多くの環境で利用できることが一番の特徴だと思います。 実は、AndroidアプリもJavaで書くことができます。
class HelloWorld {
static public void main(String args[]) {
System.out.println("Hello World!");
}
}
ちなみに、JavaとJavaScriptの名前は似ていますが、一切関係がありません。
PHP
世界のウェブサイトの約8割はPHPで書かれています。
PHPは初心者にも極めて優しい言語で、ウェブ開発者の慣れのHTMLの中に混じったりすることもできますし、他の言語だったらエラーになるという間違えたコードを書いても、PHPは動き続けます。
PHPはもともと、Rasmus Lerdorfn氏が自分のホームページに作ったものです(PHP = Personal Home Pageの略)。こんなに普及されるものと思われていなかったので、他の言語に比べて、PHPのファンクション(機能)名にルールがなく、ちょっと雑な言語と思われがちです。
しかしとても便利なため、これからもずっと多くの開発者に利用されるでしょう。
echo "Hello World!";
SQL
SQLはデータベースの言語です。
多くのウェブサイトでは、自分の名前やプロフィールを入力できる機能があります。
その情報をデータベースに保存することは一般の手段です。
データベースの構成はExcelのスプレッドシートのようなものです。
カラム名があり、データを一行一行保存していくイメージです。
そのデータを挿入、削除、または検索するのはSQLの役割です。
「Hello World!」を出力することができませんが、「山田太郎」さんを検索できます。
SELECT * FROM users WHERE name = '山田太郎';
Ruby
Rubyは日本で発明された言語です。用途が幅広くて、Rubyで色々開発できます。
当初は日本でしかあまり使われていなかったですが、2004年発のRuby on Rails によって、ウェブサイト開発にも便利な言語になり、海外でも使われる様になりました。
これからもRubyは多くの開発者に愛されるでしょう。
puts "Hello World!"
Swift
iOSのアプリを開発したい場合、Objective-CまたSwiftで作らなければなりません。
Objective-Cは割と古くて少しわかりにくいですが、Swiftは新しくてわかりやすいと思います。
Swiftの一番の特徴はオプショナルの対応だと思います。
通常、データを操ろうとする時、そのデータが存在しないとエラーになってしまいます。他の言語では、わざわざ「もし存在する」という文を書かなければなりませんが、Swiftでは「?」の一文字だけでできますので、開発者にとってはとても楽です。
最近、Android開発に使えるようになったKotlin言語にもある特徴ですが、今後発明される言語に是非入って欲しい特徴です。
println("Hello World!")
まとめ
プログラミング言語は道具のようなものです。
仕事に対して、適切な道具を選ぶことが大事です。
そのため、どの開発者でも複数の言語を覚えざるを得ない場面がでてくるとは思います。
しかし、特徴がありながら、現代のプログラミング言語は共通点が多くて、一つ覚えれば、他の言語にもチャレンジできるかと思います。
今後、私はまだ触ったことがなく、聞いたこともない、言語で何かを作ることが出てくるでしょう。
それは私にとって、とても楽しみなことです。