2012-03-20 32 views
6

Tôi đang tìm một ngôn ngữ hệ thống cấp cao hơn, nếu có thể, phù hợp để xác minh chính thức, biên dịch thành chuẩn C, sao cho nó có thể chạy trên nền tảng với chi phí thấp (tương đối).Ngôn ngữ hệ thống cấp cao có thể biên dịch thành c?

Hai ngôn ngữ hứa hẹn nhất như tôi đã mắc sai lầm trong vài ngày qua là:

  1. BitC - Trong khi các mục tiêu thiết kế của ngôn ngữ này phù hợp với nhu cầu của tôi (thậm chí nó hỗ trợ các mô hình chức năng), nó ở trạng thái rất không ổn định, tài liệu đã lỗi thời, và nói chung, nó có vẻ như là một cú sút rất dài cho một dự án thực tế.

  2. Lisaac - Nó hỗ trợ thiết kế theo hợp đồng, rất tuyệt và có chi phí hoạt động tương đối thấp. Tuy nhiên trang web đã chết, chưa có bản phát hành mới nào kể từ năm 2008 và dường như ngôn ngữ đã chết.

Tôi cũng muốn lưu ý rằng nó không có nghĩa là hệ thống thời gian thực, do đó, GC hoặc nói chung, không xác định (theo nghĩa thời gian thực), không phải là vấn đề.

Dự án chủ yếu liên quan đến xử lý âm thanh, mặc dù nó phải là nền tảng chéo.

Tôi cho rằng ai đó sẽ chỉ cho tôi câu trả lời rõ ràng - "đồng bằng ol 'C". Trong khi nó thực sự đa nền tảng và rất hiệu quả, số lượng mã có thể sẽ lớn hơn.

EDIT: Tôi nên làm rõ rằng ý tôi là đa nền tảng và kiến ​​trúc chéo. Đó là lý do tại sao tôi chỉ xem xét các ngôn ngữ, được biên dịch thành C ngay từ đầu, nhưng nếu bạn có thể chỉ cho tôi một ví dụ khác, tôi sẽ biết ơn :)

+6

Bạn đã xem C++ chưa? Nó (là | có thể là) một ngôn ngữ hệ thống mức cao. –

+2

Có, nhưng sự phức tạp được giới thiệu bởi C++ là, tôi cảm thấy, không có giá trị thêm rắc rối. Ngoài ra, mọi trình biên dịch trên trái đất này đều hỗ trợ một phần khác của tiêu chuẩn ngôn ngữ và có, ví dụ: ngoại lệ, là một mớ hỗn độn. Tương tự như vậy đối với RTTI và nói chung tất cả các tính năng tạo ra mức C++ cao hơn. –

+0

Nếu bạn thực sự không thích C++, bạn có thể xem D có GC trong số những thứ khác và ít phức tạp hơn C++. Mặc dù nó ít phổ biến hơn nhiều và không có nhiều thư viện nhưng nó có thể tương tác với mã C như C++. Cả hai ngôn ngữ đó không thực sự biên dịch sang C, chúng biên dịch thành mã máy. –

Trả lời

3

Tôi nghĩ bạn có thể quan tâm đến ATS. Nó biên dịch thành C (thực sự nó thể hiện và giải thích nhiều thành ngữ và mô hình C từ một quan điểm lý thuyết kiểu chính thức, nó thậm chí còn được đề xuất để chuẩn bị một loại sách để thể hiện điều này - nếu chúng ta chỉ có nhiều thời gian hơn ...).

Dự án chủ yếu liên quan đến xử lý âm thanh, mặc dù nó phải là nền tảng chéo.

Tôi không biết nhiều về xử lý âm thanh, tôi chủ yếu làm một số công cụ đồ họa máy tính (chủ yếu là những điều cơ bản, chỉ để dùng thử).

Ngoài ra, tôi không chắc liệu ATS có hoạt động trên Windows hay không (chưa bao giờ thử điều đó).

(Disclaimer: Tôi đã làm việc với ATS một thời gian. Đó là ngôn ngữ cồng kềnh và lớn, và đôi khi khó sử dụng, nhưng tôi rất thích chất lượng của các chương trình tôi đã có thể sản xuất với nó, Ví dụ, xem THI thư mục con trong GLES2 bindings cho một số chương trình thực tế)

+0

+1, Đây là câu trả lời gần nhất với những gì tôi cần, tuy nhiên từ cái nhìn đầu tiên có vẻ như mã C được tạo ra chỉ được GCC biên dịch, mặc dù chạy trên nhiều nền tảng, không có sẵn ở mọi nơi. –

+0

@ K.Steff, nếu bạn thực sự cần một ngôn ngữ biên dịch sang C có thể được biên dịch bởi * bất kỳ trình biên dịch C * nào, thì đó là một vấn đề. Tuy nhiên, tôi nghĩ rằng bạn có thể giải quyết trên một số trình biên dịch cụ thể (nói GCC và Clang) mà sẽ phù hợp với nhu cầu của bạn vào thời điểm này. Sau đó, chúng tôi có thể làm việc cùng nhau để làm cho ATS có thể biên dịch thông qua Clang (tôi nhớ rằng các tệp C * đã biên dịch với Clang lần trước tôi đã thử, nhưng có một số tiêu đề "bị thiếu", vì vậy ...). Nếu bạn cần một số nền tảng/trình biên dịch kỳ lạ, thì hãy cụ thể hơn; có lẽ chúng ta cũng có thể làm việc đó. –

2

sau đây không đúng tuân thủ các yêu cầu nhưng tôi muốn đề cập đến nó anyway và nó là quá dài cho một lời nhận xét:

PyPy của RPython có thể được dịch sang C. Here's a nice talk about it. Nó được sử dụng để thực hiện Smalltalk, JavaScript, Io, Scheme, Gameboy (với mức độ hoàn chỉnh khác nhau), nhưng bạn có thể viết các chương trình độc lập trong đó. Nó được biết đến chủ yếu cho việc thực hiện ngôn ngữ Python là runs on Intel x86 (IA-32) and x86_64 platforms.

Quy trình dịch thuật yêu cầu trình biên dịch C có khả năng.Toolchain cung cấp các phương tiện để suy ra nhiều thứ khác nhau về mã (được sử dụng bởi chính quá trình dịch) mà bạn có thể sử dụng lại để xác minh chính thức.

Nếu bạn biết cả Python và C, bạn có thể sử dụng cython dịch cú pháp giống Python sang C. Nó được sử dụng để viết các mở rộng CPython.

+0

Cảm ơn, đây là một cái gì đó hữu ích, tôi sẽ tìm nó :) –

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