Bạn có bắt đầu học Smalltalk không? [đóng cửa]


81

Câu hỏi của tôi rất đơn giản!

  1. Bạn có bắt đầu học Smalltalk nếu có thời gian không? Tại sao? Tại sao không?
  2. Bạn đã biết Smalltalk chưa? Tại sao bạn lại giới thiệu Smalltalk? Tại sao không?

Cá nhân tôi là một lập trình viên Ruby on Rails và tôi thực sự thích nó. Tuy nhiên, tôi đang nghĩ về Smalltalk vì tôi đã đọc nhiều blog khác nhau và một số người gọi Ruby là "Smalltalk Light". Lý do thứ hai khiến tôi quan tâm đến Smalltalk là Seaside .

Có thể ai đó đã thực hiện chuyển đổi tương tự trước đây?

CHỈNH SỬA: Thực ra, điều khiến tôi hào hứng nhất về Smalltalk / Seaside là Tập sau của WebDevRadio: Tập 52: Randal Schwartz trên Seaside (trong số những thứ khác)

Câu trả lời:


61

Nếu bạn thích Ruby, bạn có thể sẽ thích Smalltalk. IIRC Seaside đã được chuyển sang Gemstone VM, là một phần của Gemstone / S OODBMS của họ. Điều này có hỗ trợ luồng tốt hơn nhiều so với Ruby, vì vậy nó là phần mềm hỗ trợ tốt hơn cho một hệ thống khối lượng lớn. Đây có thể là một lý do tốt để xem xét kỹ nó.

Những lý do nên học Smalltalk:

  • Đó là một môi trường lập trình thực sự rất tốt. Một khi bạn đã hiểu rõ về nó (nó có xu hướng hơi sốc văn hóa đối với những người từng sử dụng C ++ hoặc Java), bạn sẽ thấy nó là một môi trường thực sự tốt để làm việc. Ngay cả một công ty nhỏ thực sự tồi tệ như Những chiếc Digitalk cũ mà tôi đã sử dụng là một hệ thống rất dễ sử dụng. Nhiều người trong số những người thuộc loại XP và OO cũ như Kent BeckMartin Fowler đã cắt răng trên Smalltalk trở lại trong ngày và thỉnh thoảng có thể được nghe thấy khao khát những ngày cũ tốt đẹp ở nơi công cộng (Cảm ơn Frank Shearer đã trích dẫn, +1) - Sự phát triển nhanh nhẹn bắt nguồn từ nền tảng này.

  • Đó là một trong những nền tảng phát triển hiệu quả nhất trong lịch sử.

  • Một số triển khai trưởng thành tồn tại và có một cơ sở mã lớn đáng ngạc nhiên ở đó. Tại một thời điểm, nó trở nên khá hợp thời trong giới thị trường tài chính, nơi mà năng suất của nhà phát triển và thời gian đưa ra thị trường là một vấn đề khá lớn. Cho đến giữa những năm 1990, nó ít nhiều là trò chơi duy nhất trong thị trấn (Có thể ngoại trừ LISP) nếu bạn muốn có một ngôn ngữ cấp cao được hỗ trợ thương mại phù hợp để phát triển ứng dụng.

  • Việc triển khai rất dễ dàng - chỉ cần thả tệp hình ảnh vào thư mục thích hợp.

  • Không hẳn là một lý do, nhưng Gang of Four Book sử dụng Smalltalk cho khá nhiều ví dụ của họ.

Những lý do không nên học Smalltalk:

  • Đó là một cái gì đó của một thị trường thích hợp. Bạn có thể gặp khó khăn khi tìm việc. Tuy nhiên, nếu bạn đang sản xuất một số loại ứng dụng .com trong đó bạn sở hữu máy chủ thì điều này có thể không phải là vấn đề.

  • Nhiều người xem nó như một hệ thống kế thừa. Có rất ít sự phát triển mới trên nền tảng này (mặc dù Seaside dường như đang thúc đẩy một chút thời kỳ phục hưng).

  • Nó có xu hướng không phù hợp với các hệ thống điều khiển nguồn truyền thống (ít nhất là vào đầu những năm 90 khi tôi sử dụng nó). Điều này có thể vẫn xảy ra hoặc không.

  • Nó hơi lém lỉnh và thích chơi một mình. Python hoặc Ruby được xây dựng để tích hợp từ đầu và có xu hướng phức tạp hơn và do đó dễ dàng tích hợp hơn với phần mềm của bên thứ ba. Tuy nhiên, nhiều hệ thống chính thống khác mắc phải kiểu vô nghĩa này ở mức độ lớn hơn hoặc thấp hơn và điều đó dường như không cản trở việc sử dụng chúng nhiều.


