Hướng dẫn why is learning javascript so difficult? - tại sao học javascript lại khó thế?

Khi bạn bắt đầu tìm hiểu JavaScript, bạn có thể bắt đầu tự hỏi mình rất nhiều câu hỏi. & nbsp; các câu hỏi như:

  • Tại sao nó lại khó thế này? & nbsp;
  • Tôi có phải là người duy nhất nghĩ rằng điều này là khó hiểu? & nbsp;
  • Tôi có bao giờ thực sự thích viết các chương trình trong JavaScript không?

Hầu hết các ngôn ngữ lập trình giống như trò chơi bảng Othello. Họ mất một phút để học hỏi và cả đời để làm chủ. JavaScript phức tạp hơn nhiều. Nó làm tôi nhớ đến ngoại giao trò chơi bảng, có thể là trò chơi bực bội nhất từng được phát minh.

Trong bài viết này, chúng tôi sẽ nhận được 7 lý do chính tại sao JavaScript rất khó học. Chúng tôi cũng sẽ chạm vào lý do tại sao nó đáng để học và làm thế nào nó là một ngôn ngữ lập trình hữu ích như vậy cho các lập trình viên hiện đại.

Hãy để nhảy vào nó.

1. JavaScript rất khó học vì để làm những điều thú vị trong JavaScript, bạn cần sử dụng các tính năng nâng cao của JavaScript.

Khi bạn bắt đầu tìm hiểu 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. Đây là những chủ đề bổ sung mà aren JavaScript truyền thống nhưng là những điều bạn cần để thực sự viết JavaScript.

Thực hiện các yêu cầu HTTP (AJAX) thông qua API JSON RESTful.

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

Chức năng tương tự có thể được thực hiện trong các ngôn ngữ lập trình khác: như Ruby, Python hoặc Java. Nhưng đây là chức năng nâng cao mà bạn có thể làm sau này. 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ì thú vị.advanced functionality that you can do later down the line. In Javascript, you need to understand this advanced functionality in order to do anything interesting at all.

Hãy nói về những gì thực sự có nghĩa là:

Yêu cầu HTTP là những gì xảy ra khi bạn truy cập trang web hoặc nhấp vào liên kết. Yêu cầu HTTP 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 yêu cầu HTTP thường được chia thành hai phần chính: are what happens when you visit a website or click on a link. The HTTP request is a request from your computer to an external resource located somewhere on the Internet. HTTP requests are generally split into two main parts:

  • URL
  • Động từ HTTP

URL là đầu vào mà bạn nhập vào phần trên cùng của cửa sổ trình duyệt của bạn (ví dụ: giống như Google Google.com). Động từ HTTP cho phép bạn xem một trang (yêu cầu nhận) hoặc chỉ ra & nbsp; mà bạn muốn tạo một cái gì đó mới (thường thông qua gửi biểu mẫu), xóa một mục hoặc thay đổi với các động từ HTTP khác nhau.

