ทำไมต้องใช้ Ruby แทน Smalltalk? [ปิด]


121

Ruby กำลังเป็นที่นิยมส่วนใหญ่มาจากอิทธิพลของ Ruby on Rails แต่ตอนนี้รู้สึกเหมือนกำลังดิ้นรนในช่วงวัยรุ่น มีความคล้ายคลึงกันมากมายระหว่าง Ruby และ Smalltalk - maglevเป็นเครื่องพิสูจน์ถึงสิ่งนั้น แม้จะมีไวยากรณ์ที่ผิดปกติมากขึ้น Smalltalk ก็มีความงามเชิงวัตถุของ Ruby ทั้งหมด (ถ้าไม่มากกว่านั้น)

จากสิ่งที่ฉันได้อ่าน Smalltalk ดูเหมือนว่า Ruby จะเอาชนะ:

ดูเหมือนว่า Ruby กำลังคิดค้นล้อใหม่ เหตุใดนักพัฒนา Ruby จึงไม่ใช้ SmallTalk? Ruby ไม่มี Smalltalk อะไร

สำหรับบันทึก: ฉันเป็นคนทับทิมที่ไม่ค่อยมีประสบการณ์ใน Smalltalk แต่ฉันเริ่มสงสัยว่าทำไม


แก้ไข:ผมคิดว่าปัญหาความสะดวกในการเขียนสคริปต์ได้รับการแก้ไขโดยGNU สมอลล์ทอล์ค ตามที่ฉันเข้าใจแล้วสิ่งนี้ช่วยให้คุณสามารถเขียน smalltalk ในไฟล์ข้อความเก่า ๆ ได้และคุณไม่จำเป็นต้องอยู่ใน Smalltalk IDE อีกต่อไป จากนั้นคุณสามารถรันสคริปต์ของคุณด้วย:

gst smalltalk_file

47
เพราะทุกคนยังรอ "Smalltalk on Snails"?
Mark Rushakoff

10
ในทางเทคนิคเรียกว่า 'Seaside' (www.seaside.st) และทำงานได้ค่อนข้างเร็วบน Gemstone VM ซึ่งมีคอมไพเลอร์ JIT นอกจากนี้ยังมีพอร์ตของ Ruby ไปยัง Gemstone VM ที่เรียกว่า Maglev
ConcernedOfTunbridgeWells

3
หลังจากอ่านความคิดเห็นด้านล่างทั้งหมดนี้เป็นแฟนทับทิมมา 5 ปีที่แล้วตอนนี้ฉันอยากเรียนรู้เรื่อง
Smalltalk

1
GNU Smalltalk เกือบจะเป็นการนำไปใช้งานฟรีเพียงอย่างเดียวซึ่งไม่ยากควบคู่ไปกับ GUI ฉันคิดว่านี่ยังคงสำคัญ
eonil

ลิงก์ "การควบคุมแหล่งที่มาแบบกระจาย" ใช้งานไม่ได้
Piovezan

คำตอบ:


88

ฉันเป็น Pythonista มากกว่าผู้ใช้ Ruby แต่สิ่งเดียวกันนี้ก็มีสำหรับ Ruby ด้วยเหตุผลเดียวกัน

  • สถาปัตยกรรมของ Smalltalk นั้นค่อนข้างโดดเด่นในขณะที่ Python และ Ruby ถูกสร้างขึ้นจากพื้นดินเพื่ออำนวยความสะดวกในการรวมเข้าด้วยกัน Smalltalk ไม่เคยได้รับการสนับสนุนแอปพลิเคชันแบบไฮบริดแบบที่ Python และ Ruby มีมาก่อนดังนั้นแนวคิดของ 'smalltalk เป็นภาษาสคริปต์แบบฝัง' จึงไม่เคยเกิดขึ้น

    นอกเหนือจากนั้น Java ไม่ใช่สิ่งที่ง่ายที่สุดในการเชื่อมต่อกับฐานรหัสอื่น ๆ (JNI ค่อนข้างงุ่มง่าม) แต่นั่นก็ไม่ได้หยุดยั้งไม่ให้ได้รับส่วนแบ่งความคิด IMO อาร์กิวเมนต์การเชื่อมต่อมีความสำคัญ - ความง่ายในการฝังไม่ได้ทำร้าย Python - แต่อาร์กิวเมนต์นี้มีน้ำหนักปานกลางเนื่องจากแอปพลิเคชันบางตัวไม่ต้องการความสามารถนี้ นอกจากนี้ Smalltalk รุ่นหลัง ๆ ยังช่วยแก้ปัญหาความโดดเดี่ยว

  • ไลบรารีคลาสของการใช้งาน smalltalk หลักส่วนใหญ่ (VisualWorks, VisualAge ฯลฯ ) มีขนาดใหญ่และมีชื่อเสียงในด้านการเรียนรู้ที่ค่อนข้างชัน ฟังก์ชันหลักส่วนใหญ่ใน Smalltalk ซ่อนอยู่ที่ไหนสักแห่งในไลบรารีชั้นเรียนแม้กระทั่งสิ่งพื้นฐานเช่นสตรีมและคอลเล็กชัน กระบวนทัศน์ทางภาษายังเป็นสิ่งที่สร้างความตกใจให้กับผู้ที่ไม่คุ้นเคยกับมันและมุมมองของโปรแกรมที่เบราว์เซอร์นำเสนอนั้นค่อนข้างแตกต่างจากที่คนส่วนใหญ่คุ้นเคย

    ผลกระทบโดยรวมคือ Smalltalk มีชื่อเสียง (สมควรได้รับ) เพราะเรียนยาก ต้องใช้เวลาและความพยายามไม่น้อยในการเป็นโปรแกรมเมอร์ Smalltalk ที่เชี่ยวชาญจริงๆ Ruby และ Python นั้นง่ายกว่ามากในการเรียนรู้และนำโปรแกรมเมอร์ใหม่ ๆ มาใช้งานได้อย่างรวดเร็ว

  • ในอดีตที่สำคัญการใช้งานสมอลล์ทอล์คค่อนข้างมีราคาแพงและจำเป็นฮาร์ดแวร์ที่แปลกใหม่ในการทำงานที่สามารถมองเห็นนี้โพสต์ net.lang.st80 จาก 1983 Windows 3.1, NT และ '95 และ OS / 2 เป็นระบบปฏิบัติการในตลาดมวลชนระบบแรกบนฮาร์ดแวร์กระแสหลักที่สามารถรองรับการใช้งาน Smalltalk ด้วยการรวมระบบเนทีฟที่เหมาะสม ก่อนหน้านี้ฮาร์ดแวร์ Mac หรือเวิร์กสเตชันเป็นแพลตฟอร์มที่ถูกที่สุดที่สามารถใช้ Smalltalk ได้อย่างมีประสิทธิภาพ การใช้งานบางอย่าง (โดยเฉพาะ Digitalk) รองรับระบบปฏิบัติการพีซีได้ค่อนข้างดีและประสบความสำเร็จในการดึงดูดบางส่วน

    อย่างไรก็ตาม OS / 2 ไม่เคยประสบความสำเร็จและ Windows ก็ไม่ได้รับการยอมรับในกระแสหลักจนกระทั่งกลางปี ​​1990 น่าเสียดายที่สิ่งนี้เกิดขึ้นพร้อมกับการเพิ่มขึ้นของเว็บในฐานะแพลตฟอร์มและการผลักดันทางการตลาดขนาดใหญ่ที่อยู่เบื้องหลัง Java Java คว้าส่วนแบ่งความคิดส่วนใหญ่ในช่วงหลังของปี 1990 ทำให้ Smalltalk เป็นเรื่องที่วิ่งได้

  • Ruby และ Python ทำงานใน toolchain แบบเดิม ๆ และไม่ได้เชื่อมโยงกับสภาพแวดล้อมการพัฒนาที่เฉพาะเจาะจง ในขณะที่ Smalltalk IDE ที่ฉันใช้นั้นดีพอฉันใช้ PythonWin สำหรับการพัฒนา Python เป็นส่วนใหญ่เนื่องจากมีตัวแก้ไขที่ดีพร้อมการเน้นไวยากรณ์และไม่ได้อยู่ใต้เท้า

    อย่างไรก็ตาม Smalltalk ได้รับการออกแบบมาเพื่อใช้กับ IDE (อันที่จริง Smalltalk เป็น IDE แบบกราฟิกดั้งเดิม) และยังมีคุณสมบัติที่ดีบางอย่างที่ระบบอื่นไม่ได้จำลองแบบ การทดสอบโค้ดด้วยไฮไลต์และ 'แสดงมัน' ยังคงเป็นคุณสมบัติที่ดีมากที่ฉันไม่เคยเห็นใน Python IDE แม้ว่าฉันจะพูดกับ Ruby ไม่ได้

  • Smalltalk เข้าร่วมงานปาร์ตี้บนเว็บแอปพลิเคชันค่อนข้างช้า ความพยายามในช่วงแรก ๆ เช่น VisualWave ไม่เคยประสบความสำเร็จอย่างมากและจนกระทั่งซีไซด์ออกมาว่าเว็บเฟรมเวิร์กที่ดีได้รับการยอมรับในแวดวง Smalltalk ในขณะเดียวกัน Java EE มีวงจรชีวิตการยอมรับที่สมบูรณ์โดยเริ่มจากแฟนบอยที่คลั่งไคล้โปรโมตและในที่สุดก็เบื่อและย้ายไปที่ Ruby; -}

    แดกดันซีไซด์เริ่มได้รับความสนใจเล็กน้อยในกลุ่มคนรับรู้ดังนั้นเราอาจพบว่า Smalltalk ขี่แบบนั้น วนกลับมาสู่ความนิยม

