MacPaint のソースコードが公開へ 103
ストーリー by mhatta
コードも立派な文化遺産 部門より
コードも立派な文化遺産 部門より
nobuo 曰く、 "やさぐれ日記によると、 Apple が MacPaint のソースコードを公開することを許可したそうです。
元ネタはNerdTV の Andy Hertzfeld の記事なんですが、ことの経緯は以下の通りだとのこと。
- Computer History Museum にて、オリジナルのMacintoshのマーケティングチームが講演をした
- Andy Hertzfeld もそれを聞いていた
- 年配の観客が立ち上がって、「MacPaintと いうのはプログラムの歴史上、最も素晴らしい作品だったんじゃないかと私は思うのですが、ソースコードを見せていただくということは可能なのでしょうか」 という質問をした
- その年配の観客とは、実は Donald Knuth だった
- 後日、Andy Hertzfeld は MacPaint の作者 Bill Atkinson に「ソースコードは持っているか?」と電話した
- Bill Atkinson がなんとか、探し出した(この辺の詳しい経緯も面白い)
- ソースコードを Computer History Museum に寄贈して、 Apple から公開の許可を取り付けた(まだ、公式発表はない)。
- 今年の 10 月ぐらいには公開される予定
現在でもペイント系ソフトなどとも呼ばれており、いわゆるお絵描きソフトのハシリとも言える MacPaint のソースコード公開は歴史的な意味が十分にあると思います。もちろん、いわゆるソースコードだけでなく、リソースも公開されると期待したいなぁ。"
ぜひ HyperCard も!! (スコア:5, すばらしい洞察)
# MacPaint 開発当初だと、リソースも、ソースコードから Rez で生成じゃなかったでしたっけ?
# ResEdit が出たのはだいぶ後のような気が。
Re:ぜひ HyperCard も!! (スコア:2, 興味深い)
それよりも、HyperCardのインターフェースとその仕様に衝撃を受けたものです。
カード型データベースの先駆けであり、なおかつハイパーリンク等の構造で、
ゲームから実用アプリケーションまで出来ましたからね。
プログラマだけでなく、一般の人でも簡単にアプリケーションが作れるという仕様には
本当に驚きました。
# このHyperCardを見てMacintoshを大枚はたいて買った自分がここに居てたりします。
MacPaintは今でも十分通用する、というか今のアプリケーションの基本にさえなって
いる感がありますが、HyperCardは今のWebインターフェースの先駆けでもあったと思っています。
という事で、私もHyperCardのソースを見てみたいです。
# しかし、私は Pascal を良く知らないので、果たして公開されても私は理解出来ないですけど。。。
Re:ぜひ HyperCard も!! (スコア:2, 参考になる)
授業でDelphi(Pascal)をやりましたが、C言語とかJavaのコードを読める人ならば
ちょっと勝手は違いますが、普通に読めるような言語だったと思います。
Pascal70%、アセンブリ30% (スコア:1, 参考になる)
Atkinsonが「OS X版を出すべき」などと執着してると逆に無理っぽい。
OS X版のHyperCard出すかソース公開するかどっちかにして欲しいと。
Re:ぜひ HyperCard も!! (スコア:1, 興味深い)
ついでに、、ToolBoxの中身も気になりますね。
Re:ぜひ HyperCard も!! (スコア:1)
同じくHyperCardに一票!
# やっぱりソースが残ってるかが問題
はすかわ
「実は Donald Knuth だった」 (スコア:2, すばらしい洞察)
それがなによりの驚きだ。
Re:「実は Donald Knuth だった」 (スコア:1, おもしろおかしい)
ロ. コスプレしていた
ハ. 興奮により少々若返っていた
ニ. 着ていたシャツに「私はKnuthではありません」と刺繍されていた
Re:「実は Donald Knuth だった」 (スコア:1, おもしろおかしい)
「ただのコック」に
(参考:スティーブン・セガールも目立たなくなる魔法の職業)
>ロ. コスプレしていた
テーマは、Donald KnuthによるDonald Knuthのセルフカバー
>ハ. 興奮により少々若返っていた
ウッドストック・ファッションに、ハッパをくわえて10秒おきくらいに
ラブ&ピース!と叫んでいた。
>ニ. 着ていたシャツに「私はKnuthではありません」と刺繍されていた
ちなみに下地は「I♥NY」
ホ.黒子の格好をしていた(参考:歌舞伎では見えない存在)
黒子 (スコア:1)
会場には牛・蛙や四五六賽・オランダとベルギーの国境で生まれた猫も顔を出していた.
Re:黒子 (スコア:1)
Re:「ホはホクロのホ」 (スコア:1)
ちなみに 見えないお約束なのは黒衣 [nnn.co.jp] です。
Re:「実は Donald Knuth だった」 (スコア:1)
って完結したの?
# 本職が分からないほど業績が多岐だってのもわかるけど
マクロの基本は検索置換(by y.mikome)
Re:「実は Donald Knuth だった」 (スコア:3, 参考になる)
「シビレを切らせた読者の為に、第4巻は分冊で出します」
ということで2分冊と3分冊(なぜ1分冊が最初に出ないかは謎)が出てます。
第4巻が分冊の形ではなく、1札になるのは大分先かも。
行って来たけど・・・ (スコア:2, 参考になる)
-- gonta --
"May Macintosh be with you"
Andy Hertzfeldの本 (スコア:2, 参考になる)
しかし (スコア:1, すばらしい洞察)
かなりとんでもない人だよね。
Re:しかし (スコア:2, 興味深い)
初代Macintosh(Lisaも)開発過程のポラロイド(まさにスクリーンキャプチャですが)を公開してくれましたし。
よく保存してあるもんだな~、と会場で感心/感激しました。
さすが我が師匠(と勝手に呼んでいますが{笑})。
ま、特許問題回避とか、作業報告が取ってあった、とかかも知れませんけど……。
/* Seeds */
うぉー (スコア:1)
#Old Mac市場がにわかに活気づくかも
観賞用? (スコア:3, すばらしい洞察)
Re:観賞用? (スコア:1, おもしろおかしい)
そこですかさずインスパイアですよ。
Re:誰かやってみる? (スコア:1)
Carbonでなんとかなるんでないかな。
もっと問題なのはPascalなんじゃないかってとこだけど。
Re:誰かやってみる? (スコア:2, 参考になる)
>The original MacPaint consisted of 5,804 lines of Pascal
>source code, augmented by another 2,738 lines of 68000
>assembly language.
だそーですが。
Re:誰かやってみる? (スコア:3, 参考になる)
初代MacPaintは実はウィンドウは一枚しか開けないし、パレットも移動できないしで、いまどきのPaintソフトに比べると結構チープなところもあります。これはどっっちかというと、APIの不足によるものではなく、当初128kBしかなかったRAMのせいでしょうね。
昔、MSX2でMacPaintみたいな感じのお絵かきツールを作ろうとして、スプラッシュスクリーン(Welcome to とかでるやつ)を作って、画面を灰色に塗潰し、メニューバーを作成して高速でドロップダウンするメニューを実装したところで、32KBの限界に近づいてしまい、あきらめたことがあります。VRAMの未使用領域にあらかじめアプリケーションのメニューをビットマップで作っておいて、画面にブロック転送とかやっていたのですが、後にMacPlusを買って勉強してみて、メニューマネージャーやらウィンドウマネージャーやらの豊富なAPIを見て「ずるいよ!」とか思いました。
Re:誰かやってみる? (スコア:3, 参考になる)
RAMの大きさもさることながら、CPUは68000の8MHz、ROM64k、OSとアプリケーションとユーザーデータを400kのFDに収容するという仕様で、今から比べると1/1000以下のパフォーマンスでしたので、一見現代風のAPIが用意されていますが、開発には構造化プログラミングの奇麗なコーディングというより、むしろ本物の実力 [genpaku.org]が必要だったと思いますよ。初期のアプリケーションはアセンブラで書かれていたとも噂されていましたがどうなんでしょう。
ToolBox関数を使って直に描画すると、ウインドウに点を打っているのがわかるような状態で、オフスクリーンビットマップを作成することを小池邦人さんの本 [ottimo.co.jp]で教えてもらって辛うじて動くプログラムになりました。タイトルバー、サイズボックスなどの作成や、ウインドウの移動などの処理も全て自分でやらなければなりませんでした。ジャンプや変数の参照に8ビット相対アドレスを使うので32kの制限がありましたが、16ビットに増すことによるコードサイズと処理時間増加を気にしなければなりませんでした。OSがガベージコレクションをするのでメモリをハンドル(ポインタのポインタ)で参照することになっていましたが、アクセスを早くするためにポインタのコピーを作ることや、OSがグローバル変数を多用していて、それをアプリケーションがさわることで簡単に暴走したとも言われています。(マッキントッシュの道具箱) [amazon.co.jp]。
Re:MacPaintは使ったことは無いが (スコア:4, すばらしい洞察)
80年代から既に電子ペン、電子消しゴムといった、現実世界並みにリッチな入力機器が提案されていたが(坂村先生の本とかで一般にも紹介されていた)、どうして未だにこんなに貧弱なんでしょうか?
「左手で電子定規の角度を合わせながら右手の電子ペンで線を引く」といったことすらできないのは、どうかしてるとしか思えない。
Re:MacPaintは使ったことは無いが (スコア:2, 興味深い)
で、くるっと回せますか?
とか言うと、歳バレなのかな?
Re:MacPaintは使ったことは無いが (スコア:1)
#いや、授業で使っただけですが。つか、分野が違うし(笑)
Re:MacPaintは使ったことは無いが (スコア:1, おもしろおかしい)
右手が電子定規を押し付ける力で定規が傾いて、線を引いてる途中に
「ああぁぁっ!」とグダグダな線が引かれてしまうという
欠点も持ち込んでしまうからです。
タブレットのお供に (スコア:1, おもしろおかしい)
Re:MacPaintは使ったことは無いが (スコア:2, おもしろおかしい)
この話を聞いて (Re:MacPaintは使ったことは無いが) (スコア:2, 参考になる)
現行の10.4.2 Tiger で起動してみたらば,平然とClassicが立ち上がって
動き始めたのには,思わず涙腺が緩みました(笑)
使えないツールも,いくつかあるみたいですけどね.
#それよりも,セーブしたデータが現行のQuickTime Player 7.0.2で
#開けるのには,かなり驚きました.
Re:MacPaintは使ったことは無いが (スコア:2, 参考になる)
Re:MacPaintは使ったことは無いが (スコア:2, 参考になる)
Re:MacPaintは使ったことは無いが (スコア:1)
作り上げた先生ですもんね。
最初にMac Paintつかったときの感動がどれほどのものか、考えるだけで
涙が出てきますよ。
#まだお元気なのですねぇ。TeX Ver.πはまだまだ先のようです(^_^)
歴史上最も素晴らしい予感 (スコア:1)
でも言うまでもなくまだくコードは見てない(笑)。
だから「だったんじゃないかと私は思う」というKnuth先生の「歴史上最も素晴らしい予感が!」という代物なのだ。
公開された後もどう評価されるのか楽しみだ。実用性抜きのプログラミングの美しさで。
Re:歴史上最も素晴らしい予感 (スコア:2, 参考になる)
タレコミのリンク先に"Put them on a CD, sent them off to Don Knuth."とあるので、Knuth先生は既にソースを見てると思います。実際にソースを目にしたKnuth先生の感想が聞いてみたいですね。
Re:なんか (スコア:2, 参考になる)
(読めないのに中身が判ったということは、ラベルでも貼ってあったんだろうか?)
こんな感じで、実家に大量に眠ってるPC-98フォーマットの5インチフロッピーもいつか日の目を…見ることは無いな(w
Re:なんか (スコア:1)
これが出来る人だから良いですよねぇ
>> 大量に眠ってるPC-98フォーマットの5インチフロッピー
まぁ、それ以前に物理的に読めるかというのもある訳で、前に居た会社に、原則30年保存というcorporate data retention policyがあったのを思い出しました。
オープンリールとか3 inchフロッピとか、どうやって読むんだよというメディアが倉庫に・・・
そう考えると、大昔のメディア良かったですね。
紙穿孔テープにしても、パンチカードにしても、最悪でも、目で読めるから。
Re:Macという (スコア:1)
いわゆるZ80とは、Z80CPUのことですが、その他にもZ80の名が付くものとして、
Z80PIOとか、Z80SIOとか、Z80CTCとか、Z80DMAなどなどの
Z80???って名前の、Z80CPU用の周辺チップがあります。
で「Z80 とはZ80CPUなど、Z80???ってチップをまとめたファミリの総称のこと」だって主張なのでしょう。
まあ、Z80CPUを使ったパソコンでも、周辺は8080用の石(8255とか8253とか)を使っている場合がほとんどで、Z80ファミリのうち、CPU以外の周辺チップはマイナーといってもいいでしょうし、
何も断らずにZ80といえば、Z80CPUのことを指すとみなして間違いないとは思いますが。
Z80周辺チップの採用製品というと、私が思い出せるのは
X1: Z80CTC、Z80SIO、Z80DMA(X1turbo以降)
MZ-2500: Z80PIO、Z80SIO
ぐらいですかね。
Re:Macという (スコア:1)
#違いはシリアル信号の制御信号ピン
そう言えば、"SCC"を「コナミの音源チップ」と言うのは、MSXユーザーだろうな。
/* Kachou Utumi
I'm Not Rich... */
Re:Macという (スコア:1)
s/ピンアサイン/ボンディングオプション/
中の人^H石は同じもので、LSI とパッケージをつなぐ線(ボンディング)のつけ方で SIO/0,1,2 を作り分けていたとのこと。当時は40ピンを超えるパッケージは高価についたためにこういう作戦が取られたらしい。44ピンあれば全部入ったのに。
Re:Macという (スコア:1)
LocalTalkってSCCのHDLC関連の機能使ってませんでしたっけ?
#個人的にはPK88(古っ!
凛々しく、あほらしく。
Re:Macという (スコア:1)
/* Kachou Utumi
I'm Not Rich... */
Re:Macという (スコア:1)
ZilogのZ80見ると感動したもんです。
#そーいやMC68k系のセカンドソースとか互換MPUってあるのかしら?
凛々しく、あほらしく。
Re:Macという (スコア:1)
システムソフトの「LOAD OF WARS」でないか?
私はPCエンジン版を遊んだけど、Macを髣髴とさせるGUIってのはわかる気がする。
Re:Knuthに頼んで (スコア:1, おもしろおかしい)
「OS/2でよければオープンソース化しますよ。このコードを発展させればWindowsNTは当然の事ながらWindows2000も、更にはWindowsXPにだってなりますから。」
#カトラーって今何やってんだろ・・・
カトラー? (スコア:1, 参考になる)
Re:カトラー? (スコア:2, 参考になる)
Re:Knuthに頼んで (スコア:1, 参考になる)