web-dev-qa-db-ja.com

Smalltalkを学び始めますか?

私の質問は簡単です!

  1. 時間があれば、Smalltalkを学び始めますか?どうして?何故なの?
  2. Smalltalkをすでに知っていますか?なぜSmalltalkをお勧めしますか?何故なの?

個人的に私はRuby on Railsプログラマーで、とても気に入っています。しかし、さまざまなブログを読んでいる人もいるので、Smalltalkについて考えています。 Ruby "Smalltalk Light"のようなものです。Smalltalkに興味がある2番目の理由は Seaside です。

たぶん誰かが以前に同じ移行をしたことがありますか?

編集:実際、Smalltalk/Seasideについて私が最も興奮したのは、次のWebDevRadioのエピソードです: エピソード52:SeasideのRandal Schwartz(とりわけ)

80

Ruby Smalltalkがお勧めです。IIRCSeasideは、Gemstone/S OODBMSの一部である Gemstone VM、 に移植されています。これには多くの機能があります。 Rubyよりも優れたスレッドサポートであるため、大量のシステムに適したバックエンドです。これは、Rubyを詳しく調べる良い理由かもしれません。

Smalltalkを学ぶ理由:

  • それは本当に、本当に素晴らしいプログラミング環境です。頭を悩ませたら(C++やJavaに慣れている人にとってはカルチャーショックになる傾向があります)、作業に非常に適した環境であることがわかります。私が使用した古いDigitalkのものは、非常に快適なシステムです。古いXPおよびOOの第一人者タイプの多く Kent Beck および Martin Fowler は、その日にSmalltalkで歯を切りました そして、公の場で古き良き時代への憧れを時々聞くことができます (引用のためのFrank Shearerに感謝します、+ 1)-アジャイル開発はこのプラットフォームで始まりました。

  • これは、歴史上最も生産的な開発プラットフォームの1つです。

  • いくつかの成熟した実装が存在し、驚くほど大きなコードベースがあります。ある時点で、開発者の生産性と市場投入までの時間が非常に重要な金融市場のサークルで非常に流行しました。 1990年代半ばまでは、アプリケーション開発に適した商業的にサポートされている高級言語が必要な場合、それは多かれ少なかれ町で唯一のゲームでした(LISPを除く可能性があります)。

  • 展開は簡単です。イメージファイルを適切なディレクトリにドロップするだけです。

  • 本当の理由ではありませんが、 Gang of Four Book は、かなりの数の例でSmalltalkを使用しています。

Smalltalkを学ばない理由:

  • それはニッチ市場のようなものです。あなたは仕事を見つけるのに苦労するかもしれません。ただし、ある種の サーバーを所有している.comアプリケーション を作成している場合、これは問題ではない可能性があります。

  • 多くの人からレガシーシステムと見なされています。プラットフォームでの新しい開発は比較的少ないです(ただし、Seasideは少しルネッサンスを推進しているようです)。

  • 従来のソース管理システムではうまく機能しない傾向があります(少なくとも、私が使用した90年代前半から中期の時点では)。これは、まだ当てはまる場合とそうでない場合があります。

  • それはやや孤立していて、それ自体で遊ぶのが好きです。 PythonまたはRubyはゼロから統合するために構築されており、無差別である傾向があるため、サードパーティソフトウェアとの統合が容易です。ただし 他のさまざまな主流 システムは、多かれ少なかれこのタイプの孤立性に悩まされており、それはそれらの使用をそれほど妨げないようです。

さて、名前でおっしゃっていたので、チャイムを鳴らしたほうがいいと思います。

そのポッドキャストインタビューで言ったように、そしてブログで繰り返し示したように http://MethodsAndMessages.vox.com/ 、これは「Smalltalkの年です」。そして、過去10か月間Smalltalkのアドボカシーを行ってきたので、それが実際に起こっていることがわかります。より多くの顧客がSmalltalkとSeasideに目を向けており、Smalltalkベンダーはすべて、この新しい注目の流入を捉えるために懸命に取り組んでいます。より大規模なSmalltalk会議が計画されています。より多くの求人情報が投稿されています。より多くのブログ投稿が行われています。

今日Smalltalkに目を向けると、あなただけではありません。他にもたくさんの人がいます。

編集