ต้องบอกว่า Smalltalk เป็นระบบที่ดีมากเมื่อคุณได้หาวิธีขับเคลื่อนแล้ว


1
ฉันคิดว่าจุดของห้องสมุดชั้นเรียนอยู่นอกฐาน ฉันรู้ว่าทั้ง Smalltalk และ Ruby และไลบรารีของคลาสนั้นคล้ายกันมาก ปัญหาใด ๆ ที่ฉันมีในการเรียนรู้หนึ่งฉันจะได้เรียนรู้ปัญหาอื่น ๆ การทำทับทิมให้มากขึ้นก่อนทำให้ห้องสมุด Smalltalk เรียนรู้ได้ง่ายขึ้นมาก มีความคล้ายคลึงกันอย่างมากในสถานที่ส่วนใหญ่ ฉันไม่คิดว่าอะไรเกี่ยวกับไลบรารีชั้นเรียนหรือภาษาที่ทำให้ Smalltalk ยากกว่า Ruby
Sean T Allen

2
ทั้ง VW และ VA Smalltalk เคยมีชื่อเสียงในด้านการเรียนรู้ที่สูงชันเนื่องจากขนาดของไลบรารีคลาส สิ่งนี้ได้รับการยอมรับอย่างกว้างขวางในเวลานั้น ฉันได้เรียนรู้ Smalltalk จาก Digitalk Smalltalk / V เวอร์ชัน DOS ซึ่งมีไลบรารีคลาสที่เล็กกว่ามาก คู่มือสำหรับเล่มนั้นมีขนาดใกล้เคียงกับหนังสือ PP Ruby และเช่นเดียวกับหนังสือเล่มนั้นการอ้างอิงห้องสมุดชั้นเรียนมีประมาณครึ่งหนึ่งของจำนวนหน้าทั้งหมด อย่างไรก็ตามไลบรารีคลาสสำหรับ VW และ VA นั้นใหญ่กว่ามาก
ConcernedOfTunbridgeWells

79

เมื่อฉันออกจากบ้านในตอนเช้าเพื่อไปทำงานฉันมักจะต่อสู้กับการตัดสินใจว่าจะเลี้ยวซ้ายหรือขวาออกจากทางขับรถของฉัน (ฉันอาศัยอยู่กลางถนน) ไม่ว่าจะด้วยวิธีใดก็ตามที่จะพาฉันไปสู่จุดหมาย ทางหนึ่งนำฉันไปสู่ทางหลวงซึ่งขึ้นอยู่กับการจราจรอาจพาฉันไปที่สำนักงานได้เร็วที่สุด ฉันขับรถเร็วมากอย่างน้อยก็เป็นส่วนหนึ่งและฉันมีโอกาสที่ดีที่จะได้เห็นสาวสวยคนหนึ่งหรือสองคนกำลังเดินทางไปทำงาน :-)

อีกวิธีหนึ่งช่วยให้ฉันเดินทางไปตามถนนด้านหลังที่มีลมแรงและมีต้นไม้ปกคลุม เส้นทางนั้นค่อนข้างสนุกและทั้งสองวิธีนี้สนุกกว่าแน่นอนแม้ว่าจะหมายความว่าฉันจะไปถึงสำนักงานช้ากว่าที่ฉันเคยไปทางหลวง แต่ละทางมีข้อดีของมัน ในวันที่ฉันเร่งรีบมากฉันมักจะใช้ทางหลวงแม้ว่าฉันอาจจะต้องเจอกับการจราจรก็ตามและฉันยังเพิ่มโอกาสที่จะเกิดอุบัติเหตุได้อีกด้วย (หากฉันไม่ระมัดระวังในความเร่งรีบ) วันอื่น ๆ ฉันอาจเลือกเส้นทางที่เป็นป่าและขับรถไปเรื่อย ๆ เพลิดเพลินกับทิวทัศน์และรู้ว่าฉันกำลังวิ่งช้า ฉันอาจพยายามเร่งความเร็วเพิ่มโอกาสในการได้ตั๋วหรือทำให้เกิดอุบัติเหตุด้วยตัวเอง

ไม่มีทางใดดีไปกว่าอีกทางหนึ่ง พวกเขาแต่ละคนมีประโยชน์และความเสี่ยงและแต่ละคนจะพาฉันไปสู่เป้าหมายของฉัน


5
ถนนสายใดเป็นรัฐและถนนด้านหลังที่มีลมแรงซึ่งมีต้นไม้ปกคลุม? lol
Charlie Flowers

9
Charlie: นั่นคือสิ่งที่ทำให้มันเป็นเซน :)
xofz

32
และภาษาใดที่สาว ๆ สวยกว่า?
The Tin Man

25

ฉันคิดว่าคำถามของคุณค่อนข้างขาดประเด็น คุณไม่ควรเลือกคุณควรเรียนรู้ทั้งคู่!

หากคุณอยู่ในตำแหน่งที่คุณสามารถเลือกเฟรมเวิร์กถัดไปได้ (vm, โครงสร้างพื้นฐาน) คุณต้องตัดสินใจว่าจะใช้อะไรและสามารถถามคำถามเฉพาะพร้อมข้อดีข้อเสียจากมุมมองของสิ่งที่แอปพลิเคชันของคุณตั้งใจจะทำ

ฉันใช้ smalltalk (รักมัน) และทับทิม (รักมัน)

ที่บ้านหรือสำหรับโครงการโอเพ่นซอร์สฉันสามารถใช้ทุกภาษาที่ฉันชอบ แต่เมื่อทำงานฉันต้องนำมาใช้

ฉันเริ่มใช้ Ruby (ในที่ทำงาน) เพราะเราต้องการภาษาสคริปต์ที่ทำงานได้อย่างเท่าเทียมกันมากขึ้นหรือน้อยลงภายใต้ solaris, linux และ windows (98,2000, xp) ตอนนั้นรูบี้ไม่รู้จักค่าเฉลี่ยโจและไม่มีรางใด ๆ แต่มันเป็นเรื่องง่ายที่จะขายให้กับทุกคนที่เกี่ยวข้อง