Hầu hết thời gian, các yêu cầu HTTP dẫn đến đầu ra của các trang web (như trang web này mà bạn đang đọc trên đó). Tuy nhiên, họ không nhất thiết phải quay lại với các trang web. Thay vào đó, họ có thể quay lại với những gì mà người được gọi là JSON (hay là một đại diện JavaScript của một thứ gì đó.

Điều này có lẽ nghe có vẻ phức tạp, vì vậy hãy để Lừa vào một ví dụ.

Giả sử bạn đã xây dựng một trang web về sự thật về mèo. Trang có thể hiển thị một sự thật về mèo trên màn hình. Ví dụ, một cái gì đó như: Tất cả những con mèo có thể nói tiếng Anh. Tôi chắc chắn 99% điều này không đúng.

Tuy nhiên, thay vì hiển thị cho bạn một trang web hiển thị sự thật về mèo của bạn, yêu cầu của bạn cũng có thể quay lại với một biểu diễn JSON- một đại diện có thể đọc được về thực tế. & nbsp; ở đây, những gì nó có thể trông như thế nào:

Hướng dẫn why is learning javascript so difficult? - tại sao học javascript lại khó thế?

Mã trên là một ví dụ về JSON.

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

  • Thực hiện yêu cầu HTTP đến một địa chỉ web khác
  • Phân tích kết quả của yêu cầu HTTP để có được thông tin liên quan
  • Làm điều gì đó với kết quả phản hồi HTTP

Trong các ngôn ngữ lập trình khác, những thứ như thế này được coi là nâng cao. Hầu hết những người mới bắt đầu thậm chí sẽ cố gắng giải quyết cho đến khi họ dành 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 cần thực hiệ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ó.

2. JavaScript rất khó học vì nó được cung cấp bởi một hàng đợi sự kiện..

Hàng đợi sự kiện là vô hình cho các nhà phát triển. Nhưng không có nó hoạt động, mã JavaScript của bạn đã giành được bất cứ điều gì.

Hàng đợi sự kiện cho phép bạn nói:

"Khi [điều gì đó xảy ra] Tôi muốn bạn thực hiện như sau [mã để thực thi ở đây]."

JavaScript có bản chất chờ đợi cho đến khi có điều gì đó xảy ra, sau đó, một cách kỳ diệu, kích hoạt đúng mã vào đúng thời điểm. Điều này có thể khá khó khăn cho người mới bắt đầu. Làm thế nào bạn có thể biết rằng mã sẽ được thực thi vào đúng thời điểm? & nbsp; Là một nhà phát triển, bạn cần tin tưởng rằng hàng đợi sự kiện sẽ sa thải mọi thứ khi (hoặc gần khi nào). Nó khó khăn để trở nên thoải mái với điều đó.waiting until something happens, then “magically” triggering the right code at the right time. This can be pretty daunting for beginners. How can you know that the code will be executed at the right time?  As a developer, you need to trust that the event queue will fire things when (or close to when) it should. It’s difficult to become comfortable with that.

Việc thiếu tầm nhìn rõ ràng vào một cái gì đó rất cốt lõi đối với ngôn ngữ có thể khiến bạn cảm thấy như bạn đang thiếu một cái gì đó. Bạn thấy mình đặt câu hỏi về điều gì sẽ xảy ra, và bạn có xu hướng nghĩ:

Tôi biết tôi đã nói với JavaScript thực hiện điều này khi sự kiện này xảy ra, nhưng làm thế nào để JavaScript biết tôi nên thực hiện điều này sau đó?

Vì vậy, những gì câu trả lời? Chà, bạn cần học cách tin tưởng rằng hàng đợi sự kiện sẽ làm đúng. Vấn đề là tin tưởng một cách mù quáng mà bạn không thể hiểu được hoàn toàn có thể thực sự khó khăn. Nó đặc biệt khó khăn khi bạn mới bắt đầu.

3. JavaScript rất khó học vì để 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, việc xác định một chức năng, một phần của mã và đặt tên cho nó. Ngoài ra còn có khái niệm về ẩn danh, đó là những người không tên, có nghĩa là chúng tận dụng các khía cạnh khác nhau của các hàm bên ngoài khả năng đặt tên cho một phần mã. Ngoài ra, còn có một 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 thường được dạy tại các trường đại học (các ngôn ngữ như LISP, Sơ đồ, vợt, OCAML, v.v.). functions, which are “nameless functions”, meaning they leverage different aspects of functions outside of the ability to name a section of code. There’s also a computer science concept of a thunk, which is often used in functional programming languages that are generally taught at universities (languages like lisp, scheme, racket, oCaml, etc.).

Những khái niệm này xuất hiện sớm với JavaScript.

JavaScript có xu hướng cảm thấy phức tạp hơn các ngôn ngữ khác vì nó 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 với khả năng hoàn thành công việc. Các ngôn ngữ như Ruby thường hỗ trợ các tính năng này. Nhưng họ đã giới thiệu để hoàn thành người mới bắt đầu mà không có nhiều nền tảng trong lập trình.just get things done. Languages like ruby usually support these features. But they aren’t introduced to complete beginners without much of a background in programming.

Nó khó khăn & nbsp; để tìm hiểu các loại khái niệm mã hóa nâng cao này sớm trong kinh nghiệm lập trình của bạn. Vì vậy, nó làm cho JavaScript rất khó học.

Cố gắng nhớ rằng những khái niệm này sẽ trở nên cực kỳ hữu ích khi bạn tiếp tục học hỏi và phát triển như một nhà phát triển.

4. JavaScript rất khó học & nbsp; bởi vì nó là một ngôn ngữ lập trình không đồng bộ

Nó cũng có một luồng đơn, điều đó có nghĩa là nó sử dụng bản chất không đồng bộ của nó theo một cách hoàn toàn khác so với hầu hết các ngôn ngữ lập trình khác.

Ý tôi là gì về sự không đồng bộ? Chà, không đồng bộ có nghĩa là công việc đang xảy ra, nhưng nó không xảy ra đúng lúc với một thứ khác. Lấy ví dụ này:

Nói rằng tôi muốn gọi cho bạn (vâng, tôi vẫn gọi mọi người nhắn tin không làm việc cho mọi thứ) để sắp xếp thời gian để chơi Pokemon Go cùng nhau. Có hai cách mà cuộc trò chuyện có thể đi. Chúng ta có thể giao tiếp đồng bộ. Hoặc chúng ta có thể giao tiếp không đồng bộ.

Phiên bản đồng bộ

Ken: “Này, bạn có sẵn sàng chơi pokemon vào ngày mai lúc 6 giờ tối không?”

Bạn: & nbsp; Hãy giữ, hãy để tôi kiểm tra lịch của tôi .. ừ, điều đó hoạt động. Hãy để gặp nhau sau đó.

Phiên bản không đồng bộ

Ken: “Này, bạn có sẵn sàng chơi pokemon vào ngày mai lúc 6 giờ tối không?”

Bạn: & nbsp; Hãy giữ, hãy để tôi kiểm tra lịch của tôi .. ừ, điều đó hoạt động. Hãy để gặp nhau sau đó.

Phiên bản không đồng bộ

Bạn: Tôi không biết, hãy để tôi kiểm tra lịch của tôi và liên hệ lại với bạn sau., which can feel backward compared to most other programming languages. Generally, in JavaScript, you will never wait for something that takes a long time to complete. Instead, you’ll put it into motion, start doing other work, and be reminded when the “first something” is finished.  

Bạn (15 phút sau qua email): & nbsp; Sau khi chơi Pokemon. Hãy làm điều đó vào ngày mai lúc 6 giờ tối. & nbsp; hào hứng để có thêm một số kinh nghiệm.

  • Hầu hết mọi thứ trong JavaScript xảy ra không đồng bộ, có thể cảm thấy lạc hậu so với hầu hết các ngôn ngữ lập trình khác. Nói chung, trong JavaScript, & nbsp; bạn sẽ không bao giờ chờ đợi thứ gì đó mất nhiều thời gian để hoàn thành. Thay vào đó, bạn sẽ đưa nó vào chuyển động, bắt đầu thực hiện các công việc khác và được nhắc nhở khi một thứ gì đó đầu tiên đã hoàn thành. & nbsp;
  • Trong hầu hết các ngôn ngữ lập trình, bạn chia chương trình của mình thành các bước cụ thể:
  • etc.

Đầu tiên, làm điều này và chờ nó được hoàn thành trước khi chuyển sang điều tiếp theo.

  • Sau đó, làm điều đó và chờ đợi nó được hoàn thành trước khi chuyển sang điều tiếp theo, tiếp theo.
  • Nhưng trong JavaScript, bạn sử dụng một loại quy trình công việc khác giúp loại bỏ mọi sự chờ đợi. Nó diễn ra như thế này:
  • Đầu tiên, làm điều này và chuyển sang điều tiếp theo, nhưng thông báo cho tôi khi nó kết thúc.
  • Sau đó, làm một cái gì đó khác và thông báo cho tôi khi nó kết thúc.
  • [Sau đó]

Cuối cùng, thông báo cho tôi rằng điều đầu tiên đã kết thúc.

Cuối cùng, thông báo cho tôi rằng điều thứ hai kết thúc. (nhưng không nhất thiết theo thứ tự này)., which is how almost all other programming languages guide you to breaking apart problems.

Nó có thể cảm thấy kỳ lạ khi phá vỡ các nhiệm vụ thành các bước cụ thể mà không nên chờ đợi để hoàn thành trước khi chuyển sang điều tiếp theo. Nhưng theo thời gian, sau khi bạn viết ngày càng nhiều mã JavaScript, nó trở nên tự nhiên hơn.elegant solution to a common problem that you’ll probably run into: building an asynchronous-driven programming language.

Cú pháp có thể cảm thấy lộn xộn nếu bạn đang cố gắng làm mọi thứ theo cách đồng bộ, đó là cách gần như tất cả các ngôn ngữ lập trình khác hướng dẫn bạn phá vỡ các vấn đề.

Một khi bạn quen thuộc với cú pháp của JavaScript và bạn giỏi suy nghĩ về mọi thứ theo cách đó, JavaScript sẽ cảm thấy tự nhiên hơn nhiều. Cuối cùng, nó có thể cảm thấy như một giải pháp thanh lịch cho một vấn đề phổ biến mà bạn có thể gặp phải: xây dựng một ngôn ngữ lập trình không đồng bộ.web APIs that the browser provides for you to interact with the webpage itself. Initially, web browsers had many problems, such as:

  • Trình duyệt không nhất quán trong cách họ làm việc với các trang web.
    • Nếu một cái gì đó hoạt động với Firefox, thì nó sẽ hoạt động trong Internet Explorer (hoặc ngược lại.)
  • Thông thường, nhiều dòng mã được yêu cầu để thực hiện các nhiệm vụ đơn giản, hàng ngày.

JQuery đã sửa cả hai vấn đề này. Nó có thể viết một chương trình JavaScript duy nhất, hoạt động trên tất cả các trình duyệt web. Điều này làm cho cuộc sống của bạn như một nhà phát triển web dễ dàng hơn nhiều, điều đó thật tuyệt vời. Nhưng mặt khác, JQuery chỉ là một điều nữa bạn cần học như một nhà phát triển web, trên tất cả những điều chúng tôi đã nói trước đây:

  • Yêu cầu AJAX
  • Hàng đợi sự kiện
  • Json,
  • Suy nghĩ một cách không đồng bộ

Đó là rất nhiều thứ đáng nhớ và gắn kết với nhau.And it’s a key reason why JavaScript is so hard to learn.

6. JavaScript rất khó học vì nó & nbsp; dường như vi phạm rất nhiều quy tắc mà bạn đã học trước đây khi làm việc với một ngôn ngữ lập trình khác.

Mặc dù cú pháp có vẻ quen thuộc với các ngôn ngữ lập trình khác, các cơ chế cơ bản về cách bạn cần nghĩ như một nhà phát triển thường khác nhau nhiều.

JavaScript khác rất nhiều so với các ngôn ngữ như Ruby, Python, Java, C ++, và về cơ bản mọi ngôn ngữ lập trình khác được sử dụng trong ngành.

Điều này có nghĩa là việc chọn các ngôn ngữ lập trình khác sau khi học JavaScript (nếu đó là ngôn ngữ lập trình duy nhất mà bạn biết) sẽ khó khăn hơn nhiều.

Nó chắc chắn đáng giá thời gian của bạn để học JavaScript, nhưng nó chắc chắn không nên là ngôn ngữ lập trình đầu tiên bạn học.

7. JavaScript rất khó học vì & nbsp; nó đang phát triển với tốc độ ngày càng tăng. & nbsp;.  

Ngôn ngữ đang thích nghi. & nbsp; và những thứ như Babel cho phép bạn viết ES6 (JavaScript thế hệ tiếp theo) và chạy nó bằng cách sử dụng JavaScript Runtimes bình thường. Thậm chí còn có những thứ JavaScript thử nghiệm trong ES7 có thể hoặc không thể đưa nó vào ngôn ngữ lập trình JavaScript mới.babel allow you to write ES6 (next-generation JavaScript) and run it using normal JavaScript runtimes. There is even experimental JavaScript stuff in ES7 that may or may not make it into the new JavaScript programming language.

Điều này có nghĩa là ngay cả khi học tất cả những điều được đề cập trước đây trong bài đăng này, vẫn còn nhiều hơn bạn có thể sẽ cần phải học. & nbsp;there still is more that you will probably need to learn.  

Nó rất dễ dàng để mạo hiểm ra ngoài và cố gắng tìm hiểu những điều hào nhoáng mới nhất. Rốt cuộc, đó là những gì mọi người thích nói về. & nbsp; Nhưng trước khi bạn cố gắng tìm hiểu công nghệ nóng mới mà bạn đã đọc trên HackerNews, hãy đảm bảo rằng bạn có được một nền tảng vững chắc trong ngôn ngữ JavaScript cốt lõi. Bạn nên luôn luôn làm chủ các nguyên tắc cơ bản trước khi ném các công nghệ phát triển nhanh hơn, thậm chí phát triển nhanh hơn vào hỗn hợp.

Vì vậy, nếu bạn mới sử dụng mã hóa và cảm thấy choáng ngợp bởi JavaScript, hãy biết rằng bạn không đơn độc. & nbsp;

JavaScript là khó & nbsp; để học. Ngay cả các nhà phát triển có kinh nghiệm phải đối mặt với sự mệt mỏi của JavaScript.JavaScript Fatigue.

Nó không phải tất cả đều xấu. Những cải tiến đối với ngôn ngữ JavaScript trong ES6 là một hơi thở không khí mới. Cuối cùng, họ sẽ giúp người mới bắt đầu dễ dàng vào các chương trình JavaScript đang chạy trên mặt đất. Thật ấn tượng khi thấy sự tiến bộ mà cộng đồng JavaScript đang đạt được để làm cho cuộc sống của các nhà phát triển dễ dàng hơn.eventually make it easier for beginners to hit the ground running building JavaScript programs. It’s impressive to see the progress that the JavaScript community is making to make the lives of its developers easier.

JavaScript chắc chắn có một tương lai tươi sáng và đáng để học. Nhưng nó rất khó học. Vì vậy, nếu bạn là một lập trình viên mới bắt đầu và cảm thấy bị JavaScript đe dọa, hãy biết rằng bạn không đơn độc. Tôi là một nhà phát triển web khá có kinh nghiệm và thỉnh thoảng tôi vẫn có những cơn mệt mỏi của JavaScript.

Bạn đã học được điều gì đó từ bài viết này? Nếu vậy, sau đó chia sẻ nó bằng các nút Facebook và Twitter bên dưới.

Tại sao JavaScript rất khó học?

Mặt khác, không giống như HTML, JavaScript là ngôn ngữ lập trình, khiến việc học hơn HTML khó khăn hơn. Điều này là do một ngôn ngữ đánh dấu chỉ mô tả những gì một hành động biểu thị, trong khi một ngôn ngữ lập trình xác định một loạt các hành động đó được thực hiện.a markup language merely describes what an action signifies, while a programming language defines a series of those actions to be performed.

Tại sao JavaScript lại bực bội như vậy?

JavaScript đôi khi có thể bực bội, nhưng chỉ vì chúng ta có xu hướng quá đơn giản hóa nó - đặc biệt là khi chúng ta bị ướt chân.Có rất nhiều điều để tìm hiểu về ngôn ngữ, và trong khi nó cung cấp rất nhiều sự linh hoạt, nó cũng có rất nhiều quy tắc để ghi nhớ.we tend to oversimplify it — especially when we're just getting our feet wet. There is a lot to learn about the language, and while it provides a great deal of flexibility, it also has a lot of rules to keep in mind.

Mất bao lâu để học JavaScript?

Đây là câu trả lời ngắn gọn: Hầu hết các lập trình viên đồng ý rằng phải mất sáu đến chín tháng để phát triển trình độ làm việc trong JavaScript.Và thậm chí sau đó, bạn sẽ dành nhiều năm để học các kỹ năng mới và phát triển sự hiểu biết của bạn về nó.six to nine months to develop a working proficiency in JavaScript. And even then, you'll spend years learning new skills and developing your understanding of it.

Điều khó học nhất trong JavaScript là gì?

Các khái niệm khó hiểu nhất trong JavaScript..
Recursion..
Scope..
Hoisting..
Kế thừa nguyên mẫu ..
BIND (), CALL (), ÁP DỤNG ().
reduce().
Generators..
fetch().