2009-03-13 33 views

Trả lời

1

Tùy thuộc vào định nghĩa của tập lệnh. Đối với tôi, một kịch bản có thể là bất kỳ chương trình nhỏ nào bạn viết cho một mục đích nhỏ. Chúng thường được viết bằng ngôn ngữ thông dịch. Tuy nhiên, không có gì ngăn cản bạn viết một chương trình nhỏ bằng một ngôn ngữ được biên dịch.

7

Tôi muốn tham khảo Wikipedia để được giải thích chi tiết.

"Tập lệnh" thường đề cập đến một đoạn mã hoặc tập hợp các hướng dẫn chạy trong ngữ cảnh của một chương trình khác. Chúng thường không phải là phần mềm thực thi độc lập.

Makefiles là một kịch bản mà được điều hành bởi "làm cho", hoặc MSBuild vv

C cần phải được biên dịch thành một file thực thi hoặc một thư viện, vì vậy chương trình viết bằng (tiêu chuẩn) C thường sẽ không được xem xét tập lệnh. (Có exceptions, nhưng đây không phải là cách làm việc bình thường với C.)

Java (và đặc biệt là .net) hơi khác một chút. Một chương trình java điển hình được biên dịch và chạy như một tệp thực thi, nhưng đây là một vùng màu xám. Có thể thực hiện biên dịch thời gian chạy của một "tập lệnh" được viết bằng java và thực thi nó.

+0

Có một số phiên dịch ANSI C, tiếc là chúng độc quyền. –

+0

Đúng - điểm tốt. Tôi đã cố gắng để chỉ ra rằng đó không phải là cách làm việc tiêu chuẩn với C, nhưng có những ngoại lệ. Tôi sẽ chỉnh sửa để sửa. –

+0

Ngoài ra còn có TCC, một thư viện có thể biên dịch văn bản nguồn C (nhằm tuân thủ C99) và trả về con trỏ tới các hàm phù hợp để gọi. Xem http://bellard.org/tcc/ nếu bạn dám ;-) Thậm chí còn có một ràng buộc Lua! – RBerteig

3

Theo nghĩa rất chung thuật ngữ "Tập lệnh" liên quan đến mã được triển khai và dự kiến ​​sẽ chạy từ biểu diễn từ vựng. Ngay sau khi bạn biên dịch mã và phân phối kết quả đầu ra thay vì mã nó không còn là "Tập lệnh" nữa.

Giảm thiểu và quan sát tập lệnh không được xem là biên dịch và kết quả vẫn xem xét tập lệnh.

0

Tập lệnh về cơ bản là một tệp văn bản không thể biên dịch ở hầu hết mọi ngôn ngữ hoặc trình bao, với trình thông dịch được sử dụng để tự động hóa một số quy trình hoặc danh sách lệnh mà bạn thực hiện liên tục. Các tập lệnh thường được sử dụng để sao lưu các tệp, biên dịch các thường trình, các cam kết svn, khởi tạo shell, v.v., ad infinitum. Có một triệu và một điều bạn có thể làm với một tập lệnh mà một tập tin thực thi (hoàn thành với cài đặt, vv) sẽ đơn giản là quá mức cần thiết.

+0

Có các ngôn ngữ kịch bản để biên dịch, chẳng hạn như Python. Với foo.py, bạn có thể biên dịch thành foo.pyc, mặc dù không có gì ngăn bạn chỉ sử dụng foo.py và không làm phiền với .pyc. –

+0

Đồng ý, mặc dù biên dịch nó sẽ là một chút ở phía vô nghĩa;) – hmcclungiii

1

Đối với tôi, tập lệnh phải bao gồm một tệp đơn . Và tệp đó phải có khả năng thực hiện tác vụ mà tập lệnh được viết không có các bước trung gian.

Vì vậy, đây sẽ là OK:

bash backup_my_home_dir.sh 
perl munge_some_text.pl 
python download_url.py 

Nhưng điều này sẽ không đủ điều kiện, thậm chí nếu tập tin là nhỏ:

javac HandyUtility.java 
java HandyUtility 
1

Thuật ngữ 'kịch bản' có thể bao gồm một phổ khá rộng hoạt động. Các ví dụ được lập trình bằng imperative các ngôn ngữ thông dịch như VBScript, Python hoặc các kịch bản lệnh vỏ như csh hoặc bash hoặc thể hiện một tác vụ trong declaritive languages chẳng hạn như XSL, SQL hoặc Erlang.

Một số ngôn ngữ tập lệnh rơi vào một danh mục được gọi là Domain Specific Languages (DSL).Ví dụ tốt về DSL là 'makefile's, nhiều loại tệp cấu hình khác, SQL, XSL, v.v.

Điều bạn đang yêu cầu khá chủ quan, tập lệnh của một người là ứng dụng của một người khác. Nếu việc giải thích kịch bản của bạn có nghĩa là sử dụng ngôn ngữ kịch bản không nên buộc người dùng phải tuân theo biên dịch truyền thống -> liên kết -> chạy chu kỳ, thì bạn có thể tạo ra ý kiến ​​rằng bạn không thể viết 'script' trong C hoặc Java.

0

Tôi viết tập lệnh bằng F #. Một trong những gần đây là một bộ nạp dữ liệu nhỏ để đưa vào một số bộ dữ liệu, làm một chút chế biến cho nó, và đổ nó trong một DB. ~ 40 dòng. Không cần bước biên dịch riêng biệt; Tôi chỉ có thể làm cho F # Interactive chạy trực tiếp.

Lợi ích là tôi nhận được một ngôn ngữ được hỗ trợ đầy đủ với một IDE tuyệt vời và tất cả các kiểm tra tĩnh an toàn cung cấp, trong khi suy luận làm cho nó không được tiết lộ như nói, Java hoặc C#.

Vì vậy, đó là một ngôn ngữ cung cấp một hệ thống kiểu hợp lý, biên soạn và kiểm tra, không được giải thích, nhưng hoạt động tốt cho việc viết kịch bản.

1

Có thể thực hiện kịch bản trong Java. Tôi đã nhìn thấy nó nhiều lần :)
(điều này là mỉa mai cho mã spaghetti xấu)

Các vấn đề liên quan