(ทำไมไม่หลามล่ะความจริงฉันใช้เวลาหนึ่งสัปดาห์ในการตามล่าหาจุดบกพร่องที่เกิดขึ้นเมื่อเครื่องเทอร์มินัลแปลงพื้นที่ของฉันเป็นแท็บและสิ่งที่ตั้งใจทำก็สับสน)

ผู้คนจึงเริ่มเขียนโค้ดทับทิมกันมากขึ้นเพราะมันดูผ่อนคลายเพลิดเพลินและไม่ใช่เมฆบนท้องฟ้า

Paul Graham สรุปไว้

เป็นเรื่องจริงที่คนส่วนใหญ่ไม่ได้เลือกภาษาการเขียนโปรแกรมโดยพิจารณาจากข้อดีของตน โปรแกรมเมอร์ส่วนใหญ่ได้รับแจ้งว่าจะใช้ภาษาอะไรจากคนอื่น

และ

เพื่อให้เป็นที่สนใจของแฮกเกอร์ภาษาจะต้องดีสำหรับการเขียนโปรแกรมประเภทที่พวกเขาต้องการเขียน และนั่นหมายความว่าอาจเป็นเรื่องน่าแปลกใจที่การเขียนโปรแกรมแบบใช้ประโยชน์ได้จะต้องดี

และเมื่อใดที่อยู่ในดินแดน Lisp พยายามแทนที่ LISP ด้วย smalltalk

ห้องสมุดชุมชนและโมเมนตัมของรูบี้เป็นสิ่งที่ดี

ดังนั้นถ้า LISP ยังคงมีประสิทธิภาพมากกว่า Ruby ทำไมไม่ใช้ LISP ล่ะ? การคัดค้านทั่วไปในการเขียนโปรแกรมใน LISP คือ:

  1. มีห้องสมุดไม่เพียงพอ
  2. เราไม่สามารถจ้างโปรแกรมเมอร์ LISP
  3. LISP ไม่มีที่ไหนเลยในช่วง 20 ปีที่ผ่านมา

สิ่งเหล่านี้ไม่ใช่การคัดค้านอย่างท่วมท้น แต่ก็คุ้มค่าที่จะพิจารณา

และ

ตอนนี้มีตัวเลือกให้เลือกระหว่างภาษาที่มีประสิทธิภาพและภาษายอดนิยมการเลือกภาษาที่ทรงพลังอาจเหมาะสมอย่างยิ่ง แต่ถ้าความแตกต่างในด้านอำนาจน้อยการเป็นที่นิยมย่อมมีข้อดีหลายประการ ในปี 2548 ฉันคิดว่านานและหนักมากก่อนที่จะเลือก LISP กับ Ruby ฉันอาจจะทำก็ต่อเมื่อฉันต้องการโค้ดที่ปรับให้เหมาะสมหรือมาโครที่ทำหน้าที่เป็นคอมไพเลอร์ที่สมบูรณ์


4
อะแฮ่ม "ย้อนหลัง 20 ปี"?!?! ฉันคิดว่าคุณหมายถึง "51 ปีที่ผ่านมา" :-)
DigitalRoss

1
@DigitalRoss - ฉันจะไปกับ 20; LISP นั้นค่อนข้างใหญ่ในบางวงการ ณ จุดหนึ่ง แต่ (ViaWeb) ไม่มี 'แอพนักฆ่า' ใหม่ ๆ ให้เห็นเลยตั้งแต่ช่วงปี 1980 อย่างไรก็ตามเทคโนโลยีที่ใช้ LISP ได้รับเงินทุนค่อนข้างมากในยุค 60, 70 และ 80; หลายคนคิดว่า LISP กำลังเกิดขึ้นมาระยะหนึ่งแล้ว
ConcernedOfTunbridgeWells

2
@DigitalRoss ใช่ถ้าคุณเพิกเฉยต่อสิ่งต่างๆเช่นการต่อเนื่องหลายวิธีมาโครการเพิ่มประสิทธิภาพการโทรหางปิดด้านบนของหัวของฉัน
Frank Shearar

ฉันมักจะพบว่าข้อโต้แย้งประเภทนี้ไม่ค่อยเห็นด้วย ไม่มีภาษาที่ดีที่สุดและวิศวกรซอฟต์แวร์คนใดสามารถทำเสียงกระเพื่อม, โครงร่าง, ทับทิม, php หรือ c หรืออะไรก็ได้ และถ้าเขาทำไม่ได้เขาจะเรียนรู้ได้ใน 2 สัปดาห์ ภาษาเป็นเพียงเครื่องมือ คุณไม่จำเป็นต้องนอนกับมัน
Edgar Klerks

22

ฉันจะพูดตรงกันข้าม: Smalltalk syntax เป็นหนึ่งในไวยากรณ์ภาษาโปรแกรมที่เรียบง่ายและมีประสิทธิภาพ


7
แค่อยากจะบอกว่าเอเมน!
Schpaencoder

19

เป็นความจริงที่ภาษาเหมือนกันมาก วิธีตีความตื้น ๆ ก็คือการเรียก Ruby ว่าเป็น Smalltalk cover band การตีความที่สมเหตุสมผลมากขึ้นคือระบบปิดของ Smalltalk แยกมันออกในขณะที่การมีส่วนร่วมของ Ruby ในระบบนิเวศของ Unix และนิสัยในการปรับใช้คุณสมบัติจากทุกภาษาภายใต้ดวงอาทิตย์ทำให้เส้นโค้งการนำไปใช้ที่นุ่มนวลขึ้นอย่างไม่มีที่สิ้นสุดและการรวมเข้ากับเครื่องมือ kickass อย่าง Git ได้อย่างง่ายดาย

ไจล์ส Bowkett


17

เดาว่าใครพูดแบบนี้? (คำพูดใกล้เคียงอาจจะไม่ถูกต้อง): "ฉันคิดเสมอว่า Smalltalk จะเอาชนะ Java ได้ฉันไม่รู้ว่าจะถูกเรียกว่า 'Ruby' หรือไม่เมื่อเป็นเช่นนั้น"

กลองม้วน ....

...

คำตอบคือ ... Kent Beck


15

Stephane Ducasse มีหนังสือ Smalltalk ที่ยอดเยี่ยมอยู่ที่นี่:

http://stephane.ducasse.free.fr/FreeBooks.html

ดังนั้นแม้ว่าชุมชน Smalltalk จะไม่อุดมสมบูรณ์เท่าชุมชน Ruby and Rails แต่ก็ยังมีความช่วยเหลือที่ดีอยู่


1
สิ่งนี้สมควรได้รับการโหวตเพิ่มขึ้น!
froginvasion

15

Ruby มีอะไรที่ Smalltalk ไม่มี?

  • การสนับสนุนจำนวนมากในปัจจุบันโดยแพลตฟอร์มหลัก ๆ (IronRuby และ jRuby) ที่เสริมสร้างชุดของไลบรารี
  • ผู้ประกาศข่าวประเสริฐเช่นเดฟโธมัสซึ่งเดินทางไปทั่วประเทศเพื่อสั่งสอนพระกิตติคุณในภาษาของตนเป็นเวลาหลายปี ฉันเคยเห็น Dave ในการประชุม Javaระบุว่าเขาไม่รู้จัก Java และเขาชอบ Ruby
  • อสังหาริมทรัพย์ที่มาแรงในปัจจุบันบนชั้นหนังสือ
  • ผู้สร้าง Ruby ได้กล่าวว่าเขาคิดถึงโปรแกรมเมอร์: ไวยากรณ์ของ Ruby ดูเหมือนจะดึงดูดเซนนี้ มันยากที่จะตรึง แต่ดูเหมือนจะกระตุ้นแฟน ๆ
  • การนำเสนอที่สร้างสรรค์และมีพลวัตเช่นGilesและสิ่งนี้ที่ได้รับส่วนแบ่งความคิด

