それは、熱きスモールトーカーたちの戦い
はい、てなわけでドットインストール巡回してたらSmalltalk講座あったのでそれやっていきます。なんでSmalltalkやるのかというと僕が利用しているSqueakのベースがこの言語だからです。
https://dotinstall.com/lessons/basic_smalltalk
そんなわけで文法確認メモを残しておきます。動作環境はSqueakです。動画通りにやりたいならこっち(Pharo)を使おう。
Pharo - Welcome to Pharo!
動画みててなんかUI似てるなと思ってWiki見たら以下のようなこと書いてあった。
PharoはSqueakのフォークとして作成された。 Pharo consortium(企業向け)とPharo association(一般ユーザー向け)によってサポートされる。
だから、多分Squeakでも動くはず。
コードの記述、実行、結果の表示、デバッグなどの機能が一体化した独自の統合環境によって開発や実行を行うようになっている。
http://e-words.jp/w/Smalltalk.html
あとよくよく調べたらSmalltalk自体が開発環境+実行環境のやつなんですね。へー。
文法確認
というわけで文法を確認していきます。


"コメント" Transcript show: 'Hello'
Transcript show: 'Hello'; cr; show: 'world'
まずは何はともあれ挨拶のやり方。
・変数
|msg| "temporary variable" msg := 'hello'. Transcript show: msg.
変数はこんな感じに使うそうです。んで、ついでなんでおのおのの優先順位は下のようになるとのこと。
[単項メッセージ:例 Date today] > [二項メッセージ:例 2+5] > [キーワードメッセージ:例 Transcript show: 'hello']
・クラスとインスタンス
クラスの確認には[System Browser]を見ればOK。
・使えるメッセージの確認
"数値" 5 "文字列" $a charCode 'String' "配列" #(1 2 3) "ブロック" [5 + 4] value. "9" [:x :y| x * y] value: 10 value: 20. "200"
ブロックがなんなのか知らなかったんですけど無名関数的なやつらしいです。
・条件分岐
score ;= 80. (score>60) ifTrue: ['great'] ifFalse: ['so so']. "great"
・繰り返し処理
i := 1. 10 timesRepeat: [Transcript show: i; cr. i := i+1]. i := 1. [i <=10] while True: [Transcript show: i; cr. i := i+1].
"配列要素の表示" #(1 3 5) do: [:each | Transcript show: each; cr]
といった感じに使えるらしい。ちゃんとSmalltalkの文法を確認してみたんですが制御文こんなにくどくなるんですね……。
おわり