2008-09-29 69 views
75

我的問題很簡單!你會開始學習Smalltalk嗎?

  1. 如果您有時間,您會開始學習Smalltalk嗎?爲什麼?爲什麼不?
  2. 你已經知道Smalltalk了嗎?你爲什麼會推薦Smalltalk?爲什麼不?

個人而言,我是一個Ruby on Rails的程序員,我真的很喜歡它。但是,我在思考Smalltalk,因爲我讀了各種博客,有些人稱Ruby爲「Smalltalk Light」。我對Smalltalk感興趣的第二個原因是Seaside

也許有人已經做過相同的過渡?

編輯:其實,讓我最興奮的Smalltalk /海濱是WebDevRadio在以下情節:Episode 52: Randal Schwartz on Seaside (among other things)

回答

57

如果你喜歡Ruby,你可能會喜歡Smalltalk。 IIRC海濱已被移植到Gemstone VM,,這是其寶石/ S OODBMS的一部分。與Ruby相比,這具有更好的線程支持,因此它對於大批量系統來說是更好的後端。這可能是仔細研究它的一個很好的理由。

理由學Smalltalk:

  • 這是一個非常,非常好的編程環境。一旦你掌握了自己的想法(對於習慣C++或Java的人來說,這往往會帶來文化上的衝擊),你會發現它是一個非常好的工作環境。即使是一個非常糟糕的小工具,比如我使用的舊Digitalk是一個非常令人愉快的系統使用。許多舊的XP和O-O大師類型,例如Kent BeckMartin Fowler在當天減少了對Smalltalk的支持and can occasionally be heard yearning for the good old days in public(感謝Frank Shearer的引用,+1) - 敏捷開發源於此平臺。

  • 它是歷史上最有生產力的開發平臺之一。

  • 存在幾個成熟的實現,並且存在一個令人驚訝的大代碼庫。在金融市場上,開發人員的生產力和上市時間相當重要,這一點在金融市場上頗爲流行。直到20世紀90年代中期,如果你想要一個適合應用程序開發的商業支持的高級語言,它或多或少是城市中唯一的遊戲(有可能是LISP的例外)。

  • 部署很簡單 - 只需將圖像文件放在適當的目錄中即可。

  • 不是一個真正的原因,但Gang of Four Book使用Smalltalk的一些例子。

理由不學Smalltalk:

  • 這是一個利基市場的東西。您可能無法找到工作。但是,如果您正在生產某種.com application where you own the servers,這可能不是問題。

  • 它被許多人視爲遺留系統。該平臺上的新開發項目相對較少(儘管Seaside似乎正在推動一些復興)。

  • 它往往不能很好地與傳統的源代碼管理系統(至少在90年代初,當我使用它時)發揮作用。這可能會也可能不會。

  • 它有點孤獨,喜歡自己玩。 Python或Ruby是爲了從頭開始集成而構建的,並且更容易混淆,因此更容易與第三方軟件集成。然而,系統在某種程度上受到這種類型的偏見影響,並且似乎並不妨礙它們的使用。

3

我被教的Smalltalk中的第一個研究生院級面向對象的程序設計課程之一(大約1988)。老師認爲在開始學習更流行的一門課之前(我們在學期末做了一些C++),最好開始使用「純」的OO語言。

按照這個衡量標準,最好還是從純OO開始,儘管這些日子我們都有C#,它們都是「接近純」的OO - 足夠接近以至於你可以忽略非OO他們的特點,並限制你自己的PureOO子集的語言。

-5

是的,我對它感興趣。試圖開始一次,但無法找到一個不花費雙臂和一條腿的Smalltalk開發環境。

+1

