Nhóm của tôi đã phát triển gói R để mô phỏng sự phát triển của cây (xem kho GitHub ). Gói R sử dụng .Call
để giao tiếp với C.
Chúng tôi đã quyết định rằng sẽ rất đáng để tạo một thư viện C độc lập. Hai lý do chính là 1) để sử dụng các công cụ gỡ lỗi C quen thuộc và 2) một phần lớn cộng đồng nhà phát triển / người dùng quen thuộc với các ngôn ngữ được biên dịch (chủ yếu là các mô hình trong lớp được viết bằng C hoặc Fortran). Tuy nhiên, gói R có thể truy cập được đối với nhiều người ngoài cộng đồng này, vì vậy chúng tôi muốn duy trì chức năng của nó.
Tôi đã xem xét một số câu hỏi liên quan, ví dụ: https://stackoverflow.com/q/12328156/199217 , thảo luận về các gói R với phụ thuộc thư viện C, nhưng chưa tìm thấy câu hỏi nào liên quan đến việc tách riêng gói R hiện có.
Một cách tiếp cận được đề xuất
(những gì chúng ta đã nghĩ ra cho đến nay ... một người rơm)
- Viết bài kiểm tra cho chức năng hiện có
- giữ thư viện C trong
src/
thư mục - Đặt mã C dành riêng cho R (ví dụ:
SEXP
tải thư viện R, v.v.) vào các tệp 'Trình bao bọc R' được thêm trướcR_*
- tạo các chức năng riêng biệt để đọc các tệp cấu hình trong C
- tạo chức năng C 'chính' để thay thế chức năng trong R
- viết một tệp tạo tệp cho thư viện C mà bỏ qua các tệp bao bọc R
- Khi thư viện C hoạt động độc lập và tương đương với gói R, chúng tôi có thể xem xét chuyển các hàm C sang một kho lưu trữ riêng, đó sẽ là một phụ thuộc cho gói R
Câu hỏi:
- Là nỗ lực này sai lầm?
- Chúng ta đang xem xét bất kỳ cạm bẫy tiềm năng?
- Có cách nào tốt hơn để phát triển song song cả thư viện R và C không?
- Có ví dụ nào về các thư viện C đã được tách rời khỏi các gói R không?
- Làm thế nào chúng ta có thể viết các bài kiểm tra để so sánh các hàm tương đương trong R và C?