Vì sao JavaScript lại là một ngôn ngữ kì dị nhưng vô cùng quyền năng

3054

Hãy thành thật. Javascript là một ngôn ngữ lập trình kì lạ.  Douglas Crockford, cha đẻ của JSON và là một trong những Javascript programmer nổi tiếng nhất từng nói: “JavaScript được tạo ra trên rất nhiều ý tưởng hay và một vài ý tưởng cực tệ”

Trong cốt lỗi, Javascript khác hẳn hoàn toàn so với những ngôn ngữ khác. Vậy thì tại sao cộng đồng IT lại sử dụng nó? Đó là vì chúng ta không có lựa chọn nào khác.

Một thời gian dài trước đây, nếu bạn muốn viết code chạy trên web browser thì cần phải dùng JavaScript. Tuy vậy, sau khi bị bắt ép dùng cái ngôn ngữ dị lạ này nhiều năm, tôi công nhận rằng nó khá là được. Tôi sẽ giải thích cho bạn ngay sau khi ta hiểu lí do mà nó khác biệt.

Javascript là gì?

Javascript, nói đơn giản, là một ngôn ngữ lập trình không đồng bộ và single-threaded nhằm thúc đẩy một  event queue để làm rất nhiều việc.

Nghe có vẻ “nguy hiểm” đúng không? Nhưng bạn chỉ cần hiểu rõ chúng để biết cách hoạt động của Javascript.

Đây là một ngôn ngữ khá là mâu thuẫn. Đây cũng chính là lí do khiến nó vô cùng mạnh mẽ và thú vị.

  • Javascript là một ngôn ngữ lập trình single-threaded. Nói cách khác nó chỉ làm được một việc trong một thời điểm.
  • Javascript là một ngôn ngữ lập trình không đồng bộ. Nói cách khác nó làm được nhiều thứ trong cùng một lúc.

Sao lại thế được?

Đừng vội! Mọi thứ đều có lời giải cả!

Sẽ dễ hiểu hơn với ví dụ sau đây:

Bạn không thể làm 2 việc cùng một lúc. Bạn muốn nấu ăn và nó tốn của bạn tới 30p. Bạn cũng muốn đọc sách.

Nếu là ngôn ngữ lập trình bình thường thì nó sẽ diễn ra theo thứ tự: chuẩn bị, nấu món ăn, chờ món chính, ăn và dọn dẹp xong rồi đọc sách.

Nhưng JavaScript thì khác. Trong thời gian chờ đợi, nó sẽ đọc sách và khi đồ ăn chín thì nó sẽ làm tiếp.  

JavaScript rất là đặc biệt.

Bởi trong thời gian chờ đợi nó sẽ cho chạy task thứ 2. Và như vậy điều điên rồ lại chở nên khá logic đúng không? Dù Javascript chỉ có thể điều khiển một thứ trong một thời điểm nhưng khi tính năng đó không cần nữa thì JS sẽ ngay lập tức chuyển qua task khác trong thời gian chờ xử lí xong.

Những trường hợp nào bạn cần đến Javascript?

Khi bạn đang lưu trữ thông tin trong database và bạn muốn load toàn bộ data. Bởi database là một phần ở ngoài nên nó sẽ cần qua một vài quá trình để lấy thứ ta cần.

Như vậy bạn sẽ phải làm 3 điều sau với các ngôn ngữ bình thường như Ruby:

  1. Gọi tới database
  2. Chờ database trở về với data
  3. Chuyển qua bước tiếp theo

Nhưng với Javascript hay NodeJS thì có chút khác:

  1. Gọi tới database
  2. Chuyển qua bước tiếp theo
  3. Khi nào data trở về thì nó sẽ thông báo cho bạn biết

Tương tự như vậy với API requests. JS không hề ngồi đợi mà nó tận dụng thời gian đó để làm những việc khác.

Đây cũng chính là cách Javascript hoạt động

Vì sao Javascript khá khó để làm quen?

Lập trình thực chất là việc phân chia những vấn đề lớn thành các phần nhỏ và xử lí chúng. Cũng giống như việc làm bánh mì bơ, nghĩ sơ qua thì có vẻ đơn giản nhưng nó bao gồm rất nhiều bước như:

  1. Thu thập nguyên liệu
  2. Cắt bánh mì
  3. Mở hộp bơ
  4. Dùng dao cắt bơ
  5. Chét bơ lên bánh mì
  6. Gấp bánh mì lại

Bạn sẽ phải chia nhỏ thành từng bước một, theo trình tự rõ ràng và logic. Đây cũng là cách bạn lập trình cho máy tính nhưng đối với JS thì nó lại khác.

Với nó thì trong khi chờ nguyên liệu được trở về thì hãy làm những task khác như thay quần áo, lau nhà….

Từ đó mà các bước sẽ trở thành:

  1. Thu thập nguyên liệu
  2. Làm task khác
  3. Khi nguyên liệu đã có:

Cắt bánh mì

Mở hộp bơ

….

Chủ đề Javascript tiếp theo mà bạn cần phải biết

Event queue chính là điều quan trọng tiếp theo mà bạn phải biết.

Hãy thử nói rằng là bạn đã làm rất nhiều task khác nhau cùng một lúc! Không may là chúng cũng hoàn thành trong cùng một thời điểm. Nhưng nếu khi bánh bạn vừa nấu xong và đồng thời có người gọi cửa thì sao?

Là bạn thì nên tắt bếp trước hay ưu tiên gặp khách?

Trong Javascript, điều này thương xuyên xảy ra và điều quan trọng nhất là mọi thứ phải luôn nhất quán.

Event queue chính là cách giải thích thứ tự chúng hoạt động. Nếu khách tới trước thì gặp họ trước, nếu nấu xong trước thì tắt bếp rùi mới gặp khách.

Chúng ta nên học theo cách nào Javascript

JavaScript là một ngôn ngữ rất dị so với gần như toàn bộ các ngôn ngữ lập trình khác. Sau một khoảng thời gian thì bạn sẽ bắt đầu có cảm giác quen thuộc. Và đúng là khá quái lạ nhưng JS thật sự cực kì thông minh và logic. Có thể nói điều làm nên sự khác biệt cũng tạo nên sức mạnh của nó.

Mới đầu sẽ không quen nhưng nếu bạn chịu bỏ công thì JavaScript sẽ là một ngôn ngữ rất tuyệt vời. Không có gì lạ khi nó ngày càng trở nên nổi tiếng.

Techtalk via techinasia  

CHIA SẺ