ฉันคิดว่าประเด็นของคุณเป็นที่ยอมรับ ในฐานะที่เพื่อนเคยใส่ไว้ Ruby อาจเป็น "ไวน์เก่าในขวดใหม่" vis-a-vis Smalltalk แต่บางครั้งขวดใหม่ก็มีความสำคัญ ไวน์ต้องอยู่ในสถานที่ที่ถูกต้องในเวลาที่เหมาะสม


สัญลักษณ์แสดงหัวข้อย่อยแรกของคุณปิดอยู่ การสนับสนุน JVM และ. NET VM หมายถึงเรื่องไร้สาระสำหรับ Smalltalk เนื่องจากการใช้งานแต่ละครั้งทำงานบน VM อยู่แล้ว (จะทำงานได้ดีบนระบบปฏิบัติการหลายระบบได้อย่างไรใช่ไหม) ไวยากรณ์ของ Ruby นั้นซับซ้อนกว่า Smalltalk ยากที่จะปักหมุดลงซึ่งเป็นส่วนหนึ่งของปัญหา;)

1
ใช่ส่วนหนึ่งของเหตุผลที่บางคนอาจใช้ jruny / ironruby คือความไม่สมบูรณ์แบบสัมพัทธ์ของ ruby ​​vm แต่มีไลบรารีที่ดีจริงๆสำหรับ. net / jvm ที่พวกเขาอาจต้องการใช้ที่ไม่มีเทียบเท่าที่อื่น ง่ายขึ้นมากสำหรับบางธุรกิจในการเชื่อมโยงกับฐานรหัส java / c #
Roman A.Taycher

2
แน่นอนฉันพบว่า "อสังหาริมทรัพย์ในปัจจุบันที่แข็งแกร่งและแข็งแรงบนชั้นหนังสือ" เป็นโทษอย่างหนึ่งของภาษาที่ซับซ้อนโดยไม่มีสภาพแวดล้อมที่มีชีวิตชีวาและมีชีวิตชีวา เมื่อฉันเขียนรหัส C ++ ฉันมีชั้นวางหนังสือ gotcha เต็มไปหมด หลังจากย้ายไป Smalltalk (ผ่าน Ruby) ฉันไม่พลาดแม้แต่นิดเดียว การใช้ IDE เพื่อเป็นแนวทางส่วนใหญ่ฉันแทบจะไม่ทิ้งภาพไว้นานกว่าการค้นหาโดย Google อย่างรวดเร็วและได้เพิ่มอสังหาริมทรัพย์ชั้นวางบางส่วนด้วยซีรีส์ Game of Thrones;)
Sean DeNigris

14

เต้นฉัน ฉันใช้เวลาหนึ่งปีในการตรวจสอบ Ruby และทำโครงการเล็ก ๆ น้อย ๆ เพื่อดูว่าฉันชอบมันอย่างไร ฉันเดาว่าฉันเป็นคนหัวดื้อ Smalltalk เพราะทุกครั้งที่ฉันนั่งทำงานกับ Ruby ฉันจะถอนหายใจและคิดว่า "ฉันอยากทำแบบนี้ใน Smalltalk จริงๆ" ในที่สุดฉันก็ยอมแพ้และกลับไปที่ Smalltalk ตอนนี้ฉันมีความสุขมากขึ้น มีความสุขดีกว่า

คำถามใดที่ทำให้เกิดคำถามว่า "ทำไม" ไม่เรียงตามลำดับ:

  1. เพราะ IDE พัดพาสิ่งอื่นที่ฉันเคยทำงานด้วยไป ซึ่งรวมถึงแพลตฟอร์มมากมายจาก ISPF บนเมนเฟรมของ IBM ไปจนถึง Visual (. *) ของ Microsoft รวมถึงสิ่งต่างๆเช่น Visual Basic 4-6, Visual C ++ (ชาติต่างๆ), Turbo Pascal ของ Borland และลูกหลาน (เช่น Delphi) และสิ่งต่างๆใน DEC เครื่องทั้งในโหมดอักขระและภายใต้ X-Windows
  2. เพราะรูปคือสถานที่สวยงามน่าอยู่. ฉันสามารถหาสิ่งที่ต้องการได้ในนั้น ถ้าฉันคิดไม่ออกว่าจะทำอะไรได้ฉันรู้ว่าที่ไหนสักแห่งในภาพนั้นเป็นตัวอย่างของสิ่งที่ฉันพยายามทำสิ่งที่ฉันต้องทำคือตามล่าจนกว่าจะพบ และเป็นการจัดทำเอกสารด้วยตัวเอง - หากคุณต้องการดูรายละเอียดว่าบางสิ่งทำงานอย่างไรคุณเพียงแค่เปิดเบราว์เซอร์ในชั้นเรียนที่คุณสนใจดูวิธีการและนั่นคือวิธีการทำงาน (ตกลงในที่สุดคุณจะได้รับสิ่งที่เรียกว่าดั้งเดิมและจากนั้นก็คือ "ที่นี่มีมังกร" แต่โดยปกติจะเข้าใจได้จากบริบท) เป็นไปได้ที่จะทำสิ่งที่คล้ายกันใน Ruby / C ++ / C แต่ก็ไม่ง่ายอย่างที่คิด ง่ายดีกว่า
  3. ภาษามีน้อยและสม่ำเสมอ ข้อความสามประเภท - ยูนารีไบนารีและคำหลัก ซึ่งอธิบายถึงลำดับความสำคัญของการดำเนินการเช่นกัน - ข้อความที่เป็นเอกภาพก่อนจากนั้นข้อความไบนารีจากนั้นข้อความคำหลัก ใช้วงเล็บเพื่อช่วยสิ่งต่างๆ แดงไวยากรณ์เล็ก ๆ น้อย ๆ - ทั้งหมดเสร็จสิ้นด้วยการส่งข้อความ (ตกลงการมอบหมายไม่ใช่การส่งข้อความ แต่เป็นโอเปอเรเตอร์ดังนั้นตัวดำเนินการ 'return' (^) บล็อกล้อมรอบด้วยวงเล็บปีกกาสี่เหลี่ยม ([]) อาจเป็นบิต 'เวทมนตร์' อื่น ๆ หนึ่งหรือสองบิตในนั้น แต่ยี้เล็กน้อย ... )
  4. บล็อก ใช่ฉันรู้ว่าพวกเขาอยู่ที่นั่นใน Ruby (และอื่น ๆ ) แต่อันตรายจริงๆคุณไม่สามารถตั้งโปรแกรมใน Smalltalk โดยไม่ใช้มัน คุณถูกบังคับให้เรียนรู้วิธีใช้ บางครั้งการถูกบังคับก็ดี
  5. การเขียนโปรแกรมเชิงวัตถุโดยไม่มีการประนีประนอมหรือทางเลือกอื่นสำหรับเรื่องนั้น คุณไม่สามารถแสร้งทำเป็นว่าคุณกำลัง "ทำวัตถุ" ในขณะที่ยังทำสิ่งเดิม ๆ
  6. เพราะมันจะทำให้สมองของคุณยืดยาว โครงสร้างที่สะดวกสบายที่เราเคยชิน (if-then-else, do-while, for (;;) ฯลฯ ) ไม่มีอีกแล้วดังนั้นคุณต้องเรียนรู้สิ่งใหม่ ๆ มีค่าเทียบเท่ากับทั้งหมดข้างต้น (และอื่น ๆ ) แต่คุณจะต้องเรียนรู้ที่จะคิดต่างออกไป แตกต่างกันเป็นสิ่งที่ดี

ในทางกลับกันนี่อาจเป็นเพียงเสียงครวญครางของผู้ชายที่เขียนโปรแกรมตั้งแต่สมัยที่เมนเฟรมปกครองโลกเราต้องเดินห้าไมล์เพื่อทำงานผ่านพายุหิมะที่ทำให้ไม่เห็นทางขึ้นเขาทั้งสองทางและคอมพิวเตอร์ใช้โดนัทเป็นหน่วยความจำ ฉันไม่มีอะไรเทียบกับ Ruby / Java / C / C ++ / พวกมันทั้งหมดมีประโยชน์ในบริบท แต่ให้ Smalltalk แก่ฉันหรือให้ฉัน ... ดีบางทีฉันควรเรียน Lisp หรือ Scheme หรือ ... :-)