Squeak(來自http://squeak.org)是基於原始Smalltalk-80映像的免費開源實現。 – 2008-09-29 15:14:28

+0

VisualWorks現在也作爲freebit提供。你可以從http://www.cincomsmalltalk.com/ – ConcernedOfTunbridgeWells 2008-10-08 12:33:25

+1

得到它Pharo ..它的自由和酷。 – RubyDev 2012-06-27 01:45:39

8

我不知道紅寶石..

Smalltalk是一個純OO語言。如果你覺得需要真正理解OO,而不僅僅是最流行的'OO'語言(比如C++,Java等)的模擬OO,那麼我會建議你使用smalltalk。

在smalltalk中,一切都是一個對象,具有屬性,行爲和元。在模擬中,您具有在對象中使用的數據類型。

我會說玩它,你只會受益。

+1

在SmallTalk中,即使「類」也是對象,類的實例類!!!這讓我瘋狂,直到我爲之歡呼! – 2008-09-29 20:43:25

+1

即使類是對象,Ruby也是一種純粹的OO語言。那麼塊,方法和空指針的引用也是如此。 – Alan 2008-10-01 03:20:08

+4

Ruby需要(Matz會自由地陳述這個)來自Smalltalk的許多想法。在許多方面,它可以被看作是「務實」(對Hunt和Thomas的道歉)Smalltalk式的語言。 – ConcernedOfTunbridgeWells 2008-10-01 14:44:56

13

>無法找到一個Smalltalk的開發環境,沒有成本的雙臂和一條腿

谷歌 - 免費的Smalltalk

Cincom公司的Smalltalk,佳樂,GNU Smalltalk的

+0

Squeak真的很棒!純OOP,完全圖形,可愛的用戶界面,開源(對此有些不同意),或多或少的便攜式... – 2008-09-29 20:38:16

+1

Squeak的+1,它有一個很好的社區,爲初學者提供了一個不錯的郵件列表。 – 2008-09-30 14:47:35

+0

+1對於Squeak來說,對象瀏覽器(或者其他所謂的對象)對於學習對象模型如何工作是非常寶貴的。 – 2008-12-07 04:09:11

15

學習Smalltalk將從發明面向對象(Alan Kay)的角度爲您提供面向對象軟件開發的基礎。重疊窗口環境的想法來自於Smalltalk。

絆腳石學習Smalltalk的是,它是一個消息傳遞系統,一個奇怪的語法進行流量控制,如:

i < 60 
    ifTrue: [ self walk ] 

它具有一致性非常成熟的類庫,我從來沒見過太多的地方。所有環境下的班級圖書館(甚至是商業的Smalltalks)都有可用的資源,可以讓你從這門語言的大師那裏學習。在編寫Smalltalk時,我總是問這個問題在環境中是如何完成的。

Smalltalk通常在圖像中實現,該圖像是系統中所有對象的實時環境。

交互式調試器真正將Ruby與Smalltalk分離開來。

Seaside是Web開發框架,並給Smalltalk一個新的聚光燈。它是一個基於延續的環境,可以進行命中內部調試並提供流暢的Rich Client類型開發體驗(頂級應用程序流可以用單一方法設計)。它與script.aculo.us的集成已經完成,可以在Smalltalk中輕鬆調用。

+1

語法並不奇怪 - 它實際上非常優雅。它必須被理解爲:嘿,無論你的結果是「我<60」,這裏是一段代碼(代碼對象作爲參數傳遞),如果你認爲你是真的,那麼就要評估它。有趣的是,如果「我<60」返回模糊統計thingy,甚至可以工作。 – blabla999 2009-01-16 12:30:55

3

我一直是一個軟件工程師,現在已經有好幾年了。我聽說有人曾經提過幾次Smalltalk,毫無疑問,自從1980年以來Smalltalk就已經存在了,但它是那些似乎沒有成爲軟件主流的語言之一。有點像目標C,CLIPS,PL/I等 - 你可能聽說過,但大多數人從未編程過的東西。

我可能不會花時間學習Smalltalk,除非我需要去找一份特定的工作。幾年前我簡要介紹了一些Smalltalk教程和示例,看起來它對面向對象編程的某些方面有一些明顯的優勢(如消息概念看起來很酷)。但令人遺憾的是,這不是主流,似乎也沒有獲得太多的動力。

1

我真的不知道你在找什麼。

如果你正在尋找一種不同的語言來寫入,我認爲這將在很大程度上取決於可用的庫。我既不認識Ruby,也不認識Smalltalk,但似乎有可能最有效的方式來編寫Ruby on Rails - 各種應用程序可能不是Smalltalk。

如果您想了解Ruby背後的想法,這可能是一個非常好的舉措。我沒有任何量化的東西,但是如果我知道的不僅僅是工具,如果我知道背後的想法或他們的工作方式,我總是會感覺更好地使用工具(比如語言系統)。

如果你想學習不同種類的面嚮對象語言,你可能很想學習Smalltalk(如果它與Ruby顯着不同),比如Java或C++,也可能是Common Lisp對象系統。

如果你只是想了解不同的東西,Smalltalk可能是一個不錯的選擇。我還建議使用Common Lisp,其他人無疑還會提出其他建議(你現在可以獲得一個好的Forth系統嗎?)。

42

好吧,既然你點名提到我,我覺得我應該插入內容。

當我在播客採訪時說,和我在我的博客http://MethodsAndMessages.vox.com/反覆論證,這是「 smalltalk年「。在過去的十個月中,我已經完成了Smalltalk的倡導,我可以看到它確實發生了。越來越多的客戶轉向Smalltalk和Seaside,而Smalltalk供應商都在努力捕捉這種新的關注。正在計劃更大的Smalltalk會議。更多招聘信息正在發佈。正在撰寫更多博客文章。

如果你今天轉向Smalltalk,你並不孤單。還有很多其他人也在那裏。

編輯

好,若干年後,我所推薦的替代Dart。這是Google發起的偉大語言,但現在由ECMA委員會擁有。它以node.js風格運行serverside,而且在現代瀏覽器中也可以通過轉換爲JavaScript來運行客戶端。很多好書,博客,幫助頻道,IDE支持,public live pastebin。我認爲它肯定有腿......足夠讓我編寫課件在現場或在線教學,而且我很確定我的作品中有一兩本書。而老式的Smalltalker Gilad Bracha是該設計的主要貢獻者,所以Dart中有很多Smalltalk。

26

Smalltalk是一門很好的學習語言,重要的是它只需要一天的時間就可以完成。這不僅僅是一門學術語言。人們正在構建處理數十億美元的巨大的,可擴展的,可複製的應用程序。他們只是不談論它。例如參見GemStone and Orient Overseas Container Lines: A Shipping Industry Case Study

海邊是學習Smalltalk的好理由,但我認爲你會發現它比Rails好幾個數量級。

說服我的是寶石。我非常喜歡Gemstone的GLASS(GemStone,Linux,Apache,Smalltalk,Seaside)。它的殺手部分是GemStone,它可以爲你處理所有的對象持久化,而不用考慮它。看到他們的一些演示,並聽說人們正在與GemStone做什麼重置我的想法是什麼「大應用」意味着什麼。

使我對Rails瞭解最多的部分是對象關係映射。對於Ruby來說,這沒什麼不同,因爲它在GLORP(處理ActiveRecord for Smalltalk)或Perl或其他任何方面都很難。將對象映射到數據庫表非常痛苦。有了GemStone,關於數據庫的想法就消失了,所以數據庫的工作也消失了。這就像一塊巨大的石頭(或一羣猴子)從我背上脫下。

9

奈傑爾,一個報價我已經是這樣的:

雖然它現在是因爲我做了什麼與它很長一段時間,我提名Smalltalk中,我還沒有跨越東西來很喜歡它能夠傳遞思想融入計算機代碼。這不僅僅是語言:它是美妙的瀏覽器環境,圖書館,以及像任何其他事物一樣快速寫出清晰,設計良好的代碼的文化,可以啓動意大利麪條。當JavaOne的參與者讚美Java如何比其他產品更有效率時,我需要一個牛皮紙袋。哦,回到整理我的課程路線... - Martin Fowler(軟件開發雜誌,2001年1月)

我發現它here

8

不同意那些認爲你不會在大型應用中使用Smalltalk的海報 - 這正是它閃耀的地方。但是我也在一週內創建了相當常規的(小寫)原型應用程序。

我從92年開始學習了ST的OO,非常高興我這麼做了。它給了我一個OO的真實背景。在課堂上思考。沒有類型。 ST非常重視消息傳遞。如果你想知道某件事物發送消息並獲得答案。恕我直言,理念和IDE真的鼓勵你用你的耦合和凝聚力做正確的事情。

在我的Java日常工作中,我遇到了類似於eclipse的文件,泛型,IDE的問題,這些問題比任何ST IDE的生產力都要低。我只有在我提前完成開發時才使用ST。事實上,它的效率非常高,而且我們得到如此多的重用,所以我不得不將其移交給另一個項目,因爲我無事可做! (好吧,也許我可以花時間學習估計...)

下載吱吱聲,找到一本好書並玩。唯一的缺點是,如果你的日常演出使用Java或C#,你最終會希望你可以使用ST。你早點回家。

克里斯·布魯克斯

5

豈不開始學習它,如果我有時間。爲什麼不?因爲在學習C#或Java的時候,在財務上會更有生產力和更有利可圖。另一方面,如果你是一個業餘愛好者,並希望繼續考古挖掘,那麼我建議花一些時間通過研究艾倫凱來看看什麼,什麼時候,爲什麼以及如何通過smalltalk。迷人的故事和一個令人難以置信的人(畢竟,他贏得了轉向獎)。然後,也許可以用吱吱聲稍微玩一下,以獲得對語言的感覺。在此之後,您可能會有新發現的對塊,封閉和麪向對象原則的尊重/理解。

我知道並使用Smalltalk,大概有15年了,仍然保持吧,不會推薦Smalltalk給朋友。爲什麼不?就業是一件好事,並且不斷得到。儘管你可以從Smalltalk學到很多東西,但是你不能輕易地將它變成在這個時代有用的工作。

此外,你似乎對Seaside感到興奮,我會承擔Seaside/GemStone的合作關係。我已經使用了GemStone很長一段時間,兩者在一起非常吸引人。我希望他們能夠獲得成功所需的市場份額和動力。

8

我推薦大家學習Lisp(Scheme)或Smalltalk。

Smalltalks擁有美妙的IDE,你不想錯過一次你的文化衝擊。是的,有不止一個免費的:Squeak,Dolphin,Smalltalk/X和Visualworks(非Comercial)。儘管如此,Lisp在其數學基礎上甚至可能更乾淨。

關於

PS:其實我建議同時學習!

7

我完全在你的鞋子裏。我正在使用RoR並調查Smalltalk的土地。下面是一些優點&缺點,我覺得重要的是:

優點:

  • 成熟&穩定的環境
  • 快速開發週期
  • 讓你覺得越來越少寫

缺點:

  • 需要不同的思維
  • 仍沒有十分把握它

這很有趣,我是怎麼知道的Smalltalk。當搜索Lisp和Erlang的東西時,這是一件事情,它在Google搜索結果中彈出。有一天,我檢查了它,並驚歎於良好的Windows環境。幾分鐘後,我找到了Aida/Web框架。我迷上了這個框架並開始通過web開發學習Smalltalk。

儘管如此,但它是如此有趣,我只是不能靜坐...... :-)我又開心了。

