SlideShare a Scribd company logo
CROSS 2014
言語CROSS

Smalltalkお題解説

2014 SoftUmeYa, LLC
Masashi Umezawa
Smalltalkのお題
現在実行中のプログラムの全オブジェクトを得る
には?
解答
Smalltalkだと実にシンプル
Object allSubInstances

ちなみに今現在いくつのオブジェクトがい
るのか見てみましょう
時間がかかるのでforkしておきます
[Object allSubInstances size inspect] fork
実装の解説(1)





「小さな要素の組み合わせ」でできている
allInstancesから対話的にみていく
Behavior >> allSunInstances
Behavior >> allSubInstancesDo:
allSubInstancesDo: aBlock
self allInstancesDo: aBlock.
self allSubclassesDo: [:sub | sub
allInstancesDo: aBlock]

 allInstancesDo: と allSubclassesDo: を使った再帰
になっている
実装の解説 (2)
 Behavior>>allInstancesDo:
allInstancesDo: aBlock
| inst next |
inst := self someInstance.
[inst == nil]
whileFalse:
[
next := inst nextInstance.
aBlock value: inst.
inst := next]
実装の解説 (3)
 Behavior>>allSubclassesDo:
allSubclassesDo: aBlock
self subclassesDo:
[:cl |
aBlock value: cl.
cl allSubclassesDo: aBlock]

 Class >> subclassesDo:
subclassesDo: aBlock
subclasses == nil
ifFalse:[subclasses do: aBlock]
ちなみにいくつのオブジェクトが?
XXXXXX個でした
これらのオブジェクト達がメッセージを
送ってくれるのを待っている
ワクワクしてきます

膨大なオブジェクト空間に飛び込んで、
オブジェクト達を育くむ「育てゲー」
ちなみにセーブは一瞬
もっときついお題
もっときついお題
SmallTalk R4.1チャレンジ
http://smalltalk.smalltalk-users.jp/oshirase/smalltalkr41challenge

• gotoを新たに実装せよ
• 継承やソースの変更、クラスの削除等が行えなく
なるbeFinalメソッドを実装せよ、など

変態的なパワーに興味がある人は
「SmallTalk R4.1のつくりかた」
• http://smalltalk.smalltalk-users.jp/oshirase/smalltalkr41notsu
kurikata

Smalltalk Superpowers 勉強会資料
• http://atnd.org/events/11043

More Related Content

What's hot

そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
shigeki_ohtsu
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
koichik
 
Elastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみたElastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみた
Yoichi Toyota
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
guest172cfb
 

What's hot (20)

Nginx
NginxNginx
Nginx
 
Ingress on GKE/GCE
Ingress on GKE/GCEIngress on GKE/GCE
Ingress on GKE/GCE
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
第8回KPF発表資料
第8回KPF発表資料第8回KPF発表資料
第8回KPF発表資料
 
Ohotech特盛 #11 Box2DWebを触ってみよう
Ohotech特盛 #11 Box2DWebを触ってみようOhotech特盛 #11 Box2DWebを触ってみよう
Ohotech特盛 #11 Box2DWebを触ってみよう
 
