Qual è la più grande impresa di programmazione più impressionante che tu abbia mai visto? [chiuso]


26

Tutti sanno del vecchio adagio che i migliori programmatori possono essere ordini di grandezza migliori della media. Personalmente ho visto un buon codice e programmatori, ma mai qualcosa di così assurdo. Quindi la domanda è: qual è l'impresa di programmazione più impressionante che tu abbia mai visto o sentito parlare?

Puoi definire impressionante con:

  1. Lo scopo del compito attuale, ad esempio John, ha sviluppato da solo il quadro per la sua azienda, un lavoro paragonabile allo scopo di quello che gli altri 200 impiegati stavano facendo insieme.

  2. La velocità, ad esempio Stu, ha programmato un intero sistema operativo per app multi-tasking in tempo reale su una settimana incluso il proprio compilatore C e gli strumenti della riga di comando della shell

  3. La complessità, ad es. Jane, ha eseguito una nuova ricerca sulla nostra intera app LOC da 10 milioni per funzionare in un cluster di server. E lo ha fatto in un pomeriggio.

  4. La qualità, ad esempio il codice Charles, presentava un tasso di difetti per LOC 100 volte inferiore alla media aziendale. Inoltre il codice era pulito e comprensibile da tutti.

Ovviamente, più queste caratteristiche sono combinate e più estreme sono, più l'impresa è impressionante.

Quindi, fammelo avere. Qual è l'impresa più assurda che puoi raccontare? Fornisci quanti più dettagli possibile e cerca di evitare leggende o esagerazioni urbane. Pubblica solo ciò per cui puoi effettivamente garantire.

Domande bonus:

  1. Il compito erculeo era uno di quelli o l'individuo stupiva regolarmente?
  2. Come spieghi prestazioni così impressionanti?
  3. Come è stato riconosciuto il programmatore per un lavoro così straordinario?

5
Una volta ho visto una panca da uomo 2 KLocs ... (scusa, non ho potuto resistere)
DevSolo

"La velocità, ad esempio Stu, ha programmato un intero sistema operativo app in tempo reale su un week-end, incluso il proprio compilatore C e gli strumenti da riga di comando della shell" - Ehm ... potresti volerlo mantenere reale.
Jas,

Sulla base delle risposte finora, alcune persone sono facilmente impressionate. Ho fatto un sacco di "talenti" elencati qui.
Steven Evers,

Hm, stavo pensando di duplicare quasi esattamente questo ieri;) Mille grazie per averlo chiesto!
mlvljr,

@DevSolo Ehi, se si tratta di carte perforate o carta arrotolata di cui stiamo parlando, potrebbe essere un'impresa fisica.
Marco C

Risposte:


39

Anche se non posso garantirlo ufficialmente, sono sempre stato impressionato da Chris Sawyer che ha sviluppato Rollercoaster Tycoon quasi interamente in linguaggio assembly.


4
questo è pazzesco!!!
nanda,

1
-.- +27 per qualcosa di cui abbiamo già discusso almeno due volte su questo sito.
Marco C

31

Radice quadrata inversa veloce . Come qualcuno possa inventare qualcosa del genere è completamente al di là di me.


1
Hum ... Potrebbe essere (estremamente) intelligente, ma è come 6 righe di codice e solo un minuscolo blocco di un'app molto più grande. Non capisco come sia estremo in nessuna delle dimensioni che ho elencato.
David Reis,

11
David Reis, molto probabilmente sta ottimizzando un collo di bottiglia cruciale in modo ingegnoso. Non confondere il numero di righe con la quantità di lavoro necessaria per scriverle.

2
@ David, non so perché insisti sul fatto che i talenti della programmazione devono essere stati fatti in un tempo molto breve per essere un'impresa?

2
Sì, che è più un'impresa, 600 righe di codice scritte in un giorno contro 6 righe di codice create per 100 giorni, se entrambe fanno la stessa cosa? Penso che sia quest'ultimo, ma il tuo chilometraggio può variare.
Joonas Pulakka,

6
@ David, non sono d'accordo sul fatto che qualsiasi problema possa essere risolto in un tempo infinito. Potresti voler leggere joelonsoftware.com/articles/HighNotes.html . "Il vero problema con l'utilizzo di molti programmatori mediocri invece di un paio di buoni è che non importa per quanto tempo lavorano, non producono mai qualcosa di buono come quello che i grandi programmatori possono produrre."

16

Primi giochi arcade.

Completamente limitato da memoria, potenza di elaborazione, I / O ...

Ciò che quei programmatori hanno raggiunto in questo ambiente è stato sorprendente.