2

此帖已變得很實際了我。我正在計劃將軟件遷移到網絡應用程序。這是一個基於數據庫的軟件。我特別檢查的替代品 1)Rails 2)海邊

如果我可以得到寶石/ S數據庫的數據,我會考慮這一點。對我來說,這意味着我必須學習Smalltalk(比以前更好)。因爲這可能是我未來15年的工作。你會(也不應該)用你不喜歡的軟件工作那麼久;-)。我有印象寶石/ S是「殺手級」應用程序之一。但對象的持久性仍然是一個非常困難的領域....

4

不要!如果你真的開始學習它,你可能不想再編程其他的東西了。

這可能不是真的,如果你是一個lisp程序員。

3

當然,學Smalltalk!這是2015年,Smalltalk再次上漲,這要感謝Pharo。 Pharo是免費的。 Pharo正在迅速發展成爲強大的企業工具。在4.0版本中,很快就會達到5.0,它在短短四年內已經成熟了很多!

然後是Amber,這是Smalltalk的網頁。它也是免費的,並且快速發展。儘管Smalltalk's reputation,這不是你父親的Smalltalk。現代Smalltalk是令人興奮和有前途的。

的確,Smalltalk的工作還不夠豐富。但是如果有足夠的人聚集到Smalltalk的新浪潮,那麼這個行業將適應它,我們將看到更多的業務採用Smalltalk。問題是,你有遠見嗎?

