Tên của mô hình lập trình được đặc trưng bởi Go là gì?


8

Tôi bị thu hút bởi cách Go từ bỏ hệ thống phân cấp lớp và dường như từ bỏ hoàn toàn khái niệm về lớp theo nghĩa hướng đối tượng điển hình. Ngoài ra, tôi rất ngạc nhiên về cách các giao diện có thể được xác định mà không cần loại thực hiện giao diện đó cần biết.

Có bất kỳ thuật ngữ nào có thể / có thể được sử dụng để mô tả loại phương pháp lập trình và mô hình ngôn ngữ này (hoặc có lẽ các khía cạnh cụ thể của nó) không? Là mô hình ngôn ngữ Go có đủ mới và khác biệt với mô hình OOP cổ điển và đủ quan trọng trong lịch sử lập trình máy tính để đảm bảo một tên duy nhất không?


2
Tôi sẽ đề nghị nó được gọi là "Mã hóa đi"! : P
Thất vọngWithFormsDesigner

4
Khái niệm "có một kiểu thực hiện một giao diện mà không biết chính kiểu đó" không phải là mới; Haskell đã có khá nhiều điều tương tự (chỉ họ gọi nó là kiểu chữ thay vì giao diện) trong một thời gian khá lâu.
tdammers

7
Tôi nghĩ về giao diện kiểu triển khai một cách thờ ơ
Adam Crossland

Câu trả lời:


10

Thông điệp chuyển giữa các bối cảnh thực thi nhẹ, cùng với khả năng tạo và phá hủy các bối cảnh này một cách linh hoạt, về cơ bản là mô hình diễn viên .

Ngôn ngữ lập trình có xu hướng tiếp cận vấn đề biểu hiện theo một trong hai cách: Ngôn ngữ OO có xu hướng tập trung vào việc thực hiện dễ dàng hơn các thao tác tương tự bằng các loại dữ liệu khác nhau (ví dụ: "đối tượng tôi có thể nhấp bằng chuột" có thể là thanh cuộn, một cửa sổ, một menu, một hộp văn bản, v.v. - cùng một hoạt động, biểu diễn dữ liệu khác nhau), trong khi các ngôn ngữ chức năng có xu hướng tập trung vào việc dễ dàng thực hiện các hoạt động mới đối với cùng loại dữ liệu cơ bản. Bằng cách từ bỏ hệ thống phân cấp lớp, Go dường như kết thúc nhiều hơn về phía "chức năng" của sự phân chia này.

Như Adam Crossland đã chỉ ra trong nhận xét của mình, "loại giao diện triển khai thực hiện" có thể được coi là một hình thức gõ vịt, rất phổ biến trong các ngôn ngữ động. (Tuy nhiên, về mặt kỹ thuật chính xác hơn để coi đây là một hệ thống kiểu cấu trúc trong các mẫu Go. C ++ có lẽ là cách triển khai phổ biến nhất của hệ thống kiểu cấu trúc hiện nay.)

Go có rất nhiều tiền đề - tôi không nghĩ bất kỳ ý tưởng nào của nó là nguyên bản của ngôn ngữ. Nhưng tôi nghĩ đó thường là thước đo sai cho một ngôn ngữ dự định là thực tế. Có vẻ như nó trộn lẫn các ý tưởng hữu ích từ nhiều miền khác nhau lại với nhau một cách tao nhã, rằng (tôi nghĩ) sẽ dẫn đến việc lập trình hiệu quả hơn so với C # hoặc Java có thể mang lại. Tôi hy vọng nó đạt được lực kéo.


1
+1, đặc biệt là "Go có vẻ như nó trộn lẫn các ý tưởng hữu ích từ nhiều lĩnh vực khác nhau lại với nhau một cách tao nhã"
RCE

3

Nguyên thủy đồng thời.

Truyền đạt các quy trình tuần tự hoặc CSP là một bài báo của Charles Antony Richard Hoare, xuất bản lần đầu năm 1985 bởi Prentice Hall International.

Erlang là một ngôn ngữ chức năng và Go được cấu trúc, người ta có thể nói rằng Erlang là công cụ dự đoán cho Go.

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.