さて、数年後、私は今、代わりに ダート をお勧めします。これはGoogleが考案した優れた言語ですが、現在はECMA委員会が所有しています。これは、node.jsスタイルでサーバーサイドで実行されますが、JavaScriptにトランスパイルすることにより、最新のブラウザーではクライアントサイドでも実行されます。たくさんの良い本、ブログ、ヘルプチャンネル、IDEサポート、 パブリックライブPastebin 。間違いなく足がついていると思います...コースウェアを書くのに十分ですオンサイトまたはオンラインで教えるために、私からの作品には1、2冊の本があると確信しています。また、昔のSmalltalkerであるGilad Brachaがデザインの主要な貢献者であるため、ダートにはSmalltalkがたくさんあります。

45
Randal Schwartz

Smalltalkは学ぶのに良い言語であり、素晴らしいことはそれを行うのに1日しかかからないことです。それは単なる学術言語以上のものです。人々は、数十億ドルを処理する巨大でスケーラブルな複製可能なアプリケーションを構築しています。彼らはそれについてあまり話しません。たとえば、 GemStone and Orient Overseas Container Lines:A Shipping Industry Case Study を参照してください。

SeasideはSmalltalkを学ぶ良い理由ですが、Railsよりも桁違いに優れているとは思いません。

私を納得させたのはGemStoneでした。私はGemstoneのGLASS(GemStone、Linux、Apache、Smalltalk、Seaside)が本当に好きです。そのキラーな部分はGemStoneです。これは、ほとんど何も考えずに、すべてのオブジェクトの永続性を処理します。彼らのデモのいくつかを見て、人々がGemStoneで何をしているのかを聞くと、「大きなアプリケーション」が何を意味するのかという私の考えがリセットされました。

Railsについて最も悩まされているのは、オブジェクトリレーショナルマッピングです。これは、GLORP(ActiveRecordを処理する)と同じくらいひどいので、Rubyに反することはありません。 Smalltalkの場合)、Perl、またはその他。オブジェクトをデータベーステーブルにマッピングするのは面倒です。GemStoneを使用すると、データベースについて考えることがなくなるため、データベースでの作業もなくなります。巨大な石(またはサルの群れ)のようなものです。私の背中から外されています。

28
brian d foy

>腕と脚の両方のコストがかからないSmalltalk開発環境を見つけることができませんでした

Google-無料のSmalltalk

Cincom Smalltalk、Squeak、GNU Smalltalk

15
Isaac Gouy

Smalltalkを学ぶことで、OO(Alan Kay)を発明した人の視点から、オブジェクト指向ソフトウェア開発の基礎を学ぶことができます。重複するウィンドウ環境のアイデアは、Smalltalkから生まれました。

Smalltalkを学ぶ上での障害は、次のようなフロー制御の奇妙な構文を持つメッセージパッシングシステムであるということです。

i < 60
   ifTrue: [ self walk ]

それは私があまり多くの場所を見たことがない一貫性を持っている非常に成熟したクラスライブラリを持っています。すべての環境(商用Smalltalksも含む)のクラスライブラリには、言語のマスターから学ぶことができるソースがあります。 Smalltalkをプログラミングするとき、私はいつもそれが環境でどのように行われるのかという質問をします。

Smalltalkは通常、システム内のすべてのオブジェクトのライブ環境であるイメージに実装されます。

インタラクティブデバッガーは、SmalltalkをRubyから実際に分離します。

SeasideはWeb開発フレームワークであり、Smalltalkに新しいスポットライトを与えました。これは、ヒット内デバッグとスムーズなリッチクライアントタイプの開発エクスペリエンスを可能にする継続ベースの環境です(トップアプリケーションフローは単一の方法で設計できます)。 script.aculo.usとの統合は、Smalltalk内から簡単に呼び出せるように行われています。

15
Kevin Driedger

ナイジェル、私が持っている1つの引用はこれです:

何かをしてから久しぶりですが、Smalltalkを推薦しますが、コンピュータコードに思考を移すことができるという点で、これほど素晴らしいものはまだありません。それは言語だけではありません。それは素晴らしいブラウザ環境、ライブラリ、そして他の何よりも早くスパゲッティを生み出すことができるように明確でよく設計されたコードを書く文化です。 JavaOneの参加者がJavaの生産性が他の何よりもはるかに優れていることを称賛していたとき、私は茶色の紙袋が必要でした。まあ、クラスパスの整理に戻りましょう...- Martin Fowler (ソフトウェア開発マガジン、2001年1月)

私はそれを見つけました ここ

10
Frank Shearar

