2007-07-02

プログラミング言語・環境

 これからプログラミングをはじめる方や第2、第3のプログラム言語をはじめる方のために、いろいろなプログラミング言語や環境を比較してみました。
また、amazonで入手できるものはリンクも入れておきました。
価格も表示されていますので、これも比較の参考にしてください。

ただし、プログラミング環境というのはなにも、全部が全部市販されているパッケージを買わなければ手に入らないわけではありません。
使用したいプログラミング言語や環境によって、有償のものしかないものと無償のものもあるものがあります。

例えば、JavaにはEclipseというオープンでメジャーな開発環境があります。
また、このEclipse、プラグインをインストールすることで他にも様々なプログラミング言語を扱うことができます。
Eclipseについて、詳しくはEclipseWikiが参考になると思います。
ダウンロード、インストールの仕方も丁寧に紹介され、ダウンロードサイトへのリンクもあります。
amazonでは、もちろん有償のものしか手に入りませんので、この他の無償のものはご自分で調べてみてください。
Webで検索すれば、すぐに見つかると思いますよ。

コンテンツ

  1. お仕事としてのプログラム言語
    1. .NET Frameworkのための言語
    2. Java
    3. スクリプト
    4. VBAマクロ
    5. 業務系アプリケーション以外での開発言語
  2. 趣味としてのプログラム言語
    1. どの言語をはじめるか迷ったら
ご注意:
私は業務系アプリケーションのエンジニアですので、ここでのお話のほとんどは業務系のことになります。
業務系アプリケーションとは、企業が完全オーダーメイド(あるいは大部分オーダーメイド)で発注し、主に自社の情報管理や情報活用のために使用する、(比較的)大規模なアプリケーションのことです。
他の業界のことにも少し触れていますが、あくまで門外漢としての知識ですので、ちょっとズレてる可能性があります。

お仕事としてのプログラム言語

現在、業務系アプリケーションの多くは、Webを前提としているか、またはWebに対応しています。
そして、Webサーバを実装するためのプログラミング言語として今最も多く採用されているのは、MicrosoftのASP.NETとJavaです。
たいていの場合、WindowsマシンでWebサーバを立てたい場合にはASP.NET、LinuxなどのUNIX系マシンでWebサーバを立てたい場合にはJavaということになります。
.NET Frameworkのための言語
ASP.NETは、主にWebページの見かけ部分―ユーザインタフェイスを実装するためのシクミです。
ASP.NETを使用する際には.NET Framework(以下、.NET)のためのプログラミング言語(以下、.NET言語と言います)を使ってアプリケーションを実装することになります。
具体的には、VB/C#/C++/J#です。
.NETでは、これらのどの言語を使用しても、コンパイル結果はほとんど変わらないということになっています。
J#はJavaと同様の構文が使用されますので、Javaと同じものかと思われがちですが、実はコンパイル結果や実行環境、通常使用されるライブラリが違います。
簡単に言えば、J#で作ったアプリケーションは.NET上で動き、Javaで作ったアプリケーションはJVM上で動きます。
ところで、.NETアプリケーションを開発する際、J#は特別な理由がない限り、あまり採用されません。
現在のところ、.NETは(少しの例外はありますが)ほとんどWindows上だけのものです。
.NETアプリケーションを開発するということは、とりもなおさずWindowsアプリケーションを作るということにほかなりません。
そして、.NETが登場する以前、Windowsアプリケーション開発で最もメジャーだった言語は、VBとC++でした。
反対に、JavaでWindowsアプリケーションを作るということはめったにありませんでした。
どの言語で作っても同じなら、熟練者が多い言語を採用するのが自然ですよね。
ですので、J#はあまり採用されないのです。
.NETで最も多く採用されているのは、VBとC++の進化形(と言われている)C#のようです。
Microsoftの.NET言語開発環境です。("マイクロソフト visual .net"で検索)

