Câu hỏi Bạn có bắt đầu học Smalltalk không? [đã đóng]


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 bạn 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 nên 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 như "Smalltalk Light". Lý do thứ hai tại sao tôi quan tâm đến Smalltalk là Bên bờ biển.

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

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


76
2017-09-29 14:57


gốc




Các câu trả lời:


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

Lý do để tìm hiểu Smalltalk:

  • Đó là một môi trường lập trình thực sự tốt đẹp. Một khi bạn đã có đầu của bạn xung quanh nó (nó có xu hướng là một chút của một cú sốc văn hóa cho những người sử dụng để C + + hoặc Java) bạn sẽ tìm thấy nó là một môi trường thực sự tốt để làm việc in Ngay cả một smalltalk thực sự crappy như Những cái cũ của Digitalk mà tôi sử dụng là một hệ thống đáng chú ý để sử dụng. Nhiều kiểu XP và O-O cũ như Kent Beck và Martin Fowler cắt răng trên Smalltalk trở lại trong ngày và đôi khi có thể được lắng nghe khao khát những ngày xưa tốt đẹp ở nơi công cộng (Cảm ơn Frank Shearer đã trích dẫn, +1) - Phát triển nhanh có nguồn gốc trên 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 ngoài kia. Tại một thời điểm nó đã khá hợp thời trang trong vòng tròn thị trường tài chính, nơi năng suất phát triển và thời gian để thị trường là khá nhiều. Cho đến giữa những năm 1990, nó ít nhiều là trò chơi duy nhất trong thị trấn (Với ngoại lệ có thể có của 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 cho phát triển ứng dụng.

  • 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 thực sự là một lý do, nhưng Gang of Four Book sử dụng Smalltalk cho một số ví dụ của họ.

Lý do không 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 .com ứng dụng nơi bạn sở hữu máy chủ điều này có thể không phải là một vấn đề.

  • Nó được nhiều người xem như một hệ thống di sản. Có khá ít phát triển mới trên nền tảng này (mặc dù Seaside dường như đang lái một chút thời kỳ phục hưng).

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

  • Nó hơi ngây thơ 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ó khuynh hướng phức tạp hơn và do đó dễ dàng tích hợp với phần mềm của bên thứ ba hơn. Tuy nhiên, khác nhau chính thống hơn hệ thống bị loại hình này của insularity đến một 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 của họ nhiều.


57
2017-09-29 15:51



Ruby cũng đã được chuyển đến Gemstone: nó được gọi là Maglev: infoq.com/news/2008/04/maglev-gemstone-builds-ruby - brian d foy
Bạn có ý gì bởi "nó có xu hướng không chơi độc đáo với các hệ thống kiểm soát nguồn truyền thống"? - detly
Cách một mã nguồn lưu trữ Smalltalk truyền thống có nghĩa là mã nguồn được nhúng trong 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 tập hợp các tập tin chương trình sạch sẽ giống như bạn sẽ nhận được (nói) C. Cá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ỏ nhận thức chuyên biệt, có xu hướng là (a) độc quyền, (b) đắt 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) của những vấn đề này. Squeak đã sử dụng nó rất nhiều, và SqueakSource có rất nhiều dự án sử dụng nó. Nó vẫn cò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ẽ rơi vào bên lề đường. - Frank Shearar
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. Thực tế bạn không thấy nhiều API không phải vì bạn về mặt kỹ thuật không thể tích hợp chúng, là bởi vì nó là một niche (vì vậy ít người cần phần mềm bên ngoài). Một lý do thứ hai cho hiệu ứng đó (đó cũng không phải là kỹ thuật) là những người đi bộ nhỏ sẽ thích giải quyết các vấn đề trong smalltalk hơn là trong các công nghệ ít thú vị khác. - Sebastian Sastre


