Điểm khác biệt giữa ngôn ngữ kịch bản và các ngôn ngữ khác?

Mọi người cho mình hỏi điểm khác nhau giữa ngôn ngữ kịch bản (script language) vd JavaScript và các ngôn ngữ lập trình khác vd C++ là thế nào, có thể cho mình ví dụ cụ thể được không?

Ngôn ngữ kịch bản (scripting language) đa phần là thông dịch để sử dụng được mà không cần biên dịch. Dễ hiểu thông dịch là viết code tới đâu nó chạy tới đó được, gặp lỗi không nghiêm trọng thì bỏ qua lỗi/ thông báo lỗi rồi chạy tiếp, lỗi nghiêm trọng thì đứng lại đó.

Còn ngôn ngữ như C++ là ngôn ngữ biên dịch, bạn không thể gõ từng dòng cho nó chạy mà phải viết hoàn chỉnh một đoạn mã rồi compile nó ra dạng mã máy hoặc ít nhất là byte code rồi mới chạy được.

Có những ngôn ngữ là thông dịch nhưng bạn vẫn có thể biên dịch để chạy.

Ví dụ: Python là ngôn ngữ scripting, bạn có dòng lệnh để tương tác khi học, gõ tới đâu nó làm tới đó. Nhưng với C++ hay Java thì bạn không làm được điều đó.

Nhìn chung, nếu cố ép thì trong một số trường hợp có những ngôn ngữ ta đều làm scripting được nhưng mà cách ấy thì rất là đau thương, chạy chậm.

Để biết ngôn ngữ đó thuộc loại thông dịch hay biên dịch thì đọc về lịch sử của nó, và tác giả của nó xếp nó vào loại nào thì ta cứ tin như vậy, không cần phải lý luận lôi thôi kiểu tại sao 2+2=4.

32 Likes

Phân tích quá chuẩn, hay nhất là phần kết luận :heart_eyes:

2 Likes

Rất khó phán xét một ngôn ngữ là scripting language hay không vào thời nay vì sự ngày càng ôm đồm và đa nền của các ngôn ngữ.

Có rất nhiều tranh luận về việc này và cũng chẳng có hồi kết.

Bạn phân biệt rõ Interpreter và Compiler là đủ :slight_smile:

Và Scripting Language thì thường dùng Interpreter và dễ viết, dễ đọc.

3 Likes

Java nó thuộc dạng vừa biên dịch vừa thông dịch. Từ file .java về .class(biên dịch), từ .class lên mã máy thông qua JVM(Java Virtual Machine) là thông dịch. Sở dĩ nó loằng ngoằng vậy là vì 2 lý do chính.

  • Biên dịch giúp tối ưu source và check toàn bộ lỗi trước khi runtime
  • Thông dịch giúp hỗ trợ đa nền tảng tốt hơn (Code Once Run Anywhere)
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?