Smalltalkのような画像を使ったプログラミング言語を知っている人がいたら、とても興味があります...
これは、コンピュータ サイエンスの歴史の中で最も優れたアイデアの 1 つだと思います。イメージに基づく言語は、Smalltalk 以外に見つかりません。
Smalltalkのような画像を使ったプログラミング言語を知っている人がいたら、とても興味があります...
これは、コンピュータ サイエンスの歴史の中で最も優れたアイデアの 1 つだと思います。イメージに基づく言語は、Smalltalk 以外に見つかりません。
画像
イメージは基本的にメモリ ダンプです。通常、Lisp 開発システムはランタイムとイメージを開始します。その後、ユーザーは変更を加え、後で新しいイメージを書き込むことができます。これは開発者が使用する機能である場合もあれば、Lisp システム自体の開発中に使用される場合もあります。
多くの Lisp システムは「イメージ」を使用しています。おそらく、Smalltalk はそこから入手したのでしょう - Lisp は Smalltalk が存在するずっと前からすでにイメージを持っていたからです。60 年代初期の McCarthy の Lisp 1.5 は画像を使用していました。Lisp の実装技術に関する知識は Xerox に移されました。たとえば、 Peter Deutschは 60 年代に Lisp の実装に取り組んでいました。60 年代前半、幼い頃に彼は最初の Lisp を書きました。70 年代には Xerox に勤務し、特に Smalltalk の仮想マシンの実装に携わりました。
70 年代/80 年代後半、Lisp マシン上の OS は基本的に Lisp イメージ (しばしば world と呼ばれる) でした (インクリメンタルデルタ イメージを含む階層イメージでさえ)。Lisp マシンは、開発環境の状態 (例: どのコードがどこからどのバージョンで誰によって書かれたものか) をイメージに保存しますが、Lisp マシンの MIT バリアントは通常、ソース コード自体をファイルに保存します。
マネージド ソース コード
同様の方法でソース コードを整理および管理する言語 (つまり、プロジェクト ディレクトリ内のファイルではなく) を使用する言語を尋ねると、Xerox Interlisp はそれを実行しました。Appleのディランはそれをしました。一部の DB 開発ツールはそれを行う場合があります。
実際には、SQLデータベースはイメージベースであると見なすことができます。データとコード(ストアドプロシージャ)はすべて、1つの大きな不透明なblobに一緒に格納されます。
80 年代に父の側に座っていた記憶から、MUMPSは画像ベースです。私は確かに間違っている可能性があり、ウィキペディアの記事をざっとスキャンしても何も表示されませんでしたが、可能性はあります...
私はこのコメントに出くわしましたが、これは画像ベースの開発のフレーバーを与えると思います。
「したがって、サーバー側の計算にJVMを使用することはできますが、実際に使用することはできますが、小さくて単純なタスクには少し重いです。この問題に対するCommonLispの答えは、独創的なものでした。何度も実行するプログラムを構築する代わりに、コードが繰り返し評価される「環境」を提供するため、長時間実行されるVM内で急成長する一連の機能を実際に成長および育成できます。私はこのモデルが適切な場合に気に入っており、たとえばEmacsで楽しんでいます。このモデルは、新しい関数を記述したり変数をカスタマイズしたりすることで機能を拡張しながら、何日も実行したままにすることができます。」
Smalltalk Image システムがスケーリングするかどうかについて興味があります。
20 人のプログラマーが同じコードベースで作業している場合、それはどのように機能しますか? 彼らはそれぞれ独自のイメージを持っていますか、それとも共有していますか?
環境の変更を必要とするコード変更を行い、誰かが同様の要件で別の変更を行った場合、イメージを (バージョン管理と同様に) マージできますか?
Common Lisp のほとんどの実装。
シングルページアプリケーションは、JavaScript+HTMLの一種の画像と見なすことができます。シングルページアプリケーションとは、すべてのデータ、コード、および状態が単一のHTMLドキュメントに含まれる[Web]アプリケーションを意味します。
例としてTiddleWikiを考えてみましょう:http ://www.tiddlywiki.com/
初期のBASICインタープリターは、基本的なエディターを組み込み、ユーザーが作業している間、プログラムのソース形式をメモリに保持し、「SAVE」や「LOAD」などのコマンドを提供するという点で、画像ベースと見なすことができました。 「READ」?)プログラム全体をソースファイルに保存し、後で再度ロードします。
Bill K の質問に答えるには、どうやら問題なく動作するようです (ただし、チームで個人的にバージョン管理を試みたことはありません)。
ただし、すべての Smalltalk システムは少し異なる方法で行います。それに関する非常に興味深いポッドキャストがThe Stack Traceにあります。その多くは、すべてのイメージベースの開発環境に当てはまります。