Trả lời: Ryan Jentzsch, tôi đã đụng tới tất cả các ngôn ngữ từ Assembly & COBOL tới C# & PHP
Quan niệm sai lầm rằng JavaScript(JS) là một ngôn ngữ tốt. Sự thật thì lý do nhiều lập trình viên web dùng thứ ngôn ngữ ngu ngốc đó là do họ không có sự lựa chọn.
Nó thật sự khiến tui tức điên rằng, bởi vì JS giữ vị trí độc quyền trên nền tảng web nên nó đã khiến nhều lập trình viên nghiễm hội chứng Stockholm, thứ mà khiến họ trở nên say mê với người bắt giữ họ (trong trường hợp này là JS), và suy nghĩ sai lầm rằng mọi thứ nên được làm bằng thứ ngôn ngữ ngu xuẩn này.
Lý do đơn giản là JS là một trong những ngôn ngữ được thiết kế tệ nhất trong lịch sử của các ngôn ngữ lập trình (bỏ qua thứ ngôn ngữ như trò đùa Brainfuck). Với những người mới, nó còn không cả có kiểu dữ liệu integer! Còn ngôn ngữ nào khác không có kiểu integer kia chứ?
JS không có mảng bình thường như hầu hết các lập trình viên hiểu chúng. JS là một trong số ít những ngôn ngữ đang tồn tại có weak typing(1) (đừng nhầm lẫn với dynamic typing(2)), mà hậu quả là dẫn đến nhiều trường hợp coercions(3) (ex: 1 + ‘1’ = ’11’, 1 – ‘1’ = 0 ) đau não. JS là ngôn ngữ duy nhất tui biết đến mà có thể âm thầm lỗi ở runtime do lỗi syntax!
Và tôi mới chỉ vừa chạm vào bề nổi thôi. Sự thật rằng một cuốn sách như Douglas Crockford’s “JavaScript: The Good Parts” là đủ để nói cho bạn biết mọi thứ bạn cần biết rồi. Sự thật rằng một trình linter(4) thực sự là một thứ bắt buộc phải có để bạn có thể sử dụng JS một cách an toàn được dành riêng cả 1 volume trong sách.
Bạn còn không thể dùng JS để chuẩn bị cho nghề IT chuyên nghiệp vì gần như toàn bộ các ngôn ngữ chính đều là class-base language…. Java, PHP, Python, C#, C++, Ruby, Objective-C, Perl, Scala, Swift. JS chủ yếu dựa trên object prototypes, một tính năng đáng ngờ mà được chia sẻ bởi chỉ một ngôn ngữ khác: Lua.
Vậy nên JS sẽ dạy bạn rất nhiều thói quen xấu mà không thể chuyển tiếp sang phần còn lại của ngành công nghiệp IT được.
Bạn phải hiểu rằng lý do DUY NHẤT khiến JS thống trị trong phát triển web đó là do các lập trình viên web không có sự lựa chọn. JS là ngôn ngữ DUY NHẤT có sẵn trong các trình duyệt web. Nếu các lập trình viên web có sự lựa chọn, họ chắc chắn sẽ không chọn một ngôn ngữ ngu ngốc như JS!.
Sự thật đây: Cộng đồng lập trình web đã hoàn toàn bị bắt giữ làm con tin bởi JS. Chỉ có những kẻ bị hội chứng Stockholm mới cố thuyết phục mọi người rằng nó là thứ ngôn ngữ tốt. Thứ mà cộng đồng này thực sự cần là một sự “tái lập trình” (deprogrammer).
Tất nhiên, JS đã hiện diện ở nhất nhiều domain khác nhau, nhưng trên mobile, Java và Objective-C/Swift thống trị (hello react native =)))). Trên desktop, Java, C++, và các ngôn ngữ khác phổ biến hơn. Trong games, hầu như mọi người theo C# và C++. Trong cloud computing, là Java. Trong giải tích số (numerical computing), là Java, Python và C++. Trong khoa học dữ liệu, là R và Python. Trong tài chính, là C++ và Python. Trong robotics và Internet of Things, Java, Python, C, và các ngôn ngữ khác vô cùng phổ biến. Và nhiều hơn nữa.
Ngoài phát triển web, JS đã lấn sân sang server-side, nhưng Node có khả năng áp dụng khá hạn chế. Cho các server có hiệu suất và tính sẵn sàng cao, có nhiều lựa chọn thay thế ưu việt hơn như Java, Scala, Clojure, Go, Erlang, etc.
Cho dù bất kể người khác có nói gì với bạn đi chăng nữa, JS không phải là một ngôn ngữ phổ cập. Để có thể làm tốt trong ngành công nghiệp IT, bạn cần phải biết nhiều ngôn ngữ. Vậy nên ít nhất hãy mở rộng phạm vi của bạn với Java và Python, và hãy thực sự cân nhắc học Go, C# và một ngôn ngữ functional programing (như là Haskell, Clojure, Erlang).
Chú thích:
1: weak typing có thể hiểu là kiểu dữ liệu của biến có thể thay đổi đột ngột, không tường minh trong khi chạy.
2: dynamic typing có thể hiểu là bạn không cần phải khai báo kiểu dữ liệu cho biến, kiểu dữ liệu của biến sẽ được check ở runtime vd như python, Ruby, PHP…
3: coercions, có thể hiểu là ép kiểu ngầm định, không tường minh, kiểu dữ liệu được tự động chuyển đổi sang kiểu khác vd: 1 + [ ] = ‘1’ trong js.
4: Linter “Theo Wikipedia về lint, linter là một công cụ dùng để phân tích source để phát hiện những lỗi sai, bug, vi phạm lỗi sai viết code.” – copy trên blog tôi đi code dạo.
Theo: Anh Viet
