Smalltalk

Smalltalk
Tập tin:Smalltalk80book.jpg
Mẫu hìnhLập trình hướng đối tượng
Thiết kế bởiAlan Kay, Dan Ingalls,
Adele Goldberg
Nhà phát triểnAlan Kay, Dan Ingalls,
Adele Goldberg,
Ted Kaehler,
Scott Wallace,
Xerox PARC
Xuất hiện lần đầu1969 - xây dựng
1980 - phát hành
Kiểm tra kiểukiểu động
Các bản triển khai lớn
Squeak, VisualWorks,
VA Smalltalk
Ảnh hưởng từ
Lisp,[1] Simula,[1] Euler,[1] IMP,[1] Planner,[1] Logo,[2] Sketchpad,[1] ARPAnet,[1] Burroughs B5000[1]
Ảnh hưởng tới
AppleScript, Common Lisp Object System, Dart, Dylan, Erlang, Etoys, Go, Groovy, Io, Ioke, Java, Lasso, Logtalk, Newspeak, NewtonScript, Object REXX, Objective-C, Raku, Ruby, Scala, Scratch, Self, Swift, Python.

Smalltalk là ngôn ngữ lập trình hướng đối tượng, kiểu dữ liệu động, và có tính phản xạ. Smalltalk được thiết kế nhằm bảo vệ tối đa các đặc điểm ngắn gọn và trong sáng của nó và không hướng đến tính khả dụng (usability) hay tính hiệu năng (performance). Vì vậy nó phù hợp với các mục đích giáo dục hơn là mục đích thương mại, tuy nhiên các đặc điểm của Smalltalk đã ảnh hưởng và góp phần mang lại thành công cho nhiều ngôn ngữ khác trong đó có Java, C#.

Ngôn ngữ Smalltalk được phát triển bởi nhiều tác giả qua nhiều thời kỳ khác nhau các tác giả chính bao gồm Alan Kay, Dan Ingalls, Adele Goldberg, Ted Kaehler, Scott Wallace.

Smalltalk thường được nhắc đến như là tiêu chuẩn ngôn ngữ lập trình, không phải là một trình biên dịch cụ thể. Đã có nhiều trình biên dịch khác nhau sử dụng ngôn ngữ Smalltalk như Smalltalk-80, VisualAge Smalltalk.v.v... Tiêu chuẩn được biết đến nhiều là ANSI Smalltalk được phê chuẩn vào năm 1998.

Tính hướng đối tượng

[sửa | sửa mã nguồn]

Mọi thứ trong một chương trình Smalltalk đều là đối tượng. Đây là điểm mạnh thường được nhắc đến nhất khi nói về Smalltalk.

Tính phản xạ

[sửa | sửa mã nguồn]

Một chương trình Smalltalk khi đã biên dịch và đang chạy, vẫn giữ lại tối đa các cấu trúc ở mức cao, ví dụ cấu trúc lớp, đối tượng, tên biến v.v... Nhờ tính phản xạ, người ta có thể lưu, truyền, phục hồi các đối tượng, ngoài ra, người ta dễ dàng phát triển các chương trình kiểm thử (tester), chương trình gỡ rối (debugger).

Đối với các ngôn ngữ không có tính phản xạ (ví dụ tiêu biểu là C/C++), sau khi biên dịch thành mã nhị phân, cấu trúc chương trình ở mức cao bị xóa đi, thay vào đó là kiến trúc mức CPU và API. Điều này gây nhiều phiền phức cho trình gỡ rối, khiến chúng phải sinh ra hàng loạt các tập tin mô tả.

Tính phản xạ có thể làm tăng chi phí bộ nhớ, và chi phí tính toán.

Ví dụ Hello World

[sửa | sửa mã nguồn]

Ví dụ sau đây năm dòng "Hello, World!" ra màn hình bằng cách gửi thông điệp show đến đối tượng Transcipt với tham số là chuỗi "Hello, world!"

 Transcript show: 'Hello, world!'.

Các trình biên dịch

[sửa | sửa mã nguồn]

Một số liên kết

[sửa | sửa mã nguồn]

Tham khảo

[sửa | sửa mã nguồn]
  1. ^ a b c d e f g h Kay, Alan; Ram, Stefan (23 tháng 7 năm 2003). “E-Mail of 2003-07-23”. Dr. Alan Kay on the Meaning of 'Object-Oriented Programming'. Bản gốc lưu trữ ngày 16 tháng 9 năm 2020. Truy cập ngày 3 tháng 1 năm 2009.
  2. ^ Lỗi chú thích: Thẻ <ref> sai; không có nội dung trong thẻ ref có tên History
Chúng tôi bán
Bài viết liên quan
Tóm tắt One Piece chương 1097: Ginny
Tóm tắt One Piece chương 1097: Ginny
Kuma năm nay 17 tuổi và đã trở thành một mục sư. Anh ấy đang chữa lành cho những người già nghèo khổ trong vương quốc bằng cách loại bỏ nỗi đau trên cơ thể họ bằng sức mạnh trái Ác Quỷ của mình
Vì sao vẫn cứ mãi là cẩu độc thân
Vì sao vẫn cứ mãi là cẩu độc thân
Sống hơn 20 năm rồi, quả là càng sống càng hiểu, hãy thử tổng kết lại vài nguyên nhân nào.
Giới thiệu TV Series Jupiter's Legacy
Giới thiệu TV Series Jupiter's Legacy
Jupiter's Legacy là một loạt phim truyền hình trực tuyến về siêu anh hùng của Mỹ do Steven S. DeKnight phát triển
[Phần 1] Nhật ký tình yêu chữa trĩ của tôi
[Phần 1] Nhật ký tình yêu chữa trĩ của tôi
Một câu truyện cười vl, nhưng đầy sự kute phô mai que