2

1)是的!學習一門語言總是很好的。如果你要學習一門語言,使它成爲一種能夠輕鬆快速學習的強大有影響力的語言。

Smalltalk仍然是學習面向對象概念的卓越語言和環境。

這是所有對象,一路下來。這使得工作非常一致。

整數是類整型的實例。字符串是角色對象的集合。類是它們定義的類的單例實例對象。

控制結構通過將消息發送到布爾類的實例來工作。

即使是匿名方法(代碼塊,又名塊)是對象。

一切都是通過向對象發送消息來完成的。語法可以安裝在明信片上。

概念的清晰性及其在Smalltalk中的實現意味着您可以開發直接轉換爲Java,Ruby和C#的思路。我預計它也適用於Python。

這對於明確概念非常有用,英國的一所大學使用Smalltalk,每年爲面向對象計算培訓5,000人。

Squeak 5剛剛發佈。它的新Cog/Spur虛擬機獲得了主要的性能提升,具有漸進式垃圾收集功能。

Pharo 4有一個可愛乾淨的桌面主題。下一個版本Pharo 5即將發佈。它將轉向使用Cog/Spur虛擬機,它將在發行版中擁有大約5,000個類,並且可以通過配置瀏覽器工具從網上隨時獲得額外的類包。

吱吱聲5即使在第一代樹莓派上也表現出色,而在新的5美元樹莓派零上快5%。 99美元購買了Raspberry Pi 2,屏幕和外殼 - 運行成熟,功能齊全的IDE。

