プログラミング言語はそれぞれ特性があり、作る人の好みだったり、何を作るかによって使い分けます。
僕は最近もっぱらJavaを書いていて、その理由は、オブジェクト指向的な設計の作り込みがしやすいことと、静的な型付けで実行時エラーが少ないことです。
Javaでなぜつくるのか
本を読みました。
Javaでなぜつくるのか 知っておきたいJavaプログラミングの基礎知識
Javaはそこそこ新しい言語ですが、なぜこれほどまでに使われるようになったのか、について書かれています。
この本は10年ほど前に書かれたものなので内容が少し古く、Javaは今では人気がなくなってきていますが、改めてJavaの全体像を俯瞰できました。
実行環境を含むプログラミング言語
Javaの最大の特徴は、JVMという仮想環境で動く言語ということです。
それまでの主要な言語は、C言語のような実行ファイルにコンパイルする言語か、Perlのような実行時に構文解釈するインタプリタ言語でした。
C言語を含む前者は、実行ファイルがハードウェアを直接的に操作するのでパフォーマンスが高く、配布する実行ファイルのリバースエンジニアリングが困難というメリットがあります。一方で、コンパイル済みの実行ファイルは、実行環境が変わると動作しなくなるので、環境ごとにコンパイルをしなければならないという問題があります。
Perlを含む後者は、インタプリタさえインストールされていればどの環境でも実行できるというメリットがあります。しかし、構文解釈しながら実行するのでパフォーマンスが低く、配布するのはソースコードそのものなのでアルゴリズムを隠蔽することができません。
Javaは、JVMという仮想環境で実行するという概念によって、両方の良いとこどりを実現しています。JVMという仮想環境の上で動作するので、JVMさえインストールされていれば、どのような環境でも同じ実行ファイルが利用可能です。また中間言語にコンパイルするので、インタプリタ言語よりもパフォーマンスが高く、ソースコードを隠蔽することが可能です。
その他のメリット
その他にもさまざまなメリットが紹介されていますが、触りだけ。
- オープンに仕様が定義されている
- オブジェクト指向による制約がかけられる
- メモリ管理が自動化されている
素晴らしい言語です。
とはいえ最近人気がなくなってきているのは、動的な言語の手軽さの方が好む人が多いことや、他の言語にもさまざまな新しい機能が組み込まれたこと、インタプリタ言語でも十分な性能が出せるようになったことで、Javaのメリットが薄れてきているからだと思います。
同じシリーズの本
遥か昔、中学生のころに、同じシリーズのこの本も読んだことがあります。
コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~
こちらもとても分かりやすかったのでおすすめです。