プログラミングのお題スレ Part3
■ このスレッドは過去ログ倉庫に格納されています
0079デフォルトの名無しさん
2014/02/02(日) 23:41:49.49>これってウィンドウシステム全体を入れたみたいな扱いなんですね.
そうです。Smalltalk はアラン・ケイらが自身が構想した理想のパーソナルコンピューターである
「ダイナブック」http://swikis.ddo.jp/abee/74 の暫定OSとして独特な思想や世界観を背景
http://web.archive.org/web/20041016084842/marimpod.homeip.net/chomswiki/24 に作られたため
セルフホスティング(処理系・環境の大部分がSmalltalk自身で記述されている)の仮想OSのような構成で
独自のウインドウシステムも環境の中に備えています。余談ですが、このウインドウシステムを
スティーブ・ジョブズらが観てインスパイアされ(有り体に言えばパクって)LisaやMacを作ったり、
そのときは真似られなかったAPIを参考に、のちに改めてNeXTSTEP(今のOS X、iOSの前身)を
作ったのは比較的よく知られた話です。http://americanhistory.si.edu/comphist/sj1.html#soft
そんなわけで、もしSmalltalkを使うためだけに慣れたUNIX環境などから離れたくない、
ということでしたら、繰り返しになりますがGNU Smalltalkをお薦めします。
言語のみのSmalltalk、という本来のSmalltalkからすれば限定的な世界しか体験できませんが、
それでも組み込みライブラリひとつとってもSmalltalkはかなり盛りだくさんなので、
学ぶのに退屈することはないかと思います。
参考まで、件のコードをGNU Smalltalkでも動作するように書き換えてみました(ideone.com でも
時間切れにならないように 100桁で)。
| m x epsilon delta |
m := 100.
x := 1.
epsilon := 10 raisedTo: m negated.
[(delta := -2 * x * x + 1 * x / 2) abs > epsilon] whileTrue: [x := x + delta].
((x * 2) asScaledDecimal: m) printNl
http://ideone.com/MwgorF
■ このスレッドは過去ログ倉庫に格納されています