Mops

Mops (Mike's object oriented programming system、モップス) とは、 Forth 言語をベースにした、Macintosh向けのオブジェクト指向開発環境。
概要.
1988年にオーストラリアのプログラマであるマイケル・ホーア (Michael Hore) によって開発された。最初の核部分がアセンブラで構築されたことをのぞけば、Mops は当初からそれ自身の上で開発・改良されてきた。2016年現在も、リソース類以外は全て Mops 自身で開発されている。フリーウェアであり、ソースコードも公開されている。
Mops は、 Forth 言語に基づく比較的サイズが小さい核部分を、追加的ワード定義によって拡張することで生成されている。初期の Forth は間接スレッディング方式によるインタープリタによって実装されていたが、 Mops の核となるForth環境はサブルーチンスレッディングであり、最適化された機械語を生成するコンパイラを備えている。したがって Mops プログラムは機械語にコンパイルされた上で実行される。そのためプログラムの動作は高速である。他方で、インタープリタ方式の特徴である、コード断片を実行して動作を確認できるという機能を残しているため、迅速にソフトウェアを作る上でも有利である。
Mops ではロードされたプログラムを実行可能ファイルとして書き出すことができる。これによって、単独で実行可能なアプリケーションを作ることもできる。Mops では、この過程はインストールと呼ばれている。
2016年現在、68k ネイティブで Macintosh Toolbox を利用する Mops 4.04 、 PowerPC ネイティブで Carbon ライブラリを利用する PEF 32 ビットおよび Mach-O 32/64 ビットの PowerMops 6.2 、X86-64 ネイティブで Cocoa フレームワークを利用する iMops 2.x の三種類のバージョンが配布されている。
PowerMops まではホーアが開発してきたが、 iMops からは、長らく Mops のヘビーユーザーであり、かつドキュメントの日本語訳やバグ報告などを通して接点を得ている Nao Sakurada によって開発が継続されている。
Mops のコード.
Mops は Forth をベースにしているため、コードの基本単位は「ワード」と呼ばれ、ワードは「ディクショナリ」に格納される。また、「データスタック」を利用しているため、引数とそれを受け取るワードの関係では逆ポーランド記法により記述する。オブジェクト指向言語ではあるが、手続き型言語としても記述できる。オブジェクトシステムはSmalltalkと同じくメッセージングに基づく。
コードにはアセンブリコードを埋め込むこともでき（インラインアセンブラ）、高度なプログラムを記述できる。
ただし、Mops内蔵のアセンブラでは、アセンブリコードも逆ポーランド記法で記述するようになっている。つまり、オペランド（高級言語でいう引数）が前、オペコード（命令そのもの）が後ろにくる。これは、内蔵アセンブラもまた、Mopsでプログラムされ、Mops上で動作するプログラムだからでもある。