1
Ruby cũng đã được chuyển sang Gemstone: nó được gọi là Maglev: infoq.com/news/2008/04/maglev-gemstone-builds-ruby
brian d foy

Ý bạn là gì khi "nó có xu hướng không phù hợp với các hệ thống điều khiển nguồn truyền thống"?
detly

4
Cách lưu trữ mã nguồn Smalltalk truyền thống có nghĩa là nó được nhúng vào hình ảnh và các nguồn liên quan và thay đổi tệp. Bạn không nhận được một bộ tệp chương trình sạch đẹp như bạn sẽ nhận được với (giả sử) C. Hệ thống Smalltalk có xu hướng yêu cầu các hệ thống kiểm soát nguồn nhận biết smalltalk chuyên biệt, có xu hướng (a) độc quyền, (b) đắt tiền và ( c) không tương thích với mọi thứ khác.
ConcernedOfTunbridgeWells

Và hy vọng Monticello sẽ giải quyết (a) và (b) những vấn đề này. Squeak đã sử dụng nó rất nhiều và SqueakSource có nhiều dự án sử dụng nó. Nó vẫn có mụn cóc. Một khi các dự án git-Monticello thực sự được sử dụng, (c) hy vọng cũng sẽ giảm.
Frank Shearar

2
Tôi thường thích câu trả lời nhưng Smalltalk chơi ổn với phần mềm của bên thứ ba. Việc bạn không thấy nhiều API không phải vì về mặt kỹ thuật bạn không thể tích hợp chúng, mà là vì đó là một thị trường ngách (vì vậy ít người cần phần mềm bên ngoài hơn). Một lý do phụ dẫn đến hiệu ứng đó (điều đó cũng không liên quan đến kỹ thuật) là những người làm công việc nhỏ sẽ thích giải quyết các vấn đề trong smalltalk hơn là trong các công nghệ kém thú vị khác.
Sebastian Sastre

45

Chà, vì bạn đã nhắc đến tên tôi, nên tôi cảm thấy mình nên tham gia.

Như tôi đã nói trong cuộc phỏng vấn podcast đó và như tôi đã nhiều lần chứng minh trong blog của mình tại http://MethodsAndMessages.vox.com/ , đây là " năm của smalltalk ". Và bây giờ đã thực hiện vận động cho Smalltalk trong mười tháng qua, tôi có thể thấy rằng nó thực sự đang xảy ra. Nhiều khách hàng đang chuyển sang Smalltalk và Seaside, và các nhà cung cấp Smalltalk đều đang nỗ lực để thu hút sự chú ý mới này. Nhiều hội nghị Smalltalk lớn hơn đang được lên kế hoạch. Nhiều tin tuyển dụng đang được đăng. Nhiều bài đăng trên blog đang được thực hiện.

Nếu bạn chuyển sang Smalltalk ngày hôm nay, bạn không đơn độc. Có rất nhiều người khác cũng đang ở ngoài đó.

Biên tập

Chà, một vài năm sau, tôi đang đề xuất Dart để thay thế. Đó là một ngôn ngữ tuyệt vời do Google tạo ra nhưng hiện thuộc sở hữu của ủy ban ECMA. Nó chạy trên máy chủ theo kiểu node.js, nhưng cũng chạy phía máy khách trong các trình duyệt hiện đại bằng cách chuyển đổi sang JavaScript. Rất nhiều sách hay, blog, kênh trợ giúp, hỗ trợ IDE, pastebin trực tiếp công khai . Tôi nghĩ rằng nó chắc chắn có chân ... đủ để tôi đang viết giáo trình dạy nó tại chỗ hoặc trực tuyến, và tôi khá chắc chắn rằng có một hoặc hai cuốn sách trong tác phẩm của tôi. Và Gilad Bracha, một Smalltalker lâu đời là người đóng góp chính cho thiết kế, vì vậy có rất nhiều Smalltalk trong Dart.


2
Đó là lý do tại sao Stack Overflow rất tuyệt! Cảm ơn về câu trả lời của bạn!
Christoph Schiessl 30/09/08

Vì tò mò, bạn có thể giải thích rõ hơn về luồng sự chú ý - bất kỳ ý tưởng nào mà chia sẻ tư duy đến từ không?
ConcernedOfTunbridgeWells