1
ฉันคิดว่าคำถามคือ "Ruby มี Smalltalk อะไรไม่ได้?"
Mauricio

1
@Mauricio และ @Bob ตอบว่า: "Beats me."
systemovich

1
ใส่เก่งรักเลย! ทำไมบางสิ่งถึงดีขึ้นไม่ได้ทั้งๆที่ไม่ค่อยได้รับความนิยม? ถ้าคุณไม่เห็นด้วยฉันกล้าบอกว่าคุณไม่ได้ Smalltalk ;-)
Amos M. Carpenter

@aaamos - ขอบคุณครับ. ฉันสงสัยว่าสาเหตุที่ Smalltalk ไม่ได้รับความนิยมเป็นเพราะ # 6 และในระดับที่น้อยกว่า # 5 Smalltalk ไม่ใช่สถานที่ "ไวยากรณ์แบบเดิม" ของแม่ของคุณ - มันแตกต่างกัน ตัวอย่างเช่นถ้าคุณรู้จัก C แล้ว C ++, Java และ C # ก็รู้สึกสบายใจ และพฤติกรรม "อย่างไร" และ "ทำไม" ของ Smalltalk อาจทำให้คุณรู้สึกไม่สบายใจ (ฉันจะเตือนว่าถ้า Smalltalker ตัวใหม่ไม่รู้สึกว่าหัวของพวกเขาจะบิดเบี้ยวไม่ว่าพวกเขาจะยอดเยี่ยมมากพวกเขาก็ครางทันทีหรือพวกเขาไม่ได้รับมันใช่ฉันสงสัยว่า "สิ่งที่จะรู้สึก :-)
Bob Jarvis - คืนสถานะ Monica

คุณได้ลองดีบักด้วย pry (และปลั๊กอิน) และการเข้ารหัสสดด้วยการโหลดไฟล์ที่บันทึกไว้ใหม่หรือไม่? เป็นการเขียนโปรแกรมที่ดีที่สุดที่ฉันมี
Rivenfall

11

Smalltalk: คนส่งต่อ ifTrue: [คิด] ifFalse: [ไม่คิด]

Ruby: คนคิดไปข้างหน้าเว้นแต่จะคิดไปข้างหลัง

1) ขั้นตอนการควบคุมคล้าย RPN ของ Smalltalk โดยข้อความเป็นเหมือนเสียงกระเพื่อม - เป็นเรื่องปกติและน่าสนใจ แต่ทำให้ผู้คนไม่พอใจ

2) Ruby ช่วยให้ผู้คนสามารถเขียนโค้ดโดยใช้สำนวนที่ผู้คนพูดได้ - อย่าพูดเลยเว้นแต่จะไม่มีเหตุผลที่จะไม่ทำ

อัปเดตเขียนตัวอย่าง Smalltalk ใหม่เพื่อให้เป็นรหัสทางกฎหมายมากขึ้น ..


4
ภาษาอังกฤษอาจเป็นหนึ่งในวิธีที่แย่ที่สุดในการแสดงคำแนะนำในการเขียนโปรแกรม ฉันหมายความว่ามันทำให้คนสับสนพอสมควรนับประสาคอมพิวเตอร์ ทำบลา? ใครควรทำ blah? บนอะไร? นอกจากนี้รหัสทับทิมของคุณก็ไม่สมเหตุสมผลและไม่ถูกต้อง ควรจะเป็น Ruby: people.think_forwards เว้นแต่ people.think_backwards? และ SmallTalk ควรเป็น: Smalltalk: (people think_forwards?) ifTrue: [people think_forwards])
donalbain

2
คุณยังสามารถเพิ่มเมธอดที่เรียกว่าเว้นแต่: aBlock ไปยังคลาส BlockClosure จากประเภทเคอร์เนล - เมธอดที่จะประเมิน aBlock และ ifTrue: ประเมินบล็อกการโทร
Ricardo de Cillo

3
@donalbain ฉันไม่ได้แนะนำว่าสิ่งเหล่านี้เป็นข้อความการเขียนโปรแกรมตามตัวอักษร แต่บ่งบอกถึงคำสั่ง ฉันคิดว่ามันค่อนข้างชัดเจนเมื่อฉันเขียนคำตอบของฉัน
Andy Dent

1
@donalbain จริงมากจริงๆแล้วมันมีอยู่จริง เพิ่มเติมทับทิมเช่นการควบคุมการไหลอาศัยอยู่ที่github.com/randycoulman/SuffixConditionals แอนดี้มีข้อผิดพลาดในโค้ดของคุณ - คนข้างหลังไม่คิดดังนั้นคุณควรส่ง #ifFalse: ;-P
Sean DeNigris

Smalltalk มีการตลาดที่ไม่ดี: ไวยากรณ์และรูปภาพแปลก ๆ Ruby นั้นธรรมดากว่า แต่ก็มีไวยากรณ์ที่มีคุณภาพดีเช่นกัน Java ถูกพิมพ์และคอมไพล์ซึ่งสร้างความมั่นใจให้กับลูกค้า ฉันจะไม่รังเกียจที่จะเรียนรู้และใช้ไวยากรณ์แปลก ๆ ถ้ามันไม่ส่งผลกระทบต่อ "การตลาด" ของฉันในฐานะโปรแกรมเมอร์
Rivenfall

8

Ruby เป็นภาษา Buzz ในปัจจุบัน การทำตลาดซอฟต์แวร์ที่สร้างขึ้นในตอนนี้ง่ายกว่าภาษาที่พัฒนาในยุค 70


ความจริงที่ว่ามันถูก "พัฒนาในยุค 70" ไม่มีส่วนเกี่ยวข้องกับความยากในการพัฒนา
gracchus

3
และความคิดเห็นของฉันไม่มีส่วนเกี่ยวข้องกับการพัฒนา
coder1

3
ขอโทษนะฉันมักจะอ่านผิดเวลาฉันเหนื่อยฉันจึงต้องใช้เวลาช่วงพักร้อนขอโทษคนที่ฉันรังแก
gracchus

8

ชุมชน! Ruby และโดยเฉพาะ Rails มีชุมชนที่ยอดเยี่ยมเช่นนี้ เมื่อยุ่งกับ Smalltalk ดูเหมือนว่าจะมีการแคสต์หน้าจอบทความบล็อกโพสต์และอื่น ๆ ที่เขียนเกี่ยวกับ Smalltalk ไม่มากนัก


7

คุณตอบคำถามในบรรทัดแรก: "Ruby กำลังเป็นที่นิยม"

  • มีเยอะมากครับของโมดูลที่น่าสนใจโครงการดังกล่าวตามรอบทับทิม
  • หากคุณมีปัญหาในการทำบางสิ่งใน Ruby การขอความช่วยเหลือจากที่ไหนสักแห่งก็เป็นเรื่องเล็กน้อย
  • ตอนนี้ Ruby ได้รับการติดตั้งบนคอมพิวเตอร์จำนวนมากแล้ว (รวมอยู่ใน OS X, Linux distros จำนวนมากและมีตัวติดตั้งที่ดีสำหรับ Windows) - ฉันไม่เห็น smalltalk ติดตั้งเป็นค่าเริ่มต้นบนเครื่องใด ๆ ที่ฉันใช้ ..

ฉันจะบอกว่าไม่ว่าภาษาใดภาษาหนึ่งจะเหนือกว่าภาษาอื่นก็ไม่เกี่ยวข้อง .. ตัวอย่างเช่น PHP อาจไม่ใช่ภาษาที่ "ดีที่สุด" เท่าที่เคยมีมา แต่ฉันก็ยังคงพิจารณาใช้มันกับ Ruby on Rails (เครื่องมือที่ "ดีกว่า" สำหรับการสร้าง เว็บไซต์) เพราะมันแพร่หลายมาก

