Quel est le plus grand exploit de programmation que vous ayez jamais vu? [fermé]

26

Tout le monde connaît le vieil adage selon lequel les meilleurs programmeurs peuvent être des ordres de grandeur supérieurs à la moyenne. J'ai personnellement vu du bon code et des bons programmeurs, mais jamais quelque chose d'aussi absurde. La question est donc la suivante: quel est l'exploit de programmation le plus impressionnant dont vous ayez jamais été témoin ou entendu parler?

Vous pouvez définir impressionnant par:

  1. L'étendue de la tâche à accomplir, par exemple, John a développé à lui seul le cadre de son entreprise, un travail d'une ampleur comparable à ce que les 200 autres employés faisaient ensemble.

  2. Vitesse, par exemple, Stu a programmé un système d'exploitation d'application multitâche en temps réel complet sur une semaine, y compris son propre compilateur C et ses outils de ligne de commande shell

  3. Complexité, par exemple, Jane a réorganisé l'ensemble de notre application LOC de 10 millions de dollars pour qu'elle fonctionne dans un cluster de serveurs. Et elle l'a fait en un après-midi.

  4. La qualité, par exemple le code de Charles, avait un taux de défauts par LOC 100 fois inférieur à la moyenne de l'entreprise. De plus, le code était propre et compréhensible par tous.

De toute évidence, plus ces caractéristiques sont combinées et plus chacune d'elles est extrême, plus l'exploit est impressionnant.

Alors, laissez-moi l'avoir. Quel est l'exploit le plus absurde que vous puissiez raconter? Veuillez fournir autant de détails que possible et essayez d'éviter les légendes urbaines ou les exagérations. Publiez uniquement ce pour quoi vous pouvez vous porter garant.

Questions bonus:

  1. La tâche herculéenne était-elle une des tâches, ou l'individu étonnait-il régulièrement les gens?
  2. Comment expliquez-vous des performances aussi impressionnantes?
  3. Comment le programmeur a-t-il été reconnu pour un travail aussi impressionnant?
David Reis
la source
5
J'ai vu une fois un gars développé couché 2 KLocs ... (désolé, je
n'ai
"La vitesse, par exemple, Stu a programmé un système d'exploitation d'application multitâche en temps réel complet sur une semaine, y compris son propre compilateur C et ses outils de ligne de commande shell" - Erm..vous voudrez peut-être le garder réel.
Jas
Sur la base des réponses jusqu'à présent, certaines personnes sont facilement impressionnées. J'ai fait un tas des «exploits» énumérés ici.
Steven Evers
Hm, je pensais presque reproduire celui-ci exactement hier;) Merci beaucoup de le demander!
mlvljr
@DevSolo Hé, s'il s'agit de cartes perforées ou de papier roulé dont nous parlons, cela pourrait être un exploit physique.
Mark C

Réponses:

39

Bien que je ne puisse pas officiellement le garantir, j'ai toujours été impressionné par le développement de Rollercoaster Tycoon par Chris Sawyer presque entièrement en langage d'assemblage.

sglantz
la source
4
c'est fou!!!
nanda
1
-.- +27 pour quelque chose que nous avons déjà discuté au moins deux fois sur ce site.
Mark C
31

Racine carrée inverse rapide . Comment quelqu'un peut trouver quelque chose comme ça me dépasse complètement.

Joonas Pulakka
la source
1
Hum ... Cela pourrait être (extrêmement) intelligent, mais c'est comme 6 lignes de code et seulement un petit bloc de construction d'une application beaucoup plus grande. Je ne comprends pas à quel point c'est extrême dans aucune des dimensions que j'ai énumérées.
David Reis
11
David Reis, cela optimise très probablement un goulot d'étranglement crucial de manière ingénieuse. Ne confondez pas le nombre de lignes avec la quantité de travail nécessaire pour les écrire.
2
@ David, je ne sais pas pourquoi vous insistez pour que les exploits de programmation doivent avoir été faits en très peu de temps pour être un exploit?
2
Oui, ce qui est plus un exploit, 600 lignes de code écrites en une journée contre 6 lignes de code conçues pour 100 jours, si les deux font la même chose? Je pense que c'est le dernier, mais votre kilométrage peut varier.
Joonas Pulakka
6
@ David, je ne suis pas d'accord pour dire que tout problème peut être résolu en un temps infini. Vous voudrez peut-être lire joelonsoftware.com/articles/HighNotes.html . "Le vrai problème avec beaucoup de programmeurs médiocres au lieu de quelques bons, c'est que peu importe la durée de leur travail, ils ne produisent jamais quelque chose d'aussi bon que ce que les grands programmeurs peuvent produire."
16