Ruby chắc chắn đã giúp, tôi nghĩ Javascript và Objective-C cũng vậy. Đối với những người không hiểu được điều OO thuần túy, những ngôn ngữ đó cung cấp một điểm khởi đầu quen thuộc mà từ đó người ta có thể ngoại suy cách Smalltalk tỏa sáng.
Damien Pollet

Sau đó, những người Seaside đã làm một số PR tốt, Avi Bryant với DabbleDB và cuộc đảo chính Maglev tại Rails conf, và Randal cũng khá nổi tiếng :) Ngoài ra, Lars Bak của Google V8 đến từ Self ... có rất nhiều dấu hiệu nhỏ như vậy, tất cả đều gợi ý tại Smalltalk và Lisp, ngôn ngữ lạ từ tương lai-in-the-qua :)
Damien Pollet

30

Smalltalk là một ngôn ngữ tốt để học và điều tuyệt vời là bạn chỉ mất một ngày để làm điều đó. Nó không chỉ là một ngôn ngữ học thuật. Mọi người đang xây dựng các ứng dụng khổng lồ, có thể mở rộng, có thể tái tạo, xử lý hàng tỷ đô la. Họ chỉ không nói về nó nhiều. Ví dụ, hãy xem GemStone và Orient ở nước ngoài: Một nghiên cứu điển hình về ngành vận tải biển .

Seaside là một lý do chính đáng để học Smalltalk, nhưng tôi không nghĩ bạn sẽ thấy nó tốt hơn Rails.

Điều thuyết phục tôi là GemStone. Tôi thực sự thích GLASS của Gemstone (GemStone, Linux, Apache, Smalltalk, Seaside). Phần sát thủ của điều đó là GemStone, xử lý tất cả các đối tượng tồn tại cho bạn mà bạn hầu như không nghĩ đến nó. Xem một số bản demo của họ và nghe về những gì mọi người đang làm với GemStone đã đặt lại ý tưởng của tôi về "ứng dụng lớn" nghĩa là gì.

Phần khiến tôi khó chịu nhất về Rails là ánh xạ quan hệ đối tượng. Điều đó không có gì chống lại Ruby bởi vì nó cũng tệ như trong GLORP (xử lý ActiveRecord cho Smalltalk) hoặc Perl, hoặc bất cứ thứ gì khác. Ánh xạ các đối tượng vào các bảng cơ sở dữ liệu chỉ là một vấn đề khó khăn. Với GemStone, suy nghĩ về cơ sở dữ liệu biến mất, vì vậy công việc với cơ sở dữ liệu cũng biến mất. Nó giống như một hòn đá khổng lồ (hoặc một đội quân khỉ) được lấy ra khỏi lưng tôi.


1
Tôi ước tôi có thể bỏ phiếu hai lần ... Tôi hoàn toàn đồng ý.
Sébastien RoccaSerra 30-08

1
+1 vì cho thấy sự vượt trội của ODB so với ORM. đi từ một đến khác chắc chắn là một cái gì đó bạn có thể cảm thấy
ryan0

15

> không thể tìm thấy một môi trường phát triển Smalltalk không tốn cả tay và chân

Google - smalltalk miễn phí

Cincom Smalltalk, Squeak, GNU Smalltalk


Squeak thực sự rất hay! OOP thuần túy, hoàn toàn bằng đồ họa, giao diện người dùng đáng yêu, mã nguồn mở (một số không đồng ý về điều này), ít nhiều di động ...
Joe Pineda

1
+1 cho Squeak và nó có một cộng đồng tuyệt vời với danh sách gửi thư tuyệt vời cho người mới bắt đầu.
Sébastien RoccaSerra

+1 đối với Squeak, trình khám phá đối tượng (hoặc bất cứ thứ gì được gọi là) là vô giá để tìm hiểu cách hoạt động của mô hình đối tượng.
Mauricio Scheffer

3
Pharo miễn phí và có tất cả các công cụ hiện đại ..
Dafydd Rees

15

Học Smalltalk sẽ cung cấp cho bạn nền tảng về phát triển phần mềm hướng đối tượng từ quan điểm của người đã phát minh ra OO (Alan Kay). Ý tưởng về một môi trường cửa sổ chồng chéo đến từ Smalltalk.

Một trở ngại khi học Smalltalk là nó là một hệ thống truyền thông báo với cú pháp lạ để kiểm soát luồng như:

i < 60
   ifTrue: [ self walk ]

