Tôi nghĩ rằng "ngôn ngữ kịch bản" là một từ khủng khiếp, cực kỳ lỗi thời hoặc hoàn toàn phù hợp với một lớp ngôn ngữ cụ thể của miền. Giáo viên của bạn chỉ sắp xếp mọi thứ mà anh ta rõ ràng không có đủ hiểu biết về một trục ma quỷ.
Một sự khác biệt hợp lý để thực hiện là giữa các ngôn ngữ cấp cao và ngôn ngữ cấp thấp, hoặc giữa các ngôn ngữ được nhập tĩnh và động, thực sự trực giao.
Trình biên dịch được gõ ở mức thấp (nếu nói về các loại có ý nghĩa gì cả), C ở mức thấp được gõ tĩnh, Ruby ở mức cao được gõ động, Haskell được gõ ở mức cao. Java không phải là cấp cao hay cấp thấp được gõ tĩnh, C ++ là cả cấp cao và cấp thấp được nhập tĩnh. Và như thế.
Các cuộc thảo luận chỉ có thể là, mô hình nào phù hợp hơn cho một lập trình viên cấp nhập cảnh.
Tôi khá tin rằng lập trình cấp thấp có lẽ không phải là một. Có thể là, một thời gian trở lại vào đầu những năm 90, khi bạn thực sự có thể tạo ra kết quả thú vị trong thời gian hợp lý với nó.
Nhưng lập trình được thúc đẩy bởi niềm đam mê. Đam mê được nuôi dưỡng bằng phần thưởng. Do đó, các lập trình viên cấp nhập cảnh nên bắt đầu với các công cụ bổ ích. Các công cụ cấp thấp không còn bổ ích nữa, bởi vì có một biển công cụ cấp cao rộng lớn giúp bạn có được kết quả tương tự trong một phần nhỏ thời gian.
Suy nghĩ của con người là trừu tượng. Khi chúng ta học cách hiểu thế giới, chúng ta làm như vậy bằng những khái niệm trừu tượng rất thô và chúng ta đi vào chi tiết khi cần thiết.
Để một đứa trẻ hiểu môi trường của nó, bạn sẽ không dạy nó về toán học, rồi vật lý, rồi hóa học, rồi sinh học, rồi lịch sử, xã hội học và triết học. Bạn cho nó một mô hình rất đơn giản về thế giới để đối phó và sẽ tự mình vượt qua nó, bắn những câu hỏi vô tận vào bạn khi còn trẻ và phủ nhận hoàn toàn uy quyền của bạn sau này.
Đó là cách chúng tôi nghĩ. Bộ não con người chỉ có thể xử lý một lượng "đơn vị" thông tin hạn chế, nhưng mức độ trừu tượng ít quan trọng trong việc lượng tử hóa thông tin. Ví dụ: đọc biểu thức '34 * 75 'đối với chúng tôi đơn giản hơn so với việc tính toán nó, trong khi đối với máy tính thì ngược lại. Để nhận ra (và do đó trừu tượng) một loạt các pixel đen thành một dòng nguệch ngoạc, sau đó có thể được nhận ra (và do đó một lần nữa được trừu tượng hóa) thành một chữ số riêng lẻ là một công việc rất lớn.
Bà tôi hiểu ý tưởng mở một tập tin. Tuy nhiên, cô không có hiểu biết dưới mức đó. Và thẳng thắn, nếu cô ấy phải học điều này bằng cách đầu tiên nghiên cứu hoạt động bên trong của phần cứng và hệ điều hành và những gì không, cô ấy sẽ không bao giờ có được ở đó.
Có rất nhiều người ngoài kia, những người quá phức tạp, bởi vì họ không bao giờ được dạy phải suy nghĩ theo các giải pháp rõ ràng, ngắn gọn và qua đó, nhưng dành quá nhiều thời gian để bận tâm với các chi tiết cấp thấp có thể trao đổi và giải quyết các vấn đề chống lại chúng. Dạy mọi người suy nghĩ như máy tính là cách tiếp cận tồi tệ nhất để lập trình.
Giá trị của lập trình nằm ở việc tìm ra giải pháp cho một vấn đề. Thể hiện nó như mã thực sự là một nhiệm vụ cơ học buồn tẻ và đơn giản nên được thực hiện với bất kỳ công cụ nào phù hợp.
Ồ, và đừng lo lắng về việc không hiểu con trỏ. Tôi đã có cùng một vấn đề ở cùng độ tuổi. Vấn đề ở đây cũng là sự thiếu trừu tượng. Về mặt kinh điển, bạn học về con trỏ từ một số sách C và trong khi bạn đang vật lộn để hiểu chúng, điều này đi đôi với việc phân bổ bộ nhớ và do đó với bộ nhớ stack và heap, v.v. Khái niệm trừu tượng đằng sau con trỏ là không xác định. Một biến, chứa một chỉ mục vào một mảng cụ thể chỉ là như vậy (thực ra nó thực sự giống nhau trong C, trong đó mảng cụ thể là không gian địa chỉ của bạn) và bạn không cần đến các con trỏ cho việc này.
Điều này chỉ có ý nghĩa để minh họa, rằng việc chọn mức độ trừu tượng cao làm cho mọi thứ dễ nắm bắt hơn rất nhiều.
EDIT: và khi nói đến việc gõ, tôi thích các ngôn ngữ gõ tĩnh hơn. Và tôi nghĩ rằng các lập trình viên cấp nhập cảnh nên hiểu rõ khái niệm về các loại (là một loại trừu tượng).