Cosa sarebbe più produttivo? Convertire VAX PASCAL in GNU PASCAL o portarlo in perl o in qualche altra lingua

StackOverflow https://stackoverflow.com/questions/346986

Domanda

Ho questa base di codice legacy (Compaq PERL) , circa 1500 righe di codice, che devo portare su Windows. Volevo usare gnu PASCAL (che ho installato e funzionante). Ho già rimosso il nostro assemblatore (HP 64000 8051) dal VAX e acceso su Windows (KEIL 8051) .

Il direttore dell'ingegneria del software vorrebbe rimuovere tutti i prodotti dal VAX. Ecco il problema, ho provato a compilare il PASCAL dal VAX su CYGWIN usando gpc . Sembra che ci siano molte cose che dovrebbero essere fatte per ottenere l'equivalenza (IO e algoritmica) da un PASCAL all'altro.

Conosco PERL, FORTRAN, C e C ++ abbastanza bene (e JAVA ma preferirei di no). La mia domanda si riduce a 1500 righe di codice: sarebbe più produttivo trasferire il codice PASCAL sull'altro PASCAL o sarebbe più produttivo portarlo in un'altra lingua? VAX PASCAL è stata la mia prima lingua al college, ma non la programmo attivamente da 8 anni. Lavoro con PERL, C, C ++ e FORTRAN in modo frequente e professionale.

Direi per quanto la mia scelta, PERL sarebbe se volessi convertirmi in un'altra lingua.

Ciò che il codice fa è eseguire i riempimenti e un controllo somma per i file di immagine INTEL hex e TEX HEX. Sono a conoscenza del programma Srec 1.4 che funzionerà, ma non è un'opzione, perché devo ottenere il mio codice qualificato per DO-178B (E la mia azienda è sospettosa di usare il codice open source) (Non hanno problemi con open strumenti sorgente; solo codice).

È stato utile?

Soluzione

Dato che sono solo 1500 righe di codice e che mentre Pascal aveva molte virtù I / O non era una di queste, avrei portato il tutto su C, suddividendolo in moduli e scrivendo alcuni unit test lungo il modo. Il porting su un nuovo Pascal ha un grande "fattore sconosciuto" nella compatibilità dei diversi dialetti. Se lo porti su C, entro la fine del primo giorno saprai quanto tempo impiegherà il lavoro, e una volta fatto lo avrai completamente inchiodato, perché C sopravvivrà a tutti noi. E sono d'accordo con Joel Neely; sarà sempre facile trovare un altro programmatore C per mantenerlo.

Poiché il programma è così piccolo ed è principalmente I / O e manipolazione di numeri interi, qui non vedo un ruolo per C ++. Non vale la complessità extra.

Altri suggerimenti

Proverei a portarlo su Free Pascal , ma con un limite di tempo. Se è troppo difficile, ricorrere a una lingua usata di recente (da te).

Esiste un modo per verificare se la nuova versione (trasferita o tradotta) si comporta come la precedente?

Considererei innanzitutto la manutenibilità a lungo termine (anche da parte di qualcuno diverso da te). Se, ad esempio, sei l'unico a conoscere PASCAL e non vuoi essere l'unico proprietario della manutenzione e del supporto per questo programma, PASCAL potrebbe non essere una scelta valida come una lingua con una base di sviluppatori più ampia nel tuo negozio.

Se questo non è un problema decisionale (ad es. più sviluppatori tutti ugualmente familiari con lo stesso intervallo di lingue), allora stimerei il tempo per la porta gnu PASCAL per es. la porta Perl e scegli la lingua di destinazione che richiederebbe meno tempo per essere utilizzata.

Se anche questo non è un problema decisionale (vale a dire un livello equivalente di sforzo), allora guarderei all'economia di runtime (maggiore velocità, minore ingombro di memoria).

Penso che il porting di 1500 righe di codice in qualsiasi linguaggio / piattaforma non dovrebbe essere troppo difficile dato che tutto ciò che devi fare è "eseguire i riempimenti". e calcolare i checksum. Personalmente avrei preferito C # - ha un effetto calmante nella mia mente :) ma data la tua competenza in C / C ++ ti consiglierei di andare con C ++ per il semplice motivo che C ++ è il miglior linguaggio di assemblaggio del mondo e soddisferà le tue esigenze perfettamente. Penso che Pascal sia qualcosa di antiquato e di nuovi progetti che dovrebbero evitarlo. Sentiti libero di correggermi se sbaglio.

La programmazione in C è un lavoro ingrato e lasciare spazio per ulteriori miglioramenti al programma C ++ sembra essere l'opzione migliore. Inoltre, non dimenticare che, diversamente da C, C ++ ha alcune librerie molto capaci che lo supportano (STL, Boost ecc.).

Cerco sempre di scrivere programmi il più possibile nella lingua utilizzata principalmente dall'azienda.

Non ha senso ricorrere a un linguaggio di scripting (perché è un frammento più semplice) se ci sono sei programmatori seduti a fare C ++ in azienda, aumentando i requisiti linguistici al prossimo noleggio.

Personalmente ho risentito Perl perché, beh, la sintassi è leggermente crittografica. Inoltre non è un tale "corporate" linguaggio, specialmente non qui, e al di fuori dell'angolo del sysadmin di Unix è difficile trovare persone che ci siano davvero esperti (*)

Nota che questo è solo un commento dal mio punto di vista attuale, che è principalmente quello di un programmatore in un piccolo negozio con grandi clienti commerciali che ci impongono le loro pratiche. YMMV.

(*) i webdevels fanno principalmente ASP.NET qui.

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