« 連載: Java.use(better) NITRIS 問題《20》ぜ〜んぶまとめてポイ | トップページ | 連載: Smalltalk use: better《2》3つの基本構文★ »

2006年5月 8日 (月)

連載: Smalltalk use: better《1》始めの一歩、末の千里★

キーワード ◆ autoboxing・James Gosling・NullPointerException・Oak・unboxing・アジァイル開発・イディオム・オブジェクト指向・クラス・コレクションフレームワーク・コンストラクター・コンポーネントウェア・デザインパターン・メソッド・モデリング・リファクタリング・概念モデル・基本データ型・制御構造・統合開発環境

60500_1

※ Smalltalk use: better《SeasonⅠ》site map ⇒ 「piyo60500.pdf」をダウンロード

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo60508.pdf」をダウンロード

------------ 序 ------------

例えばね。                       
19世紀の終わりにね。
電子っていうものが、素粒子が発見されて、
そのときに、それが大きな産業を作るなんて、
誰も思わなかったでしょ。

ところが、
五十年も経って、二十世紀の半ば頃になると、
エレクトロニクス産業って物凄いものができたのね。

基礎科学の研究っていうのはね。
ある程度は山勘になっちゃう。

ひとつのことをね。
もうトコトンまで、もうギリギリ考えて考えて、考え抜いて、
ああでもない、こうでもない、こうしたらどうだろうって、
もうトコトン考え抜くとね。
山勘って当たりが良くなる。
そういうふうに、僕は思いますよ。

NHK「プロジェクトX~挑戦者たち~」小柴昌俊

◆ 1970 年代の初頭「オブジェクト指向」は産声を上げました。その四半世紀後に「オブジェクト指向」が広く知されるようになることを、彼らは予測していたのかしら。

------------ 本文 ------------

◆ この連載「Smalltalk use: better」では、究極のオブジェクト指向の世界を紹介します。

◆ アナログ世代の Java/C# のようなオブジェクト指向擬と違って、ディジタル世代の Python/Ruby のように、本物のオブジェクト指向ならではの世界を体感できるような話題を提供します。Smalltalk が提供する「すべてがオブジェクト、オブジェクトにメッセージを送る」という、簡潔で強力な概念モデルによって、プログラミングの可能性が広がります。

◆「すべてがオブジェクト」というのは、基本データ型だけでなく、クラスやメソッドまでもオブジェクトと見なせるということです。また「オブジェクトにメッセージを送る」というのは、プログラムを記述するコードの世界だけではなく、開発環境における操作(コンパイラーやデバッガーを起動する、作業履歴を管理復元するなど)までを含めて、すべてを統一的に扱えるということです。コードと開発環境とは表裏一体と見なす、真の「統合開発環境」へと誘います。例えて言うなら「Java のコードと Eclipse とを統一的に扱う概念モデルを提供する」ということです。

◆ この連載では、プログラミング技法を紹介することが目的ではありません。ともすると、Smalltalk に限らず、プログラミング言語としての側面に注目されがちです。むしろ、自然言語と同様に、その背景にある文化や思想について、理解することを目的としています。外国の人が日本語を学ぶときに、漢字や平仮名を覚え、難しいとされる「てにをは」を習得するだけでなく、その背景にある伝統文化を知ることで、言語に対するより深い理解が得られます。コードの断片を提示するのは、その手段のひとつにすぎません。それによって、イディオム、リファクタリング、デザインパターン、コンポーネントウェア、モデリング、アジァイル開発など、今では広く認知されているキーワードを頼りに、そのルーツを探る旅へと誘います。

◆ この連載は、1988〜1990年に開催した Smalltalk のセミナー用テキスト(原稿)および講義ノート(ネタ帳)をもとに、再構成したものです。当時と、基本的な枠組みは変りません。その中から、C++ と比較した記述などを、Java/C# に変更しています。翌1991年には、James Gosling さんが(Java に改称する前の)オブジェクト指向言語 Oak の開発に着手したとされています。つまり、その時点では、Java はまだ存在すらしていませんでした。新しくて旧い`アナログ思考`の Java/C# とは異なる、旧くて新しい`ディジタル思考`の Smalltalk が提供する、究極のオブジェクト指向の世界へ、さあご一緒にどうぞ。