Vâng, vì bạn đã đề cập đến tôi bằng tên, tôi cảm thấy tôi nên kêu vang.

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 tôi tại http://MethodsAndMessages.vox.com/, đây là "năm của smalltalk"Và bây giờ đã thực hiện tuyên truyền 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 đang làm việc chăm chỉ để nắm bắt dòng chảy mới của sự chú ý. Các cuộc hội thảo của Smalltalk đang được lên kế hoạch.

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

Chỉnh sửa

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


42
2017-09-29 22:23



Đó là lý do tại sao Stack Overflow là mát mẻ! Cảm ơn bạn vì câu trả lời! - Christoph Schiessl
Ngoài sự tò mò, bạn có thể xây dựng trên luồng sự chú ý - bất kỳ ý tưởng nào mà tâm trí đến từ đâu không? - ConcernedOfTunbridgeWells
Ruby chắc chắn đã giúp, tôi nghĩ rằng Javascript và Objective-C quá. Đối với những người không nhận đượ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 đó, các chàng trai 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 là khá vocal quá :) Ngoài Google V8 của Lars Bak đến từ tự ... có rất nhiều tín hiệu nhỏ như thế, tất cả các hinting tại Smalltalk và Lisp, các ngôn ngữ lạ từ tương lai-trong-quá khứ :) - Damien Pollet


Smalltalk là một ngôn ngữ tốt để học, và điều tuyệt vời là 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ể nhân rộng xử lý hàng tỷ đô la. Họ không nói nhiều về nó. Xem, ví dụ, GemStone và Orient Overseas Container Lines: Nghiên cứu điển hình về ngành vận chuyển.

Seaside là một lý do tốt để học Smalltalk, nhưng tôi không nghĩ rằng bạn sẽ thấy nó có sức mạnh lớn 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 giết người trong số đó là GemStone, xử lý tất cả các đối tượng kiên trì đối với bạn chủ yếu mà không cần bạn nghĩ về nó. Nhìn thấy 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" có ý nghĩa gì.

Phần mà tôi làm phiền nhất về Rails là ánh xạ đối tượng-quan hệ. Đó là không có gì chống lại Ruby bởi vì nó hút chỉ là khó khăn trong GLORP (mà xử lý ActiveRecord cho Smalltalk), hoặc Perl, hoặc bất cứ điều gì khác. Việc ánh xạ các đối tượng tới các bảng cơ sở dữ liệu chỉ là đau đớn. Với GemStone, suy nghĩ về cơ sở dữ liệu biến mất, do đó 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ồ (hay một đội khỉ) bị lấy ra khỏi lưng tôi.


26
2017-09-29 22:27



Tôi ước tôi có thể bỏ phiếu hai lần ... Tôi hoàn toàn đồng ý. - Sébastien RoccaSerra
1 để hiển thị mức độ ưu việt 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


Học Smalltalk sẽ cung cấp cho bạn nền tảng trong phát triển phần mềm hướng đối tượng theo 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 điệp với một 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 mà có một sự nhất quán tôi đã không nhìn thấy quá nhiều nơi. Thư viện lớp trong mọi môi trường (ngay cả Smalltalks thương mại) có sẵn nguồn cho phép bạn học từ các bậc thầy của ngôn ngữ. Khi lập trình Smalltalk, tôi luôn đặt câu hỏi như thế nào trong môi trường.

Smalltalk thường được thực hiện trong một hình ảnh mà là một 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ỡ rối tương tác thực sự tách riêng Smalltalk khỏi Ruby.

Seaside là khung phát triển web và đã cho Smalltalk một sự chú ý mới. Nó là một môi trường dựa trên tiếp tục cho phép gỡ lỗi trong nội bộ và một 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 thức đơn). Việc tích hợp với script.aculo.us đã được thực hiện theo cách dễ dàng gọi từ bên trong Smalltalk.


15
2017-09-29 15:15