Nó có một thư viện lớp rất trưởng thành có tính nhất quán mà tôi chưa thấy ở quá nhiều nơi. Thư viện lớp học trong tất cả các môi trường (ngay cả các Smalltalks thương mại) có sẵn nguồn cho phép bạn học từ những bậc thầy của ngôn ngữ. Khi lập trình Smalltalk, tôi luôn đặt câu hỏi rằng nó được thực hiện trong môi trường như thế nào.

Smalltalk thường được triển khai trong một hình ảnh là môi trường sống cho tất cả các đối tượng trong hệ thống của bạn.

Trình gỡ lỗi tương tác thực sự tách Smalltalk khỏi Ruby.

Seaside là khung phát triển web và đã mang đến cho Smalltalk một điểm nhấn mới. Đây là một môi trường dựa trên sự tiếp tục cho phép gỡ lỗi nội bộ và trải nghiệm phát triển kiểu Rich Client mượt mà (luồng ứng dụng hàng đầu có thể được thiết kế theo một phương pháp duy nhất). Việc tích hợp với script.aculo.us đã được thực hiện theo cách mà nó dễ dàng được gọi từ bên trong Smalltalk.


1
Cú pháp này không lạ - nó thực sự RẤT thanh lịch. Nó phải được đọc là: này, bất kể kết quả của bạn là "i <60" là gì, đây là một đoạn mã (mã-đối ​​tượng được truyền dưới dạng đối số), được đánh giá nếu bạn nghĩ rằng bạn đúng. Điều buồn cười là, nó thậm chí còn hoạt động, nếu "i <60" trả về một điều thống kê, mờ.
blabla999

... và thứ thống kê, mờ ảo đó sau đó có thể quyết định (như một phương pháp) giải quyết vấn đề đó như thế nào. Không có một toán tử hoặc cấu trúc điều khiển buildIn nào không thể được định nghĩa lại theo cách này.
blabla999

10

Nigel, một câu trích dẫn mà tôi có là:

Mặc dù bây giờ đã lâu rồi tôi không làm bất cứ điều gì với nó, tôi đề cử Smalltalk, tôi vẫn chưa thấy bất cứ điều gì khá thích nó vì có thể chuyển suy nghĩ thành mã máy tính. Đó không chỉ là ngôn ngữ: Đó là môi trường trình duyệt tuyệt vời, các thư viện và văn hóa viết mã rõ ràng, được thiết kế tốt, nhanh chóng như bất cứ thứ gì khác có thể tạo ra mì Ý. Khi những người tham gia tại JavaOne ca ngợi cách Java hoạt động hiệu quả hơn bất cứ thứ gì khác, tôi cần một túi giấy màu nâu. Ồ, quay lại việc sắp xếp các classpath của tôi ... - Martin Fowler (Tạp chí Phát triển Phần mềm, tháng 1 năm 2001)

Tôi tìm thấy nó ở đây .


9

Sẽ không đồng ý với người đăng tin rằng bạn sẽ không sử dụng Smalltalk cho các ứng dụng lớn - đó chính xác là nơi nó tỏa sáng. Nhưng tôi cũng đã tạo ra các ứng dụng nguyên mẫu khá thú vị (lưu ý chữ thường) trong vòng chưa đầy một tuần.

Tôi đã học OO ở ST bắt đầu từ năm 92, vô cùng vui vì tôi đã học được như vậy. Nó đã cho tôi một nền tảng thực sự về OO. Suy nghĩ trong các lớp học. Không có loại nào. ST thực sự nhấn mạnh vào việc nhắn tin. Nếu bạn muốn biết điều gì đó, hãy gửi một đối tượng một tin nhắn và nhận được câu trả lời. IMHO, các đặc tính và IDE thực sự khuyến khích bạn làm điều đúng đắn với sự kết hợp và gắn kết của bạn.

Trong công việc ngày Java của tôi, tôi bị mắc kẹt với các tệp, generic, IDE giống như nhật thực là những đơn đặt hàng có năng suất thấp hơn bất kỳ ST IDE nào. Tôi đã sử dụng ST trong lần duy nhất tôi hoàn thành quá trình phát triển trước thời hạn. Trên thực tế, nó rất hiệu quả, và chúng tôi đã sử dụng lại rất nhiều, tôi đã phải chuyển sang một dự án khác, vì tôi không có gì để làm! (Được rồi, có lẽ tôi đã có thể dành thời gian học cách ước lượng ...)

