Smalltalkに関する世界観です。
先駆的なオブジェクト指向言語、およびその統合プログラミング環境。アラン・ケイの「メッセージング」と言うアイディアから作られた。
アラン・ケイは「ダイナブック構想」で知られる、現在のMacやWindowsなどが採用しているGUI操作環境を考えた偉大なプログラマである。
詳しくはダイナブック構想を参照のこと。
Smalltalkは、オブジェクトにメッセージを与えることでプログラムを作る、オブジェクト指向のパイオニアだった。
シンプルな言語設計で、専門的なプログラマでなくても誰でも開発できることを目指した。
ダイナブック構想を目指したアルトは、メインフレームやミニコンピュータの時代にモニターやマウス・キーボードのついた机ほどの小さなコンピュータを実現しようとした。
ソフトウェア的な部分を担当するSmalltalkでは、ウィンドウやメニューなど、コマンドで操作することが当たり前だった当時としては、とても先駆的なGUIの環境だった。
また、クラスライブラリやオブジェクト指向、デザインパターンなど、設計の側面からも評価が高い。
1970年代にXerox社のパロアルト研究所(PARC)でアラン・ケイによって開発された。PARCはレーザープリンタ、イーサネット、アルトなどを創出した偉大な研究所である。
以上は以下の内容を参考に執筆しました。
Smalltalk環境の1つ。Smalltalkのサブセットによる仮想マシンを持っているため移植性が高く(もちろんUNIXやWindowsで動く)、アプリケーションに相当するオブジェクトやデータなど環境すべてがSmalltalkで記述されている。
Wikipedia
ソースコード
以下にサンプルコードがあります。
注意点:Smalltalk標準では代入は:=を用いて行います。Squeakでは代入に_(アンダースコア)を使用し、表示は←となります。
とても面白いSmalltalkのサンプルコードが以下にあります。
Smalltalkには、単項メッセージ、2項メッセージ、キーワードメッセージの三種類のメッセージがある。
まず、代入は:=を用いる。
x := 50.
以下は2の平方根を求める単項メッセージ。
2 sqrt.
以下は10+5の計算を行う2項メッセージ。
10 + 5.
以下は配列10, 20, 30の中から2番目の要素を取り出すキーワードメッセージ。
#(10 20 30) at: 2.
また、ブロックを使うことができる。ブロックは無名関数のこと。
block := [:v1 :v2 | v1 + v2]. block value: 10 value: 5.
値を返すには^(キャレット)を用いる。
^ true.
条件分岐(ifTrue:やifFalse:)や反復(do:やwhileTrue:)などもブロックによって行うことができる。
クラスは、たとえば順序なし、重複なしのセットを作るなら以下のようにする。add:メッセージで10と5を登録し、s includes: 5はtrueを返すためifTrue:以下のブロックが実行される。
s := Set new. s add: 10. s add: 5. s includes: 5 ifTrue: [ Transcript show: '5 is included!'; cr. ].
ここで、Transcript(実行結果を出力できるウィンドウ)ではshowメッセージを実行し、カスケードという方法で次に改行文字crを出力している。また文字列は'~'で囲む。
詳しくは以下のページが参考になる。
2024.08.25
Smalltalkの開発環境はビジュアルなGUIによる開発を取り入れており、クラスはGUIのSystem Browserとその中のコードペインというテキスト記述エリアで作成することができる。以下を参照のこと。
2024.08.26
Cにクラスやオブジェクト指向を取り入れたC++とは異なり、Objective-CはCの中にSmalltalk的なコードをインラインで書ける言語として知られる。
詳しくはObjective-Cを参照のこと。
オブジェクト指向を参照のこと。
関数も参照のこと。