2008-10-09 33 views
5

Tôi bắt đầu độc lập đầu tiên của mình để liên doanh lợi nhuận. Tôi đang gặp khó khăn trong việc quyết định sử dụng ngôn ngữ nào. Tôi muốn viết ứng dụng của mình trong Perl, nhưng tôi không nghĩ nó sẽ đủ đơn giản để biên dịch. Nếu tôi không viết nó trong Perl tôi sẽ viết nó trong C++.Dự án mới: Tôi gặp khó khăn khi chọn một ngôn ngữ để sử dụng

Ứng dụng sẽ có nhiều tính năng, bao gồm giao diện wxwidgets, Xử lý SDL, hẹn giờ, xử lý luồng và xử lý âm thanh. Bản thân chương trình sẽ hơi phức tạp, nhưng không quá lớn.

Vì vậy, câu hỏi của tôi là:

  1. thể cải cách hành chính, Perl2exe, hoặc tương đương biên dịch hơn một trường hợp thử nghiệm cơ bản?
  2. Tốc độ và biên dịch sang một bên vì sao tôi nên sử dụng C++ trên Perl?

Edit: Một số thông số kỹ thuật dự án của tôi.

  • Nhiều nền tảng. Tôi hy vọng 50% hoặc nhiều người dùng của tôi sở hữu máy Mac, với hầu hết những người dùng còn lại là người dùng Windows. Nếu có thể, tôi cũng muốn hỗ trợ Linux vì đó là hệ điều hành hàng ngày của tôi.
  • Vì đó là nền tảng đa Tôi cần một công cụ tạo GUI thống nhất. Nó cần có khả năng sử dụng các kiểu cơ bản và cho phép tôi tạo các trình xử lý sự kiện tùy chỉnh và các đối tượng GUI tùy chỉnh.
  • Cần xử lý âm thanh. Đọc và chơi, wav và/hoặc mp3. Ngoài ra tôi sẽ sử dụng một số thuật toán tùy chỉnh để xác định các thuộc tính đặc biệt của các tệp âm thanh; những thứ như tiến độ, mẫu, v.v.
  • Tôi muốn nhưng không yêu cầu hỗ trợ SDL/OpenGL.

Mọi thứ khác đều khá lộng lẫy. Một số lớp và container khác nhau. Một vài điều khiển GUI tùy chỉnh.

Trả lời

9

Tại sao không sử dụng lai của cả hai? Nó thường là cách phát triển rất nhiều trong những ngày này.

Tôi đề xuất một kết hợp Lua/C++ hoặc Python/C++ (tôi không biết chắc cách kết hợp Perl/C++ hoạt động, nhưng đó có thể là một lựa chọn tốt).

Cá nhân tôi đã thực hiện một loạt với kết hợp Lua/C++ và nó khá tuyệt vời.

+0

Suy nghĩ thú vị. Làm thế nào để bạn đi về nó? Trích xuất tốc độ phụ thuộc và phức tạp vào C++ và quấn nó vào mã Lua/Python của bạn? –

+0

Vâng, đó là cách tốt nhất. Ngoài ra nhiều lần nhiều thứ dường như tốc độ phụ thuộc không phải là quan trọng trong thực tế. Ngoài ra nếu bạn làm rất nhiều toán và chỉ cần trao đổi Lua cốt lõi của bạn để lõi LuaCoCo có thể làm tăng Lua bên toán 10 lần –

+0

Tôi đang làm việc trên một dự án để làm cho Perl/C++ một sự kết hợp dễ dàng hơn. Google tên tôi và Perl để biết thêm thông tin. –

11

Đi với C++. Timers, luồng, âm thanh, SDL, wxwidgets, đây là tất cả những thứ mà Perl có thể làm, nhưng không thực sự nổi trội. Ngoài ra, PAR hoặc perl2exe là cơ chế clunky để phân phối. Chúng hoạt động, nhưng chúng không lý tưởng. Trong khi đó, C++ (và tôi rất khuyến khích bạn xem xét sử dụng Boost) sẽ phù hợp độc đáo với vai trò này.

5

Tôi đã sử dụng PAR để đóng gói chương trình Perl/Tk đáng kể cho Windows. Phải mất một chút không quan trọng, nhưng nó hoạt động.