Ad esempio Pacman - Perfetto. Ancora giocabile dopo tutti questi anni.


2
Pacman è notoriamente non perfetto. Si presenta piuttosto male quando il contatore di livello trabocca di un byte. ;)
Mason Wheeler,

Eccellente! Secondo Wikipedia: "Pac-Man ha una famosa schermata di uccisione, spesso indicata come Pac-Man Bomb Screen. Il contatore del livello del gioco era un singolo byte a 8 bit e poteva quindi memorizzare solo 256 valori distinti (0–255) Il raggiungimento del 256 ° livello fa sì che un contatore utilizzato mentre si disegna il frutto trabocca a zero, causando il disegno di 256 frutti e sette spazi vuoti. Tuttavia, può essere risolto con una patch. "
Conor,

1
Navette spaziali anticipate forse ???
Giobbe

La signora Pac-Man era di gran lunga superiore
Tim Goodman il

1
@Mason, puoi persino averlo su una maglietta! errorwear.com/shirt-pacman.php

15

C'è questo programmatore in cui lavoro che ha fatto quanto segue in più di un'occasione.

L'esempio più recente è stato un progetto nel nostro gruppo che è stato assegnato a 3 persone. Era un'app LOB complessa con una pianificazione di 6 mesi (che era una sequenza temporale estremamente aggressiva).

La programmazione della settimana stava per iniziare, una delle 3 persone ha lasciato (per motivi personali) e un'altra ha lasciato un congedo medico molto improvviso. Il programmatore rimasto solo è tornato a casa per iniziare la programmazione ed è tornato 3 mesi dopo con l'applicazione completata.

MODIFICARE

Solo per aggiungere qualche chiarimento. Il codice risultante era quasi perfetto, perfetto per i requisiti e il nostro gruppo QA era in grado di documentare solo 3 difetti.


Doveva trascinare più di 100 ore lavorative a settimana per portare a termine quell'impresa. Scommetto che ha passato una tonnellata di caffeina.
Ali,

3
Il mese mitico dell'uomo in azione. Rimuovi 2 persone dal progetto == dimezza la sequenza temporale! Anche se ha senso che uno sviluppatore focalizzato possa fare le cose più velocemente rispetto al tentativo di coordinare 3 persone.
CodexArcanum,

Se quella persona mai lascia l'azienda in cattivi (nessuna conoscenza periodo di trade-off), l'azienda sta per essere in grossi guai ...
Cipolla-Knight

3
@bjarkef: il codice è di prim'ordine. Questo programmatore è il miglior programmatore della nostra azienda e il breve lasso di tempo non ha ridotto la normale qualità che in genere otteniamo da lui.
Walter,

1
@Walter, non è possibile stimare in modo accurato fino a quando non lo si è effettivamente fatto, il che contraddice quando è necessario il numero. Questo rende le stime a est quando hai svolto l'attività prima e difficile quando non ti è noto. Finché A non sottovaluti il cliente sarà felice che alla fine sia diventato più economico del previsto.

13

Forse sto solo mostrando la mia età, ma penso che alcune delle imprese davvero impressionanti della programmazione vengano ignorate.

Steve Wozniak, Apple Disk II / RWTS

Steve ha progettato insieme hardware e software, utilizzando trucchi davvero interessanti nel software per eliminare molta complessità (e costi) nell'hardware. Le normali unità disco floppy utilizzavano un LED e un fotosensore vicino all'hub del disco per brillare attraverso un foro praticato nel supporto del disco. L'output del fotosensore era collegato a un interrupt del processore, in modo che il processore sapesse quando iniziare la sua routine di temporizzazione in attesa che il settore corretto su una traccia fosse sotto la testina di lettura / scrittura (anche se alcuni usavano "dischi settorizzati" che aveva un buco per segnalare l'inizio di ogni settore anziché solo uno per l'inizio della traccia).

Steve ha eliminato quell'hardware progettando il software per codificare i dati in modo da poter iniziare a leggere da un punto arbitrario sul disco e non solo decodificare i dati stessi, ma capire dove (logicamente) si trovava nella traccia. L'unità Disk II non aveva la configurazione LED / photsensor e ignorava completamente i fori nel floppy disk.

Gordon Letwin, HPFS

Gordon Letwin era un architetto (e programmatore) nel team OS / 2. Almeno quando ho sentito la storia, a un certo punto è andato in vacanza per allontanarsi dalle cose e ha trascorso tre settimane (o giù di lì) navigando sul suo yacht (sì, i primi impiegati della MS potevano permettersi cose del genere ... ) ... ma per non annoiarsi troppo, decise di portare con sé il suo laptop.

