Upload
masashi-umezawa
View
356
Download
5
Embed Size (px)
DESCRIPTION
Cuis Smalltalkの紹介です
Citation preview
Cuis Smalltalkとは?
Squeakから派生したコンパクトなSmalltalk
http://www.jvuletich.org/Cuis/Index.html
https://github.com/Cuis-Smalltalk
機能性よりもシンプルさを重視
500クラス程度
全容を理解できる (かも)
「クイ」と読む ペルーの食用ネズミ
インストール安定版は略
イメージ入手してCog VMで動かせば良い
開発版は以下を実行
Cuis-Smalltalk-Proj以下にProj.imageができ、CogVMもダウンロードされる
Windowsの場合、手作業でVMやImageをコピー
git clone https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
chmod a+x ./Cuis-Smalltalk-Dev/bin/*.sh
./Cuis-Smalltalk-Dev/bin/newImage.sh ./Cuis-Smalltalk-Proj/Proj
Cuisの起動Cog VMに<YourProj>.imageをドロップ Unix系は以下
初回のイメージ保存時にCog VM用フォーマットで保存するか聞かれるが、Yesで良い
./coglinux/squeak YourProj.image &
シンプル版Morphic (1)メソッドの大幅削減
Squeak 4.5: 1632
Pharo 3.0: 1231
インスタンス変数も整理
Morph allSelectors size "=> 502"
'bounds owner submorphs fullBounds color extension'
'owner submorphs location layoutNeeded layoutSpec properties'
シンプル版Morphic (2)悪名高いレイアウト実装の撲滅
従来: extension->otherPropertiesにレイアウトの様々なプロパティ値がアドホックに入る
layoutSpec(LayoutSpecクラス)でレイアウト情報は一元管理 TableLayout, ProportionalLayoutの区別もなし
AlignmentMorphやAlignmentMorphBob1もない
○LayoutMorph, LayoutAdjustmentMorph
パッケージ管理独自のパッケージ管理ツール
PackageInfoは使うが、Monticelloではない
○ St側でバージョン管理は行わない
○変更があったパッケージに印がつくのみ
git, mercurialなどにまかせる方針
<Package名>.pck.st独自のチャンクフォーマット
依存パッケージなどのメタ情報を含められる
末尾はなぜかLF
パッケージのロードファイルリストからinstallPackage
or
Featureを使う
カレントディレクトリや親ディレクトリから<PackageName>.pck.st を探してロード
Feature require: '<PackageName>'.
日本語処理は... WideString, ByteStringもない
各種文字コードのコンバータもない
文字コードはISO 8859-15(Latin 9)でいいよねGitHubにもそれで置いてくれ
=>絶望的
一応 Cuis-Smalltalk-Unicodeプロジェクトの存在 https://github.com/KenDickey/Cuis-Smalltalk-Unicode
String class>>fromUtf8:と String>>asUtf8 の存在
外部UTF8文字列とのやりとりはできる
代表的アプリStyledTextEditor
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-StyledTextEditor
リッチテキストのエディタ
RTF文書からのコピペもサポート(Macのみ)
ちょっとデモ
Cuisのプロジェクト Cuis-Smalltalk-<ProjectName>でGitHubに置く決まり
https://github.com/search?q=cuis-smalltalk
で、意外なほど見つかる
AIDA
RegEx
Zinc
SandstoneDBなど
移植に挑戦 作者自らFileMan, MessagePack-St, StOMPを移植してみた
https://github.com/mumez/Cuis-Smalltalk-FileMan
https://github.com/mumez/Cuis-Smalltalk-MessagePack
https://github.com/mumez/Cuis-Smalltalk-StOMP
この程度のものならなんとかなる
当然ながらマルチバイトがからむ部分は削除
ちょっとデモ
まとめ
Cuisは軽量でシンプルなSmalltalkの処理系
Smalltalkのコアを知るには良い
Morphicのレイアウトで心がすさんだとき
ConfigurationOfXXXを書くのが嫌になったとき
サーバ用途、モバイル、組み込みの方向に展開するとおもしろいかも