SlideShare uma empresa Scribd logo
1 de 8
Smalltalk
ユーザーイリュージョンの黎明
@sumim
slideshare.com/sumim
2019/5/25
オブジェクト指向のハードコア(リモート参加)
Smalltalkとは
• 1970年代にXEROXパロアルト研究所で開発された
オブジェクト指向プログラミング言語とそのGUI環境
• アラン・ケイの「ダイナブック」の暫定実装
(今のGUIベースOSに近い)
• ただし、現在主流のUnixライクOSとは異なり、
ファイルベースではなく “オブジェクト”ベース
• プラットフォームはAltoやその後継のDマシン
マイクロコードでバイトコードを直接実行可能
→仮想マシンでバイトコードを実行する方式に…
Smalltalkの系譜
• Smalltalk-72 … タートル描画が使えるスクリプト言語
• Smalltalk-74 … -74+高速描画ルーチン→GUI
• Smalltalk-76 … -72とは別物。省コスト版メッセージング
• Smalltalk-78 … 8086でも動かせるコンパクト版-76
• Smalltalk-80 … 実験色を排除し商用言語処理系(IDE)へ
Smalltalk-72 Smalltalk-74 Smalltalk-76 Smalltalk-80
Reenskaug, Jobs, .. Beck, Cunningham, ....
Smalltalk-72
ウインドウ枠を含めタートルグラフィクスで描画
(図はエミュレータから。赤枠内がAltoでの表示範囲)
ポップアップメニューはまだ無かった
※このエミュレーターではマウスでウインドウを移動できないが、機能としてはウインドウのサイズ変更、移動などの機能はあっ
たらしい。
・クラスはJavaScriptのような関数(if式のネスト)で継承機構は無い
条件 ⇒(非false時の処理) false時の処理,条件分岐式
∢(アイボール),パターンマッチ
☺(スマイリー),タートル(クラス turtle のインスタンス)
☞(指さし)+文字列,シンボルリテラル表現(主に変数)
:(コロン),解釈中メッセージ内の次のオブジェクトの読み込み
・メッセージはメソッド呼び出しではなくトークン列
(ただし非同期ではない)
Smalltalk-72
BitBLT(Bit BLock Transfer)の発明
ビットマップ上の矩形領域の転送等を計算するルーチン
ポップアップメニューの実用速度での描画が可能に!
いつものカット・アンド・ペースト編集
をやったとき、彼は「おい!」という叫
び声を聞いた。インガルズは中断した。
ピーター・ドイッチュが立ち上がってス
クリーンを指さしていた。
今やったのは、
やったんじゃないかと
俺が思ってることか?
「未来をつくった人々」
http://www.amazon.co.jp/dp/4839902259 より
ユーザーイリュージョン!
Smalltalk-76
• SIMULAスタイル(つまり現在主流のと同じ)クラス機構を採用
継承機能のサポート
メソッドもパターンマッチからメンバー関数に
メッセージはメソッドの動的呼び出しに → 省コスト版メッセージング
メソッドが存在しないときだけメッセージをハンドリング可能に
• ウィジェットとUIパターンが充実(次ステップのイリュージョンへ)
• スクロールバー(左にポップアップ。フォーカス明示を兼ねる)
• カラムインターフェース(システムブラウザー)
• 仮想デスクトップ(サブビュー)
• ラジオボタン、ペイントツール、ドット拡大編集

Mais conteúdo relacionado

Semelhante a Smalltalk ~ ユーザーイリュージョンの黎明

2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMFAtomu Hidaka
 
インタラクションデザインにおけるオープン化事例の検討
インタラクションデザインにおけるオープン化事例の検討インタラクションデザインにおけるオープン化事例の検討
インタラクションデザインにおけるオープン化事例の検討Yosuke Sakai
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 
アジャイルUXライブ企画書
アジャイルUXライブ企画書アジャイルUXライブ企画書
アジャイルUXライブ企画書Tarumoto Tetsuya
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Masaki Muranaka
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)Naoki Okino
 
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Yamashita Takeshi
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMFAtomu Hidaka
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜSatoshi Yazawa
 
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)Akihiro Suda
 
Try andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoyaTry andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoyaEtsuji Nakai
 
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM,INC
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみたSatoshi Yazawa
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2tamtam180
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)tamtam180
 
鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解Masahito Zembutsu
 

Semelhante a Smalltalk ~ ユーザーイリュージョンの黎明 (20)

2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF2014 0228 OSC-Spring Tokyo NETMF
2014 0228 OSC-Spring Tokyo NETMF
 
インタラクションデザインにおけるオープン化事例の検討
インタラクションデザインにおけるオープン化事例の検討インタラクションデザインにおけるオープン化事例の検討
インタラクションデザインにおけるオープン化事例の検討
 
Tizen & Crosswalk
Tizen & CrosswalkTizen & Crosswalk
Tizen & Crosswalk
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 
アジャイルUXライブ企画書
アジャイルUXライブ企画書アジャイルUXライブ企画書
アジャイルUXライブ企画書
 
Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料Cq tse-fm3セミナー資料
Cq tse-fm3セミナー資料
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)
 
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
 
2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF2014 1018 OSC-Fall Tokyo NETMF
2014 1018 OSC-Fall Tokyo NETMF
 
DockerでJupyter使おうぜ
DockerでJupyter使おうぜDockerでJupyter使おうぜ
DockerでJupyter使おうぜ
 
Keep a diary
Keep a diaryKeep a diary
Keep a diary
 
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
 
Try andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoyaTry andstudy cloud_20120509_nagoya
Try andstudy cloud_20120509_nagoya
 
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
SORACOM UG 広島 #2 | SORACOM の紹介から SORACOM Conference "Discovery" 2018 SORACOM ...
 
Jupyterで運用やってみた
Jupyterで運用やってみたJupyterで運用やってみた
Jupyterで運用やってみた
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
Hacking Robotics
Hacking RoboticsHacking Robotics
Hacking Robotics
 
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
 
Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)Getting Started GraalVM (再アップロード)
Getting Started GraalVM (再アップロード)
 
鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解
 

Smalltalk ~ ユーザーイリュージョンの黎明