Les premiers jeux d'arcade.

Entièrement limité par la mémoire, la puissance de traitement, les E / S ...

Ce que ces programmeurs ont réalisé dans cet environnement était incroyable.

Par exemple Pacman - Parfait. Toujours jouable après toutes ces années.

Conor
la source
2
Le célèbre Pacman n'est pas parfait. Il pépine assez mal lorsque le compteur de niveau déborde d'un octet. ;)
Mason Wheeler
Excellent! Selon Wikipédia: "Pac-Man a un célèbre écran de destruction, souvent appelé écran de bombe Pac-Man. Le compteur de niveau du jeu était un seul octet de 8 bits, et ne pouvait donc stocker que 256 valeurs distinctes (0–255) L'atteinte du 256e niveau provoque un débordement du compteur utilisé lors du tirage des fruits à zéro, provoquant le dessin de 256 fruits et de sept espaces vides. Il peut toutefois être corrigé avec un patch. "
Conor
1
Les premières navettes spatiales peut-être ???
Job
Mme Pac-Man était de loin supérieure
Tim Goodman
1
@Mason, vous pouvez même l'obtenir sur un T-shirt! errorwear.com/shirt-pacman.php
15

Il y a un seul programmeur où je travaille qui a fait ce qui suit à plusieurs reprises.