[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他[Basic 6] DNS / ソケット通信 / その他
[Basic 6] DNS / ソケット通信 / その他
 
NanoStrand
NanoStrandNanoStrand
NanoStrand
 
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
 
東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates東京Node学園#3 Domains & Isolates
東京Node学園#3 Domains & Isolates
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
Lagopusとvagrant
 
Twemproxy (nutcracker)
Twemproxy (nutcracker)Twemproxy (nutcracker)
Twemproxy (nutcracker)
 
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみたServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
ServerWorks Sonic! 003 LT - GlusterをZabbixで監視してみた
 
20140929 ecmascript
20140929 ecmascript20140929 ecmascript
20140929 ecmascript
 
丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみました
丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみました丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみました
丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみました
 
Elastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみたElastic searchをrailsから使ってみた
Elastic searchをrailsから使ってみた
 
Shibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced MogilefsShibuya Pm Tt08 Advanced Mogilefs
Shibuya Pm Tt08 Advanced Mogilefs
 
アクターモデルについて
アクターモデルについてアクターモデルについて
アクターモデルについて
 
RxSwift
RxSwiftRxSwift
RxSwift
 
IPython notebookでOpenFOAMを使う!講習会準備資料
IPython notebookでOpenFOAMを使う!講習会準備資料IPython notebookでOpenFOAMを使う!講習会準備資料
IPython notebookでOpenFOAMを使う!講習会準備資料
 
OpenWhisk introduction public
OpenWhisk introduction publicOpenWhisk introduction public
OpenWhisk introduction public
 

Viewers also liked

Softcircuitworkshop Class07
Softcircuitworkshop Class07Softcircuitworkshop Class07
Softcircuitworkshop Class07
guesta72b6b
 
Rafaella 4ano B
Rafaella     4ano BRafaella     4ano B
Rafaella 4ano B
pafa
 
Innovacion y desarrollo tecnologico
Innovacion y desarrollo tecnologicoInnovacion y desarrollo tecnologico
Innovacion y desarrollo tecnologico
Preparatoria No 116
 
Rafaella 4ano B
Rafaella     4ano BRafaella     4ano B
Rafaella 4ano B
pafa
 
Rafaella 4ano B
Rafaella     4ano BRafaella     4ano B
Rafaella 4ano B
pafa
 
Getting Ready For Clil[1]
Getting Ready For Clil[1]Getting Ready For Clil[1]
Getting Ready For Clil[1]
Liliana Creton
 
Standard Screen Patterns
Standard Screen PatternsStandard Screen Patterns
Standard Screen Patterns
Chao Cai
 

Viewers also liked (18)

Proyectos institucionales iii
Proyectos institucionales iiiProyectos institucionales iii
Proyectos institucionales iii
 
Logica
LogicaLogica
Logica
 
Antropologia
AntropologiaAntropologia
Antropologia
 
Softcircuitworkshop Class07
Softcircuitworkshop Class07Softcircuitworkshop Class07
Softcircuitworkshop Class07
 
Rafaella 4ano B
Rafaella     4ano BRafaella     4ano B
Rafaella 4ano B
 
Useful Websites for Materials Creation
Useful Websites for Materials CreationUseful Websites for Materials Creation
Useful Websites for Materials Creation
 
Smalltalkで3D GUI
Smalltalkで3D GUISmalltalkで3D GUI
Smalltalkで3D GUI
 
Index Copernicus 2008
Index Copernicus 2008Index Copernicus 2008
Index Copernicus 2008
 
Innovacion y desarrollo tecnologico
Innovacion y desarrollo tecnologicoInnovacion y desarrollo tecnologico
Innovacion y desarrollo tecnologico
 
Rafaella 4ano B
Rafaella     4ano BRafaella     4ano B
Rafaella 4ano B
 
Rafaella 4ano B
Rafaella     4ano BRafaella     4ano B
Rafaella 4ano B
 
Uncovering Clil
Uncovering ClilUncovering Clil
Uncovering Clil
 
Getting Ready For Clil[1]
Getting Ready For Clil[1]Getting Ready For Clil[1]
Getting Ready For Clil[1]
 
Clil Presentation
Clil PresentationClil Presentation
Clil Presentation
 
Chapter 5 By Lorena
Chapter 5 By LorenaChapter 5 By Lorena
Chapter 5 By Lorena
 
Why!? Smalltalk
Why!? SmalltalkWhy!? Smalltalk
Why!? Smalltalk
 
Standard Screen Patterns
Standard Screen PatternsStandard Screen Patterns
Standard Screen Patterns
 
Tarantalk
TarantalkTarantalk
Tarantalk
 

Similar to Smalltalkお題「実行中の全オブジェクトを得るには?」

中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
NilOne Ltd.
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
Koji Nakamura
 

Similar to Smalltalkお題「実行中の全オブジェクトを得るには?」 (20)

GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hackGroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
 
CLRH_120414_WFTDD
CLRH_120414_WFTDDCLRH_120414_WFTDD
CLRH_120414_WFTDD
 
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
マイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorpマイクロサービス時代の生存戦略 with HashiCorp
マイクロサービス時代の生存戦略 with HashiCorp
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
Swift on Docker
Swift on DockerSwift on Docker
Swift on Docker
 
Domino Query Language (DQL)
Domino Query Language (DQL)Domino Query Language (DQL)
Domino Query Language (DQL)
 
Lt 111119
Lt 111119Lt 111119
Lt 111119
 
Flight入門
Flight入門Flight入門
Flight入門
 
Introduction for Browser Side MVC
Introduction for Browser Side MVCIntroduction for Browser Side MVC
Introduction for Browser Side MVC
 
Perlでちょいモテデザインパターン
PerlでちょいモテデザインパターンPerlでちょいモテデザインパターン
Perlでちょいモテデザインパターン
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
Lt 111217
Lt 111217Lt 111217
Lt 111217
 
Bp study39 nodejs
Bp study39 nodejsBp study39 nodejs
Bp study39 nodejs
 
Zabbix-jp study #4 20111020 session2
Zabbix-jp study #4 20111020 session2Zabbix-jp study #4 20111020 session2
Zabbix-jp study #4 20111020 session2
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
mishimasyk#4
mishimasyk#4mishimasyk#4
mishimasyk#4
 

More from Masashi Umezawa

More from Masashi Umezawa (20)

第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
 
FileManで楽々ファイル操作
FileManで楽々ファイル操作FileManで楽々ファイル操作
FileManで楽々ファイル操作
 
TruffleSqueakの紹介
TruffleSqueakの紹介TruffleSqueakの紹介
TruffleSqueakの紹介
 
SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門SmalltalkBoltでUFFI入門
SmalltalkBoltでUFFI入門
 
TaskItの紹介
TaskItの紹介TaskItの紹介
TaskItの紹介
 
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後Smalltalk勉強会 - 過去、現在、そして未来へ のその後
Smalltalk勉強会 - 過去、現在、そして未来へ のその後
 
Revealing ALLSTOCKER
Revealing ALLSTOCKERRevealing ALLSTOCKER
Revealing ALLSTOCKER
 
TarandocでJSONを永続化
TarandocでJSONを永続化TarandocでJSONを永続化
TarandocでJSONを永続化
 
Dockerizing pharo
Dockerizing pharoDockerizing pharo
Dockerizing pharo
 
今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門今からでも遅くないSmalltalk入門
今からでも遅くないSmalltalk入門
 
Tarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒すTarantubeでメッセージキューを使い倒す
Tarantubeでメッセージキューを使い倒す
 
VerStixの紹介
VerStixの紹介VerStixの紹介
VerStixの紹介
 
Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今Oldtalk - あのころの処理系は今
Oldtalk - あのころの処理系は今
 
Pyonkeeを鳴らす
Pyonkeeを鳴らすPyonkeeを鳴らす
Pyonkeeを鳴らす
 
Smalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へSmalltalk勉強会 - 過去、現在、そして未来へ
Smalltalk勉強会 - 過去、現在、そして未来へ
 
Smalltalkと型について
Smalltalkと型についてSmalltalkと型について
Smalltalkと型について
 
Introduction of Pharo 5.0
Introduction of Pharo 5.0Introduction of Pharo 5.0
Introduction of Pharo 5.0
 
Pillarの紹介
Pillarの紹介Pillarの紹介
Pillarの紹介
 
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
Scrumの紹介とXPプロジェクトへの適用(Scrum and XP)
 
NanoStrand
NanoStrandNanoStrand
NanoStrand
 

Recently uploaded

2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
ssuserbefd24
 

Recently uploaded (10)

LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
YugabyteDB適用に向けた取り組みと隠れた魅力 (DSS Asia 2024 発表資料)
 
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
2024年度_サイバーエージェント_新卒研修「データベースの歴史」.pptx
 
【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow【AI論文解説】Consistency ModelとRectified Flow
【AI論文解説】Consistency ModelとRectified Flow
 
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その2) 2024/05/24の勉強会で発表されたものです。
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
論文紹介: Offline Q-Learning on diverse Multi-Task data both scales and generalizes
 
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
論文紹介: Exploiting semantic segmentation to boost reinforcement learning in vid...
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
2024年5月25日Serverless Meetup大阪 アプリケーションをどこで動かすべきなのか.pptx
 

Smalltalkお題「実行中の全オブジェクトを得るには?」