2011-01-14 37 views
9

Tôi muốn viết phần mềm chỉnh sửa video và kết luận "hợp lý" là ngôn ngữ tôi phải sử dụng là C++ ... Nhưng tôi không thích nó (xin lỗi C++ fans)Có sự thay thế thích hợp cho C++, khi tôi muốn viết các ứng dụng xử lý video?

Tôi muốn viết nó với cái gì đó mát mẻ, như Lisp hay Haskell hay Erlang ... Nhưng tôi không biết liệu việc triển khai mã nguồn mở của những ngôn ngữ đó (tôi không có tiền để mua giấy phép) cho phép tôi tạo ra một phần mềm cạnh tranh (trong buổi biểu diễn) diện tích)

Bạn nghĩ sao? Bạn đề xuất món gì?

+2

Không có vi phạm nào được thực hiện (bởi tôi ít nhất). Nhưng tôi vẫn nghĩ rằng đối với phần mềm chỉnh sửa video, lựa chọn của bạn sẽ rất hạn chế. –

+0

như vậy, là c + + hoặc không có gì? – Nisanio

+0

Tất cả phụ thuộc vào thời gian bạn muốn đầu tư vào việc này. Nếu bạn sẵn sàng để viết tất cả mọi thứ từ đầu bạn có thể có thể làm điều đó trong bất kỳ ngôn ngữ của sự lựa chọn. Chỉ cần cung cấp cho nó một shot với một thực hiện đơn giản chỉ là một cầu thủ và xem như thế nào đến nay bạn nhận được :) –

Trả lời

9

Tôi không thể nói chuyện với Lisp, nhưng cả Erlang và Haskell đều có khả năng thực hiện cần thiết để xử lý video. Đạt được hiệu suất đó có thể sẽ khó khăn hơn so với C++ vì có ít thư viện hiện có trong miền, vì vậy bạn sẽ phải tự thực hiện nhiều hơn. Điều đó có nghĩa là bạn sẽ phải có khả năng tự viết mã hiệu suất cao. Trong Haskell tôi mong đợi điều này sẽ đòi hỏi một sự đầu tư đáng kể thời gian (tối thiểu 6 tháng) để trở nên thành thạo.

Ngôn ngữ bạn chọn nên phụ thuộc rất nhiều vào mục tiêu của dự án. Nếu đó là một dự án sở thích, hoặc bạn muốn tìm hiểu rất nhiều về các thuật toán xử lý (và do đó, bạn không cần phải tự mình viết mã mức thấp), không có gì sai khi sử dụng một ngôn ngữ không chính thống. Haskell có ràng buộc với rất nhiều thứ bạn có thể muốn sử dụng cuối cùng, chẳng hạn như wrapper for GLSL.

Khi ai đó làm việc với xử lý âm thanh (bao gồm cả thời gian thực), tôi có thể nói rằng hiệu suất của Haskell không phải là vấn đề đối với tôi. Đối với một dự án gần đây tôi đã viết một số hàm trong C, nhưng điều đó là cần thiết để thực hiện một lược đồ vectơ tùy chỉnh. Làm công việc cao cấp trong Haskell và gọi ra C khi cần thiết là một cách tiếp cận hoàn toàn hợp lệ, mặc dù may mắn là nó ít cần thiết hơn so với trước đây.

Tất nhiên, điều này giả định một vài điều về bản chất của dự án của bạn. Nếu bạn muốn một cái gì đó bạn có thể sử dụng ngay lập tức, Haskell, Lisp, và Erlang có lẽ không phải là ngôn ngữ cho bạn bởi vì có ít tài nguyên hơn.Bạn đã xem xét Processing chưa? Đó là Java, tôi không biết nếu bạn xem xét rằng tốt hơn so với C + + hoặc tồi tệ hơn.

Tôi có động lực bên cạnh năng suất làm việc trong Haskell (và năng suất của tôi mất nhiều thời gian), nếu không có những mục tiêu khác tôi sẽ không kiên trì. Nếu bạn muốn viết một cái gì đó để sử dụng nó, gắn bó với những gì sẽ hiệu quả nhất. Nếu bạn có động lực khác, hãy cho chúng tôi biết chúng là gì và có nhiều khả năng mọi người sẽ đưa ra các đề xuất hữu ích.

4

Đối với giá trị của nó, Wings3D được viết bằng Erlang.

Bạn luôn có thể thử D, nếu bạn muốn một cái gì đó hơi giống với C++ nhưng không phải C++. Ngoài ra, D có thể sử dụng một số tình yêu.

+0

Rất thú vị ... Wings3D – Nisanio

+0

Ứng dụng có xử lý video không? Xem câu hỏi. –

1

Tôi muốn sử dụng ngôn ngữ cung cấp cho tôi phạm vi phủ sóng tốt nhất bởi thư viện của bên thứ ba cho những gì tôi đang cố gắng làm; để thao tác dữ liệu video có thể sẽ là ngôn ngữ chính thống như C++.

Nếu dự án này là để vui chơi/học một ngôn ngữ mới thì bằng mọi cách, hãy đi theo con đường ít đi. Nhưng nếu đây là thứ bạn cần để vận chuyển trong một khoảng thời gian hợp lý, tránh những công cụ tốt nhất cho công việc bởi vì bạn không thích chúng là chiến lược không rõ ràng.

+0

Nó chỉ là một tập thể dục, một số loại dự án sở thích. Hạn chót là ngày tôi chết :) – Nisanio

3

Đối với cả Haskell và Erlang, việc triển khai mã nguồn mở việc triển khai chuẩn, hiệu quả nhất hiện có sẵn. Không có lý do gì mà Haskell không nên thực hiện đủ cho nhu cầu của bạn - cho những thứ video tôi cho rằng bạn sẽ sử dụng ma trận và như vậy. Có các ràng buộc chất lượng có sẵn cho BLAS & co cho Haskell. Tôi không biết nhiều công việc chỉnh sửa video hiện có, nhưng Alberto Ruiz (tác giả của HMatrix) đã làm việc với Haskell và tầm nhìn máy tính: http://dis.um.es/profesores/alberto/research.html

Ngoài ra còn có rất nhiều công việc về thư viện và xử lý âm thanh trong Haskell.

1

Điều đó phụ thuộc ít nhất vào mục tiêu của bạn với dự án là gì. Nếu đó là một dự án sở thích và bạn muốn học một ngôn ngữ khác, thì bạn nên chọn ngôn ngữ đó. Tuy nhiên, trong trường hợp này, tôi cho rằng bạn đã quen thuộc với việc xử lý video. Mặt khác, nếu bạn muốn tìm hiểu về xử lý video, tôi khuyên bạn nên sử dụng ngôn ngữ bạn đã cảm thấy thoải mái.

Bây giờ, nếu đó là một dự án chuyên nghiệp có kích thước phù hợp (phần mềm xử lý video có thể rất lớn), bạn nên cân nhắc sử dụng các ngôn ngữ khác nhau cho những thứ khác nhau. Loại hệ thống tôi làm việc thường yêu cầu viết một số mã trong C (vì lý do hiệu quả), nhưng chúng tôi luôn cố gắng giữ điều đó ở mức tối thiểu không thể thiếu và sử dụng ngôn ngữ cấp cao hơn cho hầu hết các hành vi hệ thống (chúng tôi sử dụng erlang, nhưng áp dụng cho bất kỳ ngôn ngữ cấp cao nào khác).

IMO, viết hệ thống lớn trong C hoặc C++ gần như là tự sát. Có những dự án thành công, nhưng tôi thấy khó hơn nhiều so với bổ sung phần C với ngôn ngữ bậc cao hơn.

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