L'exemple le plus récent est un projet de notre groupe qui a été attribué à 3 personnes. C'était une application LOB complexe avec un calendrier de 6 mois (c'était une chronologie extrêmement agressive).

Le codage de la semaine devait commencer, 1 personne sur 3 a démissionné (pour des raisons personnelles) et une autre est partie en congé médical très soudain. Le seul programmeur restant est rentré chez lui pour commencer la programmation et est revenu 3 mois plus tard avec l'application terminée.

MODIFIER

Juste pour ajouter quelques éclaircissements. Le code résultant était presque parfait, parfaitement adapté aux exigences et notre groupe QA n'a pu documenter que 3 défauts.

Walter
la source
Il / elle devait tirer plus de 100 heures de travail pour réussir cet exploit. Je parie qu'il / elle a consommé une tonne de caféine.
Ali
3
Le mois mythique de l'homme en action. Retirez 2 personnes du projet == divisez par deux la chronologie! Bien qu'il soit logique qu'un développeur concentré puisse faire les choses plus rapidement que d'essayer de coordonner 3 personnes.
CodexArcanum
Si cette personne jamais quitte l'entreprise en mauvais termes (pas de période de compromis connaissances), la société va être en grande difficulté ...
oignon-Chevalier
3
@bjarkef - le code est de premier ordre. Ce codeur est le meilleur programmeur de notre entreprise et le délai très court n'a pas réduit la qualité normale que nous obtenons généralement de lui.
Walter
1
@Walter, vous ne pouvez pas estimer avec précision tant que vous ne l'avez pas fait, ce qui contredit lorsque vous avez besoin du numéro. Cela fait des estimations à l'est lorsque vous avez déjà effectué la tâche et difficile lorsque cela vous est inconnu. Tant que vous ne sous - estimez pas les A, vous serez heureux que cela soit finalement moins cher que prévu.
13

Peut-être que je montre juste mon âge, mais je pense que certains des exploits vraiment impressionnants de la programmation sont ignorés.

Steve Wozniak, Apple Disk II / RWTS

Steve a conçu le matériel et le logiciel ensemble, en utilisant des astuces vraiment cool dans le logiciel pour éliminer beaucoup de complexité (et de coût) dans le matériel. Les lecteurs de disquette normaux utilisaient une LED et un capteur photo près du moyeu du disque pour briller à travers un trou percé dans le substrat du disque. La sortie du photocapteur était connectée à une interruption du processeur afin que le processeur sache quand commencer sa routine de temporisation pour attendre que le secteur correct sur une piste soit sous la tête de lecture / écriture (bien que quelques-uns aient utilisé des "disques durs" qui avait un trou pour signaler le début de chaque secteur au lieu d'un seul pour le début de la piste).

Steve a éliminé ce matériel en concevant le logiciel pour encoder les données d'une manière qui vous permettrait de commencer à lire à partir d'un endroit arbitraire sur le disque, et non seulement de décoder les données elles-mêmes, mais aussi de savoir où (logiquement) dans la piste où vous vous trouviez. Le lecteur Disk II n'avait pas la configuration LED / photocapteur et ignorait complètement les trous dans la disquette.

Gordon Letwin, HPFS

Gordon Letwin était architecte (et codeur) dans l'équipe OS / 2. Au moins, comme j'ai entendu l'histoire, à un moment donné, il est parti en vacances pour s'éloigner des choses et passer trois semaines (ou plus) à naviguer sur son yacht (oui, les premiers employés de MS pouvaient se permettre des choses comme ça ... ) ... mais pour ne pas trop s'ennuyer, il a décidé d'emporter son ordinateur portable.

À son retour, il avait écrit, débogué et travaillé HPFS - entièrement en langage assembleur Intel 386. Le code qu'il a écrit a finalement été vendu sous le nom de "HPFS386" qui était exclusif (au moins à l'époque) à l'édition LAN Manager d'OS / 2. Une autre équipe a ensuite passé environ six mois à écrire une version en C qui est devenue le HPFS "normal" inclus dans les éditions normales d'OS / 2 (et après la rupture d'IBM et de MS, IBM a mis à jour et recompilé le code C pour obtenir leur "HPFS386"). Bien qu'il ait été modifié et mis à jour depuis, si vous étiez juste sur les choses, NTFS serait probablement appelé "HPFS 2.0" (ou peut-être 3.0) - il ne fait aucun doute que le meilleur système de fichiers actuel de Microsoft est toujours étroitement dérivé de ce qu'il a conçu.

Rubans Burroughs B220

Celles-ci incarnaient (au moins l'OMI) les véritables débuts de la programmation orientée objet. Là où les bandes IBM (par exemple) avaient des «étiquettes» pour indiquer le format des données sur la bande, les bandes Burroughs ont développé une convention (je ne pense pas que quiconque sache avec certitude qui a commencé) de mettre un petit ensemble de routines sur la bande qui comprendrait les données et la façon dont elles ont été formatées, afin que vous puissiez manipuler les données correctement sans connaître les détails de la façon dont elles ont été formatées. En d'autres termes, les premiers "blocs" sur la bande étaient essentiellement une table sous forme persistante. Vous devriez lire la table virtuelle en mémoire, puis utiliser les méthodes définies pour manipuler les données sur le reste de la bande. Tout est très soigné et simple (si juste un peu moins que complètement portable).

Jerry Coffin
la source
11

John Carmack m'impressionne régulièrement avec ses exploits de programmation épique. Selon une histoire, il s'ennuyait dans sa chambre d'hôtel, alors il a écrit le moteur d'éclairage Doom 3 sur son ordinateur portable pendant un week-end.

CodexArcanum
la source
2
Dommage qu'il n'ait pas écrit un vrai jeu pour aller avec.
DeadMG
10

Malgré son objectif discutable, je suis toujours impressionné par un script utilisateur de solveur captcha pour MegaUpload . C'est un script GreaseMonkey écrit en JavaScript qui a un décodeur bitmap et un réseau neuronal qui reconnaît les lettres dans l'image captcha, et je le répète, tout cela est fait en utilisant JavaScript.

teukkam
la source
1
Quelque chose pour montrer à la prochaine personne qui gémit de ne pas pouvoir faire du bon travail à cause des restrictions qui lui sont imposées.
Jon Hopkins
10

Miguel de Icaza - le projet Mono.

(Il est également incroyablement drôle, plein d'esprit et divertissant - au moins d'après le bref discours que je l'ai vu donner et en écoutant des interviews en podcast)

Tim
la source
+1 Le gars est évidemment des jumeaux ou peut-être des triplés, tous sous son nom. Il n'y a aucun moyen qu'une seule personne soit impliquée dans tout ce qu'elle est, et à un niveau aussi détaillé.
Dan Rosenstark
8

Anders Hejlsberg: le langage Turbo Pascal et le compilateur . Je pense toujours qu'après toutes ces années, TPC est un chef-d'œuvre du génie logiciel. C'est le compilateur de code natif le plus compact et le plus rapide (à partir de certaines versions optimisant également) que j'ai jamais vu. Dans l'IDE Borland Pascal, il n'y avait pas de "compilation" essentiellement. Vous avez modifié votre code, appuyé sur F9 et regardé votre programme s'exécuter immédiatement, et c'était sur une machine à 8 MHz ou 12 MHz. TPC était plus tard devenu Delphi, puis Hejlsberg a rejoint Microsoft et a co-écrit C #.

J'adorerais jeter un œil aux sources des versions TPC antérieures, mais malheureusement, malgré de nombreuses demandes, Borland ne les a jamais ouvertes.

Le compilateur de Hejlsberg a été inspiré par ce livre: Niklaus Wirth, Algorithms + Data Structures = Programs

mojuba
la source
Delphi a toujours un compilateur vraiment rapide. Je suppose que c'est pourquoi il s'en tire de ne pas prendre en charge la modification et la poursuite.
Joeri Sebrechts
6

Mon superviseur de formation chez Gemplus (maintenant Gemalto) a écrit le premier interprète JavaCard et OS pendant sa propre période de formation de premier cycle de 3 mois. Il a produit à lui seul le code à partir de la spécification. Pour produire la v.2, Gemplus a mis en place une équipe de 30+ hommes, sans le gars, qui a travaillé pendant plus d'un an. Une fois terminé mais incapable d'obtenir des performances décentes, ils l'ont appelé à l'aide, et en quelques jours, lui et un de ses collègues ont signalé des dizaines de goulots d'étranglement.

Java Card est un sous-ensemble de Java destiné à fonctionner sur de très petits appareils. Son implémentation a fonctionné dans les cartes à puce, qui ont une horloge de quelques MHz et 2 ou 3 Ko de RAM.

Juste pour le plaisir: un autre exploit personnel quotidien de lui était de plonger dans une transe de travail, de répondre à aucune des questions que nos stagiaires ont crié dans la salle, puis, soudainement 2 heures plus tard, de nouveau en vie lorsque son travail était terminé et répondant aux 5 ou 10 questions consécutives.

Gabriel
la source
1
Je pense que j'ai dépassé le truc des 200 gars ... Je ne me souviens pas trop bien, c'était il y a plus de 10 ans. Je lui ai quand même envoyé la question!
Gabriel
1
Merde, ce gars doit être un cyborg ..
mlvljr
À droite, ils étaient 30+ (=
Gabriel
5

Je m'en souviens très clairement; au lycée, un camarade de classe a codé un jeu vidéo de conduite à part entière dans quelques leçons avec QB45 (Quick Basic 4.5). Défilement vertical, chronomètre, vies, niveaux; J'étais totalement choqué.

systempuntoout
la source
1
J'ai vu un gars faire ça avec un jeu d'aventure texte à Lisp. Pas impressionnant en soi, mais à l'époque où il l'a fait en ... wow.
Michael K
5

Git et / ou Linux

Linus Torvalds a écrit un noyau de système d'exploitation et un système de contrôle de version à partir de zéro. Je ne connais personne avec une productivité similaire.

LennyProgrammers
la source
16
Aussi populaire que Linux, il est facile de surestimer la difficulté et / ou l'originalité impliquées. C'est presque entièrement un clone d'un système existant. Comparé à (pour un exemple évident) Dave Cutler ayant écrit RSX / 11, VMS et Windows NT à partir de zéro, chacun un travail nouveau et unique (et, pour ceux qui s'en soucient, le système de fichiers VMS incluait le contrôle de version) Linus n'a pas '' t encore fait sur la carte.
Jerry Coffin du
1
Félicitations pour VMS, mais avec le même raisonnement, vous devez réduire NT. Wikipedia dit "[...] dirigé par Dave Cutler pour construire Windows NT, et de nombreux éléments de la conception reflètent l'expérience antérieure de DEC avec le VMS et le RSX-11 de Cutler.". Quoi qu'il en soit, je trouve Git impressionnant.
LennyProgrammers
@ Lenny222: bien qu'il soit certainement vrai que vous pouvez trouver une similitude substantielle entre VMS et Windows NT, ce n'est même pas près d'être un clone comme Linux. Je pense aussi assez à Git - mais s'il n'existait pas, je peux penser à au moins deux ou trois autres qui fonctionneraient bien à sa place.
Jerry Coffin
5
Linus n'a-t-il pas travaillé seul sur Linux pendant environ un mois, puis en a fait un projet communautaire très réussi? Excellent travail en effet, mais je ne le classerais pas comme un exploit individuel de programmation, mais plutôt comme un projet open source collaboratif très réussi.
David Reis
1
Je pense que ce que nous voulons en venir ici est le fait que nous avons maintenant des utilisateurs X utilisant Linux à la maison ... Je suppose que vous avez une boîte VMS dans votre maison? Sachez qu'il ne s'agissait pas d'une seule œuvre d'un seul auteur ... à l'inverse, s'il ne l'avait pas fait, ceux qui étaient critiques étaient-ils prêts à le faire à la place?
RobotHumans
5

Richard M Stallman me vient à l'esprit. Cet homme a commencé à donner vie à GNU Emacs, GCC, GDB et bien d'autres programmes notables. Il est même devenu l'auteur de la GPL originale. J'ai entendu parler de lui disant qu'il va dans une grotte pendant 18 mois et revient avec plus de 150 000 lignes de code qui font le compilateur C de la suite GCC. Ces 150 000 LOC ont donné le lit de roche pour g ++ plus tard. Selon ses propres mots, Emacs a commencé comme éditeur de texte, puis c'est devenu un mode de vie, et maintenant c'est une religion pour certains d'entre nous. Aujourd'hui encore, les principes de conception d'Emacs sont utilisés dans de nombreux programmes réussis.

Le système TeX de Donald E Knuth est un autre programme qui vient à l'esprit lorsque l'on pense à la programmation de merveilles.

vpit3833
la source
Vous devriez essayer de lire le TeXbook. Ce n'est pas pour les simples mortels.
La création de la GPL n'est pas un exploit impressionnant . Ce serait comme vous créditer de Singletons.
DeadMG
4

Dans ma classe de diplôme, mon camarade de classe a créé un système d'exploitation (bien que très basique, mais il a démarré à partir d'une disquette et a effectué les routines nécessaires) comme exigence de projet en moins de 30 jours. La durée comprend à la fois la lecture / recherche nécessaire et le codage réel.

Je me souviens que des gars de listes de diffusion os.com le décourageaient en disant qu'il ne le ferait pas dans ces quelques jours et je l'ai également vu traverser le dortoir à 5 heures du matin dans un état semi-conscient en parlant de charabia. :-)

C'est un programmeur génial.

Christy John
la source
4

Je n'allais rien dire, mais quelqu'un a dit "Ruby est un exploit", alors

John McCarthy avec les FONCTIONS RÉCURSIFS D'EXPRESSIONS SYMBOLIQUES ET LEUR CALCUL PAR MACHINE , c'est-à-dire le papier dans lequel il a défini Lisp en 1960, quand ifétait un concept auquel les gens commençaient tout juste à réfléchir sérieusement. Parlez d'être en avance sur votre temps.

Inaimathi
la source
belle référence. c'est moi qui ai recouvert de rubis, pour plus d'élégance que de convention. c'est également en avance
RobotHumans
1
McCarthy a écrit un article sur les mathématiques. Ce n'est que plus tard qu'il a été constaté qu'il pouvait être converti en code réel.
1
@ Thorbjørn Ravn Andersen - J'ai pris soin d'utiliser "défini" par opposition à "implémenté".
Inaimathi
@Thor C'est un peu comme refuser à Arthur Clarke le mérite d'avoir découvert (ou inventé) l' orbite géosynchrone circulaire simplement parce qu'il ne pouvait pas construire une fusée pour y installer un satellite, ou parce que la technologie n'existait pas encore.
Mark C
4

Le compilateur Symantec / Zortec C ++ de Walter Bright suit les compilateurs implémentés par d'énormes équipes de programmeurs. Plus tard, sa conception et sa mise en œuvre de D.

dsimcha
la source
2

SHRDLU de Terry Winograd .

Mathématicien automatisé de Doug Lenat .

Mike Dunlavey
la source
SHRDLU m'a toujours étonné!
@ Thorbjørn: Moi aussi. Cela fait partie de cet esprit du laboratoire Minsky que j'ai absorbé, pour le meilleur et pour le pire :)
Mike Dunlavey
1

Linus Trovalds écrit Linux

Geek
la source
0

Programmeur de jeux vidéo 8 bits sur ordinateur des années 80 (ex: Commodore 64), certains très bons jeux étaient en langage machine, et leur taille était souvent plus petite qu'un bitmap pour une icône Windows ;-) L'optimisation à son meilleur

Geos (un OS WYSIWYG pour Commdore 64) était très impressionnant pour son temps

Chipster
la source
-2

Je ne suis pas sûr que cela compte vraiment ... mais le gars qui a développé le rubis. Je ne peux tout simplement pas dépasser l'élégance de la langue. Et je crois que c'était la première langue à prendre en charge la frappe dynamique, bien que je ne sois pas le type qui a commencé avec les cartes perforées et l'assemblage d'écriture afin que je puisse me tromper.

RobotHumains
la source
3
Ce n'était pas la première langue avec la frappe dynamique, et non, vous ne devriez pas avoir commencé avec des cartes perforées pour le savoir.
Jas
-3

David Heinemeier Hansson créant Rails.

La première fois que j'ai installé Rails et mis en place un site de test par rapport à une base de données et qu'il a fait tout le framework et les trucs CRUD automatiquement, mis en place le site de test et c'était comme si mes yeux étaient ouverts pour la première fois sur ce qui peut être fait avant vous commencer la programmation. C'était vraiment impressionnant et j'ai vu des idées de cela apparaître partout dans d'autres langues / plateformes depuis lors.

glénatron
la source
Comment est-ce un exploit de programmation?
David Reis
le fait qu'il fait un bon travail pour disposer des tables avec simple a, appartient à, habtm ... en outre, il résume la connectivité de la base de données dans une structure de classe agnostique db où cela semble presque magique et tout ce que vous avez à faire est un nouveau rail -d (dbtype) bundler générer et ratisser db: créer le jeu de commandes db: migrate. La génération d'échafaudage pour une base à partir de laquelle travailler est agréable. il semble que quelqu'un n'aime pas les rubis / rails, car ceux-ci sont votés assez fort alors qu'ils étaient de nouvelles approches de l'élégance par rapport aux conventions
RobotHumans
après réflexion, je pense que c'est parce que nous avons été impressionnés par la nature artistique de la chose par opposition aux prouesses techniques
RobotHumans
C'était une façon de penser totalement différente - tout était totalement orienté vers ce qui serait idéal plutôt que suffisant. C'était comme si nous tous, développeurs Web, avions roulé dans les gués de la Model T et soudain, les rails se sont présentés et c'est une BMW moderne. Ce fut un changement massif de simplicité et de convivialité en termes de développeurs en tant qu'utilisateurs et j'ai vu tant d'autres plates-formes construites sur ces idées depuis.
glenatron
1
Très bien, mais remarquez que votre question ne mentionne pas le nom du gars, ce qu'il a fait, quand il l'a fait, etc. Il dit simplement: "Ruby is nice". Eh bien, les chiots sont aussi gentils, mais ce n'est pas une réponse à cette question.
David Reis