Expression, Statement và functional programming
TIL
595
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

116 bài viết.
945 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
148 14
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 gần 2 năm trước
148 14
White
118 15
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 hơn 3 năm trước
118 15
White
95 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 3 năm trước
95 10
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 1 tháng trước
0 2
White
19 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 gần 2 năm trước
19 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 1 năm trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


White
{{userFollowed ? 'Following' : 'Follow'}}
116 bài viết.
945 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á!