โดยพื้นฐานแล้วข้อดีข้อเสียเฉพาะของภาษามีความสำคัญน้อยกว่าทุกสิ่งที่อยู่รอบตัวนั่นคือชุมชน


7

Ruby (หรือภาษาอื่น ๆ ) ได้รับความนิยมมากกว่า Smalltalk (หรือภาษาอื่น ๆ ) เนื่องจากเราอาศัยอยู่ในจักรวาลที่วุ่นวาย เพื่อปัญญา:

  • จาก Dave Thomas เอง "[หลังจาก] วิดีโอเรื่อง 'How to Build a Blog in Ten Minutes' ... Ruby เปลี่ยนจากการเป็นภาษาเฉพาะกลุ่มเล็ก ๆ น้อย ๆ มาเป็น 'ภาษาที่คุณเขียนแอป Rails ใน'" ( Ruby Conference ประเด็นสำคัญปี 2010 )
  • ผู้ขาย Smalltalk ในช่วงต้นเรียกเก็บเงินอย่างห้ามไม่อยู่
  • Smalltalk เนื่องจากถูกประดิษฐ์ขึ้น (ก่อนเวลา) เมื่อ 30 ปีที่แล้วเกิดขึ้นกับหลาย ๆ ภาษาที่ "ตายแล้ว" (เช่น FORTRAN)
  • บริษัท ต่างๆมองว่า Smalltalk เป็นข้อได้เปรียบในการแข่งขันที่ซ่อนการใช้งานไว้

แม้ว่าภาษาจะคล้ายกันในคุณสมบัติ OO แต่ข้อได้เปรียบของนักฆ่า Smalltalk คือสภาพแวดล้อมแบบสดและเปิด ('ภาพ' ที่เข้าใจผิดกันมาก) หลังจากที่คุณดูตัวอย่างการเขียนโปรแกรมใน Smalltalkการอภิปรายจะสิ้นสุดลง


5

สำหรับฉันมันไม่ได้เป็นกรณีของสิ่งที่ Ruby มีมากนัก แต่สิ่งที่ Ruby ไม่มี และสิ่งที่มันไม่มีคือความต้องการ VM และสภาพแวดล้อมที่สมบูรณ์

Smalltalk นั้นยอดเยี่ยม - เป็นที่ที่ฉันได้เรียนรู้แนวคิด OO แต่เพื่อความสะดวกในการใช้งานฉันจึงเลือกใช้ Ruby ฉันสามารถเขียนรหัส Ruby ในโปรแกรมแก้ไขที่ฉันชอบและเรียกใช้ในรูปแบบบรรทัดคำสั่ง

สำหรับฉันแล้วนั่นคือสิ่งที่ฉันเลือก Ruby มากกว่า Smalltalk


แต่ไปข้างหน้าและเรียนรู้ Smalltalk ด้วย
Simon Knights

ตามการแก้ไขของฉัน: GNU Smalltalk ช่วยให้คุณใช้โปรแกรมแก้ไขที่คุณชื่นชอบและเรียกใช้จากบรรทัดคำสั่ง
two-bit-fool

ใช่ - ขอบคุณ - เพิ่งดูและดาวน์โหลดสำเนา!
Simon Knights

2
มันยังไม่มีกรอบเว็บที่ยอดเยี่ยม ทางรถไฟก็โอเค แต่ไม่ใช่ริมทะเล
Stephan Eggermont

3
แพลตฟอร์ม smalltalk ใด ๆ ให้คุณเขียนโค้ด smalltalk ในโปรแกรมแก้ไขที่คุณชื่นชอบ แต่ถ้าคุณชอบที่จะถูกตัดการเชื่อมต่อกับโลกที่มีชีวิตก็เป็นทางเลือกของคุณ เพียงแค่รู้ว่าคุณสูญเสียผลผลิตไปประมาณ 90% จากการทำ
Igor Stasenko

5

ฉันคิดว่าทุกคนที่ทำงานกับ Ruby มาระยะหนึ่งจะรับรู้ถึงหนี้ส่วนลึกของ Smalltalk ในฐานะหนึ่งในคนเหล่านี้ฉันชอบอะไรเกี่ยวกับ Ruby มากกว่า Smalltalk? ฉันคิดว่าจากมุมมองของภาษาที่เคร่งครัดมันคือน้ำตาล Ruby เป็นภาษาที่มีไวยากรณ์มากโดยเจตนาในขณะที่ Smalltalk เป็นภาษาที่มีไวยากรณ์น้อยมาก Ruby เป็นโมเดลออบเจ็กต์ Smalltalk ที่มีไวยากรณ์ของ Perlish ฉันชอบน้ำตาลและพบว่ามันทำให้การเขียนโปรแกรมสนุกขึ้น


1
Ruby มีโมเดลวัตถุที่แตกต่างจาก Smalltalk ฉันจะบอกว่า "ได้รับอิทธิพลจาก" แต่ไม่เหมือนกัน คุณสามารถเขียนโปรแกรมทับทิมด้วยวิธีต้นแบบโดยไม่ต้องสร้างคลาสใหม่ ขณะนี้เป็นเรื่องผิดปกติ Smalltalk ก็ไม่สนับสนุนสิ่งนั้น
Dafydd Rees

2
ฉันชอบ Smalltalk เพราะฉันสามารถประดิษฐ์และใช้น้ำตาลไวยากรณ์ของตัวเองได้ทุกเมื่อที่ต้องการ ไม่จำเป็นต้องใช้น้ำตาลหากคุณสามารถทำทุกอย่างได้โดยใช้ไวยากรณ์น้อยที่สุด
Igor Stasenko

5

คุณสามารถหางานทำ Ruby ได้อย่างง่ายดายแม้ว่าฉันจะรัก Smalltalk มาก แต่ก็แทบเป็นไปไม่ได้เลยที่จะเข้าไปในช่อง Smalltalk มีวิธีแก้ไขอยู่ แต่ถ้าคุณไม่ได้รับความนิยมตอนนี้มันแทบจะเป็นไปไม่ได้เลย

เหตุผลอื่น ๆ ทั้งหมดซีดลงในความไม่สำคัญเนื่องจากคุณต้องใช้เวลามากมายมุ่งเน้นไปที่การทำงานจริงเพื่อเรียนรู้ภาษาอย่างถูกต้อง หากคุณไม่ได้ร่ำรวยด้วยตัวเองวิธีที่ดีที่สุดคือเปิดรับมันในที่ทำงาน


4

เนื่องจากการแจกแจง Smalltalk มีราคาหลายพันดอลลาร์สหรัฐฯในขณะที่ Ruby นั้นฟรี


4

Ruby คือ Smalltalk เนื่องจากเลขอารบิกเป็นเลขโรมัน คณิตศาสตร์เหมือนกันไวยากรณ์ที่ง่ายกว่า


3
นั่นเป็นวิธีที่ผิด Smalltalk มีไวยากรณ์ที่ง่ายกว่ามาก
Stephan Eggermont

1
เฉพาะในกรณีที่คุณคิดเป็น rpn คนส่วนใหญ่ไม่ ฉันมีความภาคภูมิใจในความจริงที่ว่าโพสต์นี้มีการโหวตขึ้น ๆ
พะยอม

12
RPN? Java: foo.bar () Perl: foo-> bar () Python: foo.bar () Smalltalk: foo bar ดังนั้นนอกเหนือจากการมีไวยากรณ์ที่ง่ายกว่าแล้วหากคุณอ้างว่า Smalltalk เป็น RPN คุณต้องบอกว่าภาษา OO หลัก ๆทั้งหมดคือ "RPN"
Randal Schwartz

2
เพียงเปรียบเทียบปริมาณคำหลัก Ruby เทียบกับจำนวนคำหลัก Smalltalk และนั่นเป็นเพียงจุดเริ่มต้น! ไวยากรณ์ของ Smalltalk เหมาะกับผ้าเช็ดปากลองทำกับ Ruby แล้วคุณจะมีช่วงเวลาที่ยากลำบาก
froginvasion