LISP(Scheme)またはSmalltalkを学ぶことをお勧めします。

Smalltalkには、カルチャーショックを乗り越えたら見逃したくない素晴らしいIDEがあります。はい、無料のものが複数あります:Squeak、Dolphin、Smalltalk/X、およびVisualworks(非商用)。

ただし、LISPは、その数学的な基盤がさらにクリーンになる可能性があります。

よろしく

PS:実際には両方を学ぶことをお勧めします!

9
blabla999

私はRubyを知りません。

Smalltalkは純粋 OO言語です。シミュレートされたOO)だけでなく、OOを本当に理解する必要があると感じた場合人気のある「オブジェクト指向」言語(C++、Javaなど)の場合は、Smalltalkで遊ぶことをお勧めします。

Smalltalkでは、すべてがオブジェクトであり、属性、動作、メタがあります。シミュレーションでは、オブジェクトで使用するデータ型があります。

私はそれで遊ぶと言うでしょう、あなたは利益を得るだけです。

8
slashmais

Smalltalkを大規模なアプリには使用しないと考えているポスターには同意しません。まさにそれが輝いています。しかし、私も1週間足らずでかなりグルーヴィーな(小文字に注意)プロトタイプアプリを作成しました。

私は92年からSTでOOを学びました、信じられないほど嬉しかったです。それは私にOOの本当の背景を与えてくれました。クラスで考えています。タイプはありません。STはメッセージングに本当に重点を置いています。何かがオブジェクトにメッセージを送信して答えを得るのを知りたい。私見、精神、そしてIDEは、あなたがあなたの結合と結束で正しいことをすることを本当に奨励します。

私のJava日の仕事では、ファイル、ジェネリック、EclipseのようなIDEで、どのSTIDEよりも生産性が桁違いに低くなっています。開発を終えたときだけSTを使用していました。実際、それは非常に生産的であり、再利用が多すぎたため、何もすることがなかったため、別のプロジェクトに移動する必要がありました!(わかりました、見積もりの​​学習に時間を費やすことができたかもしれません...)

きしむ音をダウンロードし、良い本を見つけて遊んでください。唯一の欠点は、1日のギグでJavaまたはC#を使用している場合、STを使用できることを望んでいることです。早く帰宅するでしょう。

クリスブルックス

8
Chris Brooks

私は完全にあなたの立場にあります。 RoRを使用して、Smalltalkの土地を調べています。ここに私が重要だと思ういくつかの賛否両論があります:

長所:

  • 成熟した安定した環境
  • 迅速な開発サイクル
  • あなたがより多くを考え、より少なく書くようにします

短所:

  • 別の考え方が必要
  • まだそれを完全に把握していませんでした

Smalltalkについて知ったのはとてもおかしいです。 LISPやEr​​langのものを検索するときにGoogleの結果にポップアップし続けるのはこれでした。ある日、私はそれをチェックして、素敵なウィンドウズ環境に驚いていました。しばらくして、Aida/Webフレームワークを見つけました。私は夢中になり、このフレームワークを使用したWeb開発を通じてSmalltalkを学び始めました。

まだまだそこにはありませんが、とても面白いので、じっと座っていられません... :-)また楽しんでいます。

7
Damir Horvat

時間があれば学び始めませんでした。何故なの? C#やJavaを学ぶ方が、経済的に生産的で儲かるからです。

一方、あなたの愛好家で、考古学の発掘調査を行いたい場合は、Alan Kayを調査して、Smalltalkの内容、時期、理由、方法を確認することをお勧めします。魅力的な物語と信じられないほどの人(結局のところ、彼はチューリング賞を受賞しました)。それから多分少しきしむ音で遊んで言語の感覚を得てください。この後、ブロック、クロージャ、およびオブジェクト指向の原則を尊重/理解することができます。

私はSmalltalkを知っていて使用していますが、約15年間使用していますが、まだmaintainingであり、Smalltalkを友人に勧めません。何故なの?雇用は、持ち続けていくのは良いことです。 Smalltalkから多くのことを学ぶことができますが、それをこの時代に有利に雇用されるように簡単に変えることはできません。

また、あなたはシーサイドに興奮しているようで、シーサイドとジェムストーンのパートナーシップを想定しています。私はかなり長い間GemStoneを使用してきましたが、この2つを組み合わせると非常に魅力的です。彼らが成功するために必要な市場シェアと勢いを得られることを願っています。

5
daduffer
4
Alan Lovejoy

