null khác nil thế nào?
Software Engineering
36
White

Ngoc Dao viết ngày 01/08/2016

Ai học lập trình cũng đều phải chạm trán null và nil. Chúng xuất phát từ ý tưởng con trỏ. Có ngôn ngữ gọi con trỏ không trỏ vào đâu hết là null (NULL), cũng có ngôn ngữ lại gọi nó là nil. Biết vậy, nhưng đã bao giờ bạn tự hỏi null và nil khác nhau thế nào?

null khác nil thế nào?

Câu trả lời ngắn: null là tính từ, nil là danh từ.

Câu trả lời dài: Cả 2 đều xuất phát từ tiếng Latinh. null là nullus, nil là nihil. Tiếng Việt dịch là "không có gì cả". Tiếng Anh dịch là "no" và "nothing".

Tại sao ngôn ngữ động có nil?

Thường ngôn ngữ tĩnh (cần biên dịch trước khi chạy) dùng null, còn ngôn ngữ động (vừa thông dịch vừa chạy) dùng nil. Thế nhưng ngôn ngữ động (hoặc chạy trên máy ảo) không phải tự quản lí (cấp phát và giải phóng) bộ nhớ, không cần dùng con trỏ, tại sao lại vẫn có nil?

Câu trả lời ngắn: nil dùng để chỉ việc biến chưa có giá trị, chưa được khởi tạo.

Câu trả lời thêm: Xem mã nguồn của các implementation của các ngôn ngữ động, để ý sẽ thấy các biến có cấu trúc hơi phức tạp trở lên đều được gói bằng con trỏ, chỉ khác là con trỏ này được tự động quản lí. Do đó khái niệm con trỏ thực ra chỉ bị dấu đi để lập trình viên đỡ điên đầu, tránh mắc lỗi liên quan đến bộ nhớ.

Tham khảo

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

Ngoc Dao

102 bài viết.
285 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
62 8
Làm thế nào để nâng cấp trang web mà không làm gián đoạn dịch vụ? Đây là câu hỏi phỏng vấn các công ty lớn thường hỏi khi bạn xin vào vị trí làm lậ...
Ngoc Dao viết hơn 2 năm trước
62 8
White
40 1
Bài viết này giải thích sự khác khác nhau giữa hai ngành khoa học máy tính (computer science) và kĩ thuật phần mềm (software engineering), hi vọng ...
Ngoc Dao viết hơn 2 năm trước
40 1
White
34 1
Nếu là team leader, giám đốc công ty hay tướng chỉ huy quân đội, vấn đề cơ bản bạn gặp phải là “hướng mọi người đi theo con đường bạn chỉ ra”. Thử...
Ngoc Dao viết hơn 2 năm trước
34 1
Bài viết liên quan
White
1 1
Lập trình đôi (pair programming) là hình thức lập trình trong đó 2 người cùng hợp tác làm việc trên cùng màn hình (có thể khác bàn phím v.v.). Bài ...
Ngoc Dao viết hơn 2 năm trước
1 1
White
7 1
Trong quyển sách Beyond Java, xuất bản vài năm trước có đoạn:Java has characteristics that many of us take for granted. You can find good Java deve...
Ngoc Dao viết hơn 2 năm trước
7 1
White
5 0
Lập trình viên quá cố người Mỹ Phil Karlton có câu nổi tiếng: There are only two hard things in Computer Science: cache invalidation and naming th...
Ngoc Dao viết hơn 2 năm trước
5 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

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


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