2015年4月8日水曜日

勉強する言語を選定しよう

まだiPhone→Android切り替え作業中だが新しいSIMが来るのは一週間先と連絡がきたので他のことをやろう。

以前の投稿したように、趣味・仕事どちらでソフト開発するにしても、WEB系、Androidスマホ、パソコン系の全てで、入門レベルで良いからソフトを開発しておいたほうが良いし、特にパソコン用ソフトは、仕事では簡単なツールを自作することは多々ある・・にもかかわらずウインドウが出るソフトは作れなくなって久しく、早急になんとかしたいと思っている。今回は、今後勉強するパソコン用の言語を選定してみる。

実はこのブログを立ちあげる際、まっさきに、今どんな言語が人気があるかネットで調べたのだ。

旧世代の遺物のように思われたCOBOLですら、いまだに過去の資産のメンテのためにバリバリ使われているときく。だからC言語だってすぐにはなくならないさ・・と思いつつ、ネット上で各言語のシェアを調べてみて・・驚いた。

TIOBE Softwareから、2014年12月のTIOBE Programming Community Index (PCI)が公開された。TIOBE PCIは、複数の検索エンジンの検索結果から対象となるプログラミング言語がどれだけ話題になっているかをインデックス化したもの。2014年12月にお けるインデックスは次のとおり。


順位     プログラミング言語     インデックス値     推移
1     C     17.588%     ↓
2     Java     14.959%     ↓
3     Objective-C     9.130%     ↓
4     C++     6.104%     ↓
5     C#     4.328%     ↓
6     PHP     2.746%     ↓
7     JavaScript     2.433%     ↑
8     Python     2.287%     ↑
9     Visual Basic .NET     2.235%     ↑
10     Perl     1.826%     ↑
以下略

C が一番上?! しかも、C++やc#を抑えて?! 信じがたい。いや上記は検索された言語であって、コーディングされた量ではないし新規システムで採用された本数でもないから、それこそCOBOLみたいに過去開発されたソフト=レガシーのメンテとしての需要が多いということか?
 自分は20年以上、ワークステーション(死語?!)や組み込み系プログラマとしてCとアセンブラを使ってきたがウインドウを制御するプログラムを作るには向 かないし、WEBプログラミングもできず、不便に思っている一人だ。やがてC++やC#などに取って代わられ、ゆっくりとシェアは低下していくのだろう。それでも一旦デファクトスタンダードになったものは簡単にはなくならないのだろう・・と思っていたから意外だった。
調べた見たところ、ここ10年ほど、1位Java、2位Cの順だったのが、最近入れ替わったのだそうだ。Javaは仮想化された環境で動作するものなので、コンピュータがどういう仕組みで動作しているかを理解するのに向かないので、コンピュータの仕組 みを理解するためにC言語は学習される場合があるとのことだった。

 C#とJavaは習得しやすく人気がある。
日経XXなどみてもC#は推薦されている。社内での物件でもC#が増えている。ちなみにJavaもウインドウが表示可能で学習が容易、そしてWindows上で動作可能だが、Windows上のアプリ開発ではC#の方が便利だとのこと。


Objective-CはiPhone用なので自分には無関係だが、最近ではSwiftに置き換えられている。VisualBasicは6.0は 仕事で使ったことがあり、EXCELではVBAと名前を変えて使われているが、.NETとの互換性はなく、どちらかというとC#に近いのでC#をやればよ い。その他のWEB系言語(PHP,JavaScript,Python,Perl)はJavaをやった後で考えればよいと思う。


というわけで勉強する言語の優先順序は、まずC#、次がJava とする。
中だるみを防ぐため、学習期間一か月と決めているので、一か月でできる程度のことをやってみよう。JavaやC#をマスターした後にはまた違う視点から作成が立てられるかもしれない。



C++について少し書いておこう。
C++はいまだに重要な言語ではあるが習得が困難なので安易に手を出すべきではないと思う。
過去社内で、C++を使っているプロジェクトを横目で見ていたが、習得するためには血反吐を吐くような厳しいOJTを乗り越えなければならないイメージがあった。個人的にも何度かC++の勉強をトライしたことがあるが失敗に終わっている。あれから大分たったので、多少は状況は改善されているんじゃないかという望みももっていたが、ネット上で調べると今でも相変わらずのようだ。仕事で仕方なく覚えるのでも困難なものを趣味で覚える場合、時間不足という制約も追加されるので、ますます困難だ。

 C++をマスターするには他の言語を覚えるとの違い、テキストを読んで自習するとか"がんばる"程度の根性論では無理で、何か作戦が必要なのだ。本件、別な項に自分なりの作戦を記述しておいたので参考にしてほしい。

しかしながら、100人に一人になるためには、なにかしら困難のあるものをやり遂げる必要があるので安易にできないと言うべきではない。

機能を競うならC#でも良いだろうが、性能を競う場合は習得が困難なことで有名なC++をマスターする必要があるだろう。特にフリーソフトの世界は競争相手が非常に多くレベルも高いと予想する。
念のため、自分が日常的に使用しているフリーソフト・シェアウエアの記述言語を調べてみた

・秀丸→ 非公開。ちなみに、これなしには仕事が成り立たないぐらい毎日使い込んでいる。
・FireFox→ C++
・7zip→ C++
・WinMerge→ C++
・Linux→ C
・Tera Term→  ほとんどC,一部C++
だいたい予想通りだ。考え方をガラッと変え、性能は競わない分野で、C++以外の言語を用いてできることを探すという手もあるが・・。


最後に、
世界で最初のCの教本の共著者であるコンピューターサイエンティスト、ブライアン・カーニハンによれば

「大抵の言語は死に絶えることはない。少なくともある一定のレベルまで受け入れられた言語は死に絶えない。今でもCは他の言語より特定の問題を解決するのに役立っており、無くなることはない」

という言葉がある。いや、いつかは無くなるんじゃないの?などと思ったりもするが。

以上

0 件のコメント:

コメントを投稿