Tải xuống squeak, tìm một cuốn sách hay và chơi. Chỉ có một nhược điểm là nếu buổi biểu diễn trong ngày của bạn sử dụng Java hoặc C #, bạn sẽ ước mình có thể sử dụng ST. Bạn sẽ về nhà sớm hơn.

Chris Brooks


9

Tôi khuyên mọi người nên học Lisp (Scheme) hoặc Smalltalk.

Smalltalks có những IDE tuyệt vời mà bạn không muốn bỏ lỡ khi vượt qua cú sốc văn hóa. Và có, có nhiều hơn một cái miễn phí: Squeak, Dolphin, Smalltalk / X và Visualworks (Non-Comercial).

Tuy nhiên, Lisp có thể còn rõ ràng hơn về nền tảng toán học của nó.

Trân trọng

PS: thực sự tôi khuyên bạn nên học cả hai!


8

Tôi không biết Ruby ..

Smalltalk là một ngôn ngữ OO thuần túy . Nếu bạn cảm thấy cần phải thực sự hiểu OO, chứ không chỉ là OO mô phỏng của hầu hết các ngôn ngữ 'OO' phổ biến (như C ++, Java, v.v.), thì tôi khuyên bạn nên chơi với smalltalk.

Trong smalltalk, mọi thứ đều là một đối tượng, với các thuộc tính, hành vi và meta. Trong mô phỏng, bạn có các kiểu dữ liệu mà bạn sử dụng trong các đối tượng của mình.

Tôi sẽ nói chơi với nó, bạn sẽ chỉ có lợi.


1
Trong SmallTalk, ngay cả các "lớp" cũng là các đối tượng, thể hiện của lớp Lớp !!! Điều này khiến tôi phát điên cho đến khi tôi mò mẫm nó!
Joe Pineda 29-08

1
Ruby cũng là một ngôn ngữ OO thuần túy theo nghĩa mà các Class cũng là các đối tượng. Các khối, các phương thức và tham chiếu của một con trỏ null cũng vậy.
Alan

4
Ruby lấy (Matz sẽ tự do nói điều này) nhiều ý tưởng từ Smalltalk. Theo nhiều cách, nó có thể được xem như một ngôn ngữ 'Thực dụng' (xin lỗi Hunt và Thomas) giống như ngôn ngữ Smalltalk.
ConcernedOfTunbridgeWells

7

Tôi hoàn toàn ở vị trí của bạn. Tôi đang sử dụng RoR và nhìn vào vùng đất Smalltalk. Dưới đây là một số ưu và nhược điểm mà tôi thấy quan trọng:

Ưu điểm:

  • Môi trường trưởng thành và ổn định
  • Chu kỳ phát triển nhanh
  • Khiến bạn suy nghĩ nhiều hơn và viết ít hơn

Nhược điểm:

  • Yêu cầu tư duy khác
  • Vẫn chưa hiểu lắm

Thật là buồn cười khi tôi biết về Smalltalk. Đó là một điều liên tục xuất hiện trong kết quả của Google khi tìm kiếm nội dung Lisp và Erlang. Một ngày nọ, tôi kiểm tra nó và ngạc nhiên với môi trường cửa sổ đẹp. Vài giây sau, tôi đã tìm thấy khung công tác Aida / Web. Tôi đã bị cuốn hút và bắt đầu học Smalltalk thông qua phát triển web với khung công tác này.

Vẫn chưa hoàn toàn ở đó, nhưng nó rất thú vị, tôi không thể ngồi yên ... :-) Tôi đang vui vẻ trở lại.


5

Sẽ không bắt đầu học nó nếu tôi có thời gian. Tại sao không? Bởi vì sẽ hiệu quả hơn và sinh lợi về mặt tài chính nếu học C # hoặc Java.

Mặt khác, nếu bạn là một người có sở thích và muốn tìm hiểu về khảo cổ học, thì tôi khuyên bạn nên dành một chút thời gian để xem cái gì, khi nào, tại sao và như thế nào của smalltalk bằng cách nghiên cứu Alan Kay. Câu chuyện hấp dẫn và một con người đáng kinh ngạc (sau cùng, anh ấy đã giành được Giải thưởng Chuyển hướng). Sau đó, có thể chơi với tiếng rít một chút để có cảm giác với ngôn ngữ. Sau đó, bạn có thể có một sự tôn trọng / hiểu biết mới về các khối, các bao đóng và các nguyên tắc Hướng đối tượng.

