2009-02-26 17 views

risposta

3

Vado a fare "molto astruso" qui:

  • Attacchi su un simulatore di 8080 scritto in FORTRAN 77 da un DECsystem-10 in esecuzione TOPS-10 a un 4381 di mainframe IBM esecuzione VM/CMS.
+0

+1 per il tuo obiettivo. –

0

conversione del codice C teoricamente portatile in codice C teoricamente portabile su architetture per supportare una modifica hardware che salva i dollari società X per unità.

La dimensione varia - questa è un'esigenza comune e ho realizzato progetti piccoli e grandi.

Ho imparato a scrivere codice C più portatile. L'eleganza è grande, ma quando arriva fino in fondo il compilatore si prende cura delle prestazioni e il codice dovrebbe essere il più semplice e portatile possibile.

2

Ho riscritto 20.000 righe di Perl per utilizzare "use strict" in ogni file. Ho dovuto aggiungere "my" ovunque fosse necessario e ho dovuto correggere i bug che erano stati scoperti durante il processo.

La cosa più importante che ho imparato da questo è: "Richiede sempre più tempo di quanto pensi".

Ho dovuto eseguirlo tutto in una volta durante la notte in modo che gli altri codificatori non stessero scrivendo un nuovo codice non fissato allo stesso tempo. Pensavo che sarebbe andato rapidamente, ma non lo fece, e lo stavo ancora hackerando alle 6 del mattino successivo.

L'ho fatto completare e archiviato prima che tutti gli altri iniziassero a lavorare!

0

Sto eseguendo una riscrittura di un sistema di gestione Inhouse Project su un modello MVC più standard. Si trova nello stack LAMP (PHP) e sono vicino al 1 ° traguardo.

Le cose che ho imparato da quello che è attualmente è la semplicità con cui il programma si sente all'inizio e ho cercato di non aggiungere complessità finché non ho dovuto.

esempio è che ho programmato tutte le funzionalità prima (come se fossi un utente amministratore) e poi, quando cioè risolto, aggiungere la complessità di avere restrizioni (livelli di utenza, ecc)

+0

Non ha ancora successo quindi ... tutto il meglio! – MarkJ

0

ho portato/ridisegnato/riscritto un programma C++ MS-DOS di 30.000 righe in un programma Java Swing di lunghezza simile ma molto più completo e utilizzabile.

Ho imparato a non prendere mai un altro lavoro che coinvolge C++ o Java.

+0

Come va il tuo nuovo incarico Cobol? – AShelly

+0

È stato letto male. Ho detto che * non * avrei fatto un altro lavoro in cui dovevo perdere tempo con linguaggi di programmazione scadenti. :-) Ed è stata una decisione fantastica. – Ken

0

Ho effettuato il porting di un'app Powerbuilder server client, un paio di centinaia di schermate, in un'applicazione ASP.NET (C#).

A causa di problemi di prestazioni e manutenibilità, durante l'anno precedente ho spostato un sacco di SQL incorporato dagli script di Powerbuilder e nelle stored procedure.

Anche se questo renderebbe molti di voi un problema, avendo un sacco di business logic nel database, significa che l'app di Powerbuilder era relativamente "leggera" e quando abbiamo costruito il front-end .Net, avrebbe potuto sfruttare il SQL codebase e hanno molte funzionalità già costruite e testate.

Non dicendo che consiglierei di creare app in questo modo, ma sicuramente ha funzionato a nostro vantaggio in questo caso.

0

Avevamo uno strumento di generazione del codice nel nostro framework di applicazione che è stato utilizzato per leggere in file di dati basati su testo, circa 20 altre applicazioni hanno fatto uso di esso.

Abbiamo voluto utilizzare file di dati XML anziché file di testo strutturati. Il codice originale era abbastanza datato e difficile da mantenere. Abbiamo sostituito questo strumento con una combinazione di script XSLT e una libreria di utilità. Per la libreria di utilità potremmo fare uso di alcuni codici nel vecchio strumento.

Il risultato è stato che tutte e 20 le applicazioni potevano ora utilizzare il formato di file basato su testo obsoleto o il nuovo formato basato su XML. Abbiamo anche fornito uno strumento di generazione della conversione che ha convertito i vecchi file di dati in nuovi file di dati XML.

Dopo aver pubblicato una o due versioni, ora abbiamo deciso che non supporteremo più il vecchio formato di testo e tutti sono in grado di convertire i dati in XML.

difficilmente abbiamo avuto bisogno di fare conversioni manuali,

1

ho riscritto una grande applicazione java web ad una domanda ASP.Net per una società immobiliare per vari motivi.

La cosa più importante che ho imparato è che, non importa quanto sia banale la funzionalità del sistema originale, se non è nel secondo sistema, il client pensa che la riscrittura sia un fallimento. La gestione delle aspettative è tutto quando si scrive il nuovo sistema.

Questo è il motivo principale per cui le riscritture sono così difficili: sembra così facile per il cliente ("Riforma ciò che ho già e aggiungi alcune cose.").

0

Convertita l'app principale dell'azienda da C++ pre-standard a C++ standard. Avevamo una vendita di svariati milioni di dollari per farlo funzionare su AIX, e dopo averlo esaminato, abbiamo deciso che la conversione in C++ standard sarebbe stata altrettanto semplice come convertire in C++ tradizionale di IBM.

Non conosco il conteggio delle righe, ma il codice sorgente è stato eseguito su centinaia di megabyte.

Abbiamo usato strumenti Unix standard per fare questo, inclusi vi e i compilatori assortiti.

Ci sono voluti alcuni mesi. La maggior parte delle correzioni erano semplici, catturate dal compilatore e quasi fissate meccanicamente. Alcuni di questi erano molto più complicati.

Penso che il mio principale asporto sia stato: non diventare troppo pazzo con il codice in un linguaggio che non è stato ancora standardizzato, o è probabile che cambi le cose in modi imprevisti. Abbiamo dovuto fare molte ricerche in alcuni degli ingegnosi adattamenti/abusi degli stream C++.

0

Dieci anni fa gestivo un team che convertiva un sistema CAD da DOS a Windows. La versione DOS utilizzava home-brew libraries per il disegno grafico, la versione di Windows utilizzava MFC. Il software era di circa 70.000 righe di codice C al momento della conversione. La cosa più importante che abbiamo imparato nel processo è il potere dell'astrazione. Tutte le routine non portatili specifiche del dispositivo sono state isolate in pochi file.Era quindi relativamente facile sostituire le chiamate alla libreria basata su DOS che disegnava accedendo direttamente al frame buffer con le chiamate API di Windows. Allo stesso modo, per l'input abbiamo appena sostituito il ciclo degli eventi che ha controllato gli eventi di tastiera e mouse, con il ciclo degli eventi di Windows corrispondente. Abbiamo continuato la nostra politica di isolare il codice non portatile (questa volta Windows) dal resto del sistema, ma non lo abbiamo ancora trovato particolarmente utile. Forse un giorno porteremo il sistema su Mac OS X e saremo di nuovo grati.

1

Il più bello per me, penso, era il port of MAME to the iPod. È stata una grande esperienza di apprendimento con l'hardware embedded e ho avuto modo di lavorare con molte persone fantastiche. Official site.

0

Diversi. Ma ne cito uno.

Era uno strumento di modellazione delle prestazioni. Parte delphi 1, parte turbo pascal. Aveva bisogno di una riscrittura altrimenti non sarebbe sopravvissuto. Quindi siamo partiti come una squadra di 2, ma solo io sono sopravvissuto fino alla fine. Ed ero pronto prima della scadenza ;-).

Molte cose che abbiamo fatto:

  • Make it multimodello. L'originale aveva un sacco di globals. Li ho rimossi tutti e il modello multiplo era facile da adattare.
  • Messaggi di errore estesi. Clicca su un messaggio e ottieni l'aiuto.
  • Un sacco di grafici e diagrammi. Tutto cliccabile per approfondire.
  • Simulazione. Modificare i parametri nel tempo e vedere per quanto tempo la configurazione corrente è stata sufficiente.

Abbiamo davvero reso questo pulito e ha pagato molto pesantemente alla fine. Una grande esperienza di apprendimento.

0

Ha riscritto un sistema per un'azienda che elabora fatture legali - il sistema originale era una mostruosità VB che non aveva idea di buoni principi OO - tutto era mescolato insieme. L'HTML ha fatto SQL, e l'SQL ha scritto HTML. Gran parte di esso era un motore di regole personalizzate che utilizzava qualcosa come XML per le regole.

Due team hanno effettuato la riscrittura, che ha richiesto circa 9 mesi. Un team ha fatto il web front-end e il workflow back-end, mentre l'altra squadra (che ero su) ha riscritto il motore delle regole. Il nuovo sistema è stato scritto in C# ed è stato eseguito prima per test. L'aggiunta di nuove regole al sistema quando abbiamo finito era sporca, ed era tutto testabile. Lungo il cammino abbiamo fatto cose come convertire l'azienda da VSS a SVN, implementare l'integrazione continua, automatizzare la distribuzione e insegnare agli altri sviluppatori come eseguire TDD e altre pratiche Scrum/XP.

La gestione delle aspettative è stata fondamentale per il progetto. Avere un cliente esperto nel software è stato molto utile.

Avere un mix di test su larga scala (end-to-end) insieme a test completi di unità e integrazione ha aiutato tonnellate.

0

VBulletin convertito che è scritto in PHP in C#/Asp.NET. Ho una certa familiarità con entrambe le lingue, ma PHP è il vincitore per aver costruito quel software. Il più grande dolore nella parte posteriore era la necessità di fare un equivalente in C# di PHP eval() per chiamare i template.

Era la mia prima sfida nel tentativo di fare una conversione. Ho imparato che ho bisogno di più esperienza con C# e che scriverlo da zero è solo il percorso più facile a volte.

0

Ho convertito un processo di generazione dinamico completamente scritto in Perl in un C# /.La soluzione netta utilizzava un motore di workflow sviluppato da un collaboratore (che era ancora in versione beta, quindi dovevo fare alcuni aggiustamenti). Questo mi ha dato l'opportunità di aggiungere funzionalità fail-safe e fail-over al processo di compilazione.

Prima di chiedere - no - non è possibile utilizzare microsoft workflow-foundation poiché non è possibile modificare dinamicamente un processo durante il suo runtime.

Quello che ho imparato:

  • ad odiare il Perl-sviluppatore
  • processo di ottimizzazione utilizzando un wf-motore
  • fail-safe e fail-over strategie
  • qualche C# tweaks;)

Alla fine copriva circa 5k - 6k (incluso il motore wf) Origine LoC da 3 200 file Perl LoC. Ma è stato divertente - e molto meglio alla fine;)

0

Portato una simulazione scritta in Fortran 77 (nonostante sia stata scritta negli anni '90) in C/Java perché l'originale funzionava solo su piccoli set di dati. Ho imparato ad amare la notazione O grande dopo aver ripetuto diverse volte il motivo per cui il semplice spostamento dell'intera tabella di dati nella memoria all'inizio del programma non era in scala.

Problemi correlati