【Oh! ススメ】Squeakland
世代や国籍を超越した Squeak の世界へようこそ

自由自在Squeakプログラミング Book 自由自在Squeakプログラミング

著者:梅沢 真史
販売元:ソフトリサーチセンター
Amazon.co.jpで詳細を確認する

【参考文献】梅沢 真史, 2004
自由自在Squeakプログラミング, ISBN4883732037

プログラミング言語 Squeak/Smalltalk の詳細を知りたいなら、こちらがおススメです。パソコンを傍らに置いて、実際に手を動かしながら体験学習するときの、良きパートナーとなるでしょう。通勤 のお伴にするには、ちょっとその厚みに圧倒されるかもしれません。しかし、内容はサクサクと読みやすく「気が付いたらここまで来てしまった」ということに もなりかねません。熱中するあまり、降りるべき駅を乗り過ごしてしまわないように、ご用心、ご用心。

◆ この連載における最初の目標は、次の図に示す概念モデルを理解できるようになることです。

60508a_2

◆ 図は、Java と Smalltalk との世界観の違いを端的に表現したものです(ただし、Smalltalk の世界を表現するときにも、あえて比較のために Java の表記を使っています)。Java と違って、その背景に、簡潔で統一された概念モデルが存在することが分ります。

基本データ型も、オブジェクトとして実現されます。これは、他のオブジェクトと同様に、メソッド呼び出しが可能になることを意味します。Java では、3.toString() という記述ができません。また、null.toString() は、例外 NullPointerException を生じます。基本データ型や null などは、オブジェクトとしては認められていないのです。Smalltalk では、これらに相当する 3 printString および nil printString という記述が可能です。統一された概念モデルがその背景にあるので、基本データ型だけでなく null さえも、他のオブジェクトと同様に、一人前のオブジェクトとして扱われます。そのため、コレクションフレームワークを利用するときにも、autoboxing/unboxing という冗長な処理は不要です。

メソッドでさえ、オブジェクトとして実現されます。これは、他のオブジェクトと同様に、メソッド自身を他のメソッド呼び出しの引数やリターンにできることを意味します。すると、より柔軟なコードを記述できるので、コードの再利用やリファクタリングを促進します。

クラスは、ただの型紙(設計図)ではありません。クラスも、他のオブジェクトと同様に、実体を持つ一人前のオブジェクトです。すると、次のようなことが可能となります。クラスを定義して、そのインスタンスを生成します。次に、メソッドを再定義すると、それ以前に生成されたインスタンスは、再定義されたメソッドに応答します。インスタンスを再生成する必要はありません。このような特徴は、アジャイル開発(真の統合開発環境)では、強力な武器となります。

コンストラクターのために特別な構文を必要としません。なぜなら、コンストラクターは、普通のメソッドと本質的な違いがないからです。これによって、メソッド呼び出しと同じフレームワークの中で、コンストラクターを扱えるようになります。特別な演算子 new は不要です。つまり、new Class() ではなく、Class.new() となります。そこにはただ、new() というメソッド呼び出しがあるだけです。これは、メソッド呼び出しと同じ構文です。クラスもオブジェクトの一種なので、これも驚くに値しません。

制御構造でさえ、メソッドとして実現されます。これは、if や for のような構造化プログラミングの基本とされる制御構造も、特定のクラスのメソッドとして実現されることを意味します。つまり、if() というメソッドを定義するのです。これによって、すべて統一された簡潔で強力な概念モデルが完成します。

==================================
真樹育未 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部

|

« 連載: Java.use(better) NITRIS 問題《20》ぜ〜んぶまとめてポイ | トップページ | 連載: Smalltalk use: better《2》3つの基本構文★ »

書籍・雑誌」カテゴリの記事

JML/Java/Eclipse」カテゴリの記事

Jython/Python」カテゴリの記事

Squeak/Smalltalk」カテゴリの記事

JRuby/Ruby」カテゴリの記事

C#/Visual Studio」カテゴリの記事

.連載: Smalltalk use: better」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 連載: Smalltalk use: better《1》始めの一歩、末の千里★:

« 連載: Java.use(better) NITRIS 問題《20》ぜ〜んぶまとめてポイ | トップページ | 連載: Smalltalk use: better《2》3つの基本構文★ »