Smalltalkについては、子供の頃に本で読んだことがないので、「怒って」使ったことはありません。いつでもプログラムに侵入し、オブジェクトの状態を検査し、コードを変更し、実行を再開できるのは、タートルズインザウェイダウンです。これは明らかに、CSでも業界でも、研究者、システムをシミュレートするエンジニア、市場をモデル化するアナリストなどにとって夢の実現です。また、テキストファイルにソースを書き込んでバイナリにコンパイルするという概念がないことも知っています。エディターとランタイムは同じものです。しかし、デバッガーを鼻で噛んだとしても知らず、オブジェクトが何であるか気にできないエンドユーザーにソフトウェアをどのように配信しますか?これらの機能をすべてオフにして「通常の」ソフトウェアのように動作させる秘密のキーストロークはありましたか?または、Smalltalkソフトウェアは、プログラマーでもある洗練されたユーザーにのみ販売されたのですか?
または、Smalltalkソフトウェアは、プログラマーでもある洗練されたユーザーにのみ販売されたのでしょうか。
いいえ。それは逆です。Smalltalkは、すべてのユーザーが必要を使わなくてもプログラマーになることができるように設計されています。実際、Smalltalkはchildren向けに設計されました。
基本的な考え方は、ユーザーが洗練された機械を使用するために、中学生の大学の教科書の長さについてのマニュアルを読むことです。たとえば、あなたは大工でCNCマシンを購入すると、すぐに使用できるとは思わないでしょうが、その使用方法を学ぶのに何年も必要とは思わないでしょう。おそらく、1万行から1万行ほどのマニュアルを読み、数日から数週間を学ぶでしょう。
ソフトウェアシステムの場合、最終的なマニュアルはソースコードです。したがって、使用可能にするためには、ソフトウェアシステムを100000行以下のコードで構成し、ユーザーがすべてのコードを読み取れるようにする必要があります。 (そして、彼女が理解できるような方法と言語で書かれている必要があります。)それがSmalltalkの目標です。元のSmalltalkシステムはeverything、 "OS "、ハードウェアドライバー、VM、コンパイラー、インタープリター、IDE、デバッガー、エディター、オフィススイート、分散ドキュメント管理システムなど。1970年代には、それは今日、彼らができる最高のことでした。 40年後、より優れた言語が利用可能になり、Alan Kayのチームが現在取り組んでいる代替システムと言語は、同じ機能セットで20000行未満になると予想されています。 (例えば、50 million行を持つWindowsと比較してください。)
それがアイデアでした。そのアイデアがどれだけうまく機能したか、よく…自分で判断してください
現代のSmalltalkは、開発とデプロイメントを区別しようとします。基本的に、いくつかのアプリケーションルートオブジェクトを定義すると、システムはシステム内のすべてのオブジェクト間の接続を追跡し、ルートアプリケーションオブジェクトに直接または間接的に接続されているオブジェクトのみをコピーして、アプリケーションのみを含む合理化されたイメージを残します。それに必要なライブラリとフレームワーク。
通常、実行中のシステムを直接編集するのではなく、変更をシステムへの一連の意味のある変更として保存し、別のシステムで再生できる、ある種のバージョン管理システム(Monticelloなど)を使用します。モジュールシステムとパッケージ管理システムの研究もあり、最近のほとんどのSmalltalkには2つのうち少なくとも1つがあります。
したがって、Smalltalkシステムが展開される方法todayは、最小限の「クリーン」なイメージがあり、CVSチェンジセットを適用するか、その上にパッケージまたはリンクモジュールをインストールすることです。そのアプリケーションだけに特化しています。開発を行う場合は、エディター、コンパイラー、IDEなどを含む開発イメージから始め、その上に同じ変更を適用します。
Smalltalkの後に登場した言語(Self、Newspeakなど)には、コードのテキストシリアル化形式が含まれていることがよくあります(Smalltalk自体はIDEによってプログラムで作成されるため、クラスやメソッドの構文がありません(例:クラスの作成実際には、メソッドが呼び出されたクラスのサブクラスであるクラスを返すいくつかのクラスでsubclass
メソッドを呼び出すだけです。式とステートメントの構文しかありません。)クラスやメソッドをシステムに「ファイルイン」し、最新のSmalltalkにもその機能があります。
Jörgが答えで言及しなかった1つの点:「展開」ステップの後、IDEが取り除かれたか非表示になったため、Smalltalkでアプリケーションが作成されたことを実際に区別することは困難です。たとえば、これらを試してください:
http://scratch.mit.edu/scratch_1.4/
http://www.planet-plopp.com/english/download.html
また、Smalltalkで構築されたさまざまなアプリケーションを見るだけで、そのユーザーは今日のプログラマーではないことがわかります。 https://Twitter.com/hashtag/thingsPeopleBuiltWithSmalltalk
すべてのユーザーがソフトウェアを変更できるようにする必要があるのは、まだ主流になっていないSmalltalkのアイデアです(GUIやオブジェクト指向のように、今日では他の多くのアイデアが一般的ですが)。
クラシックなSmalltalk-80には、TektronixがSystemTracerを使用して、展開するイメージを「ストリップ」していました。
基本的に、グローバルなSystemDictionaryとそのコンテンツを除いて、指定された単一のポイントからシステムの完全なトラバーサルを実行しました。
このようにして、アプリケーション(通常はContollerサブクラス)でSystemTracerを実行し、他のすべてをドラッグしますが、アプリケーションの操作に関係のないContextや他のクラスや識別されたオブジェクトなどはドラッグしません。