2009-10-03 54 views
16

Có ngôn ngữ kịch bản cho C++ (như perl) có thể được sử dụng để phát triển nhanh và sử dụng một số công cụ có thể chuyển đổi thành chương trình C/C++ để có hiệu suất cao hơn cho việc triển khai không?Ngôn ngữ kịch bản cho C/C++?

EDIT:
Dựa trên một số nhận xét, hãy để tôi làm rõ câu hỏi. Tôi sẽ có thể chuyển đổi kịch bản thành chương trình C/C++ hoặc nhị phân mà không sửa đổi kịch bản của tôi.

+0

@rjoshi, có lẽ bạn cần phải làm rõ. Tôi giả định đối diện của @Mike mà bạn muốn lưu trữ một ngôn ngữ kịch bản trong một ứng dụng C++. Tôi đã làm điều đó cho Windows với công cụ VBScript, vì vậy có lẽ đó là kinh nghiệm của tôi như là sự thiên vị của tôi. – kenny

+0

Tôi muốn làm một nguyên mẫu nhanh chóng trong ngôn ngữ kịch bản để phát triển và sẽ có thể triển khai cho hiệu suất cao vì vậy tôi đã tự hỏi một số để có thể chuyển đổi kịch bản vào chương trình C/C++ để triển khai. – rjoshi

+0

@rjoshi: Xin đừng bình luận về câu hỏi của bạn. Vui lòng cập nhật câu hỏi của bạn. Nhận xét về câu hỏi của riêng bạn là ngớ ngẩn - bạn sở hữu câu hỏi. Bạn có thể sửa nó để làm rõ mọi thứ. –

Trả lời

25

Với C/C++ thông dịch viên bạn có thể sử dụng C/C++ là một ngôn ngữ kịch bản


Lưu ý: Cho đến nay, tôi đã cố gắng chỉ ChCInt. Tôi đã thêm cconsUnderC để làm cho danh sách hoàn chỉnh hơn.

+0

các liên kết này rất, rất thú vị, cảm ơn bạn đã chia sẻ với chúng tôi! Tôi không nghĩ rằng có thực sự là một khả năng để tạo ra c + + script :) – MaciekTalaska

+0

Một chi tiết: ** SCC **: http://volnitsky.com/project/scc/ –

+0

"C/C++" là gì? Các trình thông dịch này có hỗ trợ C, hoặc C++, hoặc cả hai? –

2

Nhiều dự án kết hợp ví dụ: C++ và Python - xem ví dụ boost.python.

Tôi thích R và sử dụng giao diện Rcpp từ R đến C++.

Hoặc là trường hợp cung cấp cho bạn ngôn ngữ kịch bản của bạn để tạo mẫu và dễ dàng 'dán' vào C++ để thực hiện.

9

Bạn có thể thử Lua thường được sử dụng với C++ trong ngành trò chơi. Nó có một bộ nhớ nhỏ và khá trưởng thành, có một thư viện tuyệt vời ... chỉ cần thử.

hm ... Tôi không hiểu những gì bạn muốn đạt được: bạn có muốn tìm một ngôn ngữ kịch bản mà bằng cách nào đó, kỳ diệu sẽ được chuyển đổi thành nguồn C++? Hoặc những gì bạn thực sự muốn chỉ là một tùy chọn để tạo ra một tập tin thực thi từ kịch bản?Nếu sau này - sau đó bạn có thể thử py2Exe.

+0

"In chân nhỏ" là một thuật ngữ tương đối ... Lau đòi hỏi nhiều bộ nhớ hơn một số hệ thống tôi muốn sử dụng nó trên có. – NoMoreZealots

+0

Đối với phát triển nhúng (và giống nhau) trong đó mỗi byte bộ nhớ có giá trị, sử dụng bất kỳ ngôn ngữ nào đi kèm với máy ảo riêng của nó có thể không phải là giải pháp tốt nhất (tôi giả định). Bạn đã không chỉ định những gì bạn muốn sử dụng ngôn ngữ kịch bản cho, trên loại nền tảng, những hạn chế là gì ... Nó là khá khó đoán;) Và nếu bạn muốn so sánh hiệu suất của các ngôn ngữ khác nhau: http : //shootout.alioth.debian.org/ – MaciekTalaska

1

Đối với Python, đôi khi tôi tìm thấy psyco hữu ích. Không chắc chắn nếu có bất kỳ tương đương cho perl mặc dù.

Khi chọn ngôn ngữ cho tác vụ, tôi thấy hữu ích hơn khi chọn ngôn ngữ phù hợp nhất cho công việc. Nếu công việc yêu cầu hiệu năng nhiều hơn ngôn ngữ kịch bản có thể cung cấp trong điều kiện bình thường, thường tốt hơn là chỉ chuyển đổi hơn để uốn cong ngược lại để cố gắng làm cho mã của bạn nhanh chóng.

+0

Tôi đồng ý với nhận xét của bạn nhưng vấn đề là bạn đang làm nguyên mẫu nhanh và sẽ không biết yêu cầu về hiệu suất cho đến khi sản phẩm trở nên thành công và hiệu suất trở thành nút cổ chai. – rjoshi

0

Câu hỏi đặt ra có thể được hiểu nhiều cách khác nhau ...

Nếu bạn đã mã hóa một phần của ứng dụng của bạn trong C++ và cần thêm module hoặc các kịch bản, mà bạn muốn thêm vào trong C++ cuối cùng để cải thiện hiệu suất, bạn có thể sử dụng Qt là một khung nền đa nền tảng vững chắc, rất hoàn chỉnh.