Microsoft以外でも、いくつか.NET開発言語が出ています。(microsoft .net frameworkで検索)
Java
Javaは、基本的にはいろいろな環境で動作し、Webサーバだけでなく、GUIアプリケーションやアプレットなども作れます。
でも、どうも日本ではJavaのGUIはあまりウケがよくないようで、WindowsアプリケーションをJavaで作るということはめったにありません。
また、近頃のWebの動向として、リッチクライアントはAjaxという新しいやり方で実装するようになっており、アプレットというのもあまり採用されないテクノロジーになっています。
したがって、日本での業務アプリケーション開発では、JavaといえばほとんどWebサーバです。
と、なんだかこれでは「あれだめ、これだめ」というかんじで、Javaについてマイナスの印象を強くしてしまいそうですが、そんなことはありません。
日本の業務系Webアプリケーションでは、やはりJavaはシェアが大きいです。
Javaにはいくつか有償の開発環境がありますが、冒頭でご紹介したEclipseも人気の高い環境です。
実際の業務アプリケーション開発の現場でも、よく使われています。
.NETでは、リッチな開発環境といえば、ほとんどMicrosoftが提供するものしかありませんが、Javaではこのように開発環境を選ぶ自由もありますね。
Javaの開発環境です。("プログラミング Java"で検索)
スクリプト
近頃、Webサーバを実装するための言語に、PHPやPerlなどのスクリプトがよく採用されるようになってきているようです。
技術者求人を見ても、「~スクリプト経験者」という応募条件をよく目にします。
ただ、Rubyのような比較的最近名前をよく聞くようになってきたようなものは、業務系ではまだあまり採用されていないようです。
最近、Ruby on Rails等で目を見張るほど認知度が上がってきていますから、すぐに積極的に採用されるようになるかもしれません。
スクリプト言語の開発環境、実行環境はオープン、またはフリーで提供されているのが普通です。
それぞれのスクリプト言語の本を買えば、入手、インストール方法はたいてい記載されているはずです。
言語の解説も手に入って一石二鳥ですし。
まぁ、べつに本を買わなくても、Webで調べればわかるんですけど。
でも、本というメディアの便利さも馬鹿にはできません。
主なスクリプト言語の本を以下にあげますが、スクリプト言語は他にもたくさんあります。
他のスクリプト言語については、ご自分で検索してみて下さい。
PHPの本です。("プログラミング PHP"で検索)

Perlの本です。("Perl"で検索)

Rubyの本です。("Ruby"で検索)

Pythonの本です。("Python"で検索)
VBAマクロ
マクロはプログラム言語とはちょっと違うものですが、実際開発の現場で使用されているものですので、ここで取り上げておきます。
Microsoft OfficeシリーズのVBA(Visual Basic for Applications)は、プログラム言語と比較すると単純な上に、そこそこしっかりしたアプリケーションを作れる、強力な開発環境です。
それほど経験を積まなくても、ある程度使いこなせるようになるのと、アプリケーションの基本的な仕組みはOffice製品が提供してくれるので、比較的短期間で開発できることなどが特徴です。
本格的なアプリケーションを作る前の試作品や、あるアプリケーションから他のアプリケーションへのデータの移行などのための使い捨てアプリケーション、または予算や開発期間が非常にタイトで、かつアプリケーションの規模が小さい場合などによく採用されます。
Officeを使い慣れてさえいれば、比較的簡単に習熟できるので、これからプログラミングをはじめる方にはとっつきやすいかもしれません。
ただ、現在では仕事はそれほど多いとは言えません。
また、アプリケーションを一から作るわけではなく、あくまでOffice製品を操っているわけですので、向き不向きが大きく出てきます。
帳票やデータベース、グラフなどの、Office製品でカバーされている分野は非常に作りやすい反面、Office製品がやっていることとは何の関係もないようなものは、作りにくくなります。
Microsoft Office VBAの開発環境は、Officeに入ってます。
Microsoft Officeの各種製品です。("マイクロソフト Office"で検索)
業務系アプリケーション以外での開発言語
これまで、業務系アプリケーション開発での、プログラム言語の実情をお話してきましたが、それ以外の現場ではどのようなプログラム言語がよく使用されているのか、知っている範囲で少しだけお話します。
ただし、ここについては私は門外漢ですので、必ずしもこれが正しいとは限らないことをご了承ください。
市販用のアプリケーションやゲームでは、やはりC++が圧倒的なようです。
Windows用では、C#も増えてきているのでしょうか?
そこのところはよくわかりませんが、そのテの技術者求人では、C++が非常に多いです。
コンシューマ向けのWebアプリケーションサービスの場合、業務系とは違ってPHPなどのスクリプト系がかなり多くなっているように思います。
このコンシューマ向けWebアプリケーションには、ネットワークゲームのサポートサイトのようなものも含まれています。
ネットワークゲームの場合、ゲーム本体はC++、周辺サービスはWebでスクリプト系というかんじが多いのではないでしょうか。
組み込み系では、やはりCだと思います。
組み込み系はたいていリソースが限られているので、VMやフレームワークを前提とするような贅沢な環境は使用できません。
また、ほとんど使いもしないようなライブラリを組み込むこともできません。
多少でも余裕がある場合には、多くの場合C++が採用されるようです。
Javaや.NETも組み込み用の環境を用意し、コンパクトさを追求しようとしていますので、組み込みでこれらを扱うこともないことはないですし、今後増えていくかもしれません。
でも、現状ではやはりC、そしてC++が圧倒的に多いのではないでしょうか。

 携帯用アプリケーションはJava
