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:
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.
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
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.
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:
- La tâche herculéenne était-elle une des tâches, ou l'individu étonnait-il régulièrement les gens?
- Comment expliquez-vous des performances aussi impressionnantes?
- Comment le programmeur a-t-il été reconnu pour un travail aussi impressionnant?
la source
Réponses:
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.
la source
Racine carrée inverse rapide . Comment quelqu'un peut trouver quelque chose comme ça me dépasse complètement.
la source
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.
la source
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.
la source
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).
la source
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.
la source
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.
la source
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)
la source
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
la source
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.
la source
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é.
la source
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.
la source
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.
la source
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.
la source
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.la source
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.
la source
SHRDLU de Terry Winograd .
Mathématicien automatisé de Doug Lenat .
la source
Linus Trovalds écrit Linux
la source
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
la source
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.
la source
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.
la source