Sự khác biệt giữa kịch bản và chương trình? [đóng cửa]


77

Sự khác biệt giữa kịch bản và chương trình là gì? Hầu hết thời gian tôi nghe nói rằng một tập lệnh đang chạy, đó không phải là một chương trình? Tôi hơi khó hiểu, có ai có thể giải thích thêm về điều này không?

Câu trả lời:


44

Tôi có một cái nhìn khác.

"Tập lệnh" là mã hoạt động trên một số hệ thống theo cách thức bên ngoài hoặc độc lập và có thể bị xóa hoặc vô hiệu hóa mà không cần vô hiệu hóa hệ thống đó.

"Chương trình" là mã cấu thành một hệ thống.Mã của chương trình có thể được viết theo cách mô-đun, với sự tách biệt tốt các mối quan tâm, nhưng mã về cơ bản là nội bộ và phụ thuộc vào chính hệ thống.

Tập lệnh thường được diễn giải, nhưng không phải lúc nào cũng vậy. Các chương trình thường được biên dịch, nhưng không phải lúc nào cũng vậy.


3
Là những gì hệ thống phương tiện?
explorer

@explorer - Đó là hệ thống được đề cập đến trong phần đầu tiên của đoạn văn.
Enigmativity

1
:-) Được chứ! Là những gì hệ thống gọi trong phần đầu của đoạn? Nó có phải là một ứng dụng, hệ điều hành, một ứng dụng có nhiều phần tách rời / riêng lẻ hay bất cứ thứ gì khác không?
explorer

Đừng bận tâm! Tôi đã hiểu! Tôi đã không giải thích đúng các cấu thành trước đó.
explorer

Nghi ngờ của tôi được làm sáng tỏ! Cảm ơn!
explorer

44

Đối với tôi, sự khác biệt chính là một tập lệnh được thông dịch , trong khi một chương trình được thực thi (tức là nguồn được biên dịch đầu tiên và kết quả của quá trình biên dịch đó được mong đợi) .


Wikipedia có vẻ đồng ý với tôi về điều này:

Tập lệnh :

"Tập lệnh" khác với mã cốt lõi của ứng dụng, thường được viết bằng một ngôn ngữ khác và thường được tạo ra hoặc ít nhất là sửa đổi bởi người dùng cuối.
Các tập lệnh thường được diễn giải từ mã nguồn hoặc mã bytecode, trong khi các ứng dụng mà chúng kiểm soát được biên dịch theo cách truyền thống sang mã máy gốc.

Chương trình :

Chương trình có dạng thực thi mà máy tính có thể sử dụng trực tiếp để thực hiện các lệnh.
Chương trình tương tự ở dạng mã nguồn mà con người có thể đọc được, từ đó các chương trình thực thi được bắt nguồn (ví dụ: được biên dịch)


7
-1 vì wikipedia tất nhiên luôn đúng. Sự phân biệt giữa biên dịch và diễn giải không liên quan đến cuộc thảo luận.
Nick Bastin

3
Bạn nói, "(nghĩa là nguồn được biên dịch lần đầu tiên và kết quả của quá trình biên dịch đó được mong đợi)." Ý bạn là "quá trình biên dịch được thực thi"?
Big Sharpie

11

Thông thường, script là một công cụ nhẹ, được xây dựng nhanh chóng, có thể sử dụng một lần. Nó thường được diễn giải, không được biên dịch. Pythonbash là những ví dụ về ngôn ngữ được sử dụng để xây dựng các tập lệnh.

Một chương trình được xây dựng bằng một ngôn ngữ đã biên dịch, như C hoặc C ++ và thường chạy nhanh hơn một tập lệnh vì lý do đó. Các công cụ lớn hơn thường được viết dưới dạng "chương trình" hơn là tập lệnh - các công cụ nhỏ hơn dễ dàng phát triển dưới dạng tập lệnh hơn, nhưng các tập lệnh có thể khó sử dụng khi chúng lớn hơn. Ứng dụng và ngôn ngữ hệ thống (những ngôn ngữ được sử dụng để xây dựng chương trình / ứng dụng) có các công cụ giúp quản lý sự phát triển đó dễ dàng hơn.

Bạn thường có thể xem một tập lệnh trong trình soạn thảo văn bản để xem nó hoạt động như thế nào. Bạn không thể làm điều đó với một chương trình thực thi - các hướng dẫn của chương trình này đã được biên dịch thành mã bytecode hoặc ngôn ngữ máy khiến con người rất khó hiểu nếu không có các công cụ chuyên dụng.

Lưu ý số lượng "oftens" và "thườngs" ở trên - các thuật ngữ là vô nghĩa và đôi khi bị gạch chéo.


11

Xem:

Sự khác biệt giữa chương trình và tập lệnh

Script cũng là một chương trình nhưng không có lớp mờ che giấu (mã nguồn) trong khi chương trình là một chương trình có quần áo, bạn không thể thấy mã nguồn của nó trừ khi nó có thể phân rã được.

Tập lệnh cần các chương trình khác để thực thi chúng trong khi các chương trình không cần.