Cú pháp không lạ - nó thực sự rất thanh lịch. Nó phải được đọc là: hey, bất cứ điều gì bạn kết quả của "i <60" là, đây là một đoạn mã (đối tượng mã được chuyển làm đối số), được đánh giá nếu bạn nghĩ rằng bạn là đúng sự thật. Điều buồn cười là, ngay cả khi làm việc, nếu "i <60" trả về một điều mờ mờ, thống kê. - blabla999
... và điều thống kê mờ đó sau đó có thể quyết định (như một phương pháp) làm thế nào để đối phó với điều đó. Không có một toán tử builtIn đơn hoặc cấu trúc điều khiển nào không thể được định nghĩa lại theo cách này. - blabla999


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

Google - miễn phí smalltalk

Cincom Smalltalk, Squeak, GNU Smalltalk


13
2017-09-29 15:11



Squeak thật sự rất tuyệt! OOP tinh khiết, hoàn toàn đồ họa, giao diện người dùng đáng yêu, nguồn mở (một số không đồng ý về điều này), ít nhiều di động ... - Joe Pineda
1 cho Squeak, và nó có một cộng đồng tuyệt vời với một danh sách gửi thư tốt đẹp cho người mới bắt đầu. - Sébastien RoccaSerra
1 cho Squeak, trình thám hiểm đối tượng (hoặc bất kỳ thứ gì được gọi) là vô giá cho việc học cách mô hình đối tượng hoạt động. - Mauricio Scheffer
Pharo là miễn phí và có tất cả các công cụ hiện đại .. - daf


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

Mặc dù đã lâu rồi kể từ khi tôi làm bất cứ điều gì với nó, tôi đã đề cử Smalltalk, tôi vẫn chưa bắt gặp bất cứ điều gì khá thích nó vì có thể chuyển ý nghĩ thành mã máy tính. Nó 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 như bất kỳ thứ gì khác có thể quăng ra spaghetti. Khi những người tham gia tại JavaOne đã extolling như thế nào Java đã được nhiều hơn nữa sản xuất hơn bất cứ điều gì khác, tôi cần một túi giấy màu nâu. Ồ, quay lại để phân loại các lớp học 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
2017-09-30 13:17



Cảm ơn. Tôi đã chỉnh sửa bài đăng của mình để đưa nó lên. - ConcernedOfTunbridgeWells


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

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

Trong smalltalk tất cả mọi thứ là một đối tượng, với các thuộc tính, hành vi và meta. Trong các 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 hưởng lợi.


8
2017-09-29 15:09



Trong SmallTalk, thậm chí "các lớp" là các đối tượng, các thể hiện của lớp Class !!! Điều này đã khiến tôi phát điên lên cho đến khi tôi gục nó! - Joe Pineda
Ruby cũng là một ngôn ngữ OO thuần túy theo nghĩa là ngay cả Lớp là đối tượng. Vì vậy, là các khối, phương pháp và tham chiếu của một con trỏ null. - Alan
Ruby mất (Matz sẽ tự do tuyên bố điều này) nhiều ý tưởng từ Smalltalk. Theo nhiều cách, nó có thể được xem như là một 'Thực dụng' (xin lỗi với Hunt và Thomas) Ngôn ngữ giống như Smalltalk. - ConcernedOfTunbridgeWells


Sẽ không đồng ý với người đăng những người cho 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 đã tạo ra các ứng dụng nguyên mẫu khá hấp dẫn (lưu ý chữ thường) trong một tuần nữa.

Tôi đã học OO ở ST bắt đầu từ năm 92, vô cùng vui vì tôi đã làm như vậy. Nó đã cho tôi một nền tảng thực sự trong OO. Suy nghĩ trong lớp học. Không có loại nào. ST có trọng tâm thực sự về nhắn tin. Nếu bạn muốn biết một cái gì đó gửi một đối tượng một tin nhắn và nhận được một 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 với khớp nối và sự gắn kết của bạn.

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

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

Chris Brooks


8
2017-10-14 11:41





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

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

Lisp có thể thậm chí còn sạch hơn trong nền tảng toán học của nó, mặc dù.

Trân trọng

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


8
2017-12-23 00:53



+1 cho "tìm hiểu cả hai!" - Frank Shearar