2008-10-09 6 views
5

Rozpoczynam moje pierwsze niezależne przedsięwzięcie typu profit. Trudno mi jest zdecydować, jakiego języka użyć. Chcę napisać moją aplikację w Perlu, ale nie sądzę, że będzie ona wystarczająco prosta do skompilowania. Jeśli nie piszę tego w Perlu, napiszę to w C++.Nowy projekt: Mam problem z wyborem języka do użycia

Aplikacja będzie miała wiele funkcji, w tym interfejs wxwidgets, Obsługa za pomocą SDL, timery, niektóre wątki i przetwarzanie dźwięku. Sam program będzie nieco skomplikowany, ale niezbyt duży.

Więc moje pytanie to:

  1. Czy PAR, Perl2exe lub odpowiednik kompilacji ponad podstawowych testów?
  2. Szybkość i kompilacja na bok, dlaczego powinienem używać C++ przez Perl?

Edit: Niektóre z moich specyfikacji projektowych.

  • Platforma wielofunkcyjna. Spodziewam się, że 50% lub więcej moich użytkowników będzie posiadać Maca, a większość pozostałych to użytkownicy systemu Windows. Jeśli to możliwe, chcę również wspierać system Linux, ponieważ jest to mój codzienny system operacyjny.
  • Ponieważ jest to platforma multi, potrzebuję zunifikowanego narzędzia do tworzenia GUI. Musi mieć możliwość korzystania z podstawowych typów i umożliwiać tworzenie niestandardowych procedur obsługi zdarzeń oraz niestandardowych obiektów GUI.
  • Wymaga przetwarzania dźwięku. Czytaj i graj, WAV i/lub MP3. Będę również używał niestandardowych algorytmów do określania specjalnych właściwości plików audio; takie rzeczy jak tempo, wzory i tak dalej.
  • Chciałbym, ale nie wymagam obsługi SDL/OpenGL.

Wszystko inne jest całkiem przyziemne. Niektóre różne klasy i pojemniki. Kilka niestandardowych elementów sterujących GUI.

Odpowiedz

9

Dlaczego nie użyć hybrydy obu? Zasadniczo obecnie wiele się rozwija.

Proponuję kombinację Lua/C++ lub Python/C++ (nie jestem pewien, jak dobrze działa kombinacja Perl/C++, ale to może być również dobra opcja).

Osobiście zrobiłem kilka z combo Lua/C++ i jest całkiem fantastyczne.

+0

Ciekawa myśl. Jak sobie z tym radzisz? Wyodrębnij zależne od prędkości i złożone rzeczy do C++ i umieść je w swoim kodzie Lua/Python? –

+0

Tak, to najlepszy sposób. Również wiele razy wiele rzeczy, które wydają się zależne od prędkości, nie jest tak krytycznych w rzeczywistości. Także jeśli robisz dużo matematyki i po prostu zamieniasz rdzeń Lua na rdzeń LuaCoCo, możesz zwiększyć 10-krotną matematykę Lua –

+0

Pracuję nad projektem, aby uczynić Perl/C++ łatwiejszą kombinacją. Google moje imię i Perl, aby uzyskać więcej informacji. –

11

Idź za pomocą C++. Timery, wątki, audio, SDL, wxwidgets, to wszystko, co Perl może zrobić, ale tak naprawdę nie jest doskonały. Ponadto PAR lub perl2exe są nieporęcznymi mechanizmami dystrybucji. Działają, ale nie są idealne. Tymczasem C++ (i bardzo zachęcam do spojrzenia na używanie Boost) ładnie wpasuje się w tę rolę.

5

Używam PAR do spakowania znacznego programu Perl/Tk dla systemu Windows. Trochę zaszkodziło, ale zadziałało.

Jeśli masz przynajmniej tak duże doświadczenie w Perlu jak w C++, rozwój w Perlu powinien być szybszy. Ale prędkości runtime dla równoważnego programu będą wolniejsze. Wszystkie pozostałe kryteria mogą zostać spełnione, więc powiedziałbym, że sprowadza się to do osobistego wyboru.

4

Osobiście? Mówię, nie utknąć w tym zbyt długo. Są plusy i minusy pójścia w obie strony, ale brzmi to jak niebezpiecznie blisko utknięcia w "paraliżu analitycznym"."Jeśli nic więcej, odwróć monetę lub wybierz tę, która Twoim zdaniem ma najładniejszą nazwę:

+0

Dziękuję za wnikliwy komentarz. Planowałem i szukałem. Wiele czasu na to pytanie i przejście przez pro/przeciw przez kilka tygodni. –

+0

Doskonała odpowiedź. Ja osobiście mam skłonność do paraliżu analitycznego i ważne jest, aby zacząć. – Darrel

11

Jestem programistą C++ i Perla, C++ jest fajnym językiem, ale gdy tylko mam wybór, idę z Perlem ponieważ rozwój prostu przechodzi więc znacznie szybciej

kilka uwag:.

  1. PAR, perlapp i perl2exe nie są kompilatory są packagers nie ma kompilator Perl wyjątkiem sama Perl, jeśli chcesz... jakaś forma kodu bajtowego kodu Perla, będziesz musiał poczekać na Perla 6 na Parrotie
  2. Używam d PAR, aby spakować aplikację o łącznej wartości około 500 000 SLOC, nie włączając samego perla. To działało bez zarzutu, działało z taką samą szybkością, jak sam perl, ale uruchamianie było wolniejsze. To był rok 2005. Od tego czasu wydajność uruchamiania znacznie się poprawiła, jeśli zainstalujesz moduł Archive :: Unzip :: Burst na maszynie programistycznej, na której pakujesz program. Z powodzeniem stosowałem PAR do różnych zastosowań, różniących się rozmiarem od maleńkich do wyżej wymienionych linii 500k. Jeśli potrzebujesz pomocy z PAR, istnieje aktywna i przyjazna lista mailingowa. Po prostu wyświadcz nam i sobie przysługę, aby nie dzwonić z "OMG, nic nie działa, pomóż mi, kx!". Ludzie robią to przez cały czas (i czasami nadal otrzymują pomoc). :)
  3. Nici Perla nie są świetne. Sprawdź, czy coś takiego jak POE pasuje do twojego rachunku. Jestem użytkownikiem wątków .pm, ale wolałabym nie być. Odpowiednio przepraszając ciężko pracującego opiekuna, Jerry D. Hedden.
  4. wxPerl jest w całkiem dobrej formie i jest wokół niego społeczność. Oczywiście, ponieważ wxWidgets to C++, zawsze jest trochę bardziej aktualny i kompletny.
  5. SDL Perl to proste opakowanie w bibliotece. (Mała) dokumentacja zakłada, że ​​już ją znasz. Z mojego doświadczenia wynika, że ​​czytanie dokumentów dla biblioteki w innym języku może być nieco kłopotliwe.
  6. Zegary są w porządku w perlu: Time::HiRes
  7. Przenośność jest trudna. Bardziej w C++ niż w Perlu, ale zawsze sprowadza się do dyscypliny i możliwości testowania na wielu platformach.
  8. W przypadku Perla w systemie Windows należy sprawdzić Strawberry Perl.
+1

Dzięki za te informacje. Efektywny i obaliłeś pogłoski, które usłyszałem. Jaka jest licencja na Pakowanie Perl z moją aplikacją komercyjną? Nie mam nic przeciwko łączeniu się z Perl.org lub PAR, ale chcę się upewnić, że jestem w świetle prawa. –

+0

To całkowicie legalne. Zasadniczo perl zawiera podwójne warunki licencjonowania Artistic + GPL. Jeszcze jedno: nie myśl, że PAR przeskakuje przez obręcze, aby ukryć swój kod źródłowy. Spróbuj "rozpakować plik foo.exe", gdzie foo.exe jest plikiem wykonywalnym spakowanym z pakietem PAR. Zobacz także: Filter :: Crypto module. – tsee

1

Funkcja jest ważna. Kod, niezależnie od języka, będzie robić podobne rzeczy, szczególnie jeśli korzystasz z tych samych bibliotek i komponentów. Jeśli nie masz dokładnej funkcji opracowanej przez biblioteki i zestawy narzędzi, prototypuj ją w Perlu.

Istnieje argument, że rozwój zajmie mniej czasu w dynamicznych językach. Podobne problemy pojawiają się w Perlu i C++ w uzyskiwaniu rozwijania we właściwym miejscu, wypełnianiu go odpowiednimi wartościami, wprowadzaniem właściwej zmiany w stanie programu z danych wprowadzanych przez użytkownika.

Jeśli Perl nie robi tego na niektórych platformach, zamień kod na C++.

Prawdopodobnie istnieje kilka wskazówek, które pomogłoby w tym podejściu:

  1. Oznacza to, że prawdopodobnie napisać prototyp z OO Perl. Gdy masz już wyższą funkcjonalność na jednej platformie - pod warunkiem, że możesz osiągnąć tak daleko w Perlu - to C++ jest mniej więcej optymalizacją.

  2. Być może można ograniczyć prototyp do mniej więcej koniunkcji C++.Ale nie jestem tego pewien, możesz rozłożyć map w pętlę lub nawet zastąpić ją funkcją filtru wywoływaną ze wskaźnikiem funkcji dla funkcji testowej.

+0

Możesz napisać powieść po chińsku i powieść po angielsku, które opowiadają tę samą historię, ale jeśli napiszesz ją po angielsku i przetłumaczysz na język chiński, to jest to oczywiste. Każdy język ma różne idiomy. Perl OO jest tak straszliwie złym C++, że nawet nie jest zabawny. C++ jest podobnie okropnym Perlem. Ograniczenie się do podzbioru, który zawiera oba, faktycznie ignoruje pytanie "co jest lepsze", próbując uczynić oba równoważne, gdy nie są. –

0

Napisz swoją podstawową funkcjonalność w C++, a następnie napisać front-end dla aplikacji w narzędziu dla platformy w pytaniu, tj Cocoa dla Mac OS X, .NET/Delphi/MFC dla Windows, etc

Jest to mój preferowany sposób tworzenia wieloplatformowych aplikacji komputerowych. Oczywiście, wiem bardzo mało o tym, co próbujesz osiągnąć, więc może być dla ciebie za gruby.

5

Doskonałym powodem używania Perla jest metaprogramowanie.

Perl jest na tyle elastyczny, że pozwala pisać kod, aby napisać kod (tak Łoś wykonuje swoją magię). Zaoszczędzisz czas i zmniejszysz liczbę błędów, które musisz zgnieść.

Doskonałym powodem używania Perla jest CPAN.

Powiązane problemy