お勧め開発言語
開発言語ランキング・・・。
今回の記事を書くにあたり、開発言語のランキングを調べてみましたが、調査対象者や調査方法が変わるとランキングは激しく変動するため、納得のいくランキング表は作成できませんでした。
ただ、客観的にみて、トレンドもしくはこれを覚えておけばなんとかなるという言語はある程度予想できます。
今回はそれらについて紹介したいと思います。
勧めたい言語(Windowsアプリケーション編)
実用的な言語はたくさんあり、書けるだけ書きたいのですが、主旨としてできるだけ楽をして
仕事にありつくか、そしてSEとしてスキルアップできるか?ということに焦点を当てます。
・Java
・C#
・C++
Javaは私が言うまでもなく、超有名であり、求人も多い非常に有益な言語です。
ポイントは単純に資料が多いので、学習しやすいというのと、言語の仕様がそれほど難解ではないというところです。
とはいえ、簡単かどうかというと賛否両論あるかもしれません。
C++習得者からすれば簡単ですが、VisualBasic(.net以前)利用者から見れば十分難解です。
この辺は個人の力量によりますが、オブジェクト指向プログラミングを行うには、非常に向いている言語です。
逆に言えば、SEであればこれぐらい習得できなければいけないと思います。
(長い年月仕事をしていると、Javaのソースの解析ぐらいはどこかで当たると思います。)
C#はJavaに比較して新しい言語で、Javaとは若干違いますが、かなり似ています。
後発ということもあり言語仕様も洗練(個人的にそう思う)されていて、Javaが出来る人にとってはそう難しくないです。
しかし、この言語の重要な所は、「Microsoft」が開発元であるということに尽きます。
Javaはマルチプラットフォームで当然Windowsでも動作しますが、Windowsをフルに活用するという意味で、
OSの供給メーカーが、Windowsのために用意している言語には分が悪いです。
C++は上記言語の基礎となっている言語で、長い歴史をもつ言語です。
厳密にいえば、その基礎となるC言語というのがあるのですが、
オブジェクト指向プログラミングを行うには向いていないため、C++をあげています。
特徴は、極めて自由度が高く、何でもできる、言い換えれば制限を受けないということです。
これは、ベースになっているC言語がOSを開発するために作られた経緯があるため、基本的に出来ないことはないです。
何でも出来ることは利点ですが、同時に高いスキルを求めます。
例えば、JavaやC#では、メモリーにアクセスするときに保護機能が働くことで不用意なメモリーアクセスは制限されますが、(実行環境が例外を発生させる)
C++の場合は、そのようなチェックは原則行いません。
自前でチェックするか、おかしなアクセスが発生しないように完璧にコントロールする必要があります。
C++の弱点と思えますが、チェックを行わないということは、その分高速動作が実現できます。
言語の習得難易度は、
Java > C# >>> C++
ぐらいでしょうか。比較するとC++はなかなか難しいです。
勧めたい言語(Web編)
前項では、Windowsアプリケーション向けの言語を紹介しました。
今度は、Web向けを書きたいと思います。
Webでは、サーバー側とクライアント側で別々に考える必要があります。
まずは、クライアント側ですが、選択肢は殆どありません。
・HTML5
・CSS
・JavaScript
これらが必須です。
HTML5でページの構成を決め、CSSで構成要素の表現方法を決定します。
そして、JavaScriptでページでの処理やユーザーの動作を制御するのが一般的です。
HTML5とCSSはどのように表示するかを記述する言語ですので、複雑なロジックというのはまず出てきません。
基礎を覚えたら、必要に応じて調べながらで充分かと思います。
JavaScriptはアプリケーション編でのJavaとは別物です。
こちらもC言語系列の特徴を取り入れているので、似たようなところはありますが、Javaとは設計思想が違うため、
同じ感覚でプログラムを読むと、すぐ「???」となるんじゃないでしょうか。
なので、JavaScriptはJavaScriptとして学習する必要があります。
次に、サーバー側ですがこちらは選択肢はかなりあります。
・PHP
・Perl
・Java
・JavaScript
・Python
・Ruby
思い付くままに羅列してみましたが、まだまだあります。
需要という意味ではPHPが多いでしょうか。
サーバーサイドは、サーバーでの環境や既存の資産なども関係するので、最初に開発言語も指定されることも多いです。
そういう意味でPHPはよく使われるので、覚えておいて損はないでしょう。
言語仕様もオーソドックスで、Javaライクに考えられます。
JavaとJavaScriptは既に説明しましたね。サーバーサイドでもよく使われます。
PythonやRubyもよく使われる言語で、それぞれ利点があるのと、言語仕様も覚えやすいです。
これらの優劣をつけるのはなかなか難しいですが、個人的にはサーバーサイドもJavaScriptで書きたいです。
なぜかというと、クライアントサイドと同じ言語でサーバーサイドを記述できるのは、
学習コストの面で非常に楽になるのと、デバッグがやりやすいです。
これは、一人でクライアントサイドとサーバーサイドを担当することになった場合、無視できない利点です。
(サーバーはPHP、クライアントはJavaScriptという状況はよくあるんですが、なまじ似てるだけに混乱するんですよね・・・。)
あとは、Node.jsというJavaScriptのフレームワークがあり、これを利用することでクライアント10000問題にも強いサーバーが書けるということも理由です。
まとめ
独断と偏見で選びますが、アプリケーション開発であれば、Javaから始めるのがいいと思います。
C#でもいいですが、とりあえずは言語の基礎とオブジェクト指向の考え方を覚えてください。
基本さえ覚えておけば、あとは他の言語を使う時にすんなり受け入れるようになると思います。
Webの場合は、JavaScriptは必須。必要によってPHPとか覚えましょう。
運が良ければサーバーもJavaScriptで出来ますね。
最近は凝ったCSSなんか多いですが、こういうのは自分で悩むよりサンプルをうまく利用しましょう。
どの言語を選択するにせよ、大事なことは言語自体はなにかを作る手段にすぎません。
そのため、時代に合わせて新しい言語は次々と生み出されています。
状況に応じて最適な言語を選択できるように、日々努力を重ねてください。