30/09/2018, 21:17
Hỏi về cách kết hợp nhiều ngôn ngữ trên 1 project
Mình muốn sử dụng nhiều ngôn ngữ để làm một project, ví như mình muốn dùng C# để tạo giao diện, một số xử lý lại dùng java, Python… thì lúc đó phải làm thế nào?
Bài liên quan
Theo mình thấy hình như không có cái đó. Theo mình thấy C# hay Java Đều hỗ trợ đầy đủ thì việc gì phải kết hợp nhiều ngôn ngữ
à, các project dùng nhiều ngôn ngữ là vì cấu tạo = nhiều phần (microservice) , mỗi service có API để các service khác tương tác (một phần API có thể public như graph API của facebook)
mỗi ngôn ngữ đều có một (hoặc nhiều framework) support autogenerate API , một project sẽ dùng một spec chung về API (hoặc service này có adapter cho service kia …)
VD: daynhauhoc mã nguồn discourse có back-end Rails (Ruby) và front-end Ember (Node.js - javascript)
Rails quản lí database schema và generate một API Serialize (không biết nhớ đúng ko)
Ember có adapter cho Serialize
=> 2 service tương tác được với nhau
Cái đó dùng IDE có hỗ trợ. Đề cử Visual Studio.
VS sẽ quản lý dự án theo Solution.
Trong mỗi Solution có thể add các project với những ngôn ngữ khác nhau.
Mình vẫn code xử lý ảnh bằng cách đó. C# làm giao diện đồ họa thì cực ngon nhưng xử lý thì hơi chậm. C++ thì xử lý nhanh nhưng giao diện thì nhọc chết mợ. Thế là 2 ngôn ngữ được kết hợp. Vừa có giao diện ngon và những thứ hay ho của C#, vừa có hiệu năng cao của C++.
trước mình cũng xử lý ảnh trên C++, và khi động tới giao diện thì ko biết cách kết hợp với C# nên đành mò học Qt, bạn có thể hướng dẫn cụ thể một chút ko?
Bạn tìm hiểu PInvoke trong C#.
Bạn sẽ code những thứ bạn muốn làm với C++ rồi xuất ra các dll. C# hay Java sẽ gọi các hàm trong dll này để gọi chương trình xử lý. Các chương trình sẽ chạy với hiệu năng của C++.
Việc gì phải dùng nhiều ngôn ngữ cho cực, java và c# mình thấy hai thằng đó hỗ trợ đầy đủ mà!
Không có ngôn ngữ nào hoàn hảo. Việc kết hợp các ngôn ngữ với nhau để kết hợp những ưu điểm và hạn chế những nhược điểm.
cái này thuộc về viết thư viện rồi hay áp dụng cho game, app thì ít hơn
thế trên linux, thì sao bạn???
Trên Linux cũng tương tự.
Bản chất là các ngôn ngữ sẽ build thành những thứ có thể dùng chung được. Và một project với ngôn ngữ nào đó sẽ gom chúng lại với nhau.