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

118 bài viết.
1233 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
219 20
Một ngày đẹp trời, bạn quyết định viết một dịch vụ web dự định sẽ làm thay đổi cả thế giới. Dịch vụ của bạn sẽ kết nối tất cả các thiết bị di động ...
huydx viết gần 2 năm trước
219 20
White
192 15
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 4 năm trước
192 15
White
151 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 5 năm trước
151 15
Bài viết liên quan
White
0 4
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 hơn 2 năm trước
0 4
White
4 0
I used Spring boot, Hibernate few times back then at University, I'v started using it again recently. In this (Link), I want to check how Spring J...
Rey viết hơn 1 năm trước
4 0
White
23 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 4 năm trước
23 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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