ショートカット
ファシリテーター × あり方
コーディングの向こう側
Hello, ANOTHER world!
オブジェクト指向のはなし
プログラミングのはなし
C言語実力診断クイズ
eSkillBooks
コーディングの向こう側

使いこなすということ - PART2

賛否両論度

どの言語から?

最近では、Visual Basic(VB) がとても便利な開発環境になっています。ちょっとしたソフトを作るにはこれ以上のツールはないと思えるほどです。しかし、短所もたくさんあります。ですから、やはり VB 向きでないプロジェクトはいくつも存在しています。そういうプロジェクトで VB 以外を選べるようにするには、他の言語と VB の違いをよく理解している必要があるわけで、そのためには他の言語もマスターしなければなりません。ただし、片っ端からというわけにはいかないでしょう。私は、やはり C と C++ を覚えるべきだと思います。とくに C++ をマスターしていれば、VB も自動的にマスターできるはずです。もちろん、C++ を完全に理解するためにはオブジェクト指向の学習は避けて通れません。C++ とオブジェクト指向をマスターすれば、Java もすぐに理解できます。C# も大丈夫でしょう。また、C をマスターすれば、その他の手続き型言語(Pascal や FORTRAN など)は簡単に理解できます。

そういうわけで、まず C/C++ を覚えることをおすすめします。上で述べたように、これがわかれば他も言語もだいたいわかるのですから、絶対お得です。逆は成り立ちません。たとえば Java がわかっても C++ は簡単ではないし、FORTRAN がわかっても C は簡単ではないでしょう。VB をいくら使いこなしていても、C++ は絶対無理でしょう。

あとは何か1つスクリプト言語を覚えておくと良いかもしれません(JavaScript とか Perl など)。

使い方を知っているツールだけを使い続けていくのでは進歩がありません。手持ちのツールの長所と短所を冷静に判断して、それを補う新しいものを探しましょう。そうやって、自分の「ツールボックス」を完璧なものに近付けていくのです。

余談ですが・・・

ASSERT は私にとって非常に強力なツールです。これを取り上げられたら、パワー半減です(本当に)。ASSERT の実装にマクロは欠かせません。C/C++ では __FILE__/__LINE__ マクロを使うことで非常に便利な機能が実現できます。

ポインタも非常に重要です。たいがいのアルゴリズムはポインタ抜きでも書けますが、どうしても実行時の速度性能を上げたい時とか、コールバックやポリモーフィズムを使いたい時はポインタがないと不便です。

ところが! Java や C# では、マクロやポインタの機能を制限したり使えなくしていることが「ウリ」のひとつだったりします。迷惑な話だと思います。そういうポリシーなのだから仕方がないのかもしれませんが、不便で仕方がありません。

「バグの多くがマクロやポインタに起因するから、いっそなくした方がいいんだ」ということなのでしょうが、私はこれには反対です。たしかに使い方を正しくマスターしていない人がマクロやポインタを使うと本当にひどいことになります。しかし、きちんと使いこなしている人が使えば、とてもすばらしいプログラムができるのです。使いこなすのが難しくても、使いこなせばすばらしい効果が得られるということもあるのです。

前へ

目次へ
いらない機能を作るとき

(「コーディングの向こう側」は2000年4月から2001年5月にかけて作成されたコンテンツです。)