Nếu bạn ít nhất là có kinh nghiệm trong Perl như trong C++, việc phát triển trong Perl sẽ nhanh hơn. Nhưng tốc độ thời gian chạy cho một chương trình tương đương sẽ chậm hơn. Tất cả các tiêu chí còn lại của bạn có thể được thỏa mãn bởi một trong hai, vì vậy tôi muốn nói rằng nó đi theo lựa chọn cá nhân.

4

Cá nhân? Tôi nói không bị mắc kẹt trong chuyện này quá lâu. Có những ưu và khuyết điểm của việc đi theo một trong hai cách, nhưng có vẻ như bạn đang nhận được nguy hiểm gần bị mắc kẹt trong "tê liệt phân tích."Nếu không có gì khác, hãy lật một đồng xu hoặc chọn một cái mà bạn cho là có tên đẹp nhất.

+0

Cảm ơn bạn đã nhận xét sâu sắc. Tôi đã lên kế hoạch và nghiên cứu. Phần lớn thời gian cho câu hỏi này và đi qua các pro/khuyết điểm trong vài tuần. –

+0

Phản hồi tuyệt vời. Tôi, bản thân mình, dễ bị phân tích tê liệt và điều quan trọng là phải làm là bắt đầu. – Darrel

11

Tôi là một lập trình viên C++ và Perl. C++ là một ngôn ngữ tốt, nhưng bất cứ khi nào tôi có sự lựa chọn, tôi đi với Perl kể từ khi phát triển chỉ đơn giản là tiến hành rất nhiều nhanh hơn

Một vài ý kiến:.

  1. PAR, PerlApp, và perl2exe không trình biên dịch Họ là đóng gói không có trình biên dịch Perl trừ perl bản thân Nếu bạn muốn... một số dạng mã bytecode của mã Perl, bạn sẽ phải đợi Perl 6 trên Parrot.
  2. Tôi đã sử dụng d PAR để đóng gói một ứng dụng với tổng số khoảng 500k SLOC, không bao gồm chính perl. Nó hoạt động tốt, chạy cùng tốc độ như perl chính nó, nhưng khởi động chậm hơn. Đây là năm 2005. Kể từ đó, hiệu suất khởi động đã được cải thiện đáng kể nếu bạn cài đặt mô-đun Lưu trữ :: Giải nén :: Burst trên máy phát triển nơi bạn gói chương trình. Tôi đã sử dụng thành công PAR cho nhiều ứng dụng khác nhau về kích thước từ nhỏ đến các dòng 500k nói trên. Nếu bạn cần trợ giúp về cải cách hành chính, có một danh sách gửi thư tích cực và thân thiện. Chỉ cần làm cho chúng tôi và bản thân bạn có lợi cho việc không tham gia với "OMG, không có gì làm việc, giúp tôi, kthx!". Mọi người làm điều đó mọi lúc (và đôi khi vẫn nhận được sự giúp đỡ). :)
  3. Luồng của Perl không tuyệt vời. Kiểm tra xem liệu POE có phù hợp với hóa đơn của bạn hay không. Tôi là một người dùng thread.pm, nhưng tôi không muốn. Với lời xin lỗi thích hợp cho người bảo trì chăm chỉ, Jerry D. Hedden.
  4. wxPerl có hình dạng đẹp và có cộng đồng xung quanh. Đương nhiên, kể từ khi wxWidgets là C++, nó luôn luôn là một chút chút hiện tại và đầy đủ.
  5. SDL Perl là một trình bao bọc thẳng quanh thư viện. Các tài liệu (ít) giả định bạn đã biết nó. Theo kinh nghiệm của tôi, đọc tài liệu cho một thư viện bằng một ngôn ngữ khác có thể là một chút rắc rối.
  6. Bộ hẹn giờ hoạt động tốt trên perl: Time::HiRes
  7. Tính di động khó. Hơn thế nữa trong C++ so với Perl, nhưng nó thực sự luôn đi vào kỷ luật và có thể thử nghiệm trên nhiều nền tảng.
  8. Đối với Perl trên Windows, hãy đảm bảo bạn đã xem Strawberry Perl.
+1

