2011-09-07 32 views
5

Tôi đã nhận thấy nhiều ngôn ngữ như Ruby và CofeeScript (cũng là một trình biên dịch) hỗ trợ mọi thứ là một biểu thức.Mọi thứ đều là Biểu thức

Bây giờ nó làm cho ngôn ngữ hơi đơn giản để hiểu và chắc chắn có vẻ gọn gàng trên bề mặt, nhưng tôi đang tìm kiếm một số ấn phẩm học thuật về những mặt tích cực và tiêu cực của hai cách tiếp cận.

Sẽ rất có ích nếu các ấn phẩm có các ví dụ rõ ràng so sánh lợi ích của việc có mọi thứ trở thành một biểu thức so với, tốt, không.

Ví dụ trong CoffeeScript vs Javascript sẽ đẹp, nhưng không bắt buộc.

Khái niệm này chắc chắn là tuyệt vời, nhưng tôi vẫn còn hơi không chắc chắn cách mạng toàn bộ ý tưởng thực sự là (rõ ràng là một cái gì đó mang tính cách mạng có phần là một ý kiến).

Cảm ơn!

+1

hai từ: lập trình chức năng. –

+7

một từ: xây dựng: D – William

+0

Đọc qua wikipedia nó xuất hiện có tất cả mọi thứ một biểu thức cho biết thêm chi phí mà các ngôn ngữ như c không có. Đây có phải là kết luận chính xác hay tôi nên xác định cái gì khác? @Mauricio – William

Trả lời

4

Không có gì mang tính cách mạng về điều này. Phương pháp expression-oriented là kỹ thuật functional programming.

Mã định hướng biểu thức đơn giản và ít lộn xộn hơn mã theo hướng tuyên bố, vì ít hơn assignments và không có tuyên bố rõ ràng return. Sự thiếu phân biệt giữa các biểu thức và lệnh cho phép đồng nhất về khái niệm (xem Referential transparency) và cấu trúc bottom-up.

Một số ngôn ngữ hiện đại đã áp dụng các khái niệm lập trình chức năng (ví dụ: C#, Python, Ruby).

Một số cái nhìn sâu sắc học về lợi ích của thực hành chức năng:

Thú vị bài viết:

Đối với những nhận xét về mối quan tâm thực hiện, các chi phí có thể liên quan đến lựa chọn mô hình có lẽ là không đáng kể.Ngay cả trong C, hầu hết các câu lệnh evaluate as an expression - tuy nhiên, một sự so sánh giữa một ngôn ngữ biên dịch (C) và một ngôn ngữ thông dịch (CoffeeScript) là khá vô ích.

Trên lưu ý lý thuyết, imperative language đại diện cho luồng điều khiển theo cách hướng máy hơn, có thể cho phép tối ưu hóa tay dễ dàng hơn ngôn ngữ chức năng.

Hiệu suất ngôn ngữ và ý nghĩa của nó phụ thuộc rất nhiều vào trường hợp sử dụng. Liên quan đến JavaScript và bất kỳ chuyển đổi mã nào trên đầu trang, thảo luận về hiệu suất này hoàn toàn không liên quan. Lợi ích về năng suất cao hơn bất kỳ hit hiệu suất nhẹ nào.

0

By "tất cả mọi thứ là một biểu hiện," Tôi giả sử bạn có nghĩa là những gì được mô tả tại http://jashkenas.github.com/coffee-script/

Nó kinda vẻ như những gì bạn đang hỏi về những ngôn ngữ chức năng. Hãy xem xét, ví dụ, Lisp, đã làm điều này loại trở lại trong những năm 50. Điều này cuối cùng xuất phát từ Lambda Calculus, trong đó mã và dữ liệu thực sự giống nhau, và bạn có thể truyền mã xung quanh như thể nó là dữ liệu (vì nó là).

Tôi không biết bất kỳ bài viết học thuật nào thảo luận cụ thể về điều này, nhưng bây giờ bạn ít nhất có thêm một số từ khóa để tìm kiếm.

Các vấn đề liên quan