3

ฉันได้ทำ Smalltalk เล็กน้อย - IDE เป็นสิ่งหนึ่งที่ฉันจำได้ - Ruby มีการรองรับ IDE ที่ดีหรือไม่?


ใช่. TextMate นั้นยอดเยี่ยมการรองรับ Eclipse นั้นดีและ Emacs มีโหมดที่เหมาะสม
พีท

6
หากคุณคิดว่า "TextMate / Eclipse / Emacs" เปรียบได้กับ IDE ในตัวของ Smalltalk คุณยังไม่เคยเห็น Smalltalk ตัวจริง!
Randal Schwartz

ฉันยังคงพลาดการเลือก -> 'แสดง' จาก IDE ในระบบที่ฉันสร้างด้วยในวันนี้ - ด้วยข้อยกเว้นประการหนึ่ง: เครื่องมือพัฒนา SQL ของ SQL Server จะช่วยให้คุณเน้นการเลือกและดำเนินการเป็นแบบสอบถาม Smalltalk มีอิทธิพลถ้าไม่มีอะไรอื่น!
ConcernedOfTunbridgeWells

IDE เข้าใกล้ Smalltalk ที่สุด IMHO ArachnoRuby มันบูรณาการได้ดีกว่า Emacs / TextMate ใด ๆ ฯลฯ อย่างไรก็ตามดูเหมือนว่าผู้คนจะพอใจกับการเปิดหน้าต่างสองสามอันโดยใช้เครื่องมือที่หลากหลายขอแสดงความนับถือ
ฟรีดริช

@Friedrich Re "ผู้คนค่อนข้างพอใจกับการเปิดหน้าต่างสองสามเครื่องมือที่ใช้เครื่องมือที่หลากหลาย" ... "ภาษาโปรแกรมสอนให้คุณไม่ต้องการสิ่งที่พวกเขาให้ไม่ได้คุณต้องคิดเป็นภาษา ... " - Paul Graham
Sean DeNigris

3

ใช้ Ruby เพราะอาจมีขาธุรกิจ Smalltalk ไม่มี

ฉันสามารถบอกคุณได้จากประสบการณ์ส่วนตัว ยังคงใช้ Smalltalk รักมันและใช้สองรสชาติ แม้ว่า Smalltalk จะเป็นภาษาที่ยอดเยี่ยมและเป็นทุกสิ่งที่คุณกล่าวถึง แต่คุณก็ไม่น่าจะโน้มน้าวให้ CIO / CTO ทั่วไปใช้ Smalltalk ในโครงการใหม่ได้ แน่นอนคุณอาจมีปัญหาในการโน้มน้าวให้ CIO / CTO ที่อนุรักษ์นิยมใช้ Ruby ท้ายที่สุดคุณต้องระมัดระวังอย่างมากหากคุณต้องการการสนับสนุนทางการค้าในระยะยาวอย่างยั่งยืนและความสามารถในการค้นหาพนักงานนอกสถานที่ที่สามารถรองรับระบบของคุณในอนาคต ตัวอย่างเช่น Smalltalk เป็นสิ่งที่ยิ่งใหญ่มากในช่วงต้นทศวรรษที่ 90 และ IBM ลงทุนอย่างมากในช่วงปลายยุค 90 สำหรับ IBM Smalltalk จะเป็นภาษาถัดไปสำหรับแอปพลิเคชันทางธุรกิจทั้งหมด IBM ใส่ Smalltalk ในทุกสิ่งรวมถึงระบบเมนเฟรม Java กลายเป็นที่นิยมเข้ามาในตลาด และ Smalltalk กลายเป็นผู้เล่นเฉพาะกลุ่ม กว่าหนึ่งปีที่แล้ว IBM ได้ทิ้งภาษานี้ไป (คำว่าเลิกใช้แล้ว) นอกจากนี้โปรดดูที่ประวัติ ParkPlace และ Digitalk ซึ่งเป็นผู้เล่นเชิงพาณิชย์รายใหญ่รายแรกในเวที Smalltalk พวกเขารวมตัวกันแล้วเลิกกิจการ


Smalltalk "มีขาธุรกิจ" - หากคุณมีพื้นฐานที่ถูกต้องอยู่แล้วและสามารถหาโอกาสที่เหมาะสมได้ ...
Dafydd Rees

ชื่อของคุณคุยโว ไม่ใช่ทุกธุรกิจที่ถูก จำกัด โดย CTO ที่มีสายตาสั้น ดังที่ Paul Graham กล่าวเมื่อเขาหักล้างตำนานที่ว่าภาษากระแสหลักปลอดภัยกว่า: "คุณจะมีช่วงเวลาที่ยากลำบากในการโน้มน้าวให้เจ้านายผมหัวแหลมปล่อยให้คุณสร้างสิ่งต่างๆใน Lisp ... แต่ถ้าคุณทำงานเพื่อการเริ่มต้นที่ไม่ได้ ยังไม่มีหัวหน้าที่มีผมแหลมคุณสามารถ ... ใช้เทคโนโลยีที่คู่แข่งของคุณติดกับภาษามัธยฐานอย่างไม่น่าเชื่อจะไม่มีทางเทียบได้ "
Sean DeNigris

2

ฉันรักทั้ง Smalltalk และ Ruby - แต่พบว่า Ruby สามารถใช้ได้กับสิ่งที่ฉันทำทุกวันและใกล้ชิดกับหัวใจของฉันมากขึ้น (ในทางปฏิบัติ) Ruby เสนออะไรที่ Smalltalk ไม่ได้?

  • การเขียนสคริปต์ตามข้อความ
  • ข้อกำหนดในการใช้งานต่ำ (ทำงานได้หลายที่)
  • ง่ายต่อการเรียนรู้และปรับตัว (โปรแกรมเมอร์ Perl และ Python จะไม่มีปัญหา
  • ย้ายโปรแกรมไปรอบ ๆ ได้ง่ายขึ้น - ไฟล์ข้อความ!
  • เชื่อมต่อได้ดีกับสภาพแวดล้อมดั้งเดิม
  • ทุกที่ที่ Java ทำงาน jRuby จะรัน ...
  • ชุมชนที่ใหญ่ขึ้นและมีการใช้งานมากขึ้น

มีบางคนกล่าวถึง gst (GNU Smalltalk); ปัญหายังคงอยู่


Ruby เรียกใช้ "places" ใดที่ Smalltalk ไม่มี ตัวอย่างเช่น Pharo Smalltalk ทำงานบน Mac, Windows, Unix โดยไม่มีระบบปฏิบัติการเลย (Ruby สามารถทำได้หรือไม่) และกำลังถูกย้ายไปยังแพลตฟอร์มมือถือต่างๆ (Android, iOS)
Sean DeNigris

แล้ว FreeBSD และ OpenBSD ล่ะ? (ไม่ฉันไม่รู้คำตอบ ... ) แล้ว Solaris และ HP-UX และ OpenVMS ล่ะ? ฉันไม่ต้องการใช้ Ruby หรือ Smalltalk บน Android หรือ iOS ปัญหาใหญ่ที่สุดไม่ใช่ระบบปฏิบัติการ แต่เป็นหน่วยความจำ: Ruby จะทำงานในหน่วยความจำน้อยกว่า Smalltalk มาก
พ.ค.

เห็นได้ชัดว่ามี FreeBSD VM (ดู bullet สุดท้ายของ OP ที่forum.world.st/SOB-minutes-3-6-12-td4453817.html ) ฉันไม่แน่ใจเกี่ยวกับคนอื่น ๆ สำหรับ Android และ iOS คุณต้องการใช้ Smalltalk หรือไม่มีคำถามที่แตกต่างจากที่มีอยู่หรือไม่ ;-) มีคนโพสต์เกี่ยวกับการทดลองที่ประสบความสำเร็จบนแพลตฟอร์มเหล่านั้นซึ่งฉันได้เห็น Screencast ที่มีแนวโน้ม
Sean DeNigris