しないでください!あなたが本当にそれを学び始めたら、あなたはもう他の何かでプログラムしたくないかもしれません。

あなたがLISPプログラマーなら、これは真実ではないかもしれません。

4
Richard Durr

絶対に、Smalltalkを学んでください!これは2015年であり、 Pharo のおかげで、Smalltalkは再び増加しています。ファロは無料です。 Pharoは、強力なエンタープライズツールに急速に進化しています。バージョン4.0では、まもなく5.0になり、わずか4年で大幅に成熟しました。

次に、 Amber があります。これは、Web用のSmalltalkです。また、無料で急速に進化しています。

Smalltalkの評判 にもかかわらず、これはあなたのお父さんのSmalltalkではありません。現代のSmalltalkは刺激的で有望です。

Smalltalkの仕事は(まだ)豊富ではないのは事実です。しかし、十分な数の人がSmalltalkerの新しい波に集まると、業界はそれに適応し、ビジネスでSmalltalkが広く採用されるようになります。問題は、あなたにはビジョンがありますか?

3
Richard Eng

私は、最初の大学院レベルのオブジェクト指向プログラミングコース(1988年頃)の1つでSmalltalkを教えられました。先生は、よりトレンディなものに移る前に、「純粋な」OO言語)から始めるのが最善だと考えました(学期の終わりに少しC++を行いました)。

その基準では、純粋なOOから始めるのが最善ですが、最近はJava&C#であり、どちらも「ほぼ純粋」ですOO -それらの非OO機能を無視し、言語のPure-OOサブセットに制限することで取得できる十分に近い。

3
James Curran

私はソフトウェアエンジニアを数年務めています。人々がSmalltalkを何度か取り上げていると聞いていますが、確かにSmalltalkは1980年頃から存在していますが、ソフトウェアの主流になったとは思えない言語の1つです。 Objective C、CLIPS、PL/Iなどのようなものです。聞いたことがあるかもしれませんが、ほとんどの人がプログラムしたことのないものです。

特定の仕事をする必要がない限り、Smalltalkを学ぶのに時間がかからないでしょう。数年前にいくつかのSmalltalkチュートリアルと例を簡単に見てみましたが、OOプログラミング(メッセージの概念がかっこいいようです)の特定の側面にいくつかの明らかな利点があるようです。しかし悲しいことに、それは主流ではなく、あまり勢いを増していないようです。

3
Ogre Psalm33

エクストリームプログラミング(さらにはスクラム)をよりよく理解したい場合は、はいと言います。

せっかちな理由JavaプログラマーはSmalltalkを学ぶ必要があります:

http://www.dafydd.net/archive/2010/why-Smalltalk-isnt-just-another-language/

3
Dafydd Rees

1)はい!言語を学ぶことは常に良いことです。言語を学ぶ場合は、簡単かつ迅速に学ぶことができる強力で影響力のある言語にします。

Smalltalkは、OOの概念を学習するための、卓越した言語と環境であり続けます。

それはすべてのオブジェクトであり、ずっと下にあります。これにより、作業に対する非常に一貫したアプローチが可能になります。

整数は、クラス整数のインスタンスです。文字列は文字オブジェクトのコレクションです。クラスは、それらが定義するクラスのシングルトンインスタンスオブジェクトです。

制御構造は、クラスブールのインスタンスにgetメッセージを送信することによって機能します。

匿名メソッド(コードのブロック、別名ブロック)でさえオブジェクトです。

すべては、オブジェクトにメッセージを送信することによって行われます。構文ははがきに収めることができます。

Smalltalkでの概念とその実装の明確さは、Java、RubyおよびC#に直接転送する考え方を開発できることを意味します。Pythonにも当てはまると思います。

英国の主要大学がSmalltalkを使用して、オブジェクト指向コンピューティングで年間5,000人をトレーニングしたことは、概念を明確にするのに非常に役立ちます。

Squeak5がリリースされました。プログレッシブガベージコレクションを備えた新しいCog/Spur VMにより、パフォーマンスが大幅に向上しました。

Pharo 4には、すっきりとしたデスクトップテーマがあります。次のバージョンであるPharo5はまもなくリリースされます。 Cog/Spur VMの使用に移行し、リリースには約5,000のクラスがあり、クラスの追加パッケージは、構成ブラウザーツールを介してネットから簡単に入手できます。

