Expression, Statement và functional programming
TIL
499
White

huydx viết ngày 19/05/2016

Expression, Statement và functional programming

Hôm nay trên group chat có bạn hỏi về Expression và Statement trên ruby, mình thấy hiểu rõ 2 khái niệm này khá quan trọng nên tạm note lại.
2 khái niệm này là 2 khái niệm vô cùng quan trọng, trong việc phân biệt imperative languagefunctional programming language.

Đầu tiên đi từ statement, theo như wiki thì

In computer programming, a statement is the smallest standalone element of an imperative programming language that expresses some action to be carried out. It is an instruction written in a high-level language that commands the computer to perform a specified action.[1] A program written in such a language is formed by a sequence of one or more statements. A statement may have internal components

Hơi khó hiểu chút, nên chúng ta hãy xem ví dụ trên wiki về statement

assertion: assert(ptr != NULL);
assignment: A:= A + 5
goto: goto next;
return: return 5;
call: CLEARSCREEN()

Những ví dụ trên có một điểm chung là : chúng không trả về giá trị gì. Hay nói một cách khác là statement gần giống với một hàm trả về void trong java hay C (mặc dục cách so sánh này không đúng lắm)

Ở phía còn lại, hãy xem expression được định nghĩa thế nào trên wiki

An expression in a programming language is a combination of one or more explicit values, constants, variables, operators, and functions that the programming language interprets (according to its particular rules of precedence and of association) and computes to produce ("to return", in a stateful environment) another value. This process, as for mathematical expressions, is called evaluation.

Bạn không cần đọc nhiều, chỉ cần đọc cái đoạn bôi đậm là ok, expression là những gì "trả về một giá trị nào đó". Ví dụ

a + b

Block ở trên chắc chắn sẽ trả về một "giá trị", là tổng của a và b.

Tại sao cần phân biện 2 khái niệm này? Tại vì trong functional programming, thì chúng ta sẽ không có statement.
Mọi block code đều sẽ trả về một giá trị nào đó trong pure functional programming như haskell hay clojure.

Vậy tại sao lại cần "mọi thứ là expression", lý do là statement là một concept rất không tốt ở nhiều mặt:

  • Một hàm trả về void tương đương với việc sẽ có side effect ở trong (là tối kị với functional programming)
  • Assignment statement cũng là tối kị vơi functional programming

huydx 18-05-2016

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

huydx

115 bài viết.
858 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
135 8
Introduction (Link) là một cuộc thi ở Nhật, và cũng chỉ có riêng ở Nhật. Đây là một cuộc thi khá đặc trưng bởi sự thú vị của cách thi của nó, những...
huydx viết hơn 1 năm trước
135 8
White
109 14
Happy programmer là gì nhỉ, chắc ai đọc xong title của bài post này cũng không hiểu ý mình định nói đến là gì :D. Đầu tiên với cá nhân mình thì hap...
huydx viết gần 3 năm trước
109 14
White
86 10
(Ảnh) Mở đầu Chắc nhiều bạn đã nghe đến khái niệm oauth. Về cơ bản thì oauth là một phương thức chứng thực, mà nhờ đó một web service hay một ap...
huydx viết hơn 2 năm trước
86 10
Bài viết liên quan
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 7 tháng trước
1 1
White
8 0
Lấy fake path của file trong html input Ngữ cảnh: em cần làm một cái nút tải ảnh lên có preview. GIải pháp đầu: Dùng (Link) đọc file ảnh thành ba...
Hoàng Duy viết gần 2 năm trước
8 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
115 bài viết.
858 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!