นั่นเตือนฉันเช่นกัน - ฉันจำ Smalltalk for the Palm ได้
พ.ค.

2

ใช้อะไรก็ได้ที่ทำให้คุณมีพลังมากขึ้นและเร็วขึ้นเพื่อเอาชนะความท้าทายของคุณ

สำหรับเราเพียงเล็กน้อยในกรอบบ้านเราสร้างขึ้นที่ริมทะเลเป็นมหาอำนาจของเราจริงๆ

ฉันรักชุมชน RoR มีทัศนคติที่ถูกต้อง นั่นมีค่ามาก แต่ในขณะเดียวกันเทคโนโลยีริมทะเลก็ทำให้คุณแข็งแกร่งขึ้นจากปัญหาที่ซับซ้อนมากขึ้น

คุณสามารถทำเว็บแอปพลิเคชันริมทะเลที่ยอดเยี่ยมโดยใช้สิ่งที่เป็นโอเพนซอร์ส

dabbledb เป็น sartup ตามชายทะเลและเฮ้! Avi ขายให้ twitter ในเดือนมิถุนายนปีนี้!

ฉันบอกว่าคุณไม่จำเป็นต้องรอให้คนอื่นอนุมัติความคิดริเริ่มของคุณ

เพียงแค่ไปมัน ทำให้เสร็จ. แสดงให้เราเห็นว่าได้ผล

คุณไม่ได้โดดเดี่ยว. เราอยู่บนเรือลำเดียวกัน


2

มุมมองที่น่าสนใจจาก Robert Martin (จาก RailsConf 2009): "What Killed Smalltalk could Kill Ruby, Too"


2
คำพูดนั้นถือว่า smalltalk ตายไปแล้ว (ไม่ใช่) และทับทิมนั้นก็คล้ายกับ smalltalk ในอวกาศและเวลาที่อาจประสบชะตากรรมเดียวกัน (ที่ไม่ใช่) มันไม่ใช่
Randal Schwartz

0

ฉันคิดว่าส่วนหนึ่งของปัญหาคือการพัฒนาสภาพแวดล้อมเป็นรันไทม์ สิ่งนี้ให้พลังมากมาย แต่ยังนำเสนอช่วงการเรียนรู้ที่กว้างขึ้น

ที่นี่คือบทช่วยสอนสวัสดีชาวโลก

สิ่งนี้แตกต่างจากภาษาอื่น ๆ มากตรงที่ฉันต้องรู้วิธีเปิดโปรแกรมแก้ไขข้อความและคัดลอกและวางข้อความกดบันทึกและเรียกใช้คอมไพเลอร์ ฉันต้องรู้วิธีใช้สิ่งแวดล้อม บทช่วยสอนนั้นไม่ได้แสดงวิธีสร้างโปรแกรมพื้นฐาน (ซึ่งน่าจะเป็นข้อผิดพลาดของบทช่วยสอนนั้นมากกว่า) ที่ฉันสามารถเรียกใช้ได้

มีค่าใช้จ่ายในการรับสิ่งต่าง ๆ สูงกว่าภาษาอื่น ๆ อย่างแน่นอน

ภาษาส่วนใหญ่มีโค้ดที่สะดุดตาซึ่งสามารถอวดได้ ฉันไม่เห็นสิ่งนั้นกับ Smalltalk ฉันยังคิดว่า Smalltalk มีความอัปยศอยู่บ้างเพราะมันมีมานานแล้วและมันก็ยังค่อนข้างคลุมเครือ


ที่ด้านล่างของหน้า: แจ้งด้วยตนเอง: 'Hello, World!' ฉันยอมรับว่าเส้นการเรียนรู้นั้นสูงชันกว่า แต่ฉันคิดว่าการใช้ "สวัสดีชาวโลก" เป็นเครื่องพิสูจน์นั้นมากเกินไป :)
61

ประเด็นของฉันคือการดูว่าจะเขียนอะไรง่ายๆเช่น hello workld บทช่วยสอนจะบอกคุณว่าคุณต้องเปิดหน้าต่างใด ชื่อและการใช้งานของหน้าต่างไม่ใช่สิ่งที่ฉันจะเดาได้ ฉันใช้เวลาเพียงเล็กน้อยในการคลิกเพื่อค้นหาหน้าต่างที่กำลังพูดถึง
Steve g

1
ตามการแก้ไขของฉัน: GNU Smalltalk ช่วยให้คุณใช้โปรแกรมแก้ไขที่คุณชื่นชอบและเรียกใช้จากบรรทัดคำสั่ง
two-bit-fool

ruby -e 'ทำให้ "สวัสดีชาวโลก"
Marcel Valdez Orozco

1
pharo [ชื่อไฟล์รูปภาพ] -e "self inform: 'hello world'"
Sean DeNigris

0

ฉันคิดว่าความแตกต่างที่ใหญ่ที่สุดคือ Ruby นั้นคล้ายกับ perl มากในแง่ของการใช้งาน Smalltalk ไม่เคยตั้งหลักในภาษา "สคริปต์"

VM นั้นเจ๋งมากและฉันหวังว่าทับทิมจะมีบางอย่างที่คล้ายกันเพื่อให้เราสามารถจัดการทุกอย่างบนระบบปฏิบัติการของเราที่เขียนด้วยทับทิมเป็นวัตถุในพื้นที่หน่วยความจำอย่างไรก็ตามจนถึงตอนนั้นฉันก็สนุกกับการรวบรัดของทับทิมไวยากรณ์สั้น ๆ ความสามารถในการ เขียนสคริปต์เล็ก ๆ และนำกลับมาใช้ในภายหลัง Ruby ได้รับข้อดีทั้งหมดของ perl และ OOP นั้นคล้ายกับ smalltalk มากกว่าการแฮ็ก OOP ของ perl


0

ฉันจะไปไกลกว่าคำตอบของ Jonke และบอกว่าตอนนี้มีภาษาจำนวนมากที่มีชุมชนที่แข็งแกร่งมากเกือบจะเพียงพอที่จะตอบสนองทุกรสนิยมและส่วนย่อยของสิ่งเหล่านี้มีการยอมรับในกระแสหลัก (เช่นผู้จัดการของคุณจะให้คุณใช้ที่ ทำงานด้วย).

เป็นเรื่องง่ายที่จะเรียนรู้พื้นฐานของภาษา แต่เพื่อให้ใช้งานได้จริงคุณต้องลงทุนเวลามากพอที่จะเรียนรู้แพลตฟอร์มและเครื่องมือตลอดจนไวยากรณ์และสำนวน IIRC, McConnell อ้างว่าต้องใช้เวลาประมาณสามปีกว่าจะมีความเชี่ยวชาญอย่างแท้จริง

เมื่อพิจารณาถึงสิ่งเหล่านี้จึงเป็นเรื่องยากที่จะให้เหตุผลว่าใช้เวลากับภาษาเช่น LISP และ Smalltalk เป็นจำนวนมากแม้ว่าภาษาเหล่านี้จะน่าสนใจและน่าศึกษา


0

ในฐานะผู้ที่มาตอบการสนทนาปัญหาหลักของ Smalltalk และ Lisp คือคุณไม่สามารถเรียกใช้ CGI หรือ FastCGI บนโฮสติ้งที่ใช้ร่วมกันได้

ฝูงที่ไม่ได้อาบน้ำจะไม่ใช้มันหากพวกเขาต้องการ VPS หรือเซิร์ฟเวอร์เฉพาะเพื่อใช้งาน IMHO Seaside เหนือกว่าเกือบทุกอย่าง แต่มันจะทำงานบน Dreamhost หรือ Webfaction?


ฉันสงสัยว่าตอนนี้ยังคงเป็นอุปสรรคอยู่หรือไม่เช่น Digital Ocean เสนอ VPS ในราคา $ 0.007 / ชม.
Sean DeNigris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.