Java và Cái máy giặt
Vào những năm 90s của thế kỷ 20, khi người ta bắt đầu bán những chiếc máy giặt sử dụng Fuzzy logic ở Mỹ, thì những chiếc máy đó không được người Mỹ hoan nghênh. Lý do: Chiếc máy giặt đó chỉ có một nút. Người ta chỉ việc cho quần áo, xà phòng vào, và chiếc máy sẽ tự động chọn chế độ ...
Vào những năm 90s của thế kỷ 20, khi người ta bắt đầu bán những chiếc máy giặt sử dụng Fuzzy logic ở Mỹ, thì những chiếc máy đó không được người Mỹ hoan nghênh. Lý do: Chiếc máy giặt đó chỉ có một nút. Người ta chỉ việc cho quần áo, xà phòng vào, và chiếc máy sẽ tự động chọn chế độ giặt thích hợp. Còn máy giặt truyền thống thì có nhiều nút cho người ta chọn nhiều chế độ giặt khác nhau.
Không nhiều nút là không hiện đại. Nhiều lập trình viên cũng rơi vào trường hợp này. Ngôn ngữ càng nhiều hàm, chương trình càng phức tạp, sử dụng càng nhiều thứ họ càng thích. Họ không hiểu rằng người dùng cần một cái software để giúp họ làm công việc hàng ngày dễ dàng hơn, hiệu quả hơn, chứ không phải họ thích làm chuột bạch cho những thí nghiệm về độ phức tạp. Rất có thể là họ không cần cả máy tính, nếu như giấy và bút hoặc thuê 20 người ngồi học thuộc data rẻ hơn, nhanh hơn và hiệu quả hơn là bỏ tiền đi mua một cái phần mềm dở hơi biết bơi.
Lập trình viên cũng thế, họ cần công cụ để viết software, chứ không phải để đắm mình trong sự phức tạp của công cụ, tự sướng với những delegate, library và những framework mà thực ra là không ai cần.
Tất cả những gì trên đời này mà tốt thì đều đơn giản, hiệu quả. Software mà design tốt, chạy tử tế là phải simple, elegant. (Of coursse, “simple != simple minded”, idiots !).
Vì thế khi thấy chúng ta phải học quá nhiều thứ để làm được việc, thì việc đầu tiên phài hỏi là “Is there something wrong with the tools?”
Thật đáng kinh ngạc thay, khi người ta thấy một Microsoft Office quá khó dùng, thì người ta lại đi mua cuốn “MS Office for dummies”, thay vì đi đốt nhà Bill Gates.
Quay lại với Java. Khởi đầu Java là một ngôn ngữ tốt, rất elegant cho việc làm OOP. Nhưng sau đó Sun Microsystems với “fear, hate and uncertainty” và những tham vọng cạnh tranh mà không nhìn thấy tương lai, đã viết ra một loạt những spec dở hơi biết bơi, làm cho Java và J2EE trở nên béo phì và khó xoay chuyển. Cộng đồng opensource đã có những cố gắng hết sức dũng cảm để cứu Java với các opensource framework, nhưng nói chung là không lại được với các committe quan liêu, trì trệ.
Tất nhiên là bây giờ đa số các enterprise software trên thế giới vẫn đang viết bằng Java và J2EE. Nhưng không có nghĩa nó là công cụ tốt nhất. Đa số nước Mỹ vẫn đi xe Ford. Có ai bảo xe Ford là xe tốt nhất, nhỉ?
Còn ai không biết Java và J2EE ngày nay nó thế nào, thì cố gắng học đi, nhé. Ví dụ như việc viết Web app bằng Java mà phải biết vài thứ công cụ khác nhau như Java language, Javascript, CSS, pure HTML, JSP scriptlet, JSTL … , đủ thấy là nó dở hơi đến cỡ nào. Chưa kể muốn làm việc được tử tế thì phải biết XML, XSL, và một đống những framework phụ trợ.
JSTL và EJB là đỉnh điểm của sự thần kinh điên loạn của Sun. Thử hình dung là để encapsulate code nhằm generate ra HTML tag, người ta phải viết Java class, implement certain damn Tag or BodyTag or whatever hell it is, sau đó thì viết TLD file, sau đó thì register trong web xml. Sao không viết một POJO helper class để generate ra HTML tag, dùng nó như một POJO Bean ? EJB cũng thế, để cung cấp một component có chức năng nhất định người ta phải viết Home interface, Bean interface, Bean Implementation, XML deployment descriptor …. So much for DRY
EJB 3.0 thì cũng khá hơn một tí, nhưng cũng chả hơn gì mấy.
Nếu kể ra thì phải viết hàng trăm quyển sách về đủ các component và framework và layer trong Java. Mà cũng đầy lập trình viên khác trên thế giới người ta viết chán rồi. Cho nên khi học một ngôn ngữ lập trình mà thấy phải học quá nhiều thứ để làm được một vài việc, thì câu hỏi đầu tiên phải hỏi là “Liệu ngôn ngữ lập trình này có bị dở hơi không?”, rồi đến câu thứ hai mới là “Tôi có hơi ngu không?”
Cái này không chỉ áp dụng cho việc học Java, mà cả cho việc mua một cái máy giặt hay một cái ô tô. Khi một cái máy giặt có quá nhiều nút bấm, hay một cái ô tô có quá nhiều cần gạt, thì most likely there is something wrong (chắc chắc có điều bất ổn)
Techtalk via Techmaster