2009-02-21 16 views
6

Ho ereditato un portfolio web ampio e mal progettato al mio posto di lavoro. La maggior parte delle pagine sono scritte in Perl poiché la maggior parte dei dati ingeriti, elaborati e visualizzati sul sito si presenta sotto forma di file flat che devono quindi essere meticolosamente regexati e archiviati nei database MySQL e Oracle.ambienti di sviluppo web in linguaggio misto

Come primo responsabile IT addestrato di questo ambiente, mi sto occupando di scrub i siti Web e delineare alcune strutture per il processo di sviluppo. Una delle scelte che ho ricevuto è scegliere se continuare o meno in Perl. Vi è un notevole talento interno per Java e PHP è piuttosto facile da imparare. Ho preso in considerazione l'idea di prendere le redini dagli sviluppatori e di permettere loro di scegliere qualsiasi lingua vogliano usare per le loro pagine, ma sembra che potrebbe essere un problema se il tizio che ha scelto PHP viene investito da un autobus e nessun altro può risolverlo.

Con il passare degli anni, i programmatori di Perl diventano sempre più difficili e la complessità del mantenimento del codice Perl precedente da parte di sviluppatori precedenti il ​​cui obiettivo principale potrebbe essere quello di ottenere una pagina attiva e in corso sta diventando molto dispendioso in termini di risorse. Un altro manager (non IT) precedente era più focalizzato su un rapido turnaround e una gratificazione immediata delle pagine piuttosto che assicurarsi che fosse fatto bene la prima volta (da allora è stato promosso al di fuori della nostra filiale).

Il server di produzione è solaris. MySQL ha la maggior parte dei nostri dati ma nuovi progetti hanno iniziato a utilizzare Oracle sempre di più (per i dati GIS). I server Web sono universalmente Apache. Viviamo in una rete Intranet disconnesso da Internet normale. Il nostro sviluppo è condotto in modo agile e iterativo.

Indipendentemente dalla lingua scelta per l'avanzamento, ci sono risorse per riqualificare il personale di sviluppo esistente. Indipendentemente da ciò, i dati che arriveranno nel nostro ambiente dovranno essere regexati fino alla morte, quindi perl non andrà via presto. La mia domanda alla community è, quali sono i pro e i contro delle seguenti lingue per l'ambiente di sviluppo web sopra definito: Perl, PHP, Java, Python e --inserire qui la tua lingua preferita--. Se avessi dovuto fare tutto da capo, quale impostazione linguistica avresti scelto?

Modifiche e chiarimenti: Lasciatemi chiarire un po 'sul mio post originale. Non sto buttando via tutto. Mi è stata data l'opportunità di adattare il corso della nave a quello che ritengo sia un titolo migliore. Anche se avessi scelto una nuova lingua, il codice perl sarà disponibile per un po 'di tempo a venire.

Ipoteticamente parlando, se scegliassimo Assembly come mia nuova lingua (haha), dovrei far sì che i vecchi sviluppatori aumentino la velocità probabilmente inviandoli ad alcune classi di assemblaggio di base. Nuove pagine/progetti sarebbero nella nuova lingua e le vecchie pagine/progetti avrebbero dovuto giocare con le nuove pagine/progetti. Alcuni potrebbero essere un giorno riscritti nella nuova lingua, alcuni potrebbero non essere mai cambiati.

Ciò che probabilmente sarà sempre in Perl saranno gli script di parsing che abbiamo scritto anni fa per setacciare e informazioni sul database dai file flat. Ma va bene perché non si interfacciano con le pagine web, si interfacciano con il database.

Grazie a tutti per il vostro contributo, è stato molto molto utile finora.

risposta

13

Sembra che il problema sia più codice legacy e metodologia di sviluppo informale rispetto al linguaggio in sé. Quindi, se hai già sviluppatori Perl sul personale, perché non iniziare a modernizzare i tuoi metodi e la tua base di codice, invece di passare a una nuova lingua e creare una base di codice eterogeneo.

Modern Perl offre molto in termini di buone pratiche e strumenti potenti: il test è sottolineato, con i Test::* moduli e WWW::Mechanize, l'interazione base di dati può essere fatto attraverso pianura DBI, ma anche utilizzando i moduli ORM come l'eccellente DBIx::Class, OO con Moose è ora alla pari con le lingue più moderne, mod_perl ti dà accesso ad un sacco di energia all'interno di Apache. Ci sono anche un bel po 'di MVC frameworks per Perl. Uno che sta ricevendo molta attenzione è Catalyst.

Investi in alcune copie di Perl Best Practices, porta un vero trainer per alcune lezioni sui moderni metodi di sviluppo e inizia a cambiare la cultura del tuo gruppo.

E se hai difficoltà a trovare sviluppatori che sono già esperti in Perl, puoi sempre assumere persone di buona qualità e addestrarli, non dovrebbe essere troppo difficile. Almeno la loro volontà di apprendere una nuova lingua sarebbe un buon segno della loro flessibilità e volontà di migliorare.

