Domanda

Sto avviando la mia prima impresa indipendente a scopo di lucro. Sto facendo fatica a decidere quale lingua usare. Voglio scrivere la mia app in Perl, ma non credo che sarà abbastanza semplice da compilare. Se non lo scrivo in Perl lo scriverò in C ++.

L'applicazione avrà molte funzionalità, tra cui l'interfaccia wxwidgets , Gestisci SDL, timer, alcuni thread e elaborazione audio. Il programma stesso sarà alquanto complesso, ma non eccessivamente ampio.

Quindi le mie domande sono:

  1. PAR, Perl2exe o equivalenti possono compilare più di un caso di test di base?
  2. Velocità e compilazione a parte perché dovrei usare C ++ su Perl?

Modifica: Alcune delle mie specifiche di progetto.

  • Multi piattaforma. Mi aspetto che il 50% o più dei miei utenti possieda i 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 della GUI unificata. Deve essere in grado di utilizzare i tipi di base e consentirmi di creare gestori di eventi personalizzati e oggetti della GUI personalizzati.
  • Ha bisogno di elaborazione audio. Leggi e riproduci, wav e / o mp3. Inoltre userò alcuni algoritmi personalizzati per determinare le proprietà speciali dei file audio; cose come tempo, pattern e così via.
  • Vorrei, ma non richiedere il supporto SDL / OpenGL.

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

È stato utile?

Soluzione

Perché non usare un ibrido di entrambi? In genere è il modo in cui sta procedendo molto lo sviluppo in questi giorni.

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

Personalmente ho fatto un sacco con la combinazione Lua / C ++ ed è piuttosto fantastico.

Altri suggerimenti

Sono un programmatore C ++ e Perl. Il C ++ è un bel linguaggio, ma ogni volta che ho la scelta, vado con Perl poiché lo sviluppo procede semplicemente molto più rapidamente.

Un paio di commenti:

  1. PAR, perlapp e perl2exe non sono compilatori. Sono confezionatori. Non esiste un compilatore Perl tranne perl stesso. Se vuoi una forma di codice bytecode del codice Perl, dovrai aspettare Perl 6 su Parrot.
  2. Ho usato PAR per impacchettare un'applicazione con un totale di circa 500k SLOC, escluso lo stesso perl. Funzionava bene, correva alla stessa velocità del perl stesso, ma l'avvio era più lento. Era il 2005. Da allora, le prestazioni di avvio sono notevolmente migliorate se si installa il modulo Archive :: Unzip :: Burst sulla macchina di sviluppo in cui si comprime il programma. Ho usato con successo PAR per varie applicazioni di dimensioni variabili dalle minuscole alle già citate linee da 500k. Se hai bisogno di aiuto con PAR, c'è una mailing list attiva e amichevole. Fai solo a noi e te stesso il favore di non rispondere con " OMG, niente funziona, aiutami, kthx! & Quot ;. Le persone lo fanno sempre (e talvolta ottengono 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 per il manutentore, Jerry D. Hedden.
  4. wxPerl è in buone condizioni e c'è una comunità attorno. Naturalmente, poiché wxWidgets è C ++, è sempre un po 'più attuale e completo.
  5. SDL Perl è un wrapper diretto attorno alla libreria. La (piccola) documentazione presuppone che tu lo sappia già. Nella mia esperienza, leggere documenti per una biblioteca in una lingua diversa può essere un po 'una seccatura.
  6. I timer vanno bene in perl: Time :: HiRes
  7. La portabilità è difficile. Più in C ++ che in Perl, ma si riduce sempre alla disciplina e alla capacità di testare su molte piattaforme.
  8. Per Perl su Windows, assicurati di controllare Strawberry Perl.

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

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

Perl è abbastanza flessibile da permetterti di scrivere codice per scrivere codice (ecco come Moose fa la sua magia). Risparmierai tempo e ridurrai il numero di bug che devi eliminare.

L'ottima ragione per usare Perl è CPAN.

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

Se hai esperienza almeno 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. Tutto il resto dei tuoi criteri può essere soddisfatto da entrambi, quindi direi che dipende dalla scelta personale.

Personalmente? Dico di non rimanere bloccato per troppo tempo. Ci sono pro e contro di andare in entrambi i modi, ma sembra che ti stai avvicinando pericolosamente a rimanere bloccato nella "paralisi dell'analisi". Se non altro, lancia una moneta o scegli quella che pensi abbia il nome più bello.

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, prototipala in Perl.

C'è un argomento secondo cui lo sviluppo richiederà meno tempo in linguaggi dinamici. Esistono problemi simili in Perl e C ++ nell'ottenere un menu a discesa nel posto giusto, riempiendolo con i valori giusti, apportando la corretta modifica allo stato del programma dall'input dell'utente.

Se Perl non lo sta eseguendo su alcune piattaforme, trasforma il codice in C ++.

Probabilmente ci sono alcuni suggerimenti che potrebbero aiutare in questo approccio:

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

  2. Forse potresti limitare il prototipo a più o meno affini al C ++. Ma non ne sono sicuro, puoi scomporre una map in un loop o anche semplicemente sostituirla con una funzione di filtro chiamata con un puntatore a funzione per una funzione di test.

Scrivi le tue funzionalità principali in C ++, quindi scrivi il front-end per la tua applicazione nello strumento per la piattaforma in questione, ad esempio Cocoa per Mac OS X, .NET / Delphi / MFC per Windows, ecc.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top