Forth: 奇妙なプログラミング言語。

ディスクロージャー:あなたのサポートは、サイトを維持するのに役立ちます。 このページで紹介するサービスには、紹介料が含まれています。 もっと詳しく

Forth は変わった言語です。 主にインタプリタであり、リアルタイムで使用できるようにコマンドラインインタフェースを備えている。 しかし、コードのセットを受け取り、それをコンパイルする能力も持っています。 1257>

このため、Forth は従来のオペレーティングシステムを持たないハードウェアでよく使用されます。 また、機械の制御にも広く使用されており、宇宙探査にも使用されています。

History

Forth は、1968 年に Mohasco Industries でグラフィック プログラミングをしているときに、Charles Moore によって開発されました。 しかし、最初の完全な Forth 実装は、ムーアが米国国立電波天文台 (NRAO) で 11 メートル望遠鏡を制御するためのスタンドアロン システムを作成した 1971 年まで来なかったのです。 しかし、この時点で、天文学のコミュニティで非常に人気が出た。 そこで1973年、ムーアはNRAOの同僚であるエリザベス・ラザーとエドワード・コンクリンとともにFORTH社を設立し、

同社はプログラムを多くの異なるシステムに移植していったのです。 そしてFORTH, Incは、ビジネス、学術、政府の人々にForth関連の製品を提供する重要な会社であり続けている。

Overview of Forth

プログラミング言語Forthには、ユニークな面がいくつもある。

Forthの特徴

Forthには多くのユニークな特徴があります。

  • 対話型プログラミング
  • 「単語」と呼ばれる言語のコンパイル済み拡張子の作成
  • スタックと逆ポーランド記法
  • ユーザーとハードウェア間の直接接続。

逆ポーランド記法

Forthは逆ポーランド記法を使って数学的計算を行います。 これは、スタックに数値を格納することに依存します。

計算を考慮します。 2 + 3. Forth では、これは 2 をスタックに置き、次に 3 をスタックに置き、そしてそれらを足すことによって行われるでしょう。 これは次のようになる。 2 3 +.

少し変な感じですが、コンピュータが実際に計算する方法なので、コンピュータにとっては解析しやすいのです。 また、コーダーとして慣れてくると、ごく自然になります。

さらに、括弧は必要ありません。 次の2つの例を考えてみよう。 (注:バックスラッシュ文字はコメントを開始します。)

2 3 + 5 * This is the same as (2 + 3) * 52 3 5 * + This is the same as 2 + 3 * 5

最初の例では、2が3の後にスタックに押されます。 つまり、2がスタックの2番目で3が1番目です。 演算子「+」はスタックの最初の2つの要素に適用されます。 これはスタックからこれらの 2 つのアイテムを削除し、5 (2 + 3) をスタックの一番上に残します。

次に、5 をスタックにプッシュします。 これにより、スタックの 1 番目と 2 番目の位置に 5 が置かれます。 最後に、「*」演算子を適用すると、25 (5 * 5) がスタックの一番上に置かれます。

2番目の例では、2、3、および5をスタックに置き、5が最初の位置に、3が2番目、および2が3番目になるようにしています。 次に、スタックの上位 2 要素に「*」演算子を適用し (5 * 3)、その結果、15 がスタックの最上位に配置されます。 1257>

Example Program

次のプログラムは非常にシンプルですが、この言語で行われることの多くを実証しています。 それに続く行は、セミコロンで終わる行までが関数の一部である。 最初の行は「これから計算します」というテキストをプリントアウトしています。 (2 + 3) * 5 “というテキストを出力し、その後にキャリッジリターンが続きます。

次の行は上で説明した計算を行い、結果として25がスタックの一番上に配置されます。 関数の最後の行は、「This equals: 「と出力し、その後にスタックの一番上の値(”.”で表される)とキャリッジリターンを出力します。

We will now calculate: (2 + 3) * 5This equals: 25

Learning Forth

ほとんどのプログラマーにとって、これは新しい考え方です。 しかし、一度作業を始めると、それがいかに自然に思えるかは驚くべきことです。

Forth Tutorials

