HỌC VIỆN ĐÀO TẠO ĐẾN TỪ HÀN QUỐC

Ngôn ngữ lập trình JavaScript có khó học không? (P.1)

Green Academy chắc chắn rằng, nhiều bạn khi mới bắt đầu học JavaScript sẽ luôn tự đặt cho mình nhiều câu hỏi như:

  • “Tại sao nó lại khó thế này?”

  • “Có phải chỉ mình bản thân thấy nó khó hiểu?”

  • “Mình có thích viết chương trình bằng JavaScript không ta?”

Có thể nói JavaScript là ngôn ngữ lập trình khá phức tạp. Vậy nó khó đến thế nào? Khó nhưng tại sao JS lại đáng để và làm thế nào để ngôn ngữ lập trình JS trở nên hữu ích với các lập trình viên hiện đại. Hãy cùng Green Academy tìm hiểu nhé !

1. Để làm được những điều thú vị với JavaScript, bạn cần sử dụng các tính năng nâng cao của nó

Khi bạn bắt đầu học JavaScript, bạn sẽ nhanh chóng nhận ra rằng: bạn cần phải tìm ra một số công nghệ liên quan đến JavaScript để xây dựng các ứng dụng hữu ích. Một số công nghệ nổi bật dùng JavaScript để tương tác với DOM bao gồm DHTML, AJAX và SPA.

Thực hiện HTTP requests (AJAX) requests thông qua RESTful JSON API

Bạn cần phải có khả năng làm điều này để việc viết chương trình bằng JavaScript trở nên hữu ích hơn cho trình duyệt web. Và hầu hết việc viết code bằng JavaScript đều sẽ tận dụng chức năng này.

Chức năng tương tự cũng có thể được thực hiện với các ngôn ngữ lập trình khác: như Ruby, Python hoặc Java. Trong Javascript, bạn cần hiểu chức năng nâng cao này để làm bất cứ điều gì giúp cho website thú vị hơn, trải nghiệm của người dùng tốt hơn .

HTTP requests là những gì xảy ra khi bạn truy cập một trang web hoặc nhấp vào một liên kết. Nó cũng là một yêu cầu từ máy tính của bạn đến một tài nguyên bên ngoài nằm ở đâu đó trên Internet. Các HTTP requests thường được chia thành hai phần chính:

  • URL

  • HTTP Verb

URL là đầu vào mà bạn nhập vào phần trên cùng cửa sổ trình duyệt của bạn (ví dụ như như google.com). HTTP Verb cho phép bạn xem một trang (GET request) hoặc cho biết rằng bạn muốn tạo một cái gì đó mới (thường thông qua việc gửi biểu mẫu), xóa một mục hoặc thay đổi với các HTTP Verb khác nhau.

Hầu hết thời gian, các HTTP requests dẫn đến kết quả đầu ra của các trang web (như trang web của Green Academy mà bạn đang đọc). Tuy nhiên, nó cũng không nhất thiết phải quay lại với trang web mà nó có thể quay lại với JSON (là một kiểu định dạng dữ liệu trong đó sử dụng văn bản thuần túy, định dạng JSON sử dụng các cặp key - value để dữ liệu sử dụng).

Có ba điều mà hầu hết tất cả các JavaScript code được viết trong trình duyệt web sẽ cần phải làm:

  • Thực hiện một HTTP request đến một địa chỉ web khác

  • Phân tích kết quả của HTTP request để nhận thông tin liên quan

  • Làm điều gì đó với kết quả của phản hồi HTTP

Với các ngôn ngữ lập trình khác, những thứ như thế này được coi là tiên tiến. Hầu hết những người mới bắt đầu sẽ cố gắng học nó khi họ đã có kinh nghiệm nhiều tháng làm việc với ngôn ngữ lập trình đó. Tuy nhiên, với JavaScript, bạn chỉ cần tận dụng các tính năng nâng cao này ngay lập tức, thực sự tận dụng sức mạnh của nó để đạt được kết quả như mong đợi.

2.  Vòng lặp sự kiện (Event Loop) trong JavaScript 

Event-loop (vòng lặp sự kiện) xử lý quá trình thực hiện của nhiều khối lệnh trong chương trình theo thời gian, mỗi lần đều gọi engine JS. Engine JS chỉ là một môi trường thực thi theo yêu cầu cho bất kỳ đoạn code JS tùy ý nào. Nó chỉ là môi trường bao quanh có lịch trình cho các sự kiện (quá trình thực hiện code JS).

Event Loop có một công việc đơn giản là theo dõi Stack và Event Queue. Nếu nhận thấy Stack đang trống nó sẽ lấy Event đầu tiên trong Event Queue và handler (callback hoặc listener) gắn với Event đó và đẩy vào Stack - tức là thực thi nó.

Event queue là vô hình với các lập trình viên. Nhưng nếu không có nó hoạt động, JavaScript code của bạn sẽ không làm được bất cứ điều gì.

3. Để hoàn thành công việc trong JavaScript, bạn thường cần hiểu các chủ đề Khoa học Máy tính phức tạp

Trong lập trình, các nhóm “defining a function” sẽ có mã code và được đặt tên. Ngoài ra còn có khái niệm về các hàm ẩn danh, đó là các hàm “nameless functions”, có nghĩa là chúng tận dụng các khía cạnh khác nhau của các chức năng bên ngoài khả năng đặt tên cho một phần của mã code.

Ngoài ra còn có khái niệm khoa học máy tính về một thunk, thường được sử dụng trong các ngôn ngữ lập trình chức năng và được giảng dạy tại các trường đại học (các ngôn ngữ như  lisp, scheme, racket, oCaml,...).

(***)Thunk: một thunk là một chương trình con được sử dụng để tiêm một phép tính bổ sung vào một chương trình con khác. Thunk chủ yếu được sử dụng để trì hoãn một phép tính cho đến khi cần kết quả của nó, hoặc để chèn các hoạt động ở đầu hoặc cuối của chương trình con khác.

Hầu hết những người mới học Javascript đều cảm thấy nó phức tạp hơn nhiều so với các ngôn ngữ khác và bắt buộc bạn phải tích hợp chặt chẽ các chủ đề khoa học máy tính phức tạp này.

Các ngôn ngữ lập trình khác như Ruby thường hỗ trợ các tính năng này. Nó không được giới thiệu để giúp những người mới bắt đầu, không có nhiều nền tảng về lập trình dễ học hơn.

Rất khó để học những loại khái niệm mã hóa tiên tiến này trong thời gian ngắn, đây là một trong những lý do làm cho JavaScript rất khó học. Nhưng bạn hãy cố gắng nhớ và biết chúng, vì những khái niệm này sẽ trở nên vô cùng hữu ích khi bạn muốn giỏi và phát triển như một nhà lập trình chuyên nghiệp.

Trên đây là một số lý do vì sao nhiều “newbie” học lập trình JavaScript cảm thấy khá khó học so với các ngôn ngữ lập trình khác. Hẹn gặp lại các bạn ở bài viết sau để cùng tìm hiểu các vấn đề còn lại khiến JavaScript khó hơn trong mắt những bạn đã, đang và sẽ trở thành lập trình viên nhé !

Tư Vấn và Nhận Tài Liệu Miễn Phí