È sempre allettante dare la colpa dello stato del codice sulla lingua in cui è scritto, ma nel tuo caso non sono sicuro che sia così. Lots of big companies sembra non avere problemi a gestire enormi basi di codice in Perl, l'elenco è lungo ma le principali società Web sono tutte lì, insieme a un certo numero di istituzioni finanziarie.

+1

Catalyst è ottimo anche per il lavoro sul Web che deve incollare i bit precedenti. Cose come Catalyst :: Controller :: WrapCGI e Catalyst :: View :: PHP sono progettate appositamente per fornire questo tipo di colla. – singingfish

0

Penso che scegliere una singola lingua sia la chiave e se il tuo database è principalmente MySQL, allora PHP sembra la scelta più ovvia. Funziona naturalmente con il tuo database, è open source e ci sono tonnellate di documentazione, codice sorgente, non richiede la compilazione, ecc.

Le persone vanno e vengono attraverso le posizioni e qualsiasi sito web si evolverà nel tempo.Se hai la possibilità di impostare alcune linee guida e regole, sceglierei qualcosa che è indulgente, luogo comune e facile (er) da imparare.

Vorrei anche suggerire di scriverlo in modo che la gente in futuro non re-inventare la ruota.

+1

Qualsiasi linguaggio moderno funziona con mysql, quindi scegliere PHP per il supporto mysql è una ragione stupida. Non sto dicendo che non dovresti scegliere PHP, solo che questa non è una buona ragione per farlo. – mpeters

+1

mpeters è giusto, MySQL da solo non è una buona ragione. Si potrebbe sostenere che passare a uno stack LAMP più standard renderebbe più facile trovare sviluppatori, ma anche i programmatori JAVA sono facili da trovare. Trovare buoni sviluppatori per qualsiasi lingua sarà ancora un problema. – acrosman

1

Se la regex è importante, sceglierei una lingua con un buon supporto.

Se si utilizza java, non sarà possibile copiare semplicemente incollare il proprio codice di regex dal codice perl perché le barre devono essere sfuggite. Quindi voterei contro java.

Non ho dimestichezza con php per conoscere le sue caratteristiche regex, ma date le vostre scelte vorrei andare su Python. Puoi creare codice più pulito in python.

Sarebbe anche un'opzione rubino? Ha anche un buon supporto per regex perl e rails supporta lo sviluppo agile del web fuori dagli schemi.

1

prima di tutto vorrei far notare che MySQL's spatial extensions work with GIS.

In secondo luogo, se si dispone di un gruppo di programmatori Perl che avranno bisogno di towk sui nuovi siti, la soluzione migliore è scegliere qualcosa che non avranno problemi di comprensione. L'ovvio "qualcosa" c'è PHP. Quando ho imparato il PHP, avevo fatto un po 'di Perl anni fa e ho acquisito PHP in pochissimo tempo.

Passare a qualcosa come Java o .Net (o anche Ruby on Rails) sarebbe un cambiamento molto più drammatico nel design.

Inoltre con i server Apache è già impostato il proprio ambiente e probabilmente è possibile organizzare ogni sviluppo come un mix di Perl e PHP ragionevolmente facilmente.

Per quanto riguarda l'ultima parte della tua domanda: cosa faresti se lo facessi di nuovo? Per me questa è una domanda seprata e fondamentalmente irrilevante. Il fatto è che non stai riavvolgendo e ricominciando, stai solo ... ricominciando da capo. Quindi il supporto legacy, la transizione, lo sviluppo delle competenze e tutte quelle altre questioni sono molto più importanti di qualsiasi domanda ipotetica su ciò che sceglieresti in un mondo perfetto se tutte le altre cose fossero uguali.

Lo adoro o lo odio, PHP è popolare e sta andando da nessuna parte in qualsiasi momento presto. Trovare persone con esperienza per farlo non è troppo difficile (beh, la difficoltà sta filtrandole dai burloni da autodidatta che pensano di poter programmare ma non possono farlo) e non è un passo molto lontano dal Perl basato sul web.

5

Vorrei portare qualcuno che è molto bravo a Perl, per lo meno guardare il design attuale. Sarebbero in grado di dirti quanto è pessimo il codice Perl e che cosa è necessario fare per farlo diventare in buona forma.

A quel punto inizierei a considerare le mie opzioni. Se il codice Perl è recuperabile, bene che grande, assumere qualcuno esperto in Perl. Inoltre, istruisci alcuni membri del tuo personale per aiutarli nella base di codice esistente. Se non si dispone di un esperto di Perl responsabile del codice Perl, il codice potrebbe diventare ancora peggiore di quanto non sia già.

Solo se fosse in condizioni terribili, considererei l'abbandono per un'altra lingua. Che lingua è, è qualcosa su cui dovrai pensarci tu stesso.

p.s. Sono un po 'di parte, preferisco Perl

1

Se i tuoi sviluppatori sono utili, saranno in grado di gestire qualsiasi cosa venga loro lanciata. Decidere quale lingua usare è una posizione strategica piuttosto complicata, ma ti raccomando di pensare molto attentamente prima di introdurre QUALSIASI ALTRO (cioè non farlo).

A meno che, naturalmente, non ci sia qualcosa che non puoi assolutamente (o non puoi fare in modo sano) con ciò che hai.

Problemi correlati