Tôi biết và sử dụng Smalltalk, được khoảng 15 năm, vẫn đang duy trì nó và không muốn giới thiệu Smalltalk cho bạn bè. Tại sao không? Việc làm là một điều tốt cần có và tiếp tục nhận được. Mặc dù bạn có thể học hỏi được nhiều điều từ Smalltalk nhưng không thể dễ dàng biến điều đó thành việc làm một cách hữu ích trong thời đại ngày nay.

Ngoài ra, bạn có vẻ hào hứng với Seaside và tôi sẽ đảm nhận quan hệ đối tác Seaside / GemStone. Tôi đã sử dụng GemStone được một thời gian và cả hai đều rất hấp dẫn. Tôi hy vọng họ có thể có được thị phần và động lực cần thiết để thành công.


5

Đừng! Nếu bạn thực sự bắt đầu học nó, bạn có thể không muốn lập trình trong một thứ khác nữa.

Điều này có thể không đúng, nếu bạn là một lập trình viên ngọng.



4

Hoàn toàn có thể, hãy học Smalltalk! Đây là năm 2015 và Smalltalk đang tăng trở lại nhờ Pharo . Pharo là MIỄN PHÍ. Pharo đang nhanh chóng phát triển thành một công cụ doanh nghiệp mạnh mẽ. Ở Phiên bản 4.0, và sắp là 5.0, nó đã trưởng thành rất nhiều chỉ trong bốn năm!

Sau đó là Amber , đó là Smalltalk cho web. Nó cũng MIỄN PHÍ và phát triển nhanh chóng.

Bất chấp danh tiếng của Smalltalk , đây không phải là Smalltalk của cha bạn. Smalltalk hiện đại rất thú vị và đầy hứa hẹn.

Đúng là công việc của Smalltalk chưa (chưa) dồi dào. Nhưng nếu đủ số bạn tập hợp thành một làn sóng Smalltalker mới, thì ngành công nghiệp sẽ thích ứng với nó và chúng ta sẽ thấy việc áp dụng Smalltalk vào kinh doanh rộng rãi hơn. Câu hỏi là bạn có tầm nhìn không?


3

Tôi đã được dạy Smalltalk trong một trong những khóa học Lập trình hướng đối tượng cấp đại học đầu tiên (khoảng năm 1988). Giáo viên cho rằng tốt nhất nên bắt đầu là một ngôn ngữ OO "thuần túy", trước khi chuyển sang một ngôn ngữ hợp thời hơn (chúng tôi đã làm một chút về C ++ vào cuối học kỳ).

Theo cách đó, tốt nhất vẫn nên bắt đầu với OO thuần túy, mặc dù ngày nay chúng ta có Java & C #, cả hai đều là OO "gần như thuần túy" - đủ gần để bạn có thể nhận được bằng cách bỏ qua các tính năng không phải OO của chúng, và giới hạn bản thân trong tập hợp con Pure-OO của các ngôn ngữ.



3

Tôi đã là một kỹ sư phần mềm được vài năm rồi. Tôi đã nghe mọi người nhắc đến Smalltalk một vài lần, và chắc chắn Smalltalk đã xuất hiện từ khoảng năm 1980, nhưng đó là một trong những ngôn ngữ dường như chưa bao giờ được đưa vào phần mềm chính thống. Đại loại như Objective C, CLIPS, PL / I, v.v. - thứ mà bạn có thể đã nghe nói đến, nhưng là thứ mà hầu hết mọi người chưa bao giờ lập trình.

Tôi có lẽ sẽ không dành thời gian để học Smalltalk trừ khi tôi cần cho một công việc cụ thể. Tôi đã xem qua một số hướng dẫn và ví dụ về Smalltalk một thời gian ngắn cách đây vài năm và có vẻ như nó có một số lợi thế rõ ràng cho một số khía cạnh nhất định của lập trình OO (như khái niệm tin nhắn có vẻ thú vị). Nhưng đáng buồn thay, nó không phải là xu hướng chủ đạo và dường như không có nhiều động lực.


3
Objective-C ... dont nghĩ rằng tuyên bố vẫn đứng như năm 2012. :)
sjas

@sjas Thật đúng như vậy! Tất cả những gì Smalltalk cần bây giờ là để một nhà phát triển lớn tạo ra một thị trường ngách thiết bị mới và chỉ định Smalltalk làm ngôn ngữ defacto để viết ứng dụng cho thiết bị!
Ogre Psalm33

2

