カッコで括ると優先
クイズ
6 + 3 * 2
クイズ 6 + 3 * 2
左から右
クイズ 6 + 3 * 2
6 + 3 左から右
クイズ 6 + 3 * 2
6 + 3 * 2 左から右
クイズ 6 + 3 * 2
6 + 3 * 2 左から右
9
クイズ 6 + 3 * 2
6 + 3 * 2 左から右
9 * 2
クイズ 6 + 3 * 2
6 + 3 * 2 左から右 9 * 2
18
クイズ 6 + 3 * 2
6 + 3 * 2 左から右 9 * 2
18
数学・算数とは違って12にはならない!
定数(リテラル)
数 23 3.22 2.7e3 16rFFFF 文字 $a $c $ あ
文字列 ‘Hello’ ‘ こんにちは ’ シンボル #Smalltalk
配列 #( 34 ‘hello’)
定数 true false nil
注意点
文字列 シングルクォーテーション
‘abcdefg’ ← これは文字列
コメント ダブルクォーテーション
“abcdefg” ←これはコメントアウト
一時変数の宣言
縦棒でくくる
| aVariable sum average |
変数への代入
:=
例
x := 2.
y := 3.
↑こんな記号を使います
一時変数に代入
| aVariable aString | aVariable := 3.
aString := ‘Hello’.
変数にはどんなオブジェクトでも入ります 一時変数の名前は小文字ではじめましょう
文の末尾にピリオドをお忘れなく
結果を返す
^(キャレット)
| sum |
sum := 3 + 4.
^ sum
sumが返る(つまり 7)
予約語
true false nil
self
super
thisContext
定数で出てきた 自分自身
自分自身:メソッド探索は親クラス 実行中のコンテキスト
カスケード
;( セミコロン )
複数のメッセージを送るときに便利
Transcript show: ‘Hello’.
Transcript space .
Transcript show: ‘World’.
Transcript show: ‘Hello’ ; space ; show: ‘World’.
ブロック
[ ] で括ったコードの固まり これ自体がオブジェクト
結果が欲しいときは value を送る [ 3 + 4 ]
[ 3 + 4 ] value
ブロック
[ :a | a + 4 ]
←引数が1つ[ :a :b | a + b ]
←引数が2つ引数に代入して結果を得るにはvalue:
[ :a | a + 4 ] value:3
[ :a :b | a + b ] value:3 value:4
制御構造は?
文法に含まれない
クラスライブラリを活用
分岐
ifTrue:
ifTrue: ifFalse ifFalse:
ifFalse: ifTrue:
( eggs = 3 ) ifTrue:[ Transcript show: ‘ 卵 3 つ ’ ].
↑ここは丸括弧 ↑こちらはブロック
繰り返し
whileTrue:
whileFalse:
[ eggs < 10] whileTue:[ Transcript show: ‘ 卵 ’.
eggs := eggs +1 ].
↑ここもブロック
(1回だけじゃなくて、
何度も繰り返し評価す るため)
↑こちらもブロック
繰り返し
timesRepeat:
to: by: do:
10 timesRepeat:[Transcript show:’Hi!’; cr].
1to: 10 by: 2 do:[ :v | Transcript show: v ;cr].
もう一度 Debug it
Ctrl+D
Command+D
Pharo/Squeak VisualWorks
Ctrl+b
デバッガ
スタック
実行中のコード
インスペクタ
デバッガの小技
何はともあれInspect it
オブジェクトを見たくなったらBrowse it
Ctrl+b
Command+b
Pharo/Squeak VisualWorks Ctrl+F12
Ctrl + i
Command + i
Pharo/Squeak
Ctrl + q
VisualWorks
デバッガの小技
わざとデバッガを立ち上げる
self halt.
デバッガからオブジェクトの中身を覗き放題 ブレークポイント
エラー時デバッグの心得
必ずいくつか前に戻す
エラー表示が先頭なので
見慣れたコードが見つかるはず
エラー。まず、落ち着け
ほら、ここだ
shows: なんてメッセージ、知らない。
直す
Ctrl+s
Command+s でAcceptするのを忘れずに それから実行。ProceedでもRestartでも。
便利な技
メソッドが誰から呼ばれているか Sender
右クリックメニューから あるいは
Ctrl + n
Command +n Control+F11 Squeak,Pharo VisualWorks
便利な技2
メソッドの実装を確認 Sender
右クリックメニューから あるいは
Ctrl + m
Command + m
Squeak,Pharo VisualWorks Control+F12
便利な技3
コード補完
Squeak , Pharo
Ctrl + q
Command + q VisualWorks
途中まで打ってTab 途中まで打ってTab
または
便利な技4
インタラプト
Squeak , Pharo
Ctrl + .
Command + .
ピリオド
Ctrl + y
VisualWorks
暴走したときなど、すかさず止めて下さい(^_^;)
よくあるミス
•
文末のピリオド•
カッコがそろっていない•
スペルミスデバッガ
誰でも最初はビックリする そのうち慣れてくる
デバッガでコードを書くようになる
デバッガ内開発実例 !
PharoCastsより
http://www.pharocasts.com/2010/08/see-how-to-get-data-from-url-parse-xml.html
http://vimeo.com/14163293#
話せなかったこと
•
環境のダウンロードから動かすまで (実習でどうぞ(^_^;))•
インスタンス、クラス、(メタクラス)•
変数の種類とスコープ•
命名規則•
ライブラリ(特にコレクションクラス)話せなかったこと
•
チェンジファイルからの復活•
ユニットテスト•
ファイルアウト、レポジトリ•
追加パッケージ•
Morphic, グラフィック参考資料
ネットとか、本とか ……
書籍は実物が手元にあるのは
持ってきました
参考資料
自由自在 Squeak プログラミング
Smalltalk イディオム
http://aokilab.kyoto-su.ac.jp/documents/
SmalltalkIdioms/index-j.html
青木淳先生の入門書。入手困難 ウェブで読めます
梅澤さんのわかりやすい入門書。入手困難 PDF版が公開中
http://swikis.ddo.jp/squeak/13
参考資料
Smalltalkで学ぶ
オブジェクト指向プログラミングの本質 青木淳,浅岡浩子,澤本依里 日経BP(2008)
サクサク Smalltalk
サイモン・ルイス著 笠原宏監訳 電機大出版局(1996)
コンパクトにまとまった入門書。入手困難。
青木淳先生の入門書。入手可能
http://stephane.ducasse.free.fr/FreeBooks/Art/
artAdded174186187Final.pdf 原著PDF
参考資料
Squeak入門
―過去から来た未来のプログラミング環境
Mark J Guzdial編集, 軋音組翻訳 エスアイビーアクセス(2003)
Squeakプログラミング入門
―オブジェクトランドへの招待 読み物風で面白い試みの入門書。
かろうじて入手できそう。
Squeakの入門書。入手困難。
Gene Wrensch著, 阿部和広監訳 エスアイビーアクセス(2003)
参考資料
ウィンストンのSMALLTALK
Patrick Henry Winston著 飯塚富雄訳 アジソン・ウェスレイ(1999)
やりたいことがどうすれば実現できるか という視点でまとまっている。入手困難
参考資料
今日から始める Smalltalk
早わかり Smalltalk
梅澤さんの2008年Ruby勉強会資料
吉田さんの第24回Smalltalk勉強会資料。以下のリンクから
https://sites.google.com/a/smalltalk-users.jp/home/
Home/gao-zhi/dai24kaismalltalkbenkyoukai/shiryou
ftp://swikis.ddo.jp/SqueakDevJa/events/
RubyStudyTokyo28/SmalltalkTutorial.pdf
参考資料
VisualWorks チュートリアル日本語版
http://smalltalk.cincom.jp/main/developer-community/
tutorials/
基礎からしっかり勉強できる
Happy Squeaking!! ーオブジェクト指向再入門ー
Squeakを使ったチュートリアル。全5回
http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak/
squeak.html
ど素人のためのど素人による Squeak 入門
かゆいところに手の届く情報や豊富なリンク
参考資料
http://squeak.qp.land.to/wiki/index.php?%E3%81%A9%E7%B4%A0%E4%BA%BA%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE
%E3%81%A9%E7%B4%A0%E4%BA%BA%E3%81%AB%E3%82%88%E3%82%8BSqueak%E5%85%A5%E9%96%80
Squeak 逆引きレシピ
やりたいことから操作をみつけられる
キーボードショートカットもすぐに探せてとても便利
http://tmaeda.s45.xrea.com/hiki/?%28Smalltalk%29Tips
参考資料
Smalltalk の t は小文字です
Smalltalk wikipedia
ネット百科事典WikipediaのSmalltalkに関する記述 sumimさんのとても濃いSmalltalk関連情報
http://d.hatena.ne.jp/sumim/
http://ja.wikipedia.org/wiki/Smalltalk
参考資料
Pharo By Example
Pharoでのプログラミング入門 ほぼ翻訳が終了しました
http://pharobyexample.org/
Squeak -Learn Programming with Robots
ロボットオブジェクトにメッセージを送りながら学ぶ テキストのPDFが公開
実習環境のダウンロードも
http://rmod.lille.inria.fr/botsinc/
参考資料
PharoCasts
Smalltalk 4 U
James Robertsonさんの動画。短く簡潔にまとまっている
Pharo関係の動画。見ているだけで勉強になる
http://www.pharocasts.com/
http://www.jarober.com/blog/st4u.ssp
参考資料
Smalltalk
ベストプラクティスパターン
ケント・ベック著, 梅澤真史他翻訳 ピアソン・エデュケーション(2003)
Smalltalkをもっと上達するために
たくさんの小さな部品による協調作業
参考資料
The Design Patterns Smalltalk Companion
Alpert, Brown, Woolf Addison Wesley (1998)
GOFのデザインパターンをSmalltalkで 内容は高度。Smalltalkでの実例が豊富
残念ながら和訳は出てない
Smalltalkの書籍(主に英語)
http://stephane.ducasse.free.fr/FreeBooks.html
参考資料
ブルーブック(Smalltalk-80: Language and its implementation) なども置いてある
http://archive.org/details/byte-magazine-1981-08
BYTE誌 Vol.6 No.8
Smalltalk特集号(1981年8月)
伝説。今でも内容に古さは感じられない
処理系
メジャーなものを紹介
VisualWorks
Cincom社の処理系
Smalltalk-80の流れをくむ ビジネスソフトに強い
超高速
個人利用は無償
http://smalltalk.cincom.jp/main/products/visualworks/
(詳しくはライセンスを参照下さい)
Squeak
フリーの処理系
Smalltalk-80の流れをくむApple Smalltalkから 仮想マシン(VM)もSmalltalkで記述
高速化されたVM(CogVM)でも動作 http://www.squeak.org/
http://sourceforge.jp/projects/squeak-ja/日本語版 本家
Pharo
Squeakから分岐したフリーの処理系
Squeakのライブラリを大がかりに整理
現在活発に開発が行われている
http://www.pharo-project.org/home
@qoo_itukiさんによるPharoたん