Nó bao gồm hỗ trợ cho scripts (ECMAScript, phiên bản chuẩn hóa của Javascript), từ đó bạn có thể truy cập các đối tượng C++ nếu cần. Nó cũng cung cấp hỗ trợ cho các trình cắm thêm.

Với cách tiếp cận đó, bạn thậm chí có thể tiến hành trong ba bước,

  • đầu tiên làm một số xét nghiệm trong Javascript,
  • sau đó mã hóa các cơ sở của ứng dụng của bạn trong C++ và vẫn sử dụng một phần trong kịch bản (đối với ví dụ nếu bạn cần thử các thuật toán khác nhau),
  • và cuối cùng là chuyển mọi thứ, hoặc ít nhất là các phần quan trọng, trong C++.

Một tùy chọn khác là nhúng trình thông dịch Python vào mã của bạn, mặc dù điều đó có thể sẽ yêu cầu nhiều công việc hơn.

2

pawn

cầm đồ là một đơn giản, typeless, 32-bit mở rộng ngôn ngữ với một cú pháp C-như thế nào. Chương trình "nguồn" cầm đồ được biên dịch thành một tệp nhị phân để có tốc độ thực thi tối ưu. Trình biên dịch cầm đồ xuất ra mã P (hoặc bytecode) mà sau đó chạy trên một máy trừu tượng. Tốc độ thực thi, độ ổn định, tính đơn giản và dấu chân nhỏ là tiêu chí thiết kế cần thiết cho cả ngôn ngữ và máy trừu tượng.

Ngôn ngữ này rất giống với cú pháp c, vì vậy bất kỳ ai đã thực hiện bất kỳ C++, c, C#, java sẽ có thể đọc nó và đơn giản để không có người lập trình nào có thể đọc nó. Ngôn ngữ này hiện được sử dụng xung quanh, trong số các địa điểm khác có kịch bản đối với các máy chủ halflife 1halflife2.

+0

/Tôi yêu con tốt của tôi, và các chàng trai AMX đã làm một số điều INSANE với ngôn ngữ. –

0

Tôi không chắc chắn tôi hiểu câu hỏi của bạn nhưng nếu bạn đang tìm cách triển khai ngôn ngữ kịch bản của riêng bạn có thể giao tiếp với mã C++ của bạn, bạn có thể xem boost :: spirit. Bạn chỉ cần nói với nó ngữ pháp của bạn và bạn có ngôn ngữ kịch bản của bạn làm bất cứ điều gì bạn nói với nó trong c + +. Bạn chỉ định ngữ pháp của bạn bằng cách sử dụng các toán tử C++ làm cho nó rất dễ dàng và trực quan.

Đó là những gì tôi hiện đang sử dụng cho các nhu cầu gần đây của mình và có vẻ như nó sẽ thực hiện công việc tốt. Bạn có quyền truy cập đầy đủ vào các đối tượng C++ của bạn khi chỉ định ngữ pháp của bạn và người dùng của bạn có thể có một ngôn ngữ rất đơn giản để tìm hiểu (so với CINT nơi ngôn ngữ sẽ là chính C++).

Thời gian biên dịch hơi chậm ngay bây giờ nhưng nếu bạn không cần triển khai một ngôn ngữ rất phức tạp, bạn nên quản lý nó (tôi không muốn xem thời gian biên dịch cho một cái gì đó như C++). Ngoài ra tài liệu là một chút thiếu cho phiên bản mới nhất (và phiên bản cập nhật nhất là một chút khó tìm) nhưng nó tương đối dễ sử dụng vì vậy nó có thể có giá trị một kiểm tra, tùy thuộc vào nhu cầu của bạn.

2

Có một gói mới Chaiscript được thiết kế cho C++. Nó tương đối mới và chưa hoàn toàn ổn định.

4

Bất kỳ ai quan tâm đến một ngôn ngữ kịch bản đó là (chủ yếu) rất giống với C++, có thể muốn có một cái nhìn tại angelscript (ZLIB):

Các AngelCode Scripting Thư viện, hoặc AngelScript vì nó còn được gọi , là một thư viện kịch bản đa nền tảng cực kỳ linh hoạt được thiết kế để cho phép các ứng dụng mở rộng chức năng của chúng thông qua các tập lệnh bên ngoài. Nó đã được thiết kế ngay từ đầu để trở thành một thành phần dễ sử dụng, cho cả lập trình ứng dụng và người viết kịch bản.

Nỗ lực đã được thực hiện để cho phép nó gọi các hàm C chuẩn và các phương thức C++ mà không cần các chức năng proxy. Ứng dụng này chỉ cần đăng ký các hàm, các đối tượng và các phương thức mà các tập lệnh có thể làm việc và không có gì phải được thực hiện với mã của bạn. Các chức năng tương tự được ứng dụng sử dụng trong nội bộ cũng có thể được sử dụng bởi công cụ tạo kịch bản, giúp loại bỏ sự cần thiết phải nhân đôi chức năng.

Đối với người viết kịch bản, ngôn ngữ kịch bản tuân theo cú pháp được biết đến rộng rãi của C/C++ (với những thay đổi nhỏ), nhưng không cần lo lắng về con trỏ và rò rỉ bộ nhớ. Trái ngược với hầu hết các ngôn ngữ kịch bản lệnh, AngelScript sử dụng các kiểu dữ liệu C/C++ phổ biến để giao tiếp hiệu quả hơn với ứng dụng máy chủ.

Mọi chi tiết, kiểm tra: http://www.angelcode.com/angelscript/sdk/docs/manual/index.html

+0

những điều tuyệt vời! :-D – ASBai

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