学習オブジェクトに関する言語

2003年5月23日

オブジェクト指向を人々に教える場合、どの言語を使用すればよいでしょうか?

ここ数年、オブジェクトについて学習するための最初の選択肢はJavaでした。Javaを使用する理由はたくさんあります。

  • 広く知られている
  • 主流のスタイルになりつつあるCベースの構文を使用する
  • 無料の、高品質の開発環境が広く利用できる
  • Javaの知識は、仕事を得るのに役立つ

これらの理由から、Javaの使用を思いとどまらせるつもりは全くありません(ただし、C#もほとんどのこれらの属性を備えており、そのため実行可能な選択肢になるだろうということを指摘したいと思います)。ただし、Javaだけに留めるつもりはありません。Java/C#/C++は特定のスタイルのOOプログラミングを示しており、人々にOOを紹介する場合、私は代替案を示すことが良いと思います。

検討する代替案はRubyPythonです。どちらの言語も動的型付け言語であり、静的型付けと動的型付けの両方の経験を得ることが有用だと思います。どちらの言語も非常に有用です。簡単なスクリプトで自動化できる作業は多くあり、すべての開発者は少なくとも1つのスクリプティング言語を習得しているべきだと思います。

どちらを選択するかは、それほど重要なことではありません。個人的に、私はRubyを選択するでしょう。Pythonはより広く使用されていますが(利用可能)、RubyはOOにおいてより純粋です(あなたが学習しているのがそれであるならば有用です)。私には、Rubyの方がかなりクリーンに感じられます。また、Rubyにはブロックがあります。コードのかたまりをオブジェクトとして簡単に作成する機能です。ブロックは、コードの構造化に関する多くのアイデアを教える強力なプログラミングツールです。そうでなければ理解するのが難しく、関数の言語のエントリーポイントが提供されます。

多くの人は「Smalltalkはどうでしょうか?」と尋ねるかもしれません。Smalltalkは今でもお気に入りのプログラミングエクスペリエンスなので、その気持ちはわかります。しかし、スクリプティング言語の利点は、プロのプログラマーが定期的に使用するものであるのに対し、Smalltalk愛好家である私でさえ何年もイメージを起動していないということです。

これらすべてから、別の疑問が生じます。OOを教えるためにプログラミング言語を使用するべきでしょうか。その代替として、UMLでの説明など、原則について議論することがあります。私は、人々がそれを使用して何かができるように、主に言語を使用すべきだと強く信じています。私にとってソフトウェア設計は数学に似ています。読書や聴講によって浅い感謝を得ることができますが、実際に理解できるのはそれを行うことによってのみです。したがって、OOを本当に理解するには、何かを実際に構築する必要があります。そして、PragDave's Katasの精神に基づいて、さまざまな方法で試すよう奨励されています。