Tôi đã thấy một vài chủ đề liên quan đến lập trình GUI trong OCaml nhưng tôi không cảm thấy rõ ràng chúng dẫn đến một giải pháp rõ ràng khi cần giao diện GUI.OCaml: Con đường hiệu quả để lập trình GUI?
Câu hỏi của tôi, cụ thể hơn, như sau: Cách tiếp cận hiệu quả nhất (và dễ nhận) trong lập trình GUI cho phần mềm OCaml là gì? Có ai tiếp xúc với các mô-đun GUI đơn giản và hiệu quả trong OCaml hay tìm thấy một ngôn ngữ hiệu quả hoặc gói phần mềm miễn phí trong đó có thể thực hiện và giao tiếp/chơi độc đáo với OCaml?
Tôi đã viết một thông dịch viên trong OCaml, do đó, trình lexer, parser, các chức năng thông dịch cốt lõi, vv là các mô-đun OCaml. Hiện tại, tôi có giải pháp dòng lệnh ("main.ml") cho phép người dùng tương tác với trình thông dịch bằng cách nhập các biểu thức vào dòng lệnh và nhận đầu ra đầu ra được in hiển thị biểu thức được phân tích cú pháp và giảm, v.v. Tuy nhiên, giải pháp dòng lệnh chỉ dành cho mục đích thử nghiệm. Tôi muốn người dùng tương tác thông qua một GUI, nó có thể đơn giản (các khung Java đến từ tâm trí của các eons trước đây), nhưng cần phải bằng cách nào đó giao tiếp với các mô-đun OCaml mà tôi đã mã hóa. Có một thư viện trong OCaml mà tôi đã tìm thấy cho đến nay: http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual042.html. Có ai biết nếu điều này là có hiệu quả và hữu ích? (Tôi nghĩ rằng tôi đã nhận được những nhận xét tiêu cực về thư viện này)
Nếu tôi chọn lập trình GUI theo ngôn ngữ tối ưu hơn, tương tác phần mềm có thể: viết GUI bằng ngôn ngữ phù hợp (có lẽ C++, Python, v.v.) , sau đó biên dịch trình thông dịch văn bản OCaml thành một tệp thực thi, sau đó kết nối GUI bằng cách nào đó với tệp thực thi? Tôi không quan tâm đến một số giải pháp kết nối lỏng lẻo, thông qua các đường ống (tôi liên tục nghĩ đến việc liên lạc giữa các quá trình này, như những gì có liên quan trong thiết kế hệ điều hành) hoặc ổ cắm (tôi có xu hướng nghĩ về các lập trình mạng), Tôi tưởng tượng có một số cách để "nhà" thông dịch viên mã hóa OCaml của tôi trong mã GUI của ngôn ngữ khác nếu không phải là OCaml. Bất kỳ suy nghĩ, hướng dẫn hoặc đề xuất nào?
EDIT: Tôi sẽ rất vui nếu tôi có thể có GUI cho hệ điều hành giống Linux (ví dụ: Linux RedHat). Nếu tôi có thể có được GUI để làm việc trên Windows mà sẽ là tuyệt vời, nhưng ở mức tối thiểu tôi đang nhắm đến Linux.
CHỈNH SỬA 2: Chỉ tìm thấy điều này, có ai có suy nghĩ về "OCaml-Java" không? http://ocamljava.x9c.fr/ Nghe có vẻ khá thú vị, vì nó có, "... khả năng chạy các nguồn mục tiêu Caml đã được biên dịch bằng ocamlc; thứ hai, khả năng biên dịch các nguồn mục tiêu Caml thành các tệp jar thực thi." Mối quan tâm của tôi là nó không bao giờ đánh tôi rằng Java sẽ là cách tốt nhất để có được một giao diện nhanh nhưng hữu ích ...
GIẢI PHÁP HIỆN TẠI: Sau khi kiểm tra các tùy chọn khác nhau trong bài giải pháp mà @Jeffrey Scofield đặt xuống dưới đây , Tôi đã chọn để nhìn sâu hơn vào LablGtk (cho phép tôi ở lại trong OCaml). Lựa chọn đầy hứa hẹn tiếp theo cho những người đang xem bài đăng này là xem xét giao tiếp ngoại ngữ với C, vì C và OCaml đã có một mối quan hệ để bắt đầu. Dường như có cách gọi mã C trong OCaml và OCaml trong C (mặc dù điều này có thể thực sự khó khăn, nhưng về cơ bản bạn kết thúc gói các hàm gọi hàm OCaml với các hàm wrapper hơi phức tạp sẽ cụ thể hơn cho kiểu hàm bạn gọi từ trong OCaml -> nghĩa là bạn sẽ phải đối phó với "ánh xạ" của mỗi hàm OCaml và các đối số của nó trong C). Hãy xem: http://www.mega-nerd.com/erikd/Blog/CodeHacking/Ocaml/calling_ocaml.html, để biết thêm thông tin. OCaml-Java ban đầu được coi là một ý tưởng tuyệt vời, vì tôi thấy thoải mái với lập trình Java GUI, nhưng sự tương tác giữa hai ngôn ngữ không trực tiếp như với C và OCaml, tài liệu này có vẻ mỏng (và sử dụng OCaml) -Java không phải là thứ mà bạn vừa mới nhặt và chuyển đến công cụ Java GUI ...). OCaml-JavaScript có vẻ thú vị, nhưng hãy nhớ rằng bạn sẽ có nhiều khả năng phải đầu tư thời gian vào việc thiết lập mã HTML 5 tốt ngoài một số JavaScript nếu bạn chọn đường dẫn này. Ngoài ra, có một số bài viết ở đây trong SO nói về ống và ổ cắm, đó là các phương pháp hợp lệ để tạo ra một hệ thống GUI-back-end.Tuy nhiên, đây là một ý tưởng hay nếu bạn không nhớ rằng hệ thống/sản phẩm chương trình của bạn sẽ được "ghép đôi lỏng lẻo". Tôi sẽ cập nhật giải pháp này khi tôi tìm ra LablGtk và đảm bảo rằng nó mang lại giao diện người dùng có thể chấp nhận được cho mã back-end OCaml của tôi.
Nó sẽ giúp biết nền tảng hoặc nền tảng mục tiêu của bạn là gì. Đối với những gì nó có giá trị, nó hoàn toàn hợp lý để sử dụng ổ cắm trong một máy chủ duy nhất. Nếu bạn đang sử dụng hệ thống giống Unix, có "các ổ cắm miền Unix". –
Chỉ cần cập nhật bài đăng của tôi với thông tin liên quan đến nền tảng mục tiêu theo nhận xét của bạn! Hơn nữa, @JeffreyScofield, trong khi bạn nói đúng rằng ổ cắm có thể không phải là thứ để loại trừ, tôi sẽ rất quan tâm nếu có một số giải pháp mà tôi có thể gói GUI và trình diễn (viết bằng OCaml) trong một loại Chương trình/thực thi, nhưng nếu đó không phải là một con đường có thể, thì ổ cắm có thể là con đường để đi ... nhưng đó là một hệ thống lỏng lẻo hơn tôi nghĩ, nếu tôi có thể giữ mọi thứ kết hợp chặt chẽ hơn, điều đó sẽ là lý tưởng! – 9codeMan9