2010-04-04 36 views
33

Tôi tự hỏi liệu có bất kỳ ngôn ngữ kịch bản lệnh được nhúng tĩnh nào hay không. Python, JavaScript, vv là những ngôn ngữ tuyệt vời, nhưng chúng được gõ động (nghĩa là, các kiểu được kiểm tra tại thời gian chạy). Tôi chỉ tự hỏi nếu có ai biết về bất kỳ ngôn ngữ kịch bản được gõ tĩnh nào có thể được nhúng trong một ứng dụng C++?Có bất kỳ ngôn ngữ kịch bản lệnh được nhập tĩnh nào không?

+5

Làm thế nào là python lỏng lẻo đánh máy? Trong python nhiều hoạt động ném một TypeError mà chỉ đơn giản là sẽ gây ra hành vi không xác định trong C + +. – sepp2k

+2

Hầu hết trong số họ (Python, Ruby, ...) có thể được coi là đánh máy mạnh mẽ tùy thuộc vào định nghĩa (@runtime, đó là). Bạn có thể muốn mở rộng về định nghĩa 'mạnh mẽ đã gõ 'cụ thể của bạn. – ChristopheD

+1

Ôi trời ơi, tôi có thể thấy một sản phẩm làm bánh của người này ... – skaffman

Trả lời

3

Vâng, có Ch - trình thông dịch C/C++ có thể nhúng

+0

Bạn có thể mở rộng thêm một chút về Ch? Nó là nền tảng chéo?Nó được phát hành theo GPL hay giấy phép khác? Tài liệu có được cập nhật không? –

+0

@George: Tôi đã không thực sự thử nó (cá nhân tôi không thấy điểm), nhưng nó là nền tảng chéo và miễn phí. Nó dường như được tài liệu tốt và cũng có một phiên bản thương mại với (có lẽ) hỗ trợ đầy đủ –

+7

Và trong thế giới nào C được tính là 'gõ tĩnh'? –

2

Làm thế nào về C#? Kiểm tra thi hành một C# Mono của "ngôn ngữ kịch bản" REPL (http://www.mono-project.com/CsharpRepl)

Cập nhật: Nếu bạn không biết những gì một REPL là, đó là những gì bạn nhìn thấy khi bạn chạy Python mà không cần bất kỳ đối số, hoặc IRB

11

Tôi khuyên bạn nên xem Angelscript. Chúng tôi đã sử dụng nó trên Warsow và nó khá tốt. Nó có tất cả các tính năng mà bạn mong đợi như các lớp, quản lý bộ nhớ, vv Vì nó được gõ tĩnh, nó có thể làm tối ưu hóa tốt hơn cho bạn, và do đó mã byte kết thúc nhanh hơn các ngôn ngữ kịch bản khác.

Tuy nhiên, AS không dễ sử dụng như những người khác như Lua và chỉ tải xuống một tệp .zip - nghĩa là không có trình cài đặt .exe, .deb packages, .dmg hoặc bất kỳ thứ gì. Nói chung điều này là OK vì bạn sẽ muốn gói AS vào anyways của dự án của bạn. Khó so sánh chính với Lua chỉ là thư viện lớn hơn rất nhiều (nhưng có nhiều tính năng hơn). Không phải là nhiều người sử dụng nó nên rất khó để tìm các ví dụ và giúp đỡ, nhưng có những tài liệu tốt nên nó không phải là tất cả những khó khăn để bắt đầu.

Tuy nhiên, cá nhân tôi sẽ có ngôn ngữ động để viết kịch bản. Khi tôi viết một ứng dụng, tôi muốn vào trong đó và viết mã vào đó mà không phải lo lắng về hành lý kiểu C. Khác với AngelScript tôi thực sự không thể nghĩ ra bất kỳ người nào khác đáng được giới thiệu.

+0

"mà không phải lo lắng về hành lý kiểu C": quả thực, Angelscript có vẻ quá nặng để sử dụng để đủ điều kiện như là một "ngôn ngữ kịch bản" cho tôi. – Stefan

1

Haskell được nhập tĩnh. Và bạn có thể nhúng ghci hoặc ôm (cả hai đều là phiên dịch) vào một chương trình khác. Nhưng nó không phải dễ dàng, afaik.

+0

Tôi đã cố gắng sử dụng Haskell như một sự thay thế cho Python nhưng sau một vài lần thử, rõ ràng là việc triển khai bất cứ thứ gì trong Haskell khiến tôi mất gấp 5 lần thời gian so với Python. Tôi đã cố gắng để phân bổ sự khác biệt này cho kiến ​​thức kém của tôi về Haskell nhưng sau khi xem xét lại tôi chưa bao giờ có hiệu suất tệ hại như vậy với bất kỳ ngôn ngữ mới nào, vì vậy tôi dính vào Python. Ngoài ra đánh giá lười biếng kết hợp với IO cung cấp cho các lỗi không thể đoán trước khủng khiếp. Nó giống như nắm đa luồng khi các vấn đề trật tự nhưng mọi thứ xảy ra theo thứ tự và trong trường hợp của Haskell bạn không có phương tiện áp đặt lệnh. – Trismegistos

+2

Haskell hoàn toàn có lệnh áp đặt. Thứ tự trong đó các hành động IO được sắp xếp theo trình tự ví dụ là thứ tự mà chúng sẽ xảy ra. – Evan

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