Chủ đề này đã trở nên rất thực tế đối với tôi. Tôi đang lên kế hoạch di chuyển Phần mềm sang ứng dụng web. Đó là một phần mềm dựa trên cơ sở dữ liệu. Tôi đang đặc biệt kiểm tra các lựa chọn thay thế 1) Đường ray 2) Bờ biển

Nếu tôi có thể lấy các số liệu cho Gemstone / S dưới dạng Cơ sở dữ liệu, tôi cũng sẽ xem xét điều đó. Vì vậy, đối với tôi, điều đó có nghĩa là tôi phải học Smalltalk (tốt hơn) so với trước đây. Vì nó có thể là công việc của tôi trong 15 năm tới. Bạn sẽ (và không nên) làm việc với phần mềm mà bạn không thích trong thời gian dài ;-). Tôi có ấn tượng Gemstone / S là một trong những ứng dụng "sát thủ". Nhưng kiên trì đối tượng vẫn là một lĩnh vực rất khó ....


2

1) Có! Nó luôn luôn tốt để học một ngôn ngữ. Nếu bạn định học một ngôn ngữ, hãy biến nó thành một ngôn ngữ có sức ảnh hưởng lớn và có thể học dễ dàng và nhanh chóng.

Smalltalk vẫn là một ngôn ngữ và môi trường ưu việt để học các khái niệm OO.

Nó là tất cả các đối tượng, tất cả các cách xuống. Điều này tạo ra một cách tiếp cận thực sự nhất quán để làm việc.

Số nguyên là thể hiện của Số nguyên lớp. Chuỗi là một tập hợp các đối tượng ký tự. Các lớp là các đối tượng thể hiện singleton cho lớp mà chúng định nghĩa.

Các cấu trúc điều khiển hoạt động bằng cách gửi các thông điệp nhận được đến các thể hiện của Class Boolean.

Ngay cả các phương thức ẩn danh (khối mã, hay còn gọi là khối) cũng là đối tượng.

Mọi thứ được thực hiện bằng cách gửi tin nhắn đến một đối tượng. Cú pháp có thể được trang bị trên một bưu thiếp.

Sự rõ ràng của các khái niệm và việc triển khai chúng trong Smalltalk có nghĩa là bạn có thể phát triển các cách suy nghĩ chuyển trực tiếp sang Java, Ruby và C #. Tôi hy vọng nó cũng đúng với Python.

Thật tốt khi làm cho các khái niệm trở nên rõ ràng rằng một trường đại học lớn của Vương quốc Anh đã sử dụng Smalltalk để đào tạo 5.000 người mỗi năm về máy tính hướng đối tượng.

Squeak 5, vừa được phát hành. Nó đã đạt được sự gia tăng hiệu suất lớn từ Cog / Spur VM mới, có tính năng thu gom rác liên tục.

Pharo 4 có một chủ đề máy tính để bàn trông sạch sẽ đáng yêu. Phiên bản tiếp theo, Pharo 5, sẽ sớm được phát hành. Nó sẽ chuyển sang sử dụng Cog / Spur VM, nó sẽ có khoảng 5.000 lớp trong bản phát hành và các gói bổ sung của các lớp có sẵn trên mạng thông qua công cụ Trình duyệt cấu hình.

Squeak 5 hoạt động hiệu quả ngay cả trên Raspberry Pis thế hệ đầu tiên và nhanh hơn gần 50% trên Raspberry Pi 0 $ mới. 99 đô la mua cho bạn Raspberry Pi 2, màn hình và vỏ - chạy một IDE trưởng thành, đầy đủ tính năng.

Nghiên cứu hàng đầu đang được thực hiện trên các hệ thống OO được điều phối, phân phối ở Smalltalk (ví dụ: Naiad và Spoon).

Một số cơ sở dữ liệu công ty lớn nhất thế giới được chạy trên Smalltalk - bao gồm theo dõi 60% container vận chuyển trên thế giới và hệ thống giao dịch tại ngân hàng lớn nhất thế giới.

Bạn có thể sử dụng Smalltalk như một loại CoffeeScript siêu cấp, viết bằng Amber Smalltalk và chuyển sang JavaScript, chạy trong trình duyệt.

Squeak, Pharo và Amber đều là các ngôn ngữ và môi trường miễn phí, mã nguồn mở, được cấp phép mở.

Squeak và Pharo cung cấp khả năng ghi một lần, chạy ở mọi nơi cho MacOS, Windows và Linux. (Có thể cả RiscOS).