Al suo ritorno, aveva scritto, eseguito il debug e funzionava HPFS, interamente in linguaggio assembly 386 Intel. Il codice che scrisse fu infine venduto come "HPFS386" che era esclusivo (almeno al momento) della LAN Manager Edition di OS / 2. Un altro team ha quindi trascorso qualcosa come sei mesi a scrivere una versione in C che è diventata il "normale" HPFS incluso nelle normali edizioni di OS / 2 (e dopo che IBM e MS si sono sciolte, IBM ha aggiornato e ricompilato il codice C per ottenere il loro "HPFS386"). Sebbene sia stato modificato e aggiornato da allora, se si fosse onesti riguardo alle cose, NTFS sarebbe probabilmente chiamato "HPFS 2.0" (o forse 3.0) - non c'è dubbio che il miglior file system corrente di Microsoft sia ancora strettamente derivato da ciò che ha progettato.

Nastri Burroughs B220

Questi incarnavano (almeno IMO) i veri inizi della programmazione orientata agli oggetti. Laddove i nastri IBM (per esempio) avevano "etichette" per raccontare il formato dei dati sul nastro, i nastri Burroughs hanno sviluppato una convenzione (non credo che nessuno sappia con certezza chi l'ha iniziato) di mettere su un piccolo insieme di routine il nastro che comprenderebbe i dati e come sono stati formattati, in modo da poterli manipolare correttamente senza conoscere i dettagli di come sono stati formattati. In altre parole, i primi "blocchi" sul nastro erano fondamentalmente una tabella in forma persistente. Fondamentalmente avresti letto la vtable in memoria, quindi avresti usato i metodi definiti per manipolare i dati sul resto del nastro. Tutto molto pulito e semplice (anche se leggermente meno di completamente portatile).


11

John Carmack mi impressiona regolarmente con le sue imprese di programmazione epica. Secondo una storia, era annoiato nella sua camera d'albergo, quindi ha scritto il motore di illuminazione Doom 3 sul suo laptop per un fine settimana.


2
Peccato che non abbia scritto un gioco vero e proprio.
DeadMG

10

Nonostante il suo scopo discutibile, sono ancora sbalordito da uno script utente del risolutore captcha per MegaUpload . È uno script GreaseMonkey scritto in JavaScript che ha un decodificatore bitmap e una rete neurale che riconosce le lettere nell'immagine captcha e, ripeto, tutto questo è fatto usando JavaScript.


1
Qualcosa da mostrare alla prossima persona che si lamenta con te per non essere in grado di fare un buon lavoro a causa delle restrizioni poste a loro.
Jon Hopkins,

10

Miguel de Icaza - il progetto Mono.

(È anche incredibilmente divertente, spiritoso e divertente - almeno dal breve discorso che l'ho visto tenere e ascoltando alcune interviste sul podcast)


+1 Il ragazzo è ovviamente gemelli o forse terzine, tutti sotto il suo nome. Non è possibile che una persona sia coinvolta in tutto ciò che è, e ad un livello così dettagliato.
Dan Rosenstark,

8

Anders Hejlsberg: il linguaggio Turbo Pascal e il compilatore . Penso ancora che dopo tutti questi anni TPC sia un capolavoro di ingegneria del software. È il compilatore di codice nativo più compatto e più veloce (a partire da alcune versioni anche ottimizzanti) che abbia mai visto. Nell'IDE Borland Pascal non esisteva essenzialmente una "raccolta". Hai modificato il tuo codice, premuto F9 e guardato il tuo programma in esecuzione immediatamente, e questo era su una macchina da 8 MHz o 12 MHz. TPC si è successivamente evoluto in Delphi, quindi Hejlsberg si è unito a Microsoft e ha scritto C #.

Mi piacerebbe dare un'occhiata alle fonti delle precedenti versioni di TPC, ma sfortunatamente, nonostante le numerose richieste, Borland non le ha mai aperte.

Il compilatore di Hejlsberg è stato ispirato da questo libro: Niklaus Wirth, Algorithms + Data Structures = Programmi


Delphi ha ancora un compilatore molto veloce. Immagino che sia per questo che se la cava con il non supportare modifica-e-continua.
Joeri Sebrechts,

6

Il mio supervisore alla formazione presso Gemplus (ora Gemalto) ha scritto il primo interprete e SO JavaCard durante il suo periodo di formazione triennale. Ha prodotto da solo il codice dalle specifiche. Per produrre la v.2, Gemplus ha creato una squadra di oltre 30 uomini, senza il ragazzo, che ha lavorato per più di un anno. Al termine, ma incapaci di ottenere prestazioni decenti, lo chiesero aiuto e in pochi giorni lui e un suo collega fecero notare dozzine di strozzature.

Java Card è un sottoinsieme di Java destinato a funzionare su dispositivi molto piccoli. La sua implementazione ha funzionato con smart card, che hanno pochi clock MHz e 2 o 3 KB di RAM.

Solo per divertimento: un'altra sua personale impresa quotidiana era immergersi in uno stato di trance lavorativa, non rispondere a nessuna delle domande che gli allievi urlavano nella stanza, e poi, improvvisamente, 2 ore dopo, saltando di nuovo in vita quando il suo lavoro era finito e rispondendo al 5 o 10 domande di fila.


1
Penso di aver superato la cosa dei 200 ragazzi ... Non riesco a ricordare troppo bene, è stato più di 10 anni fa. Gli ho comunque inviato la domanda!
Gabriel,

1
Dannazione, quel ragazzo deve essere un cyborg ...
mlvljr,

Esatto, erano 30+ (=
Gabriel,

5

Lo ricordo molto chiaramente; al liceo un compagno di classe ha codificato un videogioco di guida in piena regola in un paio di lezioni con QB45 (Quick Basic 4.5). Scorrimento verticale, cronometro, vite, livelli; Ero totalmente scioccato.


1
Ho visto un ragazzo farlo con un gioco di avventura testuale a Lisp. Non impressionante di per sé, ma nel tempo lo ha fatto in ... wow.
Michael K,

5

Git e / o Linux

Linus Torvalds ha scritto da zero un kernel del sistema operativo e un sistema di controllo della versione. Non conosco nessuno con una produttività simile.


16
Un popolare come Linux, è facile sovraccaricare la difficoltà e / o l'originalità. È quasi interamente un clone di un sistema esistente. Rispetto a (per un ovvio esempio) Dave Cutler che ha scritto da zero RSX / 11, VMS e Windows NT, ognuno un nuovo e unico pezzo di lavoro (e, per chi se ne frega, il file system VMS includeva il controllo della versione) Linus non ha ' non sono nemmeno arrivato sulla mappa.
Jerry Coffin,

1
Complimenti per VMS, ma con lo stesso ragionamento devi scontare NT. Wikipedia dice "[...] guidato da Dave Cutler per costruire Windows NT, e molti elementi del design riflettono la precedente esperienza DEC con Cutler VMS e RSX-11". Comunque, trovo Git impressionante.
LennyProgrammers

@ Lenny222: mentre è certamente vero che puoi trovare una sostanziale somiglianza tra VMS e Windows NT, non è nemmeno vicino ad essere un clone come Linux. Penso anche molto bene a Git, ma se non esistesse, posso pensare ad almeno altri due o tre che funzionerebbero bene al suo posto.
Jerry Coffin

5
Linus non ha funzionato da solo su Linux per circa un mese e poi l'ha trasformato in un progetto di comunità di grande successo? Davvero un ottimo lavoro, ma non mi classificherei come un'impresa individuale di programmazione, ma piuttosto come un progetto open source collaborativo di grande successo.
David Reis,

1
Penso che quello che stiamo arrivando qui sia il fatto che ora abbiamo utenti X che usano Linux a casa ... Suppongo che tu abbia una scatola VMS a casa tua? Concedi che non era un singolo lavoro di un singolo autore ... al contrario se non lo avesse fatto, erano invece quelli che erano in fila per farlo?
RobotHumans,

5

Richard M Stallman mi viene in mente. Quest'uomo ha iniziato a dare vita a GNU Emacs, GCC, GDB e molti altri programmi importanti. Ha anche continuato a creare la GPL originale. Ho sentito parlare di lui che dice: va in una caverna per 18 mesi e ritorna con oltre 150.000 righe di codice che compongono il compilatore C della suite GCC. Quei 150.000 LOC hanno dato il rock del letto per g ++ in seguito. Con le sue stesse parole, Emacs ha iniziato come editore di testi, poi è diventato uno stile di vita e ora è una religione per alcuni di noi. Ancora oggi, i principi di progettazione di Emacs sono utilizzati in molti programmi di successo.

Il sistema TeX di Donald E Knuth è un altro programma che viene in mente quando si pensa alle meraviglie della programmazione.


Dovresti provare a leggere il TeXbook. Non è per semplici mortali.

La creazione di GPL non è un'impresa impressionante . Sarebbe come accreditare te stesso con Singletons.
DeadMG

4

Nella mia classe di laurea il mio compagno di classe ha creato un sistema operativo (anche se molto semplice, ma si è avviato da un floppy e ha fatto le routine necessarie) come requisito di progetto in meno di 30 giorni. La durata comprende sia la lettura / ricerca necessaria sia la codifica effettiva.

Ricordo che gli uomini delle mailing list di os.com lo scoraggiavano dicendo che non lo avrebbe fatto in quei pochi giorni e l'ho visto anche camminare attraverso il dormitorio alle 5 del mattino in uno stato semi-cosciente che parlava senza parole. :-)

È un programmatore eccezionale.


4

Non volevo dire niente, ma qualcuno ha convinto "Ruby è un'impresa", quindi

John McCarthy con le originali FUNZIONI RICORRENTI DELLE ESPRESSIONI SIMBOLICHE E IL LORO COMPUTAZIONE PER MACCHINA , ovvero il documento in cui ha definito Lisp nel 1960, quando ifera un concetto a cui la gente stava appena iniziando a riflettere seriamente. Parla di essere in anticipo sui tempi.


bel riferimento. ero quello che si riempiva di rubini, per l'eleganza sopra la convenzione. anche questo è in anticipo
RobotHumans,

1
McCarthy ha fatto un articolo di matematica. Fu solo più tardi che si scoprì che poteva essere convertito in codice reale.

1
@ Thorbjørn Ravn Andersen - Sono stato attento a usare "definito" anziché "implementato".
Inaimathi,

@Thor È un po 'come negare a Arthur Clarke il merito di aver scoperto (o inventato) l' orbita geosincrona circolare semplicemente perché non riusciva a costruire un razzo per mettere lì un satellite o perché la tecnologia non esisteva ancora.
Marco C

4

Il compilatore Symantec / Zortec C ++ di Walter Bright tiene il passo con i compilatori implementati da enormi team di programmatori. Più tardi, la sua progettazione e realizzazione di D.




0

Programmatore di videogiochi a 8 bit su computer degli anni '80 (es. Commodore 64), alcuni giochi abbastanza buoni erano in linguaggio macchina e le loro dimensioni erano spesso più piccole di una bitmap per un'icona di Windows ;-) Ottimizzazione al suo massimo

Geos (un sistema operativo WYSIWYG per Commdore 64) è stato davvero impressionante per i suoi tempi


-2

Non sono sicuro che questo conti davvero ... ma il tipo che ha sviluppato il rubino. Non riesco proprio a superare l'eleganza della lingua. E credo che sia stata la prima lingua a supportare la digitazione dinamica, anche se non sono il ragazzo che ha iniziato con le schede perforate e la scrittura di assemblaggio, quindi potrei sbagliarmi.


3
Non era la prima lingua con la digitazione dinamica e no, non avresti dovuto iniziare con le schede perforate per saperlo.
Jas,

-3

David Heinemeier Hansson crea Rails.

La prima volta che ho installato Rails e impostato un sito di test su un database e ha fatto automaticamente tutto il framework e le cose CRUD, ho impostato il sito di test ed era come se i miei occhi fossero aperti per la prima volta a ciò che si può fare prima di te iniziare a programmare. È stato davvero impressionante e da allora ho visto idee che appaiono ovunque in altre lingue / piattaforme.


In che modo questa è un'impresa di programmazione?
David Reis,

il fatto che faccia un buon lavoro nel preparare tabelle con semplici ha, appartiene a, habtm ... inoltre estrae la connettività del database in una struttura di classe agnostica db dove sembra quasi magia e tutto ciò che devi fare è un binario nuovo -d (dbtype) bundler genera e rake db: crea db: migra set di comandi. Il ponteggio generato per una base su cui lavorare è bello. sembra che a qualcuno non piacciano i rubini / le rotaie poiché questi vengono sottoposti a downvoting piuttosto duramente mentre erano nuovi approcci all'eleganza rispetto alle convenzioni
RobotHumans,

dopo alcune riflessioni, penso sia perché siamo rimasti colpiti dalla natura artistica della cosa in contrapposizione alla capacità tecnica
RobotHumans,

Era un modo di pensare totalmente diverso: rendere tutto totalmente orientato verso ciò che sarebbe l'ideale piuttosto che ciò che era sufficiente. Era come se tutti noi sviluppatori web avessimo guidato nei guadi Modello T e improvvisamente si presentassero le rotaie ed è una BMW moderna. È stato un enorme cambiamento nella semplicità e nella facilità d'uso in termini di sviluppatori come utenti e da allora ho visto tante altre piattaforme basate su queste idee.
glenatron,

1
Abbastanza giusto, ma nota che la tua domanda non menziona il nome del ragazzo, cosa ha fatto, quando l'ha fatto, ecc. Dice solo: "Ruby è carino". Bene anche i cuccioli sono simpatici, ma non e 'una risposta a questa domanda.
David Reis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.