Anh/chị/bạn cho em hỏi là .net framework ra mắt phiên bản 3.0/3.5 (2008) thì đã release biểu thức lambda nhưng tại sao java đến tận phiên bản java 8 (2014) mới tích hợp biểu thức lambda vào ạ?
Tại sao đến phiên bản java 8 Oracle mới cho ra mắt biểu thức lambda?
Có bác nào ở đây có người quen làm trong Oracle không ạ? Vào chỉ giáo cho mọi người với?
Mình cho rằng tư tưởng của những người xây dựng java (về ngôn ngữ nói riêng) là họ không muốn ngôn ngữ này trở nên quá khó và phức tạp, họ muốn làm ngôn ngữ này dễ tiếp cận đến rộng rãi hơn, và họ muốn sự ổn định để nó được dùng trong các hệ thống bussiness đồ sộ chạy hàng thập kỷ (cú pháp không gây bất ngờ cho coder), cho nên họ rất ít khi thêm tính năng/cú pháp đột phá, không phải như C# với một đống cú pháp cực kỳ xịn nhưng khó hiểu cho phổ thông.
Mình có đọc được trên reddit một ai đó nói khá hay: Java là một ngôn ngữ “nhàm chán, gò bó, đa ngôn”, nhưng chính vì vậy mà phòng tránh được chuyện lập trình viên “chơi khôn” khi viết code.
debug java là sướng nhất rồi message rõ ràng flow cũng rõ nữa viết rối thế nào cũng gỡ được chứ như mấy cái javascript hay php bọn kia nó viết kểu buồn ngủ viết đại thì đọc code là điên đầu …
Dùng lambda được cái code ngắn, nhưng mà lúc dùng kết hợp với stream tầm 4-5 cái lambda, chẳng may có exception xảy ra thì debug cũng hơi khó. Nếu có IDE hỗ trợ thì còn debug trong biểu thức lambda được chứ nếu đang chạy có log exception thì cũng chả biết nó lỗi đoạn nào.
Vì mình thích thế - Larry Ellison said :v
Hi Huy Nguyen.
Theo mình thì có cũng được mà không có cũng được. Nên nói chung không phải ưu tiên cao nên họ để lùi lại.
Lambda được Java chú ý từ rất lâu rồi, thực tế là từ năm 2009, khi mà 1 dev của Sun Inc - cty khai sinh ra Java (giờ thì bị mua bởi Oracle) tạo 1 proposal mail để phát động Project Lambda.
Để mình nói qua cái proposal mail 1 tí. Do Java là mã nguồn mở, đồng nghĩa với việc ai cũng có thể cải tiến nó, nên cần phải có 1 hệ thống để kiểm soát các sự nâng cấp này. Do đó hệ thống proposal mail ra đời ( http://mail.openjdk.java.net). Ở đây Oracle quản lí hết tất cả các features hay issues Java đang có cũng như các features trong tương lai của Java. Nó cũng kiểu như git với các branch ấy, nhưng dưới dạng mail và thảo luận. Ai muốn đề xuất thêm hay sửa 1 feature nào hoặc có bất kì câu hỏi nào, làm cái mail, gửi lên. Mn sẽ đọc và đưa ra ý kiến. Thường thường các idea mà gửi lên trên này thì đều khả thi cả, và chắc chắn sẽ làm =))) Đề xuất xong, thảo luận để ra cái spec chi tiết. Sau đó spec đc Member trong team Java-dev review. Member xong thì đến lượt Early-Access Review, rồi Public Review, rồi code,… Tóm lại là ti tỉ cái công đoạn để cho đc vào trong bản release của JDK
Quay trở lại với cái Project Lambda, đây là list các thread mà mn thảo luận với nhau https://mail.openjdk.java.net/pipermail/lambda-dev/. Đọc thử 1 số thứ mà họ nói xem, cực kì tỉ mỉ, chi tiết luôn. Họ thảo luận liên tục từ 2009 đến 2015 với rất nhiều threads. Mỗi thread đề cập 1 vấn đề. Với lại, Java là ngôn ngữ
và có tính kỉ luật khá cao, nên họ mới bị mất rất nhiều tg để cân nhắc như vậy.
Funny thing: Idea ban đầu cho lambda không phải là var -> func
đẹp đẽ như các ngôn ngữ khác đâu mà nó dùng # với syntax khá buồn cười (Spec version đầu tiên của Lambda)
OFF-TOPIC: Trông hao hao syntax của C++