今年は本当にプログラミング言語に関してはいい年でした.
プログラミング言語とはこれほど楽しいものだとは.
きっかけはやはりSmalltalkですが,そこから広がった世界はすさまじいものです.
オープンソースカンファレンスもかなり刺激になりました.
やはり名古屋から外へ出て,いろいろなものを見ることはいいことと痛感しました.
昨日から自宅を離れて,休養をしています.
これからのことを考えてみました.
大学院にいくことは決まりましたが,来年の目標をしっかりと考えたいと思います.
だけど一つ思ったことはやはりSmalltalkによって,変えられたこの考え.
来年はなにか一つでもSmalltalkに貢献したいと思います.
今年の残りの時間はいろいろと来年どうするか考える時間にしたいと思います.
とりあえず体をやすめながら・・・.
では,みなさんよいお年を.
来年はいっぱいプログラミングメモを書こう.
2007年12月15日土曜日
Squeakのcopyを学ぶ
今日もSqueakについて勉強です.(やっと趣旨らしくなってきた)
Squeakのcopyについてです.
Object>>copy
^self shallowCopy postCopy
まずはshallowCopyについて勉強していました.
x := {{'a'}}.
y := x shallowCopy.
x == y. "false"
x at:1 put:'b'.
x #('b')
y #(#('a'))
x := {{'a'}}.
y := x shallowCopy.
x == y. "false"
(x at:1 )at:1 put:'b'.
x #(#('b'))
y #(#('b'))
なるほどshallowCopyはその意味通り浅いcopyみたいですね.
deepCopyがあるので,そちらを試すと完全コピーになるようです.
ただこれはお互いに参照していたら,大変なことになります.
なのでcopyはpostCopyをオーバーライドすることで振る舞いを変更してcopyをきちんと指定するみたいです.
copyは気をつけないといけませんね.(現実世界に無いことをやっているのだから,当然ですね).
きっと僕はdeepCopyを何かと使いたくなりそうな・・・.
VisualWorksを少しながめていたらdeepCopyというmethodはなかった.正しいかもしれませんね.
Squeakのcopyについてです.
Object>>copy
^self shallowCopy postCopy
まずはshallowCopyについて勉強していました.
x := {{'a'}}.
y := x shallowCopy.
x == y. "false"
x at:1 put:'b'.
x #('b')
y #(#('a'))
x := {{'a'}}.
y := x shallowCopy.
x == y. "false"
(x at:1 )at:1 put:'b'.
x #(#('b'))
y #(#('b'))
なるほどshallowCopyはその意味通り浅いcopyみたいですね.
deepCopyがあるので,そちらを試すと完全コピーになるようです.
ただこれはお互いに参照していたら,大変なことになります.
なのでcopyはpostCopyをオーバーライドすることで振る舞いを変更してcopyをきちんと指定するみたいです.
copyは気をつけないといけませんね.(現実世界に無いことをやっているのだから,当然ですね).
きっと僕はdeepCopyを何かと使いたくなりそうな・・・.
VisualWorksを少しながめていたらdeepCopyというmethodはなかった.正しいかもしれませんね.
2007年12月8日土曜日
Haskellのzip関数をSqueakで考えてみる
Haskellを勉強したいと思っていますが,卒研がいまいちなのであまり勉強が進んでいません.
面白い関数の一つZip関数.
Squeakでやってみたいと思います.
| x |
x :=#(1 2 3).
x with:#(4 5 6) collect:[:v1 :v2 | Array with:v1 with:v2]. #(#(1 4) #(2 5) #(3 6))
collectの引数のblockを好きなようにすれば,いろいろできそうです.
Squeakって本当にいろいろ書けると関心.
面白い関数の一つZip関数.
Squeakでやってみたいと思います.
| x |
x :=#(1 2 3).
x with:#(4 5 6) collect:[:v1 :v2 | Array with:v1 with:v2]. #(#(1 4) #(2 5) #(3 6))
collectの引数のblockを好きなようにすれば,いろいろできそうです.
Squeakって本当にいろいろ書けると関心.
2007年12月2日日曜日
言語を学ぶのは
最近,プログラミング言語にすごく興味を持っています.
本屋へいくとさまざまな言語の解説書,入門書があります.
そんな中にいくと結局何が勉強したいかわからなくなるので,Webで言語のよさなどと調べてから勉強したいと思っています.
さて最近僕が最近読み始めているBlogでは何か少しもめているようです.
Smalltalk,Objective-C,Javaについて・・・?.
しゃくしゃしてやった。OOPが解ればそれでよかった。今は反省している。 - みねこあ
Java] 元ネタ != 発明CommentsAdd Star - カレーなる辛口Javaな転職日記
僕みたいなど素人が発言するのは本当に失礼だと思いますが,もっと平和的に話せないものなのでしょうか.
なんだか少し怖いですw(ネガティブな正確なものでなんだか自分が怒られているみたいに感じてしまいます.読まなければいいと言われれば,それまでなのですが・・・)
3つとも僕としては人生の間で全て学びたい言語です.
全ての言語に関して言えますが,プログラミング言語を学ぶのは僕みたいな人にはとても大変なことです.
初めてC言語と勉強したときポインタは意味不明でした.(今も結局よくわかっていません.いろいろと個人的な理由はありますが,言い訳になるので,ただの勉強不足と言っておきます)
ポインタもわからない人間は素養がなさそうなことが書かれていることや,Javaが分からない人はプログラマーをやめた方がいいかも発言はちょっと控えていただきたい.
これから目指そうと思うのに,これはかなりの不安を感じます.
言語はあうあわないがないのでしょうか?
人間の言語でもそういうことはあると思います.
仲良く話し合えたら本当にいいですけどね.
それにしてネットのプログラマーと言われる人は本当にいろいろな言語を学ばれているのですね.
いつになったらそうなれるのか.
時よ止まってください.僕に理解する時間をください.
そして,理解するまでしからないでください.
本屋へいくとさまざまな言語の解説書,入門書があります.
そんな中にいくと結局何が勉強したいかわからなくなるので,Webで言語のよさなどと調べてから勉強したいと思っています.
さて最近僕が最近読み始めているBlogでは何か少しもめているようです.
Smalltalk,Objective-C,Javaについて・・・?.
しゃくしゃしてやった。OOPが解ればそれでよかった。今は反省している。 - みねこあ
Java] 元ネタ != 発明CommentsAdd Star - カレーなる辛口Javaな転職日記
僕みたいなど素人が発言するのは本当に失礼だと思いますが,もっと平和的に話せないものなのでしょうか.
なんだか少し怖いですw(ネガティブな正確なものでなんだか自分が怒られているみたいに感じてしまいます.読まなければいいと言われれば,それまでなのですが・・・)
3つとも僕としては人生の間で全て学びたい言語です.
全ての言語に関して言えますが,プログラミング言語を学ぶのは僕みたいな人にはとても大変なことです.
初めてC言語と勉強したときポインタは意味不明でした.(今も結局よくわかっていません.いろいろと個人的な理由はありますが,言い訳になるので,ただの勉強不足と言っておきます)
ポインタもわからない人間は素養がなさそうなことが書かれていることや,Javaが分からない人はプログラマーをやめた方がいいかも発言はちょっと控えていただきたい.
これから目指そうと思うのに,これはかなりの不安を感じます.
言語はあうあわないがないのでしょうか?
人間の言語でもそういうことはあると思います.
仲良く話し合えたら本当にいいですけどね.
それにしてネットのプログラマーと言われる人は本当にいろいろな言語を学ばれているのですね.
いつになったらそうなれるのか.
時よ止まってください.僕に理解する時間をください.
そして,理解するまでしからないでください.
Squeakはやっぱりすごい
BlockClosureができないことを知りちょっとショックでしたが,そんな必要はなさそう?です.
sumimさんのBlogにBlockClosureのことが書かれていました.(本当にsumimさんはすごいですね.読んでいるだけですごくためになります)
それによるとClosureComplierを入れればできるみたい.
Squeak3.9の場合はNewComplierという名前になっています.
やはり僕のなかでSqueakは一番の言語です.
ちょっと一安心.
といっても無いならないで,普通にSqueakに適用して書けばいいんですけどねw
できると思えば,またSqueak自慢ができます.
ClosureCompilerCommentsAdd Star - sumim’s smalltalking-tos
あと,sumimさんの記事によるとVisualWorksは普通にBlockClosureが使えるらしい.
さすがですね.
自宅に帰ってからやってみようと思います.
sumimさんのBlogにBlockClosureのことが書かれていました.(本当にsumimさんはすごいですね.読んでいるだけですごくためになります)
それによるとClosureComplierを入れればできるみたい.
Squeak3.9の場合はNewComplierという名前になっています.
やはり僕のなかでSqueakは一番の言語です.
ちょっと一安心.
といっても無いならないで,普通にSqueakに適用して書けばいいんですけどねw
できると思えば,またSqueak自慢ができます.
ClosureCompilerCommentsAdd Star - sumim’s smalltalking-tos
あと,sumimさんの記事によるとVisualWorksは普通にBlockClosureが使えるらしい.
さすがですね.
自宅に帰ってからやってみようと思います.
2007年12月1日土曜日
決意 Haskellを勉強することにします
BlockClosureがやはり分かっていないのでは?
最近思うのは,いつでも読めるプログラミングのメモを残そうと思ったこのBlogですが,誤った情報ばかりながすものとなっています.
こういう記事がネット全体の質を下げちゃうのでは?と思ってしまいます.(ネガティブ指向)
コンピュータを勉強する学生としていいのか?もっと基礎から丁寧に勉強しないといけませんね.
ということでまずは関数型言語を勉強することにします.
多くのことはできないのでJavaは保留.
関数型の方がこの先に役立つと思いますし,僕にとっては今優先順位が高くなりました.
さてMacPortを使ってghcを簡単に入れようと思ったのですが,エラー発生.
LeopardはX11がよく分からないことになっているので,そのせいではないかと思っています.
[追記] MacPortはあきらめ,Binary Packageで入れました
最近思うのは,いつでも読めるプログラミングのメモを残そうと思ったこのBlogですが,誤った情報ばかりながすものとなっています.
こういう記事がネット全体の質を下げちゃうのでは?と思ってしまいます.(ネガティブ指向)
コンピュータを勉強する学生としていいのか?もっと基礎から丁寧に勉強しないといけませんね.
ということでまずは関数型言語を勉強することにします.
多くのことはできないのでJavaは保留.
関数型の方がこの先に役立つと思いますし,僕にとっては今優先順位が高くなりました.
さてMacPortを使ってghcを簡単に入れようと思ったのですが,エラー発生.
LeopardはX11がよく分からないことになっているので,そのせいではないかと思っています.
[追記] MacPortはあきらめ,Binary Packageで入れました
2007年11月30日金曜日
BlockContext と BlockClosure
先日do~whileについて書きましたが,すみません.BlockContext Classです.
言い訳を言ってしまうと,method finderで検索したときにBlockClosureが見つかったので・・・.
BlockはBlockContext Classです.
さてここで,不思議におもったのはBlockContext と BlockClosureとありますが,これはなんのためにあるのでしょうか.
Closureでないみたいです.
関数型言語をほとんど知らないので,ラムダとClosureをしっかり理解していませんが,Squeakのブロックがそういうものだと思っていましたが,これはどうやら間違い?なのかもしれませんね.
う〜ん,VisualWorksもそうなのかな?
さて心配する前に目の前の卒研を取り組まないと.
参考 : ど素人のためのど素人によるSqueak入門
言い訳を言ってしまうと,method finderで検索したときにBlockClosureが見つかったので・・・.
BlockはBlockContext Classです.
さてここで,不思議におもったのはBlockContext と BlockClosureとありますが,これはなんのためにあるのでしょうか.
Closureでないみたいです.
関数型言語をほとんど知らないので,ラムダとClosureをしっかり理解していませんが,Squeakのブロックがそういうものだと思っていましたが,これはどうやら間違い?なのかもしれませんね.
う〜ん,VisualWorksもそうなのかな?
さて心配する前に目の前の卒研を取り組まないと.
参考 : ど素人のためのど素人によるSqueak入門
2007年11月29日木曜日
Seaside2.8
VisualWorksでSeaside2.8を動かすと速いと思っていました,どうやら2.8そのものが早いようです.
Squeakにも2.8をようやく入れてみました.ブラウザでのHaloがかわいいデザインになっていました.
とりあえず,サイトで変更点をさらっと読んでみる.(英語だから大変w)
The new backtracking system
Backtracking is no longer done by sending #registerObjectForBacktracking: or #registerForBacktracking but by implementing the #states selector. This allowed us to simplify and improve a lot of code. It's also very similar to the existing #children. You can have a look the implementors to see examples.
#registerForBacktracking がなくなり,
WAPresenter>>states でCollectionでbacktrackしたいオブジェクトを返せばいいようです.
children風でいいですね.
2.8はとくに何も入れなくて,日本語も扱えています?
ちょっと強い記事を読んだのですが,
Squeakers' Night in 未来パーティ 2.0 - yojik no life
その中に
P.S. そんなに活用している「継続」ですが、将来廃止される予定です!!
えええ!本当ですか?
かなり困ります.
今のうちに他の継続も探さないといけないのかな・・・.
Squeakにも2.8をようやく入れてみました.ブラウザでのHaloがかわいいデザインになっていました.
とりあえず,サイトで変更点をさらっと読んでみる.(英語だから大変w)
The new backtracking system
Backtracking is no longer done by sending #registerObjectForBacktracking: or #registerForBacktracking but by implementing the #states selector. This allowed us to simplify and improve a lot of code. It's also very similar to the existing #children. You can have a look the implementors to see examples.
#registerForBacktracking がなくなり,
WAPresenter>>states でCollectionでbacktrackしたいオブジェクトを返せばいいようです.
children風でいいですね.
2.8はとくに何も入れなくて,日本語も扱えています?
ちょっと強い記事を読んだのですが,
Squeakers' Night in 未来パーティ 2.0 - yojik no life
その中に
P.S. そんなに活用している「継続」ですが、将来廃止される予定です!!
えええ!本当ですか?
かなり困ります.
今のうちに他の継続も探さないといけないのかな・・・.
2007年11月28日水曜日
Squeakでdo~while文
Javaを勉強しています.
do~while文がありました.
Squeakでdo~whileってあるのかなって思ったので(まぁあると思いますがw),探してみました.
(BlockContext Classでした.すみません)
counter := 0.
[counter := counter + 1.
Transcript cr;show:counter]doWhileTrue:[counter < 10].
1
2
3
4
5
6
7
8
9
10
OKですね.
ついでにBlockClosure>>whileFalse:というのも発見.
面白いですね.
do~while文がありました.
Squeakでdo~whileってあるのかなって思ったので(まぁあると思いますがw),探してみました.
BlockClosureクラスだと予測.
ありましたw
ありましたw
(BlockContext Classでした.すみません)
counter := 0.
[counter := counter + 1.
Transcript cr;show:counter]doWhileTrue:[counter < 10].
1
2
3
4
5
6
7
8
9
10
OKですね.
ついでにBlockClosure>>whileFalse:というのも発見.
面白いですね.
2007年11月25日日曜日
2007年11月24日土曜日
Squeakで入力,出力
あるプログラミング言語の本を読んでいたら,気がついたこと.
入門書の始めに出力と入力があるが,出力はいいとして,入力というのはプログラム初心者にとって本当はかなり高度な話ではないかと思った.
そうではあるものの,Squeakで入力した文字を出力することをやってみた.
|io|
"入力"
io := FillInTheBlank request:''.
"出力"
Transcript cr;show:io.
どっかの言語と比べると非常に簡単だ.
入門書の始めに出力と入力があるが,出力はいいとして,入力というのはプログラム初心者にとって本当はかなり高度な話ではないかと思った.
そうではあるものの,Squeakで入力した文字を出力することをやってみた.
|io|
"入力"
io := FillInTheBlank request:''.
"出力"
Transcript cr;show:io.
どっかの言語と比べると非常に簡単だ.
2007年11月23日金曜日
VisualWorksの謎 [その2] の答え
前回まで書いていた謎について,紹介してあるブログを発見.
名前空間 - VisualWorks
やはり名前空間のようです.
詳しくは紹介したサイトに書いています.
ただ途中から僕のレベルでは途中からちょっと分からなくなりました.
VisualWorksをよく分からないうちに新しいことを学ぶからでしょう.
もうちょっとスキルがついたら読もうと思います.
オブジェクト指向も最初は難しいと思いましたが,今ではSqueakのおかげで普通に使えます.(むしろ他の言語はもう忘れて・・・w)
やっぱりSmalltakは楽しい.
名前空間 - VisualWorks
やはり名前空間のようです.
詳しくは紹介したサイトに書いています.
ただ途中から僕のレベルでは途中からちょっと分からなくなりました.
VisualWorksをよく分からないうちに新しいことを学ぶからでしょう.
もうちょっとスキルがついたら読もうと思います.
オブジェクト指向も最初は難しいと思いましたが,今ではSqueakのおかげで普通に使えます.(むしろ他の言語はもう忘れて・・・w)
やっぱりSmalltakは楽しい.
2007年11月17日土曜日
VisualWorksの謎 [その2]
VisualWorksも使ってみたい!ということでダウンロードしたのはいいのですが,Squeak Smalltalkとはやはりちょっと違う様子.
VisualWorksのクラス定義はCore.Timeは
Smalltalk.Core defineClass: #Time
superclass: #{Core.Magnitude}
indexedType: #none
private: false
instanceVariableNames: 'hours minutes seconds '
classInstanceVariableNames: ''
imports: ''
category: 'Magnitude-General'
となっていた.
Squeak Smalltalkのように
Magnitude subclass: #Time
instanceVariableNames: 'seconds nanos'
classVariableNames: ''
poolDictionaries: 'ChronologyConstants'
category: 'Kernel-Chronology'
ではない.
う〜ん名前空間みたいなのがあるようですね・・・.
プール辞書がない?,privateみたいなものが存在しています(これはJavaのあれなのか?).
Squeakの親戚といっていても,似ているようで似ていないのかな.
おとなしくSqueakだけにしようかな.
VisualWorksのクラス定義はCore.Timeは
Smalltalk.Core defineClass: #Time
superclass: #{Core.Magnitude}
indexedType: #none
private: false
instanceVariableNames: 'hours minutes seconds '
classInstanceVariableNames: ''
imports: ''
category: 'Magnitude-General'
となっていた.
Squeak Smalltalkのように
Magnitude subclass: #Time
instanceVariableNames: 'seconds nanos'
classVariableNames: ''
poolDictionaries: 'ChronologyConstants'
category: 'Kernel-Chronology'
ではない.
う〜ん名前空間みたいなのがあるようですね・・・.
プール辞書がない?,privateみたいなものが存在しています(これはJavaのあれなのか?).
Squeakの親戚といっていても,似ているようで似ていないのかな.
おとなしくSqueakだけにしようかな.
2007年11月16日金曜日
VisualWorks謎
VisualWorksにSeaside
sumim'sさんにVisualWorksについて教えていただいてから(今のSmalltalkは? - 参考),すごくVisualWorksが気になっています.
前回入れたVisualWorksにSeasideを入れても見ました.
Public RepositoryからSeasideWebforKitをloadで完了.
SeasideのSample codeとして含まれているalltest内のlinkを実行.
おお!何か早い.
Seaside2.8ということもあるかもしれませんが,すごくいい反応です.
Squeakでやるのはもちろんですが,こちらもいいですね.
春休みにVisualWorksで何か作ってみるとのいいかもしれません.
前回入れたVisualWorksにSeasideを入れても見ました.
Public RepositoryからSeasideWebforKitをloadで完了.
SeasideのSample codeとして含まれているalltest内のlinkを実行.
おお!何か早い.
Seaside2.8ということもあるかもしれませんが,すごくいい反応です.
Squeakでやるのはもちろんですが,こちらもいいですね.
春休みにVisualWorksで何か作ってみるとのいいかもしれません.
2007年11月15日木曜日
パッケージをネットワークから取得する言語
VisualWorksのPublic Repository,Squeak SmalltalkのSqueakMapを見ていると,本当に僕みたいな人にはありがたいと思います.
RubyもGemsがあって便利ですが,僕にはこちらの方がいいですね.
なんだかんだ言って,僕もやはりGUI世代なんでしょうね・・・.
それにしてもRubyは春以来勉強していないので,ほとんど忘れてしまいました.
やっぱりSqueak Smalltalkを見ているとこちらの方が落ち着くので,結局卒研もそちらなのですが,やはり他の言語も書けないと世の中に通じないのかなって思ってしまいます.
もっとSmalltalkを理解するためにLisp,Haskellかな.
それともやはりJavaかC++をやるべきだろうか.
Pythonというのもいいのですが,やはり僕の今の能力だとたくさんの言語を学べる力がないのでどれかに絞りたいと思っています.
それにしてもプログラミング言語というのは本当に面白いですね.可能であれば全部知りたい.
RubyもGemsがあって便利ですが,僕にはこちらの方がいいですね.
なんだかんだ言って,僕もやはりGUI世代なんでしょうね・・・.
それにしてもRubyは春以来勉強していないので,ほとんど忘れてしまいました.
やっぱりSqueak Smalltalkを見ているとこちらの方が落ち着くので,結局卒研もそちらなのですが,やはり他の言語も書けないと世の中に通じないのかなって思ってしまいます.
もっとSmalltalkを理解するためにLisp,Haskellかな.
それともやはりJavaかC++をやるべきだろうか.
Pythonというのもいいのですが,やはり僕の今の能力だとたくさんの言語を学べる力がないのでどれかに絞りたいと思っています.
それにしてもプログラミング言語というのは本当に面白いですね.可能であれば全部知りたい.
2007年11月12日月曜日
Transcript
先日の丸めを再び調べ始めているのですが(う〜ん,よくわからない・・・),ちょっと本当の親戚VisualWorksを使ってみたのですが,そのとき気がついたのがTranscirptがSqueakと少し違うようです.
Squeakは例えば
Transcript cr;show:1.
で引数にobjectを取れるのですが,
VisualWorksはStringのみみたいです.
Transcript cr;show:1. "error!!"
VisualWorksでSqueakみたいにTranscriptを使うには
Transcript cr;printOn:1.
でよさそうです.
他の方法としてはSpTranscript>>(class)show:でもよさそうです.
SqueakはTranscriptはTranscriptStreamでできているようですが,VisualWorksはTextCollectorでできているみたいです.
ちなみにSqueakのTranscriptStream>>show:のコメントには
"TextCollector compatibility"
と書いてあります.
いつもお世話になっているmethodですが,こうやって見てみると面白いですね.
Squeakの直感的な感じもいいですが,VisualWorksの豊富なClassたちも魅力的ですね.
言語を作る人ってやっぱりすごいなと思います.
さて丸めを調査しないと・・・.
Squeakは例えば
Transcript cr;show:1.
で引数にobjectを取れるのですが,
VisualWorksはStringのみみたいです.
Transcript cr;show:1. "error!!"
VisualWorksでSqueakみたいにTranscriptを使うには
Transcript cr;printOn:1.
でよさそうです.
他の方法としてはSpTranscript>>(class)show:でもよさそうです.
SqueakはTranscriptはTranscriptStreamでできているようですが,VisualWorksはTextCollectorでできているみたいです.
ちなみにSqueakのTranscriptStream>>show:のコメントには
"TextCollector compatibility"
と書いてあります.
いつもお世話になっているmethodですが,こうやって見てみると面白いですね.
Squeakの直感的な感じもいいですが,VisualWorksの豊富なClassたちも魅力的ですね.
言語を作る人ってやっぱりすごいなと思います.
さて丸めを調査しないと・・・.
2007年11月10日土曜日
丸め
大学の友人にSqueakで少数以下2桁まで表示させるにはどうすればいいかと聞かれたので,
1.2450 printShowingDecimalPlaces:2 '1.25'
よしと思っていたのですが・・・
1.2347 printShowingDecimalPlaces:2 '1.22'
なんだこれはと思い.大学で学んだ工業規格だと確かこれだと1.23になるはず,他にないか探索
1.2347 asScaledDecimal:2 1.23s2
ScaledDecimalとして返ってくる,何かよくわからないな.返ってきたものはどうやって扱えばいいのか・・・.
他ので実験
1.2450 printShowingDecimalPlaces:2 '1.25'
1.2350 printShowingDecimalPlaces:2 '1.22'
よくわかりません.
偶数丸めでもなさそう・・・.
1.2350 asScaledDecimal:2 1.23s2
1.2450 asScaledDecimal:2 1.24s2
こちらもそうじゃないみたい.
とりあえず,もう寝ないといけないので(学生は学生なりに忙しいのです)明日にします.
1.2450 printShowingDecimalPlaces:2 '1.25'
よしと思っていたのですが・・・
1.2347 printShowingDecimalPlaces:2 '1.22'
なんだこれはと思い.大学で学んだ工業規格だと確かこれだと1.23になるはず,他にないか探索
1.2347 asScaledDecimal:2 1.23s2
ScaledDecimalとして返ってくる,何かよくわからないな.返ってきたものはどうやって扱えばいいのか・・・.
他ので実験
1.2450 printShowingDecimalPlaces:2 '1.25'
1.2350 printShowingDecimalPlaces:2 '1.22'
よくわかりません.
偶数丸めでもなさそう・・・.
1.2350 asScaledDecimal:2 1.23s2
1.2450 asScaledDecimal:2 1.24s2
こちらもそうじゃないみたい.
とりあえず,もう寝ないといけないので(学生は学生なりに忙しいのです)明日にします.
2007年10月29日月曜日
MacPortでSearch
MacPortをupdateして
bash-3.2# port search squeak
squeak lang/squeak 3.9 Full, portable, Smalltalk-80 system
Squeakでてきた.
UbuntuでもインストールaptでSqueakを見つけられるけどportでもあるなんて,すごい感動.
Squeakって3.9って結構見かけるようになってきたので,なんだかうれしいです.
bash-3.2# port search squeak
squeak lang/squeak 3.9 Full, portable, Smalltalk-80 system
Squeakでてきた.
UbuntuでもインストールaptでSqueakを見つけられるけどportでもあるなんて,すごい感動.
Squeakって3.9って結構見かけるようになってきたので,なんだかうれしいです.
2007年10月27日土曜日
Bag探索 その1
以前書いたMagmaにはMagmaCollectionというのがあり,それはどうやらBagのようなイメージ?を持っていればいいようだが,Bagについてあまりにもしらないので探索をしてみることにした.
Bagはcontentsというインスタンス変数を持っているようだがそれはどうやらDictionaryらしい.
つまりDictionaryを内部で使っているようだ.
Bagの代表的なmethodとしてはadd:,remove:があるが最近それがよくわからなくなっている.
使い方というより,仕組みがよくわからない.
ただ内部的にDictionaryを使っていて,どうやらobjectをkeyとして使っているよう?だ.
う〜ん,メモリのことや,参照?ということがよく分かっていない(だと思う)ためこのあたりがよく分からない.
考えてみたら「参照」ということがよくわからないとCollectionやシンボルも本当に理解できているといえない,ましてはオブジェクト指向そのものがわかっていないのではないか.
Cのポインタとかをもっとしっかり理解するべきかもしれない.
プログラムに対してあまりに初心者で焦ってはいるが,最近は何かもっと言語について知りたいが多くなってきただけいいとしよう.
Bagはcontentsというインスタンス変数を持っているようだがそれはどうやらDictionaryらしい.
つまりDictionaryを内部で使っているようだ.
Bagの代表的なmethodとしてはadd:,remove:があるが最近それがよくわからなくなっている.
使い方というより,仕組みがよくわからない.
ただ内部的にDictionaryを使っていて,どうやらobjectをkeyとして使っているよう?だ.
う〜ん,メモリのことや,参照?ということがよく分かっていない(だと思う)ためこのあたりがよく分からない.
考えてみたら「参照」ということがよくわからないとCollectionやシンボルも本当に理解できているといえない,ましてはオブジェクト指向そのものがわかっていないのではないか.
Cのポインタとかをもっとしっかり理解するべきかもしれない.
プログラムに対してあまりに初心者で焦ってはいるが,最近は何かもっと言語について知りたいが多くなってきただけいいとしよう.
LeopardでSqueak
2007年10月20日土曜日
Smalltalkだけに
Squeakの素晴らしさに感動している自分ですが,やはり他人からの批判的な?意見が多いです・・・.
「触ったこともないのに,よくもそう言えますね・・・」っと言いたくなります.
って愚痴はいいとして・・・.
以前書いたようにSqueakの実行速度に関して聞かれることがあったりするので,自分ではどのような計測ならいいのかわからなかったので,ある先輩(この人はすごいプログラマー)から教えてもらったサイトで調べてみることに.
「Gentoo : Intel Pentium 4 Computer Language Shootout」
速度に関してはやはり厳しいものがあるのかな.
僕としてはSqueakはイメージを形にするものとして考えているので,別に実行速度など別にいいかなと思っています.
sumimさんがレイトレースのプログラムを書いていたので,僕も今度実行してみよう.
レイトレースベンチを Squeak Smalltalk で
最近,ヤジを対抗ために卒研が終わり次第,Squeakについてもっといろいろ勉強しようと思っています.
だがまず卒研がいまいちうまくいっていない.
プログラミングの才能がないのかな・・・.
はぁ〜・・・.
速度とか,言語とかの問題よりまず何より使う人が問題だ(僕のことです).
「触ったこともないのに,よくもそう言えますね・・・」っと言いたくなります.
って愚痴はいいとして・・・.
以前書いたようにSqueakの実行速度に関して聞かれることがあったりするので,自分ではどのような計測ならいいのかわからなかったので,ある先輩(この人はすごいプログラマー)から教えてもらったサイトで調べてみることに.
「Gentoo : Intel Pentium 4 Computer Language Shootout」
速度に関してはやはり厳しいものがあるのかな.
僕としてはSqueakはイメージを形にするものとして考えているので,別に実行速度など別にいいかなと思っています.
sumimさんがレイトレースのプログラムを書いていたので,僕も今度実行してみよう.
レイトレースベンチを Squeak Smalltalk で
最近,ヤジを対抗ために卒研が終わり次第,Squeakについてもっといろいろ勉強しようと思っています.
だがまず卒研がいまいちうまくいっていない.
プログラミングの才能がないのかな・・・.
はぁ〜・・・.
速度とか,言語とかの問題よりまず何より使う人が問題だ(僕のことです).
VisualWorksを入れてみる
卒研やアルバイトに疲れたので,気晴らしを.
少し前にsumimさんのBlogにVisualWorksのインストールを紹介したサイトのリンクがあったので,インストールしてみました.
http://www.sra.co.jp/people/h-asaoka/study/VisualWorksInstall/
浅岡さんのサイトですね(日経ソフトウェアでみたことがあります.最近お金がないので買っていませんが・・・)
ちなみに僕はMacユーザなので,Mac版を入れてみました.
intelMacもきちんと対応されていますね.
GNU Smalltalkよりやっぱり使いやすい.
やっぱりSmalltalkは環境があってこそSmalltalkなんでしょうね.
直系Smalltalkとのことなので,わくわくします.
ところで日本語は入力できるみたいだけど,何かおかしいです.
う〜ん,よくわかりません.
調べるのはまたにしよう.
VisualWorksを入れるときに思ったのですが,Macの場合X11のVMと普通のVMだと実行速度とか変わるのだろうか.
SqueakもいろいろVMがあるようですが,もしかしたらVMの違いで僕のSqueakは激変するのでしょうか.
VMはぜんぜん詳しくないので,困ったものです.
もっといろいろなことを勉強しないと.(言語そのものもそうだけど,Computer全体に関することも)
少し前にsumimさんのBlogにVisualWorksのインストールを紹介したサイトのリンクがあったので,インストールしてみました.
http://www.sra.co.jp/people/h-asaoka/study/VisualWorksInstall/
浅岡さんのサイトですね(日経ソフトウェアでみたことがあります.最近お金がないので買っていませんが・・・)
ちなみに僕はMacユーザなので,Mac版を入れてみました.
intelMacもきちんと対応されていますね.
GNU Smalltalkよりやっぱり使いやすい.
やっぱりSmalltalkは環境があってこそSmalltalkなんでしょうね.
直系Smalltalkとのことなので,わくわくします.
ところで日本語は入力できるみたいだけど,何かおかしいです.
う〜ん,よくわかりません.
調べるのはまたにしよう.
VisualWorksを入れるときに思ったのですが,Macの場合X11のVMと普通のVMだと実行速度とか変わるのだろうか.
SqueakもいろいろVMがあるようですが,もしかしたらVMの違いで僕のSqueakは激変するのでしょうか.
VMはぜんぜん詳しくないので,困ったものです.
もっといろいろなことを勉強しないと.(言語そのものもそうだけど,Computer全体に関することも)
2007年10月18日木曜日
GNU Smalltalk
コマンドラインで使える?Smalltalk,GNU Smalltalkを入れてみました.
インストールはたぶん成功.
gstと入力するだけで起動しますが,readlineが使えないと困るのでrlwrapを使いながら起動.
rlwrap gst
GNU Smalltalk ready
st>
なんとか起動完了.
st> 1 + 2 !
3
!はオブジェクトにメッセージを送るために使うみたい.
st> 1 + 2
st> + 3 !
6
なるほど.
代入を・・・
st> x := 1 !
stdin:1: assignment to undeclared variable x
できない.
ならば,一時変数を宣言して
st> |x |
st> x := 1 !
1
できました.一時変数でなくする方法はないのかなとチュートリアルをちょっとみたら.
st> Smalltalk at: #x put: 0!
これを実行すると使えるみたい.
st> Smalltalk at: #x put: 0!
0
st> x := 1 !
1
st>
よくよく見ているとSmalltalkにxを登録しているってこと?
Workspaceがないから仕方がないのかな?
コマンドラインでSmalltalkが書けたらいいなと思って入れてみましたが,Squeakの環境になれているためかやはり違和感が・・・.
Bloggerは好きですけど,プログラミングメモとしてはちょっと使いづらいのかな?
CSSで囲むように宣言するのもいいけど,う〜ん.
GNU Smalltalk
インストールはたぶん成功.
gstと入力するだけで起動しますが,readlineが使えないと困るのでrlwrapを使いながら起動.
rlwrap gst
GNU Smalltalk ready
st>
なんとか起動完了.
st> 1 + 2 !
3
!はオブジェクトにメッセージを送るために使うみたい.
st> 1 + 2
st> + 3 !
6
なるほど.
代入を・・・
st> x := 1 !
stdin:1: assignment to undeclared variable x
できない.
ならば,一時変数を宣言して
st> |x |
st> x := 1 !
1
できました.一時変数でなくする方法はないのかなとチュートリアルをちょっとみたら.
st> Smalltalk at: #x put: 0!
これを実行すると使えるみたい.
st> Smalltalk at: #x put: 0!
0
st> x := 1 !
1
st>
よくよく見ているとSmalltalkにxを登録しているってこと?
Workspaceがないから仕方がないのかな?
コマンドラインでSmalltalkが書けたらいいなと思って入れてみましたが,Squeakの環境になれているためかやはり違和感が・・・.
Bloggerは好きですけど,プログラミングメモとしてはちょっと使いづらいのかな?
CSSで囲むように宣言するのもいいけど,う〜ん.
GNU Smalltalk
2007年10月14日日曜日
今のSmalltalkは?
Smalltalkは有名なパロアルト研究所でSmalltalk-72,76,80という感じで生まれたのは少しだけ知っていますが,結局今そのSmalltalkは現在どれが正当なる継承者なんでしょうか.
調べる方法がないので,まずはWikipediaでSmalltalkだけでどれだけあるか調べてみることに・・・
* Smalltalk-80
* ObjectWorks
* VisualWorks
* Squeak
* Dolphin Smalltalk
* Smalltalk/V
* Smalltalk Express
* Smalltalk/X
* VisualAge Smalltalk
* Concurrent Smalltalk
* Smalltalk MT
* Distributed Smalltalk
* Little Smalltalk
* GNU Smalltalk
* SmallScript (S#)
* #Smalltalk
* Strongtalk
* PIC/Smalltalk
* Smalltalk/JVM
* Self 4.0 Smalltalk System
* Smalltalk 72 for Squeak
* Ambrai Smalltalk
この中で知っているのはSqueak,Visual Works,Ambrai Smalltalkぐらいでしょうか.
有名なものにGNU Smalltalkがあることは知っていますが,僕はみたことがありません.
Squeakは僕の今必須アイテムで,Visual Worksはときどき読む日経ソフトウェアで見かけます.
Ambrai SmalltalkはMacなSmalltalkとして以前インストールしたのですが,評価版なのでもう使えません.
これをみているとなんだか全てのSmalltalkの関係を分かりやすく図で表して欲しい物です.
これから少しずつ調べて書いていこうと思います.
調べる方法がないので,まずはWikipediaでSmalltalkだけでどれだけあるか調べてみることに・・・
* Smalltalk-80
* ObjectWorks
* VisualWorks
* Squeak
* Dolphin Smalltalk
* Smalltalk/V
* Smalltalk Express
* Smalltalk/X
* VisualAge Smalltalk
* Concurrent Smalltalk
* Smalltalk MT
* Distributed Smalltalk
* Little Smalltalk
* GNU Smalltalk
* SmallScript (S#)
* #Smalltalk
* Strongtalk
* PIC/Smalltalk
* Smalltalk/JVM
* Self 4.0 Smalltalk System
* Smalltalk 72 for Squeak
* Ambrai Smalltalk
この中で知っているのはSqueak,Visual Works,Ambrai Smalltalkぐらいでしょうか.
有名なものにGNU Smalltalkがあることは知っていますが,僕はみたことがありません.
Squeakは僕の今必須アイテムで,Visual Worksはときどき読む日経ソフトウェアで見かけます.
Ambrai SmalltalkはMacなSmalltalkとして以前インストールしたのですが,評価版なのでもう使えません.
これをみているとなんだか全てのSmalltalkの関係を分かりやすく図で表して欲しい物です.
これから少しずつ調べて書いていこうと思います.
全てをSqueak Smalltalkにするには?
Squeakに初めて出会ったとき,これさえあれば全てSqueakで実現できると思いました.
僕がやりたいことは全てSqueakがかなえてくれるだろうと.
大学ではC,Javaを少し学びましたが,お馬鹿な僕には・・・.
今考えるとそのままCとJavaだけだったらとても大学院へいこうとは思わなかったでしょう.
大学院でもSqueakは使っていこうと思いますが,最近ちょっと心配なことが.
実行速度?のことをよく聞かれますが,Squeakは果たして他の言語と比べるとどうなんでしょうか?
遅いとか聞きますが,実際どうなんでしょうね.(僕がたいしたことをやっていない証拠かもw)
僕としてはSqueak Smalltalkから離れたくないので・・・.
う〜ん,僕にとってはどうでもいいのに,周りからいわれると・・・.
仕方がないので,調べてみたいと思います.
さてどうやって調べましょうね.
最後にsumimさんがSqueak Smalltalkと書いているので,僕もまねさせていただきました.
僕がやりたいことは全てSqueakがかなえてくれるだろうと.
大学ではC,Javaを少し学びましたが,お馬鹿な僕には・・・.
今考えるとそのままCとJavaだけだったらとても大学院へいこうとは思わなかったでしょう.
大学院でもSqueakは使っていこうと思いますが,最近ちょっと心配なことが.
実行速度?のことをよく聞かれますが,Squeakは果たして他の言語と比べるとどうなんでしょうか?
遅いとか聞きますが,実際どうなんでしょうね.(僕がたいしたことをやっていない証拠かもw)
僕としてはSqueak Smalltalkから離れたくないので・・・.
う〜ん,僕にとってはどうでもいいのに,周りからいわれると・・・.
仕方がないので,調べてみたいと思います.
さてどうやって調べましょうね.
最後にsumimさんがSqueak Smalltalkと書いているので,僕もまねさせていただきました.
2007年10月13日土曜日
2007年10月6日土曜日
OSC2007 fall 二日目
昨日はすごいいろいろな話ができました.
お昼をとる時間を忘れてしまうぐらい,いろいろ話したり,セミナーを受けました.
利用者側からの話や技術的な話.
ちょっとうれしいのが,Firefoxのシールとかグッズとかも貰えました.(昨日は企業がなので・・)
今日もがんばるぞ.←何をだ?
詳細はまた後ほど.
オープンソース・コミュニティ
http://itpro.nikkeibp.co.jp/article/NEWS/20071005/283949/?ST=oss
お昼をとる時間を忘れてしまうぐらい,いろいろ話したり,セミナーを受けました.
利用者側からの話や技術的な話.
ちょっとうれしいのが,Firefoxのシールとかグッズとかも貰えました.(昨日は企業がなので・・)
今日もがんばるぞ.←何をだ?
詳細はまた後ほど.
オープンソース・コミュニティ
http://itpro.nikkeibp.co.jp/article/NEWS/20071005/283949/?ST=oss
2007年10月5日金曜日
OSC2007 fallへ
ただいま東京へ到着.
今日は仕事ではなく,OSC(オープンソースカンファレンス)2007へ参加するため.
オープンソースのプログラミング言語の最新情報を勉強したいと思います.
また報告はのちほど.
今日は仕事ではなく,OSC(オープンソースカンファレンス)2007へ参加するため.
オープンソースのプログラミング言語の最新情報を勉強したいと思います.
また報告はのちほど.
2007年9月30日日曜日
selfとsuper その2
「superはなぜレシーバーオブジェクトのsuperclassじゃないのか?」
という初めてSqueakを勉強したときに思った疑問は先日再び発生.
なぜsuperは「実行中のメソッドの属するクラスのスーパークラスから始める」なんだろうか?
その理由がSqueak by Example のp.100に書いてありました.
なるほど・・・.
PDFはフリーなので読んでみてください.
Squeak By Example
http://news.squeak.org/2007/09/14/squeak-by-example-now-published/
最近「なぜ?」が増えてきたような.
もっとSqueakが自由自在に使えたらな・・・.
その前にアルゴリズムを勉強しないといけないかも・・・.
という初めてSqueakを勉強したときに思った疑問は先日再び発生.
なぜsuperは「実行中のメソッドの属するクラスのスーパークラスから始める」なんだろうか?
その理由がSqueak by Example のp.100に書いてありました.
なるほど・・・.
PDFはフリーなので読んでみてください.
Squeak By Example
http://news.squeak.org/2007/09/14/squeak-by-example-now-published/
最近「なぜ?」が増えてきたような.
もっとSqueakが自由自在に使えたらな・・・.
その前にアルゴリズムを勉強しないといけないかも・・・.
2007年9月27日木曜日
Squeakでcdr?
関数型言語はぜんぜん書けませんが,最低限の機能からいろいろ作るところは何かかっこいい気もします.(Squeakももちろんかっこいいです)
ふとSqueakで関数型言語で有名なcdrをするにはどうするか.
相変わらずあやしいcodeかもしれません.
#(1 2 3) allButFirst "#(2 3)"
結果的にはこれでよし.
SequenceableCollection>>allButFirst は SequenceableCollection>>copyForm:to:を使っているみたい.
これはcdrと言えるのかな?
もう眠たいので今日はここまでにしようと思います.
sumimさんより指摘があるように,atButFirstではなく正しくはallButFirstです.
ふとSqueakで関数型言語で有名なcdrをするにはどうするか.
相変わらずあやしいcodeかもしれません.
#(1 2 3) atButFirst "#(2 3)"
#(1 2 3) allButFirst "#(2 3)"
結果的にはこれでよし.
SequenceableCollection>>allButFirst は SequenceableCollection>>copyForm:to:を使っているみたい.
これはcdrと言えるのかな?
もう眠たいので今日はここまでにしようと思います.
sumimさんより指摘があるように,atButFirstではなく正しくはallButFirstです.
2007年9月26日水曜日
self と super
selfとsuperを考えると改めてSqueakというのは奥が深いと思います.
普段なんとなく使っていますが,意外に難しい.
とりあえずSqueakのself と superをしっかり理解することに.
superとselfは同じオブジェクト.
なのでsuperもレシーバーオブジェクトを参照しているのですが,selfとの違いはmethod探索ときに「実行中のメソッドの属するクラスのスーパークラスから始める」ようです.
Squeak by Exampleとか自由自在Squeakに載っています.(こういうことを書くのはもしかして著作権違反?)
なんとなくsuperをレシーバーオブジェクトのsuperclassを示すものと勘違いしてしまうので注意しないと・・・.(はじめてのときはそう思っていた)
superの「実行中のメソッドの属するクラスのスーパークラスから始める」という仕様はsuperの使い道がmethodの再利用だからなのでしょうか?
他のOOLはどうだったか調べてみよう.
どうでもいいですが,TwoPTextEditerのLinkを直しました.
TwoPTextEditer0.01.st
普段なんとなく使っていますが,意外に難しい.
とりあえずSqueakのself と superをしっかり理解することに.
superとselfは同じオブジェクト.
なのでsuperもレシーバーオブジェクトを参照しているのですが,selfとの違いはmethod探索ときに「実行中のメソッドの属するクラスのスーパークラスから始める」ようです.
Squeak by Exampleとか自由自在Squeakに載っています.(こういうことを書くのはもしかして著作権違反?)
なんとなくsuperをレシーバーオブジェクトのsuperclassを示すものと勘違いしてしまうので注意しないと・・・.(はじめてのときはそう思っていた)
superの「実行中のメソッドの属するクラスのスーパークラスから始める」という仕様はsuperの使い道がmethodの再利用だからなのでしょうか?
他のOOLはどうだったか調べてみよう.
どうでもいいですが,TwoPTextEditerのLinkを直しました.
TwoPTextEditer0.01.st
2007年9月21日金曜日
Magma
SqueakでDBを扱いたい!ということで,Magmaというオブジェクトデーターベースを使ってみました.
日本語も何もパッチを当てずに保存できるのでびっくり.
僕のやりたいことができそうです.
参考にしたのはSqueak Wikiで
Magma
http://wiki.squeak.org/squeak/2665
です.
英語なので,ちょっと抵抗があったのですが扱い方も簡単.
(もし間違った説明をしていたら指摘してください)
mypath := FileDirectory default fullName. "保存先のディレクトリパス"
"リポジトリを作成"
MagmaRepositoryController
create: mypath
root: Dictionary new.
"ローカルでセッション開始"
mySession := MagmaSession openLocal:mypath.
mySession connectAs: 'ringo'.
"コミット"
mySession commit:
[ mySession root
at: 'persons'
put: (OrderedCollection with: ('りんごです')) ].
"データの取り出し"
mySession root at:'persons'.
"セッションを閉じ,リポジトリも閉じる"
mySession disconnect; closeRepository.
これで僕の大学での仕事が楽になりそうです.
MagmaCollectionというのがあるみたいです.
詳しくはまた後日.
日本語も何もパッチを当てずに保存できるのでびっくり.
僕のやりたいことができそうです.
参考にしたのはSqueak Wikiで
Magma
http://wiki.squeak.org/squeak/2665
です.
英語なので,ちょっと抵抗があったのですが扱い方も簡単.
(もし間違った説明をしていたら指摘してください)
mypath := FileDirectory default fullName. "保存先のディレクトリパス"
"リポジトリを作成"
MagmaRepositoryController
create: mypath
root: Dictionary new.
"ローカルでセッション開始"
mySession := MagmaSession openLocal:mypath.
mySession connectAs: 'ringo'.
"コミット"
mySession commit:
[ mySession root
at: 'persons'
put: (OrderedCollection with: ('りんごです')) ].
"データの取り出し"
mySession root at:'persons'.
"セッションを閉じ,リポジトリも閉じる"
mySession disconnect; closeRepository.
これで僕の大学での仕事が楽になりそうです.
ただここで思ったのはrootでDictionaryとして作ったこと.
Dictionaryは順序がないので・・・.
こんなRubyみたいに順序付きのDictionary(OrederedHash)があれば,いいのにと思います.
こんど作ることができないかチャレンジしたいと思います.
Dictionaryは順序がないので・・・.
こんなRubyみたいに順序付きのDictionary(OrederedHash)があれば,いいのにと思います.
こんど作ることができないかチャレンジしたいと思います.
MagmaCollectionというのがあるみたいです.
詳しくはまた後日.
SquekaとRuby [Array編]
SqueakとRubyは僕は親戚同士としていつも扱っています.(勝手にそうするな!と思う方には申し訳ありません)
時と場合によってその二つを最近使い分けないといけない状況があったりするので,Rubyを復習しているのですが,これがなかなか忘れていて困っています.
今日はArrayのメモ
Squeak
x := #(1 2 3).
x at:1. "1"
Ruby
x:=[1,2,3]
x.at(0)
Rubyは0から始まるw
時と場合によってその二つを最近使い分けないといけない状況があったりするので,Rubyを復習しているのですが,これがなかなか忘れていて困っています.
今日はArrayのメモ
Squeak
x := #(1 2 3).
x at:1. "1"
Ruby
x:=[1,2,3]
x.at(0)
Rubyは0から始まるw
Squeakはやっぱりすごいです
先日大学の他の研究室でSqueakについて話をしました.
その研究室の先生はSqueakがだいたいどういうものかは知っていましたが,実際に実演しながら話をしたら,かなりいい反応でした.
そこで思ったのですがSqueakは
Squeak => 教育用プログラミング環境らしい => Etoys
という感じでやはりEtoysというイメージが多いみたいです.
確かにSqueakにEtoysはあり,売り物にしていますがそれだけではないのに・・・.
大学でSqueakを話していると一番反応がいいのはCodeがすべてみれること.
そして気にくわなければ変更可能なこと.
Squeakはものすごい勢いで更新されていること.
大学という環境から考えるとEtoysよりそっちの方がやはりいいかもしれませんね.
「入門用Blogでも作ったら?」とか言われましたけど・・・.
う〜ん,どうしよう・・・.
その研究室の先生はSqueakがだいたいどういうものかは知っていましたが,実際に実演しながら話をしたら,かなりいい反応でした.
そこで思ったのですがSqueakは
Squeak => 教育用プログラミング環境らしい => Etoys
という感じでやはりEtoysというイメージが多いみたいです.
確かにSqueakにEtoysはあり,売り物にしていますがそれだけではないのに・・・.
大学でSqueakを話していると一番反応がいいのはCodeがすべてみれること.
そして気にくわなければ変更可能なこと.
Squeakはものすごい勢いで更新されていること.
大学という環境から考えるとEtoysよりそっちの方がやはりいいかもしれませんね.
「入門用Blogでも作ったら?」とか言われましたけど・・・.
う〜ん,どうしよう・・・.
2007年9月20日木曜日
thisContext
Squeakには6つの疑似変数があります.
self super true false nil thisContext
問題はthisContext .
未だに僕には使い方が分かりません.
このあたりがまだまだ未熟な証拠かもしれません.
self super true false nil thisContext
問題はthisContext .
未だに僕には使い方が分かりません.
このあたりがまだまだ未熟な証拠かもしれません.
2007年9月18日火曜日
Squeakと正規表現 その2
先日同様Squeakでの正規表現パッケージを探索してRegular expressionというのを発見.
Squeak3.7用?とみたいですが,なんとか3.9でも動きました.(これは大丈夫なのか?)
http://wiki.squeak.org/squeak/558
なんだか不安です.
このまま使い続けても大丈夫なのか.
Min/Max Quantifierとかが使えるのでいいですね.
個人的にはVB-RegexにMin/Max Quantifierが使えたら最高なのですが・・・.(本当に使えないのか?)
Squeak3.9での正規表現についてご存知なかたがいましたら教えてください.
Rubyでやるか,SmaCC登場なのかな.
Squeak3.7用?とみたいですが,なんとか3.9でも動きました.(これは大丈夫なのか?)
http://wiki.squeak.org/squeak/558
なんだか不安です.
このまま使い続けても大丈夫なのか.
Min/Max Quantifierとかが使えるのでいいですね.
個人的にはVB-RegexにMin/Max Quantifierが使えたら最高なのですが・・・.(本当に使えないのか?)
Squeak3.9での正規表現についてご存知なかたがいましたら教えてください.
Rubyでやるか,SmaCC登場なのかな.
2007年9月15日土曜日
オープンソースカンファレンスとは? その後
オープンソースカンファレンスについていろいろ悩みましたが,いろいろな人の情報によりそれなりに行くことを決意しました.
いろいろと言い話が聞けるといいなと思います.
ちょっと心配なのは話についていけるか,何事もチャレンジということで.
Squeak,Ruby,PHP,MySQL,Xoops,Ploneを中心に情報が得られたらいいなと思っています.
まずは東京へいく,資金を.
大学生最後の年を有意義に過ごせそうです.
(大学院にいってもSqueakはもちろん使いますけどw)
オープンソースカンファレンスとは?
いろいろと言い話が聞けるといいなと思います.
ちょっと心配なのは話についていけるか,何事もチャレンジということで.
Squeak,Ruby,PHP,MySQL,Xoops,Ploneを中心に情報が得られたらいいなと思っています.
まずは東京へいく,資金を.
大学生最後の年を有意義に過ごせそうです.
(大学院にいってもSqueakはもちろん使いますけどw)
オープンソースカンファレンスとは?
2007年9月14日金曜日
Squeakの本
「Squeak By Example」というSqueak入門書が公開されました.
PDFだと無料?のようです.
特にこの本はSmalltalkを使ってのプログラミングについて書かれています.
Squeakの解説書はいろいろありますが,この本も翻訳されたらいいなと思います.
PDFもいいですが,やはり解説書は本の方がいいのでさっそく注文してみました.
はやく届くといいな.
Squeak By Example
http://news.squeak.org/2007/09/14/squeak-by-example-now-published/
PDFだと無料?のようです.
特にこの本はSmalltalkを使ってのプログラミングについて書かれています.
Squeakの解説書はいろいろありますが,この本も翻訳されたらいいなと思います.
PDFもいいですが,やはり解説書は本の方がいいのでさっそく注文してみました.
はやく届くといいな.
Squeak By Example
http://news.squeak.org/2007/09/14/squeak-by-example-now-published/
2007年9月7日金曜日
年度を計算するには?
年度を計算するのが卒研で必要になったので,プログラムできない学生になり考えてみました.
以下のプログラムは一応日本の年度の定義に対応するものです.
言語はSqueakです.
check1 :=DateAndTime now.
check2 :=(check1 asYear) + (Year year:1).
check3 :=DateAndTime year:(check2 year) month:4 day:1.
check4 := check2 daysInYear.
(check3 - check1)days asInteger <= check4
ifTrue:[^check1 year]
ifFalse:[^ ((check1 asYear) - (Duration days:365))year. ].
こうやって自分が書いたプログラムをみると自分ってプログラムできない人だな・・・って思い寂しい気持ちになります.
もっとすっきり書けないものなのか.
アメリカだと年度の定義はどうなんだろう・・・.
アメリカの学校は9月はじまりだけど,それが年度と直結していない様子.
年度って謎ですね.
追記:匿名さんからのコメントでワンライナーなcodeを教えていただきました.
がんばって勉強しなくては.
以下のプログラムは一応日本の年度の定義に対応するものです.
言語はSqueakです.
check1 :=DateAndTime now.
check2 :=(check1 asYear) + (Year year:1).
check3 :=DateAndTime year:(check2 year) month:4 day:1.
check4 := check2 daysInYear.
(check3 - check1)days asInteger <= check4
ifTrue:[^check1 year]
ifFalse:[^ ((check1 asYear) - (Duration days:365))year. ].
こうやって自分が書いたプログラムをみると自分ってプログラムできない人だな・・・って思い寂しい気持ちになります.
もっとすっきり書けないものなのか.
アメリカだと年度の定義はどうなんだろう・・・.
アメリカの学校は9月はじまりだけど,それが年度と直結していない様子.
年度って謎ですね.
追記:匿名さんからのコメントでワンライナーなcodeを教えていただきました.
がんばって勉強しなくては.
2007年9月4日火曜日
オープンソースカンファレンスとは?
オープンソースカンファレンスというイベントを昨年の秋に知って,その当時は「そんなのがあるんだ〜」という感じで過ぎていたのですが,今年はそれにいってみたい.
でもよくわからない.
何がわからないかというと,参加の仕方.
学生でも参加できるものなのか?
セミナーはどうやったら受けられるのか?
何か参加資格はあるのだろうか?
Webサイトを見てもよくわからない.
わかっているのは開催日と場所だけ.
困ったものです・・・.
とりあえず,もし参加できるならSqueak,Ruby,Xoopsのセミナーを受けてみたい.
まずは東京へ行く資金をためねば・・・.
というかいまいちまだカンファレンス自体もつかめていないかもしれない・・・.
身近にそういうことに詳しい人がいないので困りました.
http://www.ospn.jp/osc2007-fall/
でもよくわからない.
何がわからないかというと,参加の仕方.
学生でも参加できるものなのか?
セミナーはどうやったら受けられるのか?
何か参加資格はあるのだろうか?
Webサイトを見てもよくわからない.
わかっているのは開催日と場所だけ.
困ったものです・・・.
とりあえず,もし参加できるならSqueak,Ruby,Xoopsのセミナーを受けてみたい.
まずは東京へ行く資金をためねば・・・.
というかいまいちまだカンファレンス自体もつかめていないかもしれない・・・.
身近にそういうことに詳しい人がいないので困りました.
http://www.ospn.jp/osc2007-fall/
2007年8月29日水曜日
Smalltalkを死なせない2
Smalltalkを死なせないためにはSmalltalkについてもっと知らないといけないことを今気がついた自分・・・.
そもそもSmalltalk自体は僕が生まれる前に誕生した言語であり,最終形態?のSmalltalk-80も僕はまったく知らない・・・.
知らないことばかりだ.
そもそもSqueakに出会ったのは大学3年生の春.(現在4年)
Smalltalkについて知らないことばかり・・・.
Smalltalkの資料は大学にもほとんどないし,ほぼ英語ばかり.
英語がわからない僕にはちょっとつらい.
まぁ多少の苦労は仕方ないとして,妙にいろいろ調べたくなりました.
そういえば,ここはプログラミングメモなのに普通に記事を書いている・・・.
まぁいいか.
そもそもSmalltalk自体は僕が生まれる前に誕生した言語であり,最終形態?のSmalltalk-80も僕はまったく知らない・・・.
知らないことばかりだ.
そもそもSqueakに出会ったのは大学3年生の春.(現在4年)
Smalltalkについて知らないことばかり・・・.
Smalltalkの資料は大学にもほとんどないし,ほぼ英語ばかり.
英語がわからない僕にはちょっとつらい.
まぁ多少の苦労は仕方ないとして,妙にいろいろ調べたくなりました.
そういえば,ここはプログラミングメモなのに普通に記事を書いている・・・.
まぁいいか.
Smalltalkは死なせない
最近sumimさんのBlogを読んで,Smalltalkを死なせるような人がいることを知った.
これは僕の意見ですが,言語(プログラミング言語だけではなく人間の言語)はそれを使う人(話す人)がいなくなったら死んだといえると思う.
ただ僕は死んだという表現は好きではない.
死んだという表現使うより「古き言葉」として扱えばいいと思う.
とにかく悲しいものです.
というかSqueakがあるのでSmalltakは死んでいないのでは?と思える.(SqueakはSmalltalkであってSmalltalkではないと思っている方がいましたら失礼.未熟な学生の意見として聞き流してください)
ちなみにSqueakは大学院生になっても使いますし,今後も使う予定.
まぁ僕が60歳までいきるとして,僕の意見によるとあと39年は「死んだ言語」といえないですね.
人は自分の経験とか意見と異なるものを嫌う性質があるようなので,そういう性質が死んだとかいう発言になるんでしょうね.プログラミング言語も宗教に近いものなのかな?
最後は無視していただいて,Smalltalkはまだ死んでいないという結論に僕はしたいです.
[Smalltalk] この教授には Smalltalk を本当に理解することなど永久に不可能かも…(追記あり)
[Smalltalk] なぜかくも人は Smalltalk を殺したがるのか?
[Smalltalk] Smalltalk は死につつある…とかってバカじゃね?CommentsAdd Star
これは僕の意見ですが,言語(プログラミング言語だけではなく人間の言語)はそれを使う人(話す人)がいなくなったら死んだといえると思う.
ただ僕は死んだという表現は好きではない.
死んだという表現使うより「古き言葉」として扱えばいいと思う.
とにかく悲しいものです.
というかSqueakがあるのでSmalltakは死んでいないのでは?と思える.(SqueakはSmalltalkであってSmalltalkではないと思っている方がいましたら失礼.未熟な学生の意見として聞き流してください)
ちなみにSqueakは大学院生になっても使いますし,今後も使う予定.
まぁ僕が60歳までいきるとして,僕の意見によるとあと39年は「死んだ言語」といえないですね.
人は自分の経験とか意見と異なるものを嫌う性質があるようなので,そういう性質が死んだとかいう発言になるんでしょうね.プログラミング言語も宗教に近いものなのかな?
最後は無視していただいて,Smalltalkはまだ死んでいないという結論に僕はしたいです.
[Smalltalk] この教授には Smalltalk を本当に理解することなど永久に不可能かも…(追記あり)
[Smalltalk] なぜかくも人は Smalltalk を殺したがるのか?
[Smalltalk] Smalltalk は死につつある…とかってバカじゃね?CommentsAdd Star
2007年8月21日火曜日
英語がわからないので・・・
プログラミング言語を勉強をしていると本当に英語がわからない自分にいらだちを感じます.
英語を勉強しないと思ってはいるができていない.
たぶんそれは自分の意思が弱いこともあるのだろうと思う.
どうにかしないと・・・.
英語を勉強しないと思ってはいるができていない.
たぶんそれは自分の意思が弱いこともあるのだろうと思う.
どうにかしないと・・・.
2007年8月11日土曜日
OrderedCollectionのvalueからkeyを調べる
Squeakを使っていたら,OrderedCollectionのvalueからkeyを調べることがちょっと必要と思いました.
必要なんですか?とか言われそうですが,ちょっと欲しいと思ったので考えてみました.
y :=OrderedCollection new.
y add:#v;add:#a;yourself.
y keysAndValuesDo:[:key :value | (value = #v) ifTrue:[^key]].
結果
-->1
一応それっぽいですが,本当にいいのか心配.
Collectionのような入れ物からvalueが何番目に入っているのか調べたいだけなので,もっと他に言い方法がありそう・・・.
こんなのも考えてみましたが,こちらは無駄そう・・・.
y :=OrderedCollection new.
y add:#v;add:#a;yourself.
((y readStream) upTo:#v;yourself)position
つくづくプログラミング言語の活用方法について書いている方がすごく思えます.
追記:sumimさんよりもっと言い方法を教えていただきました.(コメント参照)
必要なんですか?とか言われそうですが,ちょっと欲しいと思ったので考えてみました.
y :=OrderedCollection new.
y add:#v;add:#a;yourself.
y keysAndValuesDo:[:key :value | (value = #v) ifTrue:[^key]].
結果
-->1
一応それっぽいですが,本当にいいのか心配.
Collectionのような入れ物からvalueが何番目に入っているのか調べたいだけなので,もっと他に言い方法がありそう・・・.
こんなのも考えてみましたが,こちらは無駄そう・・・.
y :=OrderedCollection new.
y add:#v;add:#a;yourself.
((y readStream) upTo:#v;yourself)position
つくづくプログラミング言語の活用方法について書いている方がすごく思えます.
追記:sumimさんよりもっと言い方法を教えていただきました.(コメント参照)
2007年6月15日金曜日
Amabrai Smalltalk(001- window)
前回のF-Scriptのコードからついで,Amabrai Smalltalkのwindowも実行してみた.
Amabrai Smalltalk
window := MacWindowFrame new position: 100@100;
extent:300@300.
window open.
こちらの方がSqueak(Smalltalk)で好きですが,F-Scriptの方が開発環境はSqueak(Smalltalk)に近いような気がします.
やっぱり僕はSqueakが一番好きです.
Amabrai Smalltalk
window := MacWindowFrame new position: 100@100;
extent:300@300.
window open.
こちらの方がSqueak(Smalltalk)で好きですが,F-Scriptの方が開発環境はSqueak(Smalltalk)に近いような気がします.
やっぱり僕はSqueakが一番好きです.
F-Script and Squeak (001 - window)
F-Script とSqueakのコードを比較してみたいと思ったので,Windowを開くだけの単純のProgramを書いてみました.
F-Script
> window := NSWindow alloc initWithContentRect:(100<>100 extent: 300<>300) styleMask:NSTitledWindowMask+NSClosableWindowMask backing:NSBackingStoreBuffered defer:true
> window orderFront:nil
Squeak
window := SystemWindow new bounds:(100@100 extent:300@300).
window openAsIs
参考 マイコミジャーネル
う〜ん,どちらも似ていますね.(当たり前かな?)
SqueakでMorphを開くのはいつもopenInWorldなのですが,今回は大きさを最初に指定して,開くというCodeが書きたかったので,openAsIsを使ってみました.
この調子でがんばれば,Objective-Cなしで,MacのApplicationが書けるのかな?
ただ少しObjective-Cのノウハウがあった方がよさそうですね.
F-Script
> window := NSWindow alloc initWithContentRect:(100<>100 extent: 300<>300) styleMask:NSTitledWindowMask+NSClosableWindowMask backing:NSBackingStoreBuffered defer:true
> window orderFront:nil
Squeak
window := SystemWindow new bounds:(100@100 extent:300@300).
window openAsIs
参考 マイコミジャーネル
う〜ん,どちらも似ていますね.(当たり前かな?)
SqueakでMorphを開くのはいつもopenInWorldなのですが,今回は大きさを最初に指定して,開くというCodeが書きたかったので,openAsIsを使ってみました.
この調子でがんばれば,Objective-Cなしで,MacのApplicationが書けるのかな?
ただ少しObjective-Cのノウハウがあった方がよさそうですね.
2007年6月13日水曜日
TwoPTextEditer0.01
SqueakでMorphを使ったツールを作成.
といってもすごく簡単なツール.
Workspaceが二段になっているものです.
使用方法はまた書きます.
よかったら使ってください.
TwoPTextEditer0.01.st
対応Version Squeak 3.8,3.9
このツールを使って何らかの問題が発生しても,責任はとれませんのでご了承ください.
といってもすごく簡単なツール.
Workspaceが二段になっているものです.
使用方法はまた書きます.
よかったら使ってください.
TwoPTextEditer0.01.st
対応Version Squeak 3.8,3.9
このツールを使って何らかの問題が発生しても,責任はとれませんのでご了承ください.
2007年6月4日月曜日
reverse
最近関数型をほんの少し勉強して気になったこと.
reverse.
リストを反転させるものです.
SqueakやRuby,Pythonでもおなじみの機能です.
ところでSqueakではreverseはどのように動いているのでしょう.
ちょっと調べてみました.
reverseはSequenceableCollection>>reverseが元のよう.そのなかではself reversedをしているのでそちらを参考.
SequenceableCollection>>reversed
"Answer a copy of the receiver with element order reversed."
"Example: 'frog' reversed"
| n result src |
n := self size.
result := self species new: n.
src := n + 1.
1 to: n do: [:i | result at: i put: (self at: (src _ src - 1))].
^ result
なるほど・・・.
Squeakってプログラミングの勉強にもなりそうですね.
へっぽこ学生(自分のこと)にはかなりいい教材です.
reverse.
リストを反転させるものです.
SqueakやRuby,Pythonでもおなじみの機能です.
ところでSqueakではreverseはどのように動いているのでしょう.
ちょっと調べてみました.
reverseはSequenceableCollection>>reverseが元のよう.そのなかではself reversedをしているのでそちらを参考.
SequenceableCollection>>reversed
"Answer a copy of the receiver with element order reversed."
"Example: 'frog' reversed"
| n result src |
n := self size.
result := self species new: n.
src := n + 1.
1 to: n do: [:i | result at: i put: (self at: (src _ src - 1))].
^ result
なるほど・・・.
Squeakってプログラミングの勉強にもなりそうですね.
へっぽこ学生(自分のこと)にはかなりいい教材です.
2007年5月18日金曜日
F-Script
研究室の先生に教えていただいたものを紹介.
F-ScriptというSmalltalkをベースにしたものらしく,Objective-Cとも関係があるらしい.
前回Ambrai Smalltalkについて紹介しましたが,こちらの方が実行が早そうでかなり興味があります.
どちらもCocoaのアプリケーション開発ができるようなので,ウォッチしているといいのではないでしょうか.
F-Script
Apple Store for Education
人気blogランキングへ
F-ScriptというSmalltalkをベースにしたものらしく,Objective-Cとも関係があるらしい.
前回Ambrai Smalltalkについて紹介しましたが,こちらの方が実行が早そうでかなり興味があります.
どちらもCocoaのアプリケーション開発ができるようなので,ウォッチしているといいのではないでしょうか.
F-Script
Apple Store for Education
人気blogランキングへ
2007年5月16日水曜日
Amabrai Smalltalk
Ambrai Smalltalkの新しいバージョンが公開されていました.
1.1評価版?あやしいなってみていたら,もっといいバージョンの1.2は有料?
とりあえず1.1で楽しみます.
Ambrai Smalltalk
1.1評価版?あやしいなってみていたら,もっといいバージョンの1.2は有料?
とりあえず1.1で楽しみます.
Ambrai Smalltalk
2007年5月1日火曜日
文字列処理
あることをするため,文字列処理をしてみることに.
Squeakでは標準では正規表現が使えない.
とりあえずはReadStreamでできそうなので,ちょっとやってみることに.
[[]]で囲まれているところを抜き出し,[[]]の前の部分と後ろの部分も抜き出す.
a:='aaa[[test]]bbb'readStream.
a upToAll:'[['. 'aaa'
a upToAll:']]'. 'test'
a upToEnd. 'bbb'
ちなみにSqueakにはBRegexp for Squeakというのがあるので,それをいれれば正規表現も扱うことができる.
Squeakでは標準では正規表現が使えない.
とりあえずはReadStreamでできそうなので,ちょっとやってみることに.
[[]]で囲まれているところを抜き出し,[[]]の前の部分と後ろの部分も抜き出す.
a:='aaa[[test]]bbb'readStream.
a upToAll:'[['. 'aaa'
a upToAll:']]'. 'test'
a upToEnd. 'bbb'
ちなみにSqueakにはBRegexp for Squeakというのがあるので,それをいれれば正規表現も扱うことができる.
2007年4月27日金曜日
Programming Memo
プログラミングに関するメモを書こうと思います.
気がついたことをなるべくメモしていこうと思います.
ということで,まずは自己紹介.
現在大学4年生で卒研がやばい!です.
マッカーです.(Macユーザー)
愛用しているMacはMacBook Pro Core Duo 1.83GHz 80GB 1GBです.
好きなプログラミング言語はSqueak,Smalltalk,Rubyです.
ただ全然かけませんが・・・.
とにかくプログラム言語とそれに関連した話について書いていこうと思います.
主にMac OSX(10.4.9),SUSE Linux 10.2,FreeBSD(Macより)での環境で考えていきます.
Mac,その他のコンピュータ,情報系?学生情報などはりんごの種 by Potentialに公開しています.
気がついたことをなるべくメモしていこうと思います.
ということで,まずは自己紹介.
現在大学4年生で卒研がやばい!です.
マッカーです.(Macユーザー)
愛用しているMacはMacBook Pro Core Duo 1.83GHz 80GB 1GBです.
好きなプログラミング言語はSqueak,Smalltalk,Rubyです.
ただ全然かけませんが・・・.
とにかくプログラム言語とそれに関連した話について書いていこうと思います.
主にMac OSX(10.4.9),SUSE Linux 10.2,FreeBSD(Macより)での環境で考えていきます.
Mac,その他のコンピュータ,情報系?学生情報などはりんごの種 by Potentialに公開しています.
登録:
投稿 (Atom)