ですね。
docomoのiアプリもauのEZアプリもSoftBankのS!アプリも、どれもこれもJavaです。
C/C++の開発環境です。("プログラミング環境 C++"で検索)―ちなみに、CはC++の開発環境で開発できます。

趣味としてのプログラム言語

趣味としてプログラミングをはじめるのであれば、これはもう、何を選んだってあなたの勝手ですよね。
誰も文句なんか言いません。ご自由に。
ただ、もし将来プログラミングを仕事にするかもなぁと思うのであれば、上を参考にされることをお勧めします。
あと、もしフリーウェアやシェアウェアなどを作って、不特定多数の人に使ってもらおうと思うのであれば、動作条件が大切ですね。
たとえば.NET系で作ったソフトウェアは、.NET Frameworkがなければ動きません。
つまり、ほぼイコールWindows上ってことですね。
Javaなら、Java VMがないと動きません。
スクリプト言語は、全てランタイムを必要とします。
こういう「動作に必要なもの」ができるだけ少なく、また広く出回っているものでないと、多くの人に使ってもらうのが難しくなります。
まったくそんなつもりがないのであれば、たとえばこんなのもありますよ。
各言語名は、Wikipediaの各言語のトピックにリンクしてます。
Smalltalk
古くからある、そして最も(かどうかは異論があるかたもいらっしゃると思いますが)純粋なオブジェクト指向言語です。
豊富で非常に洗練されたクラスライブラリはデザインパターンの宝庫でもあり、後発の多くのオブジェクト指向言語に多大な影響を与えています。
今日、JavaやC++、オブジェクト指向スクリプト言語の開発者などがすばらしいライブラリやフレームワークに恵まれて開発できているのは、Smalltalkに負うところがけっこう大きいのです。
ただ、Smalltalkはけっこうとっつきにくいです。
その理由など、詳しくはWikipediaを参照してください。
LISP
こちらもかなり古いというか、さらに古い言語です。
LISP自体はオブジェクト指向言語ではなく、関数型言語です。
ただ、いろいろなオブジェクト指向システムが存在していて、これを組み込むことでオブジェクト指向開発ができるみたいです。
D言語
こちらは、SmalltalkやLISPとはうってかわって、ものすごく新しい言語です。
D言語は、オブジェクト指向での開発もできる、マルチパラダイム言語になっています。
できたてほやほやの言語ですので、新物好きの方にはオススメです。
また、単に新しいだけじゃなくて、新しいからこそ、最新の概念や新機能が取り入れられています。
たいていの方が予想するとおり、"C"の後継だから"D"みたいですよ。
(新しすぎてというかマイナーすぎてというか、amazonで本が見つかりませんでした)
いかがですか?
現在仕事が少ないけど、個人的におもしろそうだと思うプログラム言語を、独断と偏見でいくつか挙げてみました。
ただし、LISPは研究分野、特に人工知能のあたりでは盛んに利用されています。
Smalltalkは…仕事はないです。
たぶんどこかしらにはあるんでしょうが、私はきいたことがありません。
でも、実におもしろい言語ですよ。
D言語も、仕事があるなんてハナシ、聞いたことがないです。
他にも、プログラミング言語はたくさんたくさんあります。
「プログラミング言語」で検索してみてください。
山のように出てきますよ。

どの言語をはじめるか迷ったら

プログラミング言語の習得というのはある程度時間がかかるものですから、いろいろ見てじっくり選んでください。
でも、いきなり逆のことを言いますが、あなたが優れたプログラマになるのなら(なるつもりですよね?)、どうせ後々いくつかのプログラミング言語を習得することになります。
だから、最初に選ぶ言語は、どれでもいいといえばどれでもいいんです。
乱暴な言い方をすれば、いくつかの候補に絞って、そこから一つに決めるのが難しいのであれば、もうあとは適当にいっちゃえばいいんじゃないでしょうか。
名前の響きが好きだとか、もうアミダとか、サイコロとかね。

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...