============================================ Mops FAQ - Jun '97 (current version: 2.8.2) ============================================ (日本語訳:渡辺 伸 uw4s-wtnb@asahi-net.or.jp/QGB02472@niftyserve.or.jp) Path: netaxs.com!news-xfer.netaxs.com!news.mathworks.com!howland.erols.net!spool.mu.edu!munnari.OZ.AU!news.mel.connect.com.au!news.syd.connect.com.au!phaedrus.kralizec.net.au!not-for-mail From: mikeh@zeta.org.au (Michael Hore) Newsgroups: comp.lang.forth.mac Subject: Mops FAQ (Feb) Date: 4 Feb 1997 12:44:38 +1100 Organization: Kralizec Dialup Unix Sydney, +61-2-837-1183 V.32bis Lines: 363 Distribution: inet Message-ID: <5d64a6$thj@godzilla.zeta.org.au> NNTP-Posting-Host: godzilla.zeta.org.au ============== Mops FAQ - Jun '97 (current version: 2.8.2) ================ "G'day. (I'm Australian, OK?) Welcome to the Mops FAQ file." こんにちわ。Mops FAQ ファイルへようこそ  何か問題があったときにはe-mailする前にこれを読んでみてください 。多くの質問にひとつひとつ返答していると、私が Mops に費やすべき 時間が失われてしまいます。そういった時間を最小限にするためにこれ を書いたのです。 でも、もしそれでも私にemailしなければないとした ら次のことに気をつけてください。 1 終わりのほうにある"KNOWN BUGS IN 2.8.2, AND FIXES." をチェックして みてください 2 e-mailアドレスを必ず「最後に」明記してください。時々手紙の最初にア ドレスを書かれる方がいらっしゃいますが、そうするとその手紙のメッセージ は私には読めず、お返事もできません。よろしくお願いします。 わたしはだいたい毎月このリストを投稿しています。 -- Mike. ----------------------------------------------------------------------------- Q. Mopsとはなんですか? A. MopsはMacのパブリックドメインの開発システムです。これはForthを基に、Small talk風にOOPの拡張がされてできています。Mopsはクラスライブラリとともに提供 され、これによりMacの通常のインターフェイス機能のすべてがサポートされます。P owerPlantやMacAppほどではないですが、一人のプログラマで開発するようなアプリ ケーションには十分すぎるものです。 Q. Mopsはどこからやってきたのですか? A. MopsはMac上でMac用ソフトの開発を可能にした初めての言語であるNeonに端を発 しています。これはYerkの親戚にあたるものです。YerkはNeonと互換性を保ちながら その後のMacとシステムに対応することを目的として作られた、Neonの「保守的な」 発展型言語です。Mopsはもっと「ラジカル」です。Mopsは、68K-CPUのネイティブコ ードを実行する完全なる再実装です。非常に高速であり、事実Macのどんなものより も速く動作します。基になったNeonに、多重継承やテンポラリ(ローカル)オブジャ クトなとの若干の改良を加えています。 Q. どこで手に入りますか? A. WWW: (このページを開いてくれたJayfar (Jay Farrell) に感謝します。 - 有用 だと思われるほかのリンクがあったら彼に教えてください。 - jayfar@netax s.com) ftp: //taygeta.com/pub/Forth/Mops (taygeta は Forth の主要なftp サイトです)  Mopsのファイルは Mops282.sea.bin (system) とMops26m.sea (マニュアル・ver.2 .6用のままです).  マニュアルをまだ更新していないことに注意してください。ver.2.6から2.8.2に移 行する間に2、3の新しい機能が加わっています。これについてはrelease notesに 書かれています。  その他のMopsのプログラムコードが taygeta サイトから入手できます。WWW のペ ージにもリンクがあります。 taygetaはメインサイトです。 -- 私はいつも最新版がここにあるようにしています。 その他の場所については私には保証できません。 Q. Mopsに関する議論はどこでされていますか? A. newsgroup のcomp.lang.forth.mac です。- これはMopsだけに限定されていませ んが、よく話題に上ります。   forth.orgにMopsのメイリングリストがあるようです。私はこれについては関知し ていません。 http://www.forth.orgを参照してください。 Q. これ以外にサンプルプログラムコードが入手できる場所はありますか? A. 申し訳ありませんが、あまり力になれません。私は「真の」Mopsアプリケーショ ンは2つ書いただけです。そのソースを自由に配布する立場にもありません。私がMo ps を扱う時間のほとんどはMopsでアプリケーションを書くことよりもMops自身を開 発することに費やしています。  もし上記のftpとWWWサイトにあなたの欲しいものが無いのでしたら、comp.lang.fo rth.macに投稿してみてはどうでしょう。多分だれかが助けてくれることでしょう。 Q. MopsでMacのプログラミングを学ぶことはできますか? A. よい出発点となると思います。 MopsにはNeonのマニュアルから発展したオンラ インマニュアルがあります。これはプログラミングの初心者レベルでMacについては 何も知らない人を想定して書かれています。しかしMacのプログラミングの初心者レ ベルから先に進むとInside Macintoshを必要とするようになるでしょう。でも別にそれがなく てもMopsを使い続けることはできますよ。 Q. OOPをMopsで学ぶことができますか? A. 当然です! - 一つ前の質問と同じ理由によります。OOPはNeonが発表されたとき にも非常に新しいものでした。そのためマニュアルには本当に初歩のレベルから説明 してあります。 Q. MopsでHyperCardのXFCNs やXCMDsを書くことはできますか? AppleScriptのAppl eScript Extensionsや機能拡張、コントロールパネルはどうですか? A. いいえ、残念ながらできません。Mopsはアプリケーションを実行するだけです。X CMDのようなアプリケーション以外のコードを取り扱うにはやや手直しが必要になっ てしまいます。2、3年前にそうしようと思っていましたが優先順位は高くありませ んでした。現在はPower MacとShared Library Manager対応が優先です。私からすれ ばさほど重要ではないのです。  Power Macではすべてがshared llibrayを通して行われます。将来のPower Macバー ジョン(後述します)ではこれを完全にサポートする予定です。今はこれを最優先にしています。 Q.Mopsを試してみたいのですが、Macを持っていません。 A. ANS standardに近いForthを持っていらっしゃれば、Mops Object modelを試せるパッケージをダウンロー ドして使えます。これは高レベルのForthでインプリメントされているので、あまり効率的ではないのですが、M opsの文法を試すことができます。パッケージは以下のサイトにあります。 ftp://ftp.taygeta.com/pub/ANS/classM10.zip (まもなく version 1.1 にとりかかります。その時には classM11.zipになります) Q. "Mops"アプリケーションをダブルクリックしたら、メニューのないウインドウが 表示されただけでしたが... A. ファイル「Readme.1st」を読みませんでしたね。ダウンロードの時間を節約する ためにMopsの「核」の部分だけを(アプリケーションに)入れてます。すべてのソー スファイルはお手元にあるはずですから、「Readme.1st」の説明に従いコンパイルし て、完全なシステムを構築してください。簡単にできますよ Q. 説明に従ってシステムをコンパイルしたのですが、暴走してしまいました。 A. 多分、機能拡張のどれかとコンフリクトを起こしているのでしょう。SAM (Syman tec Anti-virus for Macintosh) と RamDoublerでは問題が起きます。機能拡張をoff にして(シフトキーを押しながら再起動します)もう一度試してみてください。そう すればうまくいくはずです。その後で機能拡張をonの状態で再起動します。しかし、 コンパイル後の完全なMopsシステムでもコンフリクトが起きるようであれば、どの機 能拡張が原因となっているかを突き止めて、私に知らせてください。  ところで、ウイルス撃退ソフトは一般にコンパイラと相性が悪いようです。コンパ イラはリソースに手を加えるので、それをウイルスの仕業だと勘違いするからです。 しかし、私はDisinfectantを使用していますが問題が起きたことは一度もありません 。 Q. Mopsシステムのコンパイルはうまくいきました。しかし今度はMopsのウインドウ に文字を入力しても何も起きません。文字がそこに表示されるだけです。 A. 多分あなたは2、3年前の古いバージョンのMopsを使っていた方でしょう。この バージョンを使い始めるときにReadme.1stファイルを読まなかったのだと思います。 必ず読むようにしてください。ユーザーインターフェイスは以前と同じではありませ ん。現在のバージョンでは「リターン」キーを押しても改行するだけです。ワードを 実行するためには「enter」キーを押してください(MPWと同じです)。「enter」と 「リターン」を同じに扱うアプリケーションもありますが、Mopsは違います。現在の インターフェイスではQuick Editとも多くのやり取りをするようになりました。これ も見逃さないでくださいね。 Q. Mopsシステムのコンパイルはうまくいきました。しかしMops.dicをダブルクリッ クすると暴走してしまいます。 A. こういったことが起きるのはほとんどの場合、Mopsの以前のバージョンからバー ジョンアップし、以前のバージョンのMops nucleus(Mopsアプリケーションそのもの )のコピーがどこかに存在するときです。Macから見た場合、"Mops.dic"はMopsアプ リケーションの書類です。"Mops.dic"をダブルクリックするとMacのシステムはMops アプリケーションを起動します。しかし、もし2つのバージョンのMopsが存在する場 合には最新のものが起動されるとは限りません。実際、最新のものは起動されないの だと思います。Mopsアプリケーションのワードの位置が2つのバージョンでは異なる ので、古いMopsアプリケーションでは新しい辞書(Mops.dic)を使用できません。ぼう そうするだけです。ですから、古い方は捨ててください(慎重な方でしたらフロッピ ーにコピーして、それは取り出しておいてください)。そうすればMacは正しいバー ジョンを起動することができます。 Q. Mops環境では私の作ったプログラムは正常に動作します。しかし、アプリケーシ ョンとしてインストールするとうまく動きません。 A. 2、3の点を指摘することができます。  よくあるのは、インストール後のアプリケーションでモジュールを使用している時に     true setInstall: myModule をプログラムコード中に書き忘れてしまった場合です。これによりインストール時に モジュールを含めるようフラグをセットします。  例えば、ダイアログを使用していて、     true setInstall: dialogMod をどこかに書いておくのを忘れたというような場合にがこの例にあたります。  別の原因としてはコンパイル時にtickしたワードを「コンマ」で読み出し(訳注: これはワードのメモリ上でのアドレスを読み出すことになります)ている場合で、実 行時にはそのワードを@ EXECUTEしている場合があります(訳注:上記操作で読み出 したアドレスのワードを実行する)。こういたことは、別のForthのソースコードを 移植するときに起きやすいです。  Mopsではxtを実行時に変数に格納し後で実行しても問題はありません。しかし、コンパイル時に辞書に格納し 、後でそれを実行するのは危険です。Mopsではxtは絶対アドレスであるからです。そして、そのアドレスはMop sアプリケーションがMacのメモリ中のどこにロードされたかにより、毎回異なっているからです。  こういった操作はDicAddr、X-Addr、X-Arrayオブジェクトを使って行うのが適して います。マニュアルPart IIの"Addresses--relocatable and absolute"を参照してく ださい。 Q. PowerBookのenterキーはどこにありますか? A. スペースバーの右側にひそんでいます。PB150の場合には更に困ったことにenter とも書いてありません。変な記号が書かれています。(訳注:日本語キーボードでは どうなのでしょうか?どなたか教えてください。) Q. Mops のウインドウでカラーは使えますか? A. カラーの使えるウインドウを作らなければなりません。windowクラスには新たにi var としてcolor?とそれをセットするメソッドsetColorがあります。 new:、getNew: をwindowに送る前に、    true setColor: myWindow をしてください。それからnew:、getNew:を送ることによりカラーのウインドウが作 られます。 Q. どうしたら アイコンを描けますか / サウンドマネージャを使えますか / オフ スクリーンビットマップを使えますか / シリアルポートを使えますか / (お好き な質問をここに入れてください)?? A. そうですね。もしこのFAQが一般的なMacプログラミングのものならともかく、こ ういった質問は今の私の仕事ではありません。comp.sys.mac.programmer.helpに投稿 してみてください。空いた時間で私はMopsの次のバージョンを開発しなければならな いのです。いずれにせよすべての質問に答えられるわけでもありません。私はInside Macの代わりではないのです。適切な箇所を読んでみてそれでもわからなければnewsg roupを頼ってみてください。そこには喜んで質問に答えてくれる人達がいます。 Q. すごくいいソースコードを書いてしまいました。それについてあなたがどう思われる か見ていただきたいのですが。 A. できればそれはやめてください。もし皆がそれをし始めると私はemailの山に埋も れてしまい他に何もできなくなってしまいます。私はこれを空いた時間を使ってして いるのです。 comp.lang.forth.macに投稿されるのが良いのでは? Q. Mopsを実行するのに必要な最少システムはなんですか? A. Mac Plus もしくは 512KE, 4 Mbytes RAM, ハードディスクに4 Mbytesの空き領域です。 Q. 冗談でしょ? A. とんでもない! Q. 今後のバージョンでは、Power Macのネイティブコードにコンパイルできるように なるのですか? A. はい。この FAQ の最後にある進捗状況報告をご覧ください。 Q. Windowsバージョンについてはいかがでしょうか? A. Win32Forthをtaygetaから入手してください。MopsのOOPモデルの多くをサポートしています。 Q. Mopsのサポートは今後も続けてくださるのですか? A. 私はこれで7年の間やっています。やめるつもりもありません。 Q. どうして C++以外の変な言語なのですか? A. ちょっと試してみて下さい。そしていかに手っ取り早く欲しいものを作り上げる ことができるか体験してみてください。一般的な方法が最適の方法とは限らないので す。どのみち、あなただってMacを使っているじゃないですか。 ------------------------------ 今後の予定---------------------------  現在の Apple社の状 況は心配ではあります。私は、彼らが新しいOSをここ1、2年の内に市場に 出すことができなかったことで道をはずしてしまったのだと思っています。 Wintel勢力は追い付いてきました。Apple 社のシェアは落ちています。Next 社との合併はAppleを立て直すか、つぶすかのどちらかでしょう。 NextStepを よく知っている人達はよい方向だと考えています。ですから我々はまだ手遅れ になっていないと思って良いのでしょう。  Apple社はOSの開発を2つの流れにしようとしています。現在の MacOS は Mac OS8 として2、3ヶ月のうちに登場するでしょう。NextStepをベースと した新しいOSである Rhapsodyも登場 する予定です。  Rhapsodyでは現在のAPIコールは互換性モジュール( blue box )によってサ ポートされます。ですからMops はMacOS8でもblu boxによるRhapsodyでで も動きます。 アップルは開発者に今後のアプリケーションに Rhapsody (yellow box)の下で直接走るように書くことを奨励しています。アプリケー ションプログラミングインターフェース(API)は、 Objective Cに基づいてい ます。Objective Cコールがlate bindingを多用しているので、 Mopsが Objective Cの calling sequenceを使って Rhapsody のAPIを直接呼びだすこ とは可能だと思われます。 Rhapsody はまだずっと遠い所にあるので、(現在、 今年遅くに予定されている)わたしはまだ何もしようとは思いません。  私はApple社の開発情報が得られる環境にいるので、どうすべきかがクリア になれば適切な方向に進めると思います。 現在のところはPowerPCバージョ ンのMopsを開発しています。これが私には最もおもしろいのです(下記参 照)。 --------------- KNOWN BUGS IN 2.8.2, AND FIXES (バグ情報)---------------- * 同一のセッション内でインストールを1回キャンセルしてからもう一度行な おうとしたときに、暴走します(これは古いバグですが、まだ直せていません)。 *Mopsシステムの構築はモノクロのMac(SEなど)ではクラッシュします。 この原因は、わたしが M ops ウィンドウを実験で色ウィンドウにしたことで した、そしてこれはリリースまで続いたのでした。 Module Sourceの TEFWindMod.txt を見てください, DO_RUN_TEというワードの次の行を捜し てみてください。 true setColor: [ ^TW ] \ is this OK? これをコメントアウトして(訳者注:行頭に「¥」を挿入します)再度 試してください *次のようなコードで問題が起きます。  var var1 var var2 : test get: var1 @ get: var2 @ ;  最適化時にエラーが生じ、2番目の読み出し(@による)が間違った場所から行わ れます。それがdoubule dereference(二重のデリファレンス)を引き起こ します。これに対処するにはダミーコードを2つの@の間に置くことです。修 正するにはnucleusの部分を変更しなければなりません。これは次のリリース まで待ってください。 その他の新しいバグがもし見つかれば(いつかな?)このリストに付け加えて行きます。 ---------------- PowerPCネイティブバージョンの進捗状況報告 -----------------  基本的なコード生成部はきちんとできています。次の段階としてコンパイル 部(訳注: a target compilation schemeが原文です。間違っているかもしれ ません)を作製しなければなりません。これは非常に大変な仕事です。コード 生成が PowerPCネイティブで実行できるようになるためには、全てのOOPサ ポートのコンパイルができるようにならなければならないのです。  でも、これも完了しました。核(nucleus) とコード生成部はコンパイルがで きるようになりました。ファイルをnativeにロードできるようになりました。 (ロードの速度は非常に素晴らしいものがあります。 7500/100でBaseのロードは1秒ぐらいです)。しかし、コード生成プログ ラムにはまだ少し厄介なバグがあります。ご推察の通り、こういったバグは結 構面倒なものの部類に入るのです。レールを踏み外す場所がバグの場所という わけにはいかないのです。問題はできの悪いプログラムコードにあるのです。 とにかく私はこれらと取り組んでいて、そしてその数は着実に減っています  Mopsシステム全体がネイティブで読み込めるようになってから安定してきま した。たぶんβテストバージョンをリリースできるとおもいます(みんなでク ラッシュしましょう:-)。(訳者中:もう公開されています)  作業は順調にに進んでいるので8月ぐらいには準備できていると思います。 このスケジュールで私を縛らないでください。現状での予測にすぎませんから。  まず、整数のみのバージョンをリリースし、浮動小数点バージョンをインプ リメントしている間にみなさんに試していただこうと思います(そんなに時間 はかけないつもりです)。  バージョン2.8.2はかなりよくできているようです。PowerMopsをリリース するまでに次のバージョンを作らずにすみそうです(1998/12月現在で2.8.3です)。 ------------------------------------------------------------------------ Mike Hore mikeh@zeta.org.au _--_|\ / \ \_.--._x Aug 24, 1995 - the day Micro$oft released Windows 95 to v millions of unsuspecting beta-testers. ------------------------------------------------------------------------ 95/8/24 - Micro$oftが、そうとは知らない何百万もの人々をWindows 95のベータテスターとした日)