Cảm ơn thông tin đó. Ephimient & bạn đã bác bỏ những tin đồn tôi đã nghe. Cấp phép khôn ngoan là nó ok để gói Perl với ứng dụng thương mại của tôi? Tôi không nhớ liên kết với Perl.org, hoặc cải cách hành chính, nhưng tôi muốn chắc chắn rằng tôi đang ở trong tình trạng pháp lý rõ ràng. –

+0

Nó hoàn toàn hợp pháp. Đó chính là lý do mà perl mang các điều khoản cấp phép nghệ thuật + GPL kép. Một điều khác: Đừng nghĩ rằng PAR nhảy qua hoops để ẩn mã nguồn của bạn. Hãy thử "unzip foo.exe" trong đó foo.exe là tệp thực thi được đóng gói theo PAR. Xem thêm: Bộ lọc :: Mô-đun mã hóa. – tsee

1

Chức năng là quan trọng. Mã, bất kể ngôn ngữ, sẽ làm những việc tương tự, đặc biệt là nếu sử dụng cùng một thư viện và các thành phần. Trừ khi bạn có chức năng chính xác được thực hiện thông qua các thư viện và bộ công cụ, hãy thử nghiệm nó trong Perl.

Có một lập luận rằng việc phát triển sẽ mất ít thời gian hơn trong một ngôn ngữ động. Có những vấn đề tương tự trong Perl và C++ trong việc có một danh sách thả xuống ở đúng nơi, điền nó với các giá trị đúng, thực hiện thay đổi thích hợp trong trạng thái chương trình từ đầu vào của người dùng.

Nếu Perl không hoàn thành công việc trên một số nền tảng nhất định, hãy chuyển mã thành C++.

Có lẽ một số gợi ý rằng sẽ hỗ trợ trong việc tiếp cận này:

  1. Điều đó có nghĩa rằng bạn có lẽ sẽ viết nguyên mẫu với OO Perl. Một khi bạn có chức năng cấp cao được đóng đinh trên một nền tảng - miễn là bạn có thể đạt được điều đó trong Perl - thì C++ là tối ưu hóa nhiều hơn hoặc ít hơn.

  2. Có lẽ bạn có thể hạn chế nguyên mẫu cho nhiều hoặc ít hơn các kết hợp của C++.Nhưng tôi không chắc chắn về điều này, bạn có thể phân hủy một map thành một vòng lặp hoặc thậm chí chỉ cần thay thế nó bằng một hàm lọc được gọi với một con trỏ hàm cho một hàm thử nghiệm.

+0

Bạn có thể viết một cuốn tiểu thuyết bằng tiếng Trung và một cuốn tiểu thuyết bằng tiếng Anh mà cả hai đều kể cùng một câu chuyện, nhưng nếu bạn viết nó bằng tiếng Anh và dịch nó sang tiếng Trung thì rõ ràng. Mỗi ngôn ngữ có thành ngữ khác nhau. OO Perl là C++ tồi tệ khủng khiếp đến nỗi nó thậm chí không buồn cười. C++ là Perl tương tự khủng khiếp. Giới hạn bản thân với tập hợp con mà cả hai thực sự đều bỏ qua câu hỏi "tốt hơn" bằng cách cố gắng làm cho cả hai tương đương khi chúng không. –

0

Viết chức năng cốt lõi của bạn trong C++, sau đó viết front-end cho các ứng dụng của bạn trong công cụ cho nền tảng trong câu hỏi, ví dụ, Cocoa dành cho Mac OS X, .NET/Delphi/MFC cho Windows, vv

Đây là cách ưa thích của tôi trong việc phát triển các ứng dụng dành cho máy tính để bàn đa nền tảng. Tất nhiên, tôi biết rất ít về những gì bạn đang cố gắng để thực hiện, vì vậy nó có thể là quá béo cho bạn.

5

Lý do chính đáng để sử dụng Perl là lập trình meta.

Perl đủ linh hoạt để bạn viết mã để viết mã (đây là cách Moose thực hiện phép thuật của nó). Bạn sẽ tiết kiệm thời gian và giảm số lượng lỗi mà bạn cần để bí.

Lý do chính đáng để sử dụng Perl là CPAN.

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