オンラインチュートリアルがたくさんあります。 Forth は、現在のユーザーには自明であると同時に、非 Forth プログラマーには奇妙であるため、多くのチュートリアルは、初心者を混乱させるような事柄について説明しています。

  • Easy Forth: この短いEbookは素晴らしい入門書です。 唯一の欠点は例題があまりないことです。
  • A Beginner’s Guide to Forth: これはもう一つの良い入門書です。
  • And So Forth…: これは Forth の非常に徹底した紹介で、ほとんど本と同じくらいです。

Forth Books

新しい言語を学ぶには、そのプロセスを段階的に教えてくれる本を手に入れるのが簡単なことがよくあります。 Forth についての良書はたくさんあります。特に、Forth が本格的に普及した 1980 年代にさかのぼると、その数は膨大です。 ここでは、その中でも特に重要なものを集めてみました。 Thom Hogan による「Learning and Programming the Forth Language」(1982年):これは Forth 言語への簡潔で良い入門書です。 Leo Brodie 著「Starting Forth: An Introduction to the Forth Language and Operating System for Beginners and Professionals (1982) 」:これは古典的で、Forth を学ぶのに最適な方法です。 絶版ですが、中古で安く手に入れることは困難ではありません。 また、オンラインでは無料で読むことができます。 上級の Forth プログラマは Brodie の最近の本、Thinking Forth をチェックしたいと思うかもしれません。 Forth – How the Internals Work (2014) by Charles Moore: これはForthの生みの親が昔書いた本のKindle版です。 6283>

  • Forth Programmer’s Handbook (2007) by Elizabeth Rather and Edward Conklin: Forthのパイオニアである他の二人によるForthに関するより高度な本です。 Rather の著書、Forth Application Techniques (2006) も参照してください。
  • Other Resources

    • Forth Interest Group: このサイトには古い歴史文書を含むあらゆる種類の興味深い情報が掲載されています。 残念ながら、リンク切れも多い。
    • Links to Forth Programs: これは、スプレッドシートや数独パズルソルバーのような、 実際のサンプルプログラムの素晴らしいコレクションです。
    • Forth Google Group: これは、質問したり答えたりする Forth ユーザーの非常に活発なグループです。
    • Forth Subreddit: これはひどく活発なフォーラムではありませんが、知識のある人たちがいます。

    Forth Implementations

    Forth の実装は何年も前からたくさんありました。 Forth Interest Group には長い Forth Compilers Page があります。 もしあなたがガレージで PDP-11 を使っているのなら、 そのための Forth コンパイラを手に入れることができますよ。

    bigFORTH

    1980 年代半ばに Dietrich Weineck, Georg Rehfeld, そして Klaus Schleisiek は 8086 IBM PC や 6502 Apple, Commodore, Atari マシンといった 16 ビットマシン向けに volksFORTH を開発しました。 しかし Bernd Paysan はこの volksFORTH (当時は turboFORTH と呼ばれていました) のバージョンに十分に興味を持ち、 bigFORTH の基礎としたのです。 1995年までに bigFORTH は 386 に移植され、 翌年には Windows NT、OS/2、Linux で利用できるようになりました。 (技術的には「MINOS」ですが、通常は単に「MINOS」と呼ばれます)

    これは bigFORTH のためのグラフィカル・インターフェースです。 Visual Basicのような「Visual bigFORTH」と考えるのが一番わかりやすいかもしれません。 これは、X-Windowsシステム用に最初に作られました。 しかし、すぐにWindowsでも使えるようになりました。

    bigFORTHとMINOSの両方の開発は、2010年頃に止まっているようです。 しかし、それらは両方とも簡単に入手でき、かなり便利です(bigFORTH は ANSI 準拠です)。

    bigFORTH Resources

    もしあなたがbigFORTHを使いたい、あるいはそのための開発をしたいならば、必要なツールはすべて揃っています。4.

  • Debian パッケージ: Debian ベースの Linux ディストリビューション (例: Ubuntu、Mint) 用に簡単にインストールできるパッケージです。 usr/local/bin にインストールされ、xbigforth という名前ですが MINOS も含まれています。
  • Windows Self-Installing Executable: Debian パッケージと同じで、Windows 用のパッケージです。 MINOSはxbigforth.exeという名前になっています。
  • Documentation (PDF): この約300ページの本は、JL Bezemerが書いたチュートリアルとリファレンスとして機能します。 その多くは一般的な Forth に関するもので、 “And So Forth…” がそこから引用されています。 特に注目すべきは Paysan の Forth ベースのマークアップ言語です。
  • bigFORTH Repository: あなたの bigFORTH のニーズのための究極の目的地です。
  • Gforth

    Gforth は Forth の GNU implementation です。 Gforth プロジェクトは 1992 年に bigFORTH の作者である Bernd Paysan と Anton Ertl によって始められ、Jens Wilke が多大な貢献をしています。 しかし、bigFORTH は fig-FORTH をベースにした volksFORTH から来ているので、その歴史は歪んでいます。

    GNU プロジェクトであるため、開始以来多くの作業が行われてきました。 今では完全に ANSI 準拠で、当初の目標をすべて達成しています。 最新のバージョンは 0.7.3 で、最後のエントリ (by Paysan) は 2013 年 2 月 25 日です。

    フリーの Forth 実装という点では、Gforth は最もよく使われています。 その理由の一部は、GNU プロジェクトの一部であり、利用可能であるということだけです。

    Gforth Resources

    Gforth には、あなたが必要とするすべてのリソースがあります:

    • Source Code: このページはバージョン 0.2.1 から現在の 0.7.3 までの Gforth ソースコードを提供します。
    • Windows セルフインストール実行ファイル: これは Gforth の以前のバージョン (0.7.0) ですが、手っ取り早く始めるためのものです。
    • Gforth Repository: Gforth に関連するほとんどすべてのものがここにあります。

    pbForth

    pbForth はもうサポートされていないようですが、Forth の興味深い実装なので、チェックしてみる価値は十分にあると思います。 そのため、LEGO MINDSTORMS ロボットキット、特に 1998 年に発売された 16 ビットの RCX 用に Forth の実装が作成されたことは、まったく驚くことではありませんでした。

    2006年に発売された第二世代の NXT シリーズや、2013年に発売された現在の MV3 で動作するように更新されることはないようです。 ただし、情報がそれほど多くないので、学習曲線は険しいかもしれません。 また、明らかに LEGO MINDSTORMS RCX が必要です (中古で見つけるのはそれほど難しくありません)。

    NXT はまったく異なる (32 ビット) プロセッサを使用しているので、pbForth は確かに動作しないでしょう。 しかし、それは楽しいことかもしれません。 そして、もしあなたがその気になれば、第2世代、第3世代のキットに移植できる可能性があります。

    • History of LEGO Robotics: pbForthについてではありませんが、LEGO MINDSTORMS製品の概要を簡単に説明しています。
    • Introduction to pbForth (PDF): この30ページのチュートリアルで、この言語について始めることができます。
    • phForth ソースコード: pbForth はアセンブリ言語と Tcl で書かれているので、それらのツールを利用できるようにする必要があります。 Linux や Mac 用の pbForth が欲しい場合は、ソースコードを使う必要があります。
    • phForth Home Page Circa 2009: このページは pbForth に関する興味深い情報へのリンクを提供しており、特に半ダースのサンプルスクリプトを掲載しています。 16ビットの実装です。 Data General EclipseやAlpha Microのような素晴らしい古いコンピュータや、 8086や6502ベースのコンピュータで利用可能です。 問題は、実行可能なファイルがないことです – アセンブリ言語コードだけです。 そして、ほとんどの場合、コードのビットマップPDFファイルのみです。 実際のコードは 8088/8086, PDP-11, 6800 用しかないようです。 (6800 は 8 ビットプロセッサなので、fig-FORTH の 8 ビット版があったようです。)
    • SP-Forth: Windows と Linux 用のフリーの Forth 実装です。
    • 4tH: (Raspberry Pi など) 多くのハードウェアで使用でき、良いドキュメントも含んでいます。
    • SwiftForth™: Forth の使いやすい実装です。 は、Forthを世に送り出した本家本元のForthコンパイラです。 商用品ですが、値段も手ごろです。

    概要2325

    コメントを残す

    メールアドレスが公開されることはありません。