Squeak 5は、第1世代のRaspberry Piでもパフォーマンスが高く、新しい5ドルのRaspberry Piゼロではほぼ50%高速です。 99ドルで、Raspberry Pi 2、画面、ケースを購入できます。成熟した、完全な機能を備えたIDEを実行できます。

最先端の研究は、Smalltalkの調整された分散型OOシステム(NaiadやSpoonなど)で行われています。

世界最大の企業データベースのいくつかはSmalltalkで実行されています。これには、世界の輸送用コンテナの60%の追跡や、世界最大の銀行の取引システムが含まれます。

Smalltalkを一種の超強力なCoffeeScriptとして使用し、 Amber Smalltalk で記述し、JavaScriptに変換して、ブラウザーで実行できます。

Squeak、Pharo、およびAmberはすべて、無料のオープンソースのオープンライセンス言語および環境です。

SqueakとPharoは、MacOS、Windows、およびLinux用のwrite-once、runwhere機能を提供します。 (おそらくRiscOSも)。

Dolphin Smalltalkは、ネイティブのWindowsルックアンドフィールをしっかりとターゲットにしており、完成した作業の閉じた.exeをコンパイルして、エンドユーザーに配布できます。ベンダーによるDolphinのさらなる開発は停止しましたが、完全に機能しており、すべてのSmalltalkと同様に、大幅に拡張できるように設計されています。 (PharoにはSqueakの3,000と比較して、現在5,000のクラスがあることを述べましたか?PharoはSqueak 3.9のフォークです)

** Squeak、Amber、Pharo、Cuis、Dolphinをインストールして起動するためのハウツーガイドがあります:** http://beginningtosmalltalk.blogspot.co.uk/2015/11/how-to- get-Smalltalk-up-and-running.html

SeasideWebフレームワークはSqueakとPharoで実行されます。より伝統的なAidaWebフレームワークと同様に、これは素晴らしい成熟したツールです。

VisualAge、VisualWorks、Gemstoneはすべて、エンタープライズグレードの堅牢なシステムを提供します。 Gemstoneは、トランザクションと永続性を備えた無限にスケーラブルなオブジェクトデータベースを提供します。

2)はい-私はすでにそれを使用しています。

私はオープン大学でそれを学び、Ruby(Pickaxeの本のコピーと私の側のライブラリリファレンス)ですぐに生産的になりました。それはJavaとXeroxMooで非常に役立ちました。 -コード。

レスポンシブで大規模なマルチプラットフォームモバイルアプリの管理と配布を制御するアプリを作成するために戻ってきました。

間もなく、Amberを使用してJavaScriptモバイルアプリを書き直すことになると思います。

2
Euan M

このスレッドは私にとって非常に現実的なものになりました。ソフトウェアをWebアプリケーションに移行することを計画しています。これはデータベースベースのソフトウェアです。私は特に選択肢をチェックしています1)Rails 2)Seaside

Gemstone/Sの数値をデータベースとして取得できれば、それも検討します。つまり、私にとっては、以前よりもSmalltalkを(よりよく)学ばなければならないということです。それは今後15年間の私の仕事になるかもしれないからです。あなたはそんなに長く好きではないソフトウェアで作業するでしょう(そしてすべきではありません);-)。 Gemstone/Sは「キラー」アプリケーションの1つであるという印象を持っています。しかし、オブジェクトの永続性は依然として非常に難しい分野です。

2
Friedrich

私はあなたが何を探しているのか本当にわかりません。

書くための別の言語を探しているなら、それは利用可能なライブラリに大きく依存すると思います。 RubyもSmalltalkも知らないが、RailsでRubyを書く最も効率的な方法は、Smalltalkではないかもしれない。

Rubyの背後にあるアイデアを学びたいのであれば、これは非常に良い動きかもしれません。定量的なものは何もありませんが、ツールだけでなく、その背後にあるアイデアやその仕組みを理解していれば、ツール(言語システムなど)の使用について常に気分が良くなりました。

さまざまな種類のオブジェクト指向言語を学びたい場合は、Smalltalk(Rubyと大幅に異なる場合)、JavaまたはC++、またはおそらくCommon LISP)を学びたいと思うかもしれません。オブジェクトシステム。

何か違うことを学びたいだけなら、Smalltalkが良い選択かもしれません。私はCommonLISPも提案したいと思います、そして他の人々は間違いなく他の提案をするでしょう(あなたは最近良いForthシステムを手に入れることができますか?)。

1
David Thornley