對Smalltalk中協調的分佈式OO系統(例如Naiad和Spoon)正在進行領先的研究。

一些世界上最大的企業數據庫運行在Smalltalk上 - 包括跟蹤世界上60%的集裝箱和世界上最大的銀行的交易系統。

您可以使用Smalltalk作爲一種超級供電的CoffeeScript,編寫Amber Smalltalk並轉換爲JavaScript,在瀏覽器中運行。

Squeak,Pharo和Amber都是免費的,開源的,開放許可的語言和環境。

Squeak和Pharo提供一次寫入,在MacOS,Windows和Linux的任何位置運行。 (也可能是RiscOS)。

Dolphin Smalltalk的目標是穩固本地Windows外觀,並且可以讓您編譯完成的作品封閉的.exes文件,以便分發給最終用戶。供應商對Dolphin的進一步發展已經停止,但它完全實用,並且像所有的Smalltalks一樣,被設計成可以大規模擴展的。 (我提到Pharo現在有5000班,而Squeak的3000班?Pharo是Squeak 3.9的分叉)

**有一個安裝和啓動Squeak,Amber,Pharo,Cuis和Dolphin的操作指南at:** http://beginningtosmalltalk.blogspot.co.uk/2015/11/how-to-get-smalltalk-up-and-running.html

Seaside web框架運行在Squeak和Pharo上。這是一個非常成熟的工具,就像更傳統的AidaWeb框架一樣。

VisualAge,VisualWorks和Gemstone均提供企業級強健系統。寶石提供了一個無限可擴展的對象數據庫,包含事務和持久性。

2)是 - 我已經使用它。

我通過開放大學瞭解到它,並立即在Ruby中生產(Pickaxe書和我的圖書館參考資料的副本)。它對Java和Xerox Moo代碼的幫助非常大。

我剛剛回來編寫應用程序來控制管理和分發敏感的大規模多平臺移動應用程序。

我預計很快我會用Amber重寫我的JavaScript移動應用程序。