Dolphin Smalltalk được nhắm mục tiêu chắc chắn vào giao diện Windows gốc và cho phép bạn biên dịch các tệp .exes đã đóng của tác phẩm đã hoàn thành của bạn để phân phối cho người dùng cuối. Việc phát triển thêm Dolphin của nhà cung cấp đã dừng lại, nhưng nó hoàn toàn hoạt động bình thường và giống như tất cả các Smalltalks, được thiết kế để có thể mở rộng đại trà. (Tôi đã đề cập rằng Pharo hiện có 5.000 lớp, so với 3.000 của Squeak? Pharo là một nhánh của Squeak 3.9)

** Có Hướng dẫn cách cài đặt và khởi động Squeak, Amber, Pharo, Cuis và Dolphin tại: ** http://beginningtosmalltalk.blogspot.co.uk/2015/11/how-to-get-smalltalk- up-and-running.html

Khung web Seaside chạy trên Squeak và Pharo. Đó là một công cụ hoàn thiện tuyệt vời, cũng như khuôn khổ AidaWeb truyền thống hơn.

VisualAge, VisualWorks và Gemstone đều cung cấp các hệ thống mạnh mẽ cấp doanh nghiệp. Gemstone cung cấp một cơ sở dữ liệu đối tượng có thể mở rộng vô hạn với các giao dịch và tính bền bỉ.

2) Có - Tôi đã sử dụng nó.

Tôi đã học nó qua Đại học Mở, và ngay lập tức làm việc hiệu quả trong Ruby (một bản sao của cuốn sách Pickaxe và tài liệu tham khảo thư viện bên cạnh tôi). Nó đã giúp tôi rất nhiều với Java và với Xerox Moo-code.

Tôi vừa quay lại với nó để viết ứng dụng để kiểm soát quản lý và phân phối các ứng dụng di động đa nền tảng đáp ứng.

Tôi hy vọng rằng tôi cũng sẽ sớm viết lại các ứng dụng di động JavaScript của mình bằng Amber.


1

Tôi thực sự không biết bạn đang tìm gì.

Nếu bạn đang tìm kiếm một ngôn ngữ khác để viết, tôi nghĩ rằng điều đó sẽ phụ thuộc nhiều vào các thư viện có sẵn. Tôi không biết cả Ruby và Smalltalk, nhưng có vẻ như cách hiệu quả nhất để viết Ruby on Rails-các loại ứng dụng có thể không phải là Smalltalk.

Nếu bạn đang muốn tìm hiểu những ý tưởng đằng sau Ruby, đây có thể là một động thái rất tốt. Tôi không có bất cứ điều gì định lượng, nhưng tôi luôn cảm thấy tốt hơn khi sử dụng các công cụ (chẳng hạn như hệ thống ngôn ngữ) nếu tôi biết nhiều hơn chỉ là các công cụ, nếu tôi biết các ý tưởng đằng sau chúng hoặc cách chúng hoạt động.

Nếu bạn muốn học các loại ngôn ngữ hướng đối tượng khác nhau, bạn cũng có thể muốn học Smalltalk (nếu nó khác đáng kể với Ruby), một thứ gì đó như Java hoặc C ++, và có lẽ cũng là Hệ thống đối tượng Lisp chung.

Nếu bạn chỉ muốn tìm hiểu một cái gì đó khác biệt, Smalltalk có thể là một lựa chọn tốt. Tôi cũng muốn đề xuất Common Lisp, và những người khác chắc chắn sẽ có những đề xuất khác (bạn có thể có được một hệ thống Forth tốt ngày nay không?).


Rõ ràng là bạn đã không xem qua Seaside. Cách hiệu quả nhất để viết loại ứng dụng Ruby-on-Rails rõ ràng là với Seaside.
Stephan Eggermont

Chưa xem qua Seaside và chưa sử dụng Ruby hoặc Smalltalk, vì vậy đây là lời khuyên chung. Cảm ơn vì đã chỉ ra Seaside.
David Thornley

-5

Vâng, tôi quan tâm đến nó. Đã cố gắng bắt đầu một lần, nhưng không thể tìm thấy một môi trường phát triển Smalltalk mà không tốn cả hai tay và một chân.


1
Squeak (từ squeak.org ) là một triển khai mã nguồn mở miễn phí dựa trên hình ảnh Smalltalk-80 gốc.
Kevin Driedger 29/09/08

VisualWorks hiện cũng có sẵn dưới dạng freebit. Bạn có thể lấy nó từ cincomsmalltalk.com
ConcernedOfTunbridgeWells
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.