8
Liên kết này bây giờ là 404s.
Nino Walker

2
Liên kết này bây giờ 200 giây.
Mark Fisher

"Liên kết này" cung cấp một lời giải thích tốt hơn nhiều so với "câu trả lời này". Mục đích của việc biên dịch mã không phải để "che giấu" hay "mặc quần áo" bất cứ thứ gì ... Tôi ngạc nhiên khi câu trả lời này nhận được nhiều phiếu bầu như vậy (và là từ một người dùng có lượt đại diện cao như vậy) vì nó phục vụ một mục đích nhỏ ngoài việc khiến người mới ngừng hỏi một câu hỏi phổ biến, do đơn giản hóa quá mức và lưu hành thông tin sai lạc quan trọng.
ashleedawg

7

Một "chương trình" nói chung, là một chuỗi các lệnh được viết để một máy tính có thể thực hiện một số tác vụ .

"Tập lệnh" là mã được viết bằng ngôn ngữ kịch bản. Một ngôn ngữ kịch bản không là gì ngoài một loại ngôn ngữ lập trình trong đó chúng ta có thể viết mã để điều khiển một ứng dụng phần mềm khác .

Trên thực tế, ngôn ngữ lập trình có hai loại:

a. Ngôn ngữ viết kịch bản

b. Ngôn ngữ biên dịch

Vui lòng đọc phần này: Ngôn ngữ viết kịch bản và biên dịch


3

Các tập lệnh thường được thông dịch (bởi một tệp thực thi khác).

Một chương trình thường là một chương trình thực thi được biên dịch độc lập theo đúng nghĩa của nó (mặc dù nó có thể có các phụ thuộc thư viện), bao gồm mã máy hoặc mã byte (đối với các chương trình được biên dịch đúng lúc)


2

Theo quan điểm của tôi, điểm khác biệt chính giữa kịch bản và chương trình:

Tập lệnh có thể được sử dụng với các công nghệ khác. Ví dụ: Các tập lệnh PHP, Javascrip, v.v. có thể được sử dụng trong HTML.

Các chương trình là những đoạn mã độc lập không bao giờ có thể được nhúng vào các công nghệ khác.

Nếu tôi sai ở bất kỳ chỗ nào, xin hãy sửa cho tôi. Tôi sẽ ngưỡng mộ sự sửa chữa của bạn.


Điều gì về tập lệnh python? Ngoài ra, khẳng định mã Php có thể được sử dụng với Html là sai. Bạn chỉ có mã php. Phần mở rộng của tệp là .php. Bên trong chương trình của bạn, bạn có thể in mã html. Bạn có thể làm tương tự với python, java, C #, C, v.v. Tất cả chúng (nếu là chương trình web) đều tạo ra mã html.
DonJoe

2

Thực sự có hai chiều giữa kịch bản và thực tế chương trình:

  1. Liệu ngôn ngữ có đủ mạnh, đặc biệt là với các hoạt động chuỗi, để cạnh tranh với bộ xử lý macro như posix shell và đặc biệt là bash không? Nếu nó không tốt hơn so với việc chạy một số chức năng thì không có nhiều điểm trong việc sử dụng nó.

  2. Ngôn ngữ có thuận tiện và bắt đầu nhanh chóng không? Java, Scala, JRuby, Closure và Groovy đều là những ngôn ngữ mạnh mẽ, nhưng Java yêu cầu rất nhiều bản soạn sẵn và JVM mà chúng yêu cầu chỉ mất quá nhiều thời gian để khởi động.

OTOH, Perl, PythonRuby đều khởi động nhanh chóng và có các hoạt động xử lý chuỗi mạnh mẽ (và hầu hết mọi thứ-khác-xử lý), vì vậy chúng có xu hướng chiếm các tập lệnh đôi khi bị chê bai nhưng không dễ bị xâm phạm "thế giới. Hóa ra họ cũng chạy tốt toàn bộ các chương trình truyền thống.

Còn lại trong tình trạng lấp lửng là các ngôn ngữ như Javascript, không được sử dụng để viết kịch bản nhưng có thể có. Cập nhật: vì nó đã được viết node.js đã được phát hành trên nhiều nền tảng. Trong các tin tức khác, câu hỏi đã được đóng lại. "Chà chà."


0

Một khuôn khổ hoặc một lược đồ tương tự khác sẽ chạy / diễn giải một tập lệnh để thực hiện một tác vụ. Một chương trình được biên dịch và chạy bởi máy để thực hiện một tác vụ


0

IMO Script - là loại lệnh mà chương trình phải chạy Chương trình - là loại lệnh mà phần cứng phải chạy

Mặc dù tôi đoán mã byte .NET / JAVA là tập lệnh theo định nghĩa này


0

script : nó chứa tập hợp các lệnh "ngôn ngữ kịch bản" điều khiển, chạy các chương trình hệ thống khác, các ứng dụng cũng có thể được lên lịch.

Chương trình : nó chứa tập hợp các hướng dẫn, thực hiện một số tác vụ khi biên dịch chương trình với trình biên dịch.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.