すべての技術出版物、およびこのサイトでも、人々は常にOO言語と Smalltalk を比較しています。私の経験はJavaで:Smalltalksoそれを研究することが重要ですか?
Smalltalkは最も初期のオブジェクト指向(OO)言語の1つであり( Simula や Eiffel など)、OO sense:
int
s、boolean
sなど)for
、while
、if
など)。不可能に思えますが、それは本当です!また、現在一般的な他のいくつかのものを開拓しました:
また、Smalltalkには主流にならなかった他の要素があります。
JavaコレクションAPIとApache-commonsコレクションAPIはSmalltalkの影響を強く受けていると言っても過言ではありません。
Smalltalk自体を学ぶべきだとは言いませんが、これらの機能の基礎に精通している(現在は他の多くの言語で提供されています)があなたにとって確実に有利です。
現在、 ここには123の質問のみ があり、元々は作成者のAlan Kayが教育言語(つまり、子供向け)として意図していた言語についてです。もはやあまり使用されていません。それが使われていないと言っているわけではありません。たとえば、JPモルガンには、大規模なエキゾチックなデリバティブのリスク管理システムが記述されています。
Smalltalkには多くの素晴らしい革新があります。今日、私たち全員が当たり前のこととして考えているものは次のとおりです。
今日Smalltalkを学ぶ唯一の最も重要な理由は、極端なプログラミングとスクラムの両方がSmalltalkコミュニティで発明されたということです...そして、Smalltalkで体験する非常にインタラクティブなスタイルのプログラミングは、あなたができることよりもシンプルで、強力で、直接的です= JavaまたはC#またはRuby ...およびSmalltalkで極端なプログラミングを試みるまでアジャイルメソッドがどれだけうまく機能するかを本当に理解することはできません。言語(とにかく主流の言語はありません)には、同等の機能セットがあります。
... SUnitを使用するために必要なTDDを実際に理解するには。 JUnitは、テストが失敗した場所を表示するだけです。 SUnitを使用すると、テストが失敗した時点でデバッガーをクリックして実際のオブジェクトとその接続方法を確認できるため、デバッガーでコードがどのように失敗したかを確認して修正できます。
はい、Smalltalkは非常に重要なので、勉強する必要があります。どうして?オブジェクト指向プログラミングは、純粋で単純な形式で理解できます。人々が忘れているのは、Smalltalk-80「ブルーブック」の言語専用のページが約90ページしかないことです。この言語はとてもシンプルです。他の300ページでは、事前定義されたクラス階層について説明しています。これは、単一継承を使用するクラスベースのオブジェクト指向言語の設計の傑作です。オブジェクトのより深い理解が得られます(たとえば、クラスはオブジェクトであり、メタクラスを持ち、無限に続きます...ただし、結び目はシステムを有限に保つために慎重に結び付けられます)。 JavaまたはC++。Smalltalkは、その歴史だけでなく、そのシンプルさのためにも重要です。
全体言語およびライブラリを理解できるほどシンプル
論理的な極端にプッシュされた1つのアイデア(オブジェクトだけで十分です)を表示します
EverybodyにはSmalltalkから学ぶべきことがあります!
Smalltalkは最初の2つの元の言語の1つであるOOP言語、もう1つはSimula-67です。その結果、2つの大きなファミリがあります。 Java、C#はすべてここに属します)、動的に型指定されたモデルは、Smalltalk(Python、Rubyここに属します)によって開拓されたメッセージパッシングを中心にしています。
今日、Smalltalkはそれ自体は特に重要ではありません-まだ物を書くためにそれを使用している人もいますが、それは間違いなく主流ではありません。ただし、これを学習することにより、どのように、なぜOOP=が進化したかについての洞察が得られます。
私は先月、Smalltalkの歴史と影響についての会議でプレゼンテーションに約5分間費やしました。 Smalltalkを使用した画像ベースの開発 を参照してください。今日のプログラマにとって、より外国的な概念の1つは、「イメージベース」の開発です。 DBMSやスプレッドシートなど、いくつかの良い例えがあります。
はい。 海辺のワンクリック画像 をダウンロードし、 James Foster のチュートリアルで使用を開始すると、少なくとも以下を学習できます。
Smalltalkは最初のものの1つであるだけでなく、今日でもOO言語設計。原始的なオブジェクト指向であり、古き良きSmalltalkよりも制限があります。Smalltalkは、普及したファーストクラスオブジェクト、ランタイムイントロスペクションの優れたサポート、ダックタイピングの非常に自然な使用、および非機能的な言語で見たよりもうまく機能しました。つまり、ネイティブ制御構造(if、whileなど)を持たないが、シームレスに機能する方法でオブジェクトシステムからそれらを作成できる言語について話しているということです。
最近の集中的なデスクトップアプリの開発にはSmalltalkをお勧めしません(実行可能な実装IMOではありません)が、もしOOアプリで使用できるいくつかのアイデアがあれば、Smalltalkは最適な場所です。
私は他の人に同意します。 important自体かどうかはわかりませんが、COOL(imho)です。
私は言語にループや条件がないことを愛しています。 If-then-elseはブールオブジェクトに送信されるメッセージです。タイプTrueのオブジェクトは1つのことを行い、タイプFalseのオブジェクトは別のことを行います。 (はい、True、Falseはブール値のサブタイプであり、それぞれ単一の値、trueおよびfalseです)。
それは一種の反直感的なものから始まりますが、それはあなたにOOプログラミングがどのように働くべきかについての非常に興味深く、深い見方を与えます...
オブジェクト指向言語を1つしか知らない場合は、オブジェクトを使用したプログラミングについてより広い視野を得るために、2番目、3番目、4番目の学習を検討する必要があります。 Smalltalkを学習すると、他の言語(if-then-else、for(;;)、while()など)で慣れ親しんでいる概念の多くがSmalltalkにないため、頭が伸びます。明らかに同等のものがありますが、Smalltalkは物事を異なる方法で行い、物事を行うための異なる方法について学ぶことは常に良い考えです。
幸運を。
Smalltalkに興味を持ち始めたばかりです。私の意見では、Smalltalkには特別な魅力的なことがいくつかあります。
これらのいずれも、ソフトウェア開発ビジネスに携わっていない人にとって特に便利なものではありません。私が初めて触れたのは、Smalltalkを使用してPCでプロトタイプ化された組み込みデバイスのユーザーインターフェイスを見たときでした。これにより、ユーザーインターフェイスの修正とテストを非常に迅速に行うことができ、完了すると、組み込み開発者に、どのドキュメントよりもはるかに正確な「実行可能な仕様」が提供されました。過去20年間に旅行で観察したよりもはるかに頻繁にこの手法が使用されているのを見ていないことに驚いています。
Smalltalkをプロトタイピングツールとして使用することが私の興味の対象です。新しい問題があれば、Smalltalk環境でさまざまな解決方法を非常に迅速かつ簡単に試して検証できると思います。実際には、Java/C++/C#などに変換するための機械的なものです。実際、繰り返しの種類の場合は、Smalltalkを使用して、他のターゲット言語でソリューションの一部のコードを生成することができます。
Smalltalkのもう1つの点は、同窓生にケントベックとワードカニンガムが含まれていることです。 Smalltalkでの彼らの仕事は、 自動化されたxUnitテスト 、 ソフトウェア設計パターン 、 CRCカード 、およびXP/Agileなどに組み込まれた他のプラクティスを生み出しました。 Smalltalkは、現代のプログラミング環境に大きく貢献してきたと言えます。
ほんの2つのコメント:
Smalltalkはオブジェクト指向ではなく、実際のオブジェクトであり、環境内のオブジェクトとメッセージのみです。
Smalltalkは言語ではなく、同じ名前の言語を持つ環境ですが、ここでの「魔法」のほとんどは環境(画像)のおかげです。