生産性が高いってどういうこと?
開発手法からのアプローチ
システム開発を行うのはあくまでも人間です。どんなに素晴らしい言語や開発環境があっても、人間が効率的に動けなければ意味がありません。そこで、開発手法をうまく行うことで、生産性を向上させる方法もあります。
XP(エクストリームプログラミング)という言葉を聞いたことがある人は多いと思います。XPの中には、ペアプログラミングなどの開発上の取り組みが多く提唱されていますので、これらをうまく採用することで生産性を向上できる場合があります。中規模なプロジェクトになってくると、ベーシックなものですが、開発チュートリアルを作成して新規参画者の初期コストを軽減したり、コーディング規約を作成して開発スタイル統一することもひとつです。
情報を共有することも非常に大切です。最近では文章共有にwikiを使ったり、Tracなどのバグトラッキングシステムを使ったりすることが増えてきました。プロジェクトの人数が増えてくると全体の情報を共有することが困難になりますが、プロジェクト内の各チーム単位では常に同じ情報を共有できるようにしておくと、手戻りの発生を防いだり、事前に問題を発見するのに役立ちます。
言語の生産性はどうやってはかっているのか?
プログラミング言語にはそれぞれ特徴があるため、単純にどの言語の方が生産性が高いと言うことはできません。だからこそ、やりたいことに合致する言語を見つけることが大切です。
開発速度を上げるには一般的にLL(Lightweight Language;軽量プログラミング言語)と呼ばれている言語が有利な場合があります。ソースコードが逐次解釈されるためコンパイルが不要であったり、メモリ管理を意識する必要がないため、やりたいことのみを実装するのに向いています。
一方、プログラムの実行速度がシビアに求められるようなものを開発しなければならない場合には、C言語などのコンパイラ型言語を採用する必要があるかもしれません。なぜなら、LLを使って開発を簡単に終わらせたのに、その後要求性能がでないためにチューニングに手間をとられてしまうような状況に陥ると、結果的に時間がかかってしまうことになるからです。
言語の特徴を考える上では、言語から利用できるライブラリも含めて考える必要があります。例えば、Perlには非常に多くのモジュールが登録されているCPANがあります。CPANに登録されているモジュールを利用することにより多くの実装を再利用することができます。裏を返せば、何かしらの縛りによりCPANモジュールを利用できないような環境では、効率的な開発が難しくなります。
情報が豊富であることも大切です。とても多くの有用な使い方があったとしても、その言語に精通した人しか知らず、ほかの多くの開発者が使いこなせなければ意味がありません。例えば、PHPは公式サイトで検索するだけで、関数の使い方と簡単なサンプルコードが手に入りますし、十分な説明が書かれています。
言語を採用する際に考えられる要素はもちろんこれだけではありませんが、言語の特徴が開発目的に向いているか、言語から利用できるライブラリで開発目的を簡単に手に入れることができるのか、開発に必要な情報が豊富か、という点は重要です。