いろいろなプログラム言語がある中で、
いったいどの言語を勉強したら良いのでしょうか?
これは、みんなが最初にぶつかる問題のような気がします。
<多数決の観点から見てみる>
目的や趣味の問題が存分に関わってくるかと思うので、多数決をしてみます。
「え!?多数決?」
いえ、googleで引いて数を比べるだけです。
(言語名+プログラムで引きました)
php ⇒ 4,720,000 件
java ⇒ 1,490,000 件
C++ ⇒ 1,410,000 件
perl ⇒ 1,320,000 件
java ⇒ 1,490,000 件
C++ ⇒ 1,410,000 件
perl ⇒ 1,320,000 件
予想では、C++が一番少ないと思ったのですが、意外と多いですね。
でも、ダントツはphpです。
おそらく仕事や将来性を考えれば、php、javaを学ぶのが良いのでしょうね。
でも、それぞれ良いところと悪いところがあるので、それぞれの特徴に応じて取捨選択できると一番いいかと思います。
そこでここでは私の知っている言語について特徴(私見)を書いてみようと思います。
<特性の観点から見てみる>
【javaの特徴】
<良いところ>
・実は結構速い
・フレームワークが充実していて、やりたいことのほとんどは1から作ることがほとんどない
・どの環境でもプログラムをほぼ変更することなく動作する
・ポインタを隠蔽しているので、ポインタに関する危険性が小さい
・メモリ管理の必要が無い
<悪いところ>
・フレームワークが多すぎてどれを使うのが良いか迷う
・フレームワークはそれぞれ使用方法が違うので、それぞれ1から勉強しないといけない
・C++のようにTemplateがないので、同じようなコードをいくつも書かないといけない
・コンパイルに時間がかかる
<良いところ>
・実は結構速い
・フレームワークが充実していて、やりたいことのほとんどは1から作ることがほとんどない
・どの環境でもプログラムをほぼ変更することなく動作する
・ポインタを隠蔽しているので、ポインタに関する危険性が小さい
・メモリ管理の必要が無い
<悪いところ>
・フレームワークが多すぎてどれを使うのが良いか迷う
・フレームワークはそれぞれ使用方法が違うので、それぞれ1から勉強しないといけない
・C++のようにTemplateがないので、同じようなコードをいくつも書かないといけない
・コンパイルに時間がかかる
【C++の特徴】
<良いところ>
・自由度が高い (ポインタが使える、自由なキャストが可能だったりするので)
・ポインタを使用できるので、うまく利用するとスピードが速くなる
・STLやTemplateを使用して、書かなければいけないコード量が減らせる
<悪いところ>
・メモリリークが発生しやすい
・STLの文字列クラス(string)を使用すると余計な処理をするので遅い
・STLの発生するコンパイルエラーが分かりにくい
・コンパイルに時間がかかる
・文字列処理が苦手。正規表現が標準でない
<良いところ>
・自由度が高い (ポインタが使える、自由なキャストが可能だったりするので)
・ポインタを使用できるので、うまく利用するとスピードが速くなる
・STLやTemplateを使用して、書かなければいけないコード量が減らせる
<悪いところ>
・メモリリークが発生しやすい
・STLの文字列クラス(string)を使用すると余計な処理をするので遅い
・STLの発生するコンパイルエラーが分かりにくい
・コンパイルに時間がかかる
・文字列処理が苦手。正規表現が標準でない
【perlの特徴】
<良いところ>
・コンパイルの必要がないのでデバッグが速くできる
・分かりやすい
・メモリ管理の必要がない
・ライブラリをダウンロードするWEBがあり、そこにいけばなんとかなる
<悪いところ>
・クラス・継承という概念が無い(ver 5.6)
・資料が少ない
<良いところ>
・コンパイルの必要がないのでデバッグが速くできる
・分かりやすい
・メモリ管理の必要がない
・ライブラリをダウンロードするWEBがあり、そこにいけばなんとかなる
<悪いところ>
・クラス・継承という概念が無い(ver 5.6)
・資料が少ない
<習得難易度の観点から見てみる>
どのくらい学習しやすいか?また学習できたことを前提に、どのくらい開発効率が良いか?を見てみましょう。(独断と偏見です(^^;))
言語 | 速習性 | 難易度 | 開発効率 | 再利用性 | 理想の開発体制 |
---|---|---|---|---|---|
java | 中 | 中 | 中 eclipse使用時は中の高 |
中 | 大人数 |
c++ | 小 | 難 | 中 | 高 (templateを使えるので) |
小人数 |
perl | 高 | 易 | 高 (コンパイル不要なので) |
低い | 中人数 |
とりあえずフリーで何か学びたければ、perl。
将来SEなどを目指すなら、PHP、Java。
もっと高みを目指すなら、C++といったところですかね。
さて、あなたはどれが気に入りそうですか?