2008-10-09 3 views
5

Sto iniziando la mia prima impresa indipendente a scopo di lucro. Sto avendo difficoltà a decidere quale lingua usare. Voglio scrivere la mia app in Perl, ma non penso che sarà abbastanza semplice da compilare. Se non lo scrivo in Perl, lo scriverò in C++.Nuovo progetto: sto riscontrando problemi nel scegliere una lingua da utilizzare

L'applicazione disporrà di molte funzionalità, tra cui l'interfaccia wxwidgets, l'utilizzo di SDL, i timer, alcuni thread e l'elaborazione audio. Il programma stesso sarà alquanto complesso, ma non eccessivamente grande.

Quindi la mia domanda sono:

  1. può PAR, Perl2Exe, o equivalente compilare più di casi di test di base?
  2. Velocità e compilazione a parte perché dovrei usare C++ su Perl?

Edit: Alcuni dei miei specifiche di progetto.

  • Piattaforma multipla. Mi aspetto che il 50% o più dei miei utenti posseggano mac, con la maggior parte degli utenti Windows. Se possibile, voglio anche supportare Linux poiché è il mio sistema operativo quotidiano.
  • Poiché è multipiattaforma, ho bisogno di uno strumento di creazione GUI unificato. Deve essere in grado di utilizzare i tipi di base e consentirmi di creare gestori di eventi personalizzati e oggetti GUI personalizzati.
  • Ha bisogno di elaborazione audio. Leggi e gioca, wav e/o mp3. Inoltre userò alcuni algoritmi personalizzati per determinare le proprietà speciali dei file audio; cose come il tempo, i modelli e così via.
  • Vorrei ma non richiedere il supporto SDL/OpenGL.

Tutto il resto è piuttosto banale. Alcune classi e contenitori diversi. Alcuni controlli GUI personalizzati.

risposta

9

Perché non utilizzare un ibrido di entrambi? In genere è in corso il modo in cui molto sviluppo sta andando in questi giorni.

Suggerirei una combinazione Lua/C++ o Python/C++ (non sono sicuro di quanto una combinazione Perl/C++ funzioni, ma potrebbe anche essere una buona opzione).

Personalmente ho fatto un mucchio con il combo Lua/C++ ed è davvero fantastico.

+0

Pensiero interessante. Come procedi? Estrai le cose dipendenti dalla velocità e complesse in C++ e avvolgile nel tuo codice Lua/Python? –

+0

Sì, questo è il modo migliore. Inoltre molte volte molte cose che sembrano dipendenti dalla velocità non sono così importanti nella realtà. Anche se stai facendo un sacco di calcoli matematici e semplicemente scambiando il tuo core Lua con il core LuaCoCo puoi aumentare la matematica laterale di Lua 10 volte –

+0

Sto lavorando a un progetto per rendere Perl/C++ una combinazione più facile. Google il mio nome e Perl per ulteriori informazioni. –

11

Vai con C++. Timer, threading, audio, SDL, wxwidgets, queste sono tutte cose che il Perl può fare, ma in realtà non eccellono. Inoltre, PAR o perl2exe sono meccanismi goffi per la distribuzione. Funzionano, ma non sono ideali. Nel frattempo, C++ (e ti incoraggio molto a guardare usando Boost) si adatterebbe bene a questo ruolo.

5

Ho usato PAR per impacchettare un sostanziale programma Perl/Tk per Windows. Ci è voluto un po 'di giocherellare, ma ha funzionato.

Se hai almeno esperienza in Perl come in C++, lo sviluppo in Perl dovrebbe essere più veloce. Ma le velocità di runtime per un programma equivalente saranno più lente. Entrambi gli altri criteri possono essere soddisfatti da entrambi, quindi direi che si tratta di una scelta personale.

4

Personalmente? Io dico di non rimanere bloccato su questo per troppo tempo. Ci sono pro e contro di andare in entrambi i modi, ma sembra che tu stia diventando pericolosamente vicino ad essere bloccato nella "paralisi dell'analisi"."Se non altro, lancia una moneta o scegli quella che pensi abbia il nome più bello

+0

Grazie per il commento perspicace. Ho progettato e ricercato. Gran parte del tempo su questa domanda e andare oltre i pro/contro per diverse settimane. –

+0

Ottima risposta. Io, io, sono incline alla paralisi dell'analisi e l'importante è iniziare. – Darrel

11

Sono un programmatore C++ e Perl, il C++ è un linguaggio piacevole, ma ogni volta che ho la scelta, vado con Perl dal momento che lo sviluppo procede semplicemente così tanto più rapidamente

Un paio di commenti:.

  1. PAR, perlapp e perl2exe non sono compilatori sono packagers non v'è alcun compilatore Perl tranne Perl Se si desidera... qualche forma di codice bytecode di codice Perl, dovrai aspettare Perl 6 su Parrot.
  2. Ho usato d PAR per pacchettizzare un'applicazione con un totale di circa 500k SLOC, escluso perl stesso. Ha funzionato bene, ha funzionato alla stessa velocità di Perl, ma l'avvio è stato più lento. Era il 2005. Da allora, le prestazioni di avvio sono migliorate significativamente se si installa il modulo Archive :: Unzip :: Burst sul computer di sviluppo in cui si impacchetta il programma. Ho usato con successo PAR per varie applicazioni di varie dimensioni, dalle minuscole alle 500k linee sopra menzionate. Se hai bisogno di aiuto con PAR, c'è una mailing list attiva e amichevole. Basta fare a noi e a noi stessi il favore di non intervenire con "OMG, niente funziona, aiutami, kthx!". Le persone lo fanno sempre (e talvolta ricevono ancora aiuto). :)
  3. Il threading di Perl non è eccezionale. Controlla se qualcosa come POE si adatta al tuo conto. Sono un utente di threads.pm, ma preferirei non esserlo. Con le scuse appropriate al tenace manutentore, Jerry D. Hedden.
  4. wxPerl è in una buona forma e c'è una comunità intorno. Naturalmente, dato che wxWidgets è C++, è sempre un po 'più attuale e completo.
  5. SDL Perl è un wrapper lineare attorno alla libreria. La (piccola) documentazione presume che tu lo sappia già. Nella mia esperienza, leggere documenti per una biblioteca in una lingua diversa può essere un po 'complicato.
  6. I timer vanno bene perl: Time::HiRes
  7. La portabilità è difficile. Più così in C++ che in Perl, ma in realtà si riduce alla disciplina e alla possibilità di testare su molte piattaforme.
  8. Per Perl su Windows, assicurati di controllare Strawberry Perl.
+1

Grazie per questa informazione. Ephimient e hai smentito le voci che ho sentito. Per quanto riguarda le licenze, va bene il pacchetto Perl con la mia app commerciale? Non mi dispiace collegare a Perl.org, o PAR, ma voglio assicurarmi di essere in chiaro legale. –

+0

È completamente legale. Questo è essenzialmente il motivo perl porta i due termini di licenza Artistic + GPL. Un'altra cosa: non pensare che PAR salti attraverso i cerchi per nascondere il codice sorgente. Prova "unzip foo.exe" dove foo.exe è un eseguibile pacchetto-pacchetto. Vedi anche: Filtro :: Modulo Crypto. – tsee

1

La funzione è importante. Il codice, indipendentemente dalla lingua, farà cose simili, specialmente se si usano le stesse librerie e componenti. A meno che tu non abbia la funzione esatta elaborata attraverso librerie e toolkit, esegui il prototipo in Perl.

C'è un argomento secondo cui lo sviluppo richiederà meno tempo in un linguaggio dinamico. Ci sono problemi simili in Perl e C++ nell'ottenere un dropdown nel posto giusto, riempiendolo con i valori corretti, apportando il cambiamento appropriato nello stato del programma dall'input dell'utente.

Se Perl non viene eseguito su determinate piattaforme, trasformare il codice in C++.

Probabilmente ci sono alcune indicazioni che potrebbero aiutare in questo approccio:

  1. Ciò significa che si sarebbe probabilmente scrivere il prototipo con OO Perl. Una volta che la funzionalità di alto livello è inchiodata su una piattaforma, a condizione che tu possa arrivare così lontano in Perl, allora il C++ è più o meno un'ottimizzazione.

  2. Forse si potrebbe limitare il prototipo a più o meno cognati di C++.Ma non ne sono sicuro, puoi decomporre uno map in un ciclo o anche solo sostituirlo con una funzione di filtro chiamata con un puntatore a funzione per una funzione di test.

+0

Puoi scrivere un romanzo in cinese e un romanzo in inglese che raccontino entrambi la stessa storia, ma se lo scrivi in ​​inglese e lo traduci in cinese, è ovvio. Ogni lingua ha diversi idiomi. OO Perl è un C++ così orrendo che non è nemmeno divertente. Il C++ è Perl ugualmente orribile. Limitando te stesso al sottoinsieme che entrambi contengono in realtà ignora la domanda "che è meglio" cercando di rendere entrambi equivalenti quando non lo sono. –

0

Scrivi la funzionalità di base in C++, quindi scrivere il front-end per la vostra applicazione nello strumento per la piattaforma in questione, vale a dire, Cocoa per Mac OS X, .NET/Delphi/MFC per Windows, ecc

Questo è il mio modo preferito di sviluppare applicazioni desktop multipiattaforma. Naturalmente, so molto poco di ciò che stai cercando di realizzare, quindi potrebbe essere troppo grasso per te.

5

Un ottimo motivo per utilizzare Perl è la meta-programmazione.

Perl è abbastanza flessibile da consentire di scrivere codice per scrivere codice (questo è il modo in cui Moose fa la sua magia). Risparmierai tempo e ridurrai il numero di bug da schiacciare.

L'ottimo motivo per utilizzare Perl è CPAN.

Problemi correlati