Domanda

Solo per curiosità, mi chiedo che cosa tutto ciò che i programmatori esperti o neofiti (come me) là fuori hanno fatto. Allora, qual è il più duro programma più complicato che hai scritto?

È stato utile?

Soluzione

L'applicazione che ho creato nel 2005/6 consente alle persone di creare visualizzazioni delle loro case / auto ecc dipinte in colori diversi. Ora che può certamente essere fatto in Photoshop, ma c'era molto, molto di più ad esso.

Viresol uscita di preview

Altri suggerimenti

un compilatore

L'uno non volevo, o divertirsi, la scrittura.

Una volta ho dovuto scrivere un algoritmo di compressione che ha usato BWT (Burrows Wheeler Transform) e non v'è un passo nella procedura in cui è necessario creare una matrice ENORME. Ho avuto problemi con problemi di memoria e la velocità perché la matrice era così enorme. Venite a scoprire, c'è davvero un semplice algoritmo che ho potuto ho usato ed evitato la matrice del tutto.

ho anche dovuto scrivere un semplice sistema operativo in ASM e che è stato piuttosto difficile.

Una volta ho fatto un software di elaborazione video multi-camera in tempo reale, facendo rilevamento del movimento e la magia storiografici cumulativo, tutto su processori 33MHz e 640 MB di RAM. La parte più difficile stava facendo questo andare veloce; abbondanti quantità di hashing, bit-shifting, truffa, giurando e notti in ritardo con pizza e ephiphanies per circa 4 anni. Oh, e ho fatto una versione a che fare con il colore pure. Oh, e un modulo che potrebbe vedere la differenza tra il vapore e fumo bianco in ampie camere (come i reattori nucleari, per così dire). Hah, basta provare! Tu non trovare esempi di come in qualsiasi libro di testo. :)

Una biblioteca per risolvere le equazioni Differenential parziali non lineari. Abbiamo usato in un gruppo di fisica teorica di risolvere un adattamento non lineare dell'equazione di Schròdinger che si verifica in ambienti molto particolari bassa temperatura.

E 'stato relativamente facile ottenere un semplice risolutore di lavoro, ma generalizzare è e che lo rende veloce è stata una sfida.

E 'attualmente in open source su Google Code: FDTL

Un'applicazione che compilata e corse su entrambi -. Windows e Mac con una base di codice

nulla a che fare con la crittografia e la sicurezza è più difficile sempre 1000% di quanto sembri!

Un driver del modem generale scopo per un servizio online traballante. Doveva anche supportare 30 tipi di modem (modem prima Hayes). Tutti avevano differenti caratteristiche di temporizzazione.

E 'doveva essere scritto sia in 8086 e Z80 assembler per il CP versioni / M e DOS dei nostri prodotti. Ho ancora incubi su un certo modem half-duplex ...

Automazione con COM, con l'esecuzione attraverso la griglia

Una classe di video-streaming proprietaria utilizzando l'API ffmpeg - a livello di gestione dei pacchetti e la visualizzazione fotogrammi al momento giusto, la sincronizzazione con l'audio. Non è così difficile come alcuni degli altri elencati, ma preso a calci il mio culo per molte settimane!

Probabilmente parità: decisione problema risolutore di fascicoli utilizzando soddisfacibilità modulo teorie e un processo cooperativo scheduler in C / ASM che correva sulla cima di un sistema operativo UNIX. Il primo è stato semplicemente difficile - non era mai stato fatto prima con tecnologia SMT e tradurre la carta altamente teorica in una effettiva attuazione in un contesto diverso era difficile. Il secondo ha coinvolto scavare per alle strutture di dati OS di capire poi sostituendo i pezzi per saltare avanti e indietro tra le funzioni del programma come se fossero fili programmati separatamente.

un debugger

Un librerie di grafica vettoriale ho iniziato a scrivere nel 1998 che ha fatto largo uso di suddivisione gerarchica per fornire molte operazioni in O (log n) e tesselations anisotropi memoized in elenchi di visualizzazione OpenGL a mantenere alti frame rate su scene dinamiche. In particolare, si potrebbe diminuire in grafica vettoriale in modo fluido complicate perché li decomposto in alberi e li abbattuti in modo efficiente. Per molti anni, era di gran lunga il più veloce a livello di consumatore di rendering di grafica vettoriale nel mondo.

La versione originale era 200kLOC di C ++, ma i problemi teorici che formavano la base del suo design mi ha portato a 2 anni per risolvere.

2 cose:

1) Un compilatore. Il nome della lingua è stato "3-palle" (omaggio a un amico che aveva ha operato palle)

2) Un programma di montaggio di Windows senza una sola macro, tutto è stato inserito nello stack e l'indirizzo erano tutto relativo. Funziona in tutti i Windows (nessun indirizzo harcoded). Fondamentalmente si tratta di una semplice finestra con alcuni pulsanti e le etichette. Ma la cosa bella è che, dall'oggetto e file eseguibili, ho estratto i codici operativi e generato uno shellcode da esso. Così ho potuto sfruttare qualsiasi tampone su un programma e letteralmente creare la mia propria applicazione al di sopra della esecuzione uno! Nizza per visualizzare una schermata su un computer remoto, e il computer remoto eseguirà un programma che non esiste sul suo computer, è letteralmente inviato il programma da eseguire al computer remoto.

Naturalmente questo è troppo headcache per niente ... ma ne vale la pena tutti i byte ho digitato!

Ho scritto diversi pezzi di codice che fanno la modellazione in più dimensioni spaziali (da 3 ad un massimo di circa 7 dimensioni.) I problemi diventano più difficili quando si lavora su qualcosa che non si può effettivamente tracciare o addirittura visualizzare.

Ma in realtà, come uno che ha trascorso la maggior parte del mio tempo toolkit di costruzione per altri di utilizzare nel loro lavoro, direi che i più complessi programmi che ho fatto sono stati effettivamente cassette, set di strumenti fatti per lavorare con ogni altri in modo coerente. Perché sono tutti fatti per lavorare insieme, si può sostenere che alcune decine di utilità realmente funzionano come in effetti un unico strumento. (Naturalmente, qualsiasi codice modulare è simile a questo riguardo.) Anche in questo caso, quello che ho fornito sono stati generalmente strumenti di modellazione, ha fatto per risolvere i problemi di gestione del colore.

Mi è stato chiesto questa domanda in un'intervista un paio di settimane fa (ancora non ho sentito se ho ottenuto il lavoro).

Per me è stato diversi incarichi nella mia prima lezione di programmazione dopo le classi intro di base. Era la prima volta un corso di Web Design è stato offerto a mia università. Dal momento che era nuovo, parecchi anziani laurea firmato e comprendevano circa la metà della classe. L'istruttore è stato utilizzato per insegnare corsi di livello senior, e sapeva già molti di quelli della classe. Fondamentalmente ha insegnato che al loro livello, piuttosto che per l'altra metà della classe che erano abbastanza inesperto.

Probabilmente il compito più difficile, stava scrivendo un browser solo testo. Ho avuto problemi con l'analisi per i vari tag e chiesto aiuto. L'istruttore ha detto, bene, se avessi avuto i compilatori Naturalmente si può solo scrivere un semplice. A quel punto 'compilatore' era una scatola nera che ha fatto cose magiche prima che il programma ha funzionato. Non sapevo davvero cosa fosse, tanto meno mi è stato in grado di scrivere uno.

La cosa che ha reso difficile è stato non avere gli strumenti necessari per fare il lavoro, per includere la comprensione dei risultati che ho ottenuto quando ho cercato con Google. (Pagine di manuale e le API sono grandi se si è già capito che cosa state cercando, ma non per l'insegnamento a noob.) Nelle mie esperienze co-op che ho imparato di più quando ho avuto un mentore che ha detto, se sei bloccato più di un paio d'ore, me lo faccia sapere, così posso farti scollarsi e si muove lungo. Molto meglio di quelli che non vogliono sentire da me tranne che ogni settimana o giù di lì.

Sto lavorando su un altro PHP Framework, che è stato un viaggio divertente finora.

Attualmente sto scrivendo un'applicazione per iPhone. E 'sicuramente il programma più difficile che io abbia mai scritto. Non perché la lingua è difficile, il codice è difficile o qualsiasi altro motivo, ma perché tutto sul dispositivo deve essere così fluente.

Tutto deve guardare e sentire naturale. Dal momento che sono un vero e proprio programmatore (con la comprensione nullo di fluidità, scorrevolezza o di design .. così sembra) questo lo rende molto difficile per me. Il programma funziona, codice di saggio, ma l'interfaccia utente saggio ho un tempo molto più difficile fare le cose.

Fili anche succhiare; -)

Niente di speciale, ma una funzione che potrebbe trarre una "sfera" con triangoli, con n punti n x e interpolati triangoli betweeen due colori (così l'ingresso era il raggio, numero di subdivisons, color1, color2). E 'stata dura, ma molto divertente quando funzionava:)

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