Jeder kennt das alte Sprichwort, dass die besten Programmierer Größenordnungen besser sein können als der Durchschnitt. Ich persönlich habe gute Code- und Programmierer gesehen, aber noch nie etwas so Absurdes. Die Frage ist also, was ist das beeindruckendste Programm, das Sie je gesehen oder gehört haben?
Sie können beeindruckend definieren durch:
Der Umfang der vorliegenden Aufgabe, z. B. John, entwickelte im Alleingang den Rahmen für sein Unternehmen, eine Arbeit, die in ihrem Umfang mit dem vergleichbar ist, was die anderen 200 Beschäftigten zusammen machten.
Geschwindigkeit zB Stu programmierte ein komplettes Echtzeit-Multitasking-App-Betriebssystem auf einer Woche, einschließlich eines eigenen C-Compilers und Shell-Kommandozeilen-Tools
Komplexität Zum Beispiel hat Jane unsere gesamte 10-Millionen-LOC-App für die Arbeit in einem Cluster von Servern überarbeitet. Und sie hat es an einem Nachmittag getan.
Qualität zB Charles 'Code hatte eine Fehlerrate pro LOC, die 100-mal unter dem Unternehmensdurchschnitt lag. Außerdem war der Code sauber und für alle verständlich.
Je mehr dieser Eigenschaften kombiniert werden und je extremer sie sind, desto beeindruckender ist die Leistung.
Also, lass es mich haben. Was ist die absurdeste Leistung, die Sie erzählen können? Bitte geben Sie so viele Details wie möglich an und vermeiden Sie urbane Legenden oder Übertreibungen. Posten Sie nur, wofür Sie tatsächlich bürgen können.
Bonusfragen:
- War die Herkulesaufgabe eine Einzelaufgabe oder hat der Einzelne regelmäßig die Menschen verblüfft?
- Wie erklären Sie sich diese beeindruckende Leistung?
- Wie wurde der Programmierer für diese großartige Arbeit ausgezeichnet?
quelle
Antworten:
Obwohl ich nicht offiziell dafür bürgen kann, war ich immer beeindruckt davon, dass Chris Sawyer Rollercoaster Tycoon fast ausschließlich in Assemblersprache entwickelt hat.
quelle
Schnelle inverse Quadratwurzel . Wie jemand so etwas erfinden kann, ist mir völlig unverständlich.
quelle
Frühe Arcade-Spiele.
Vollständig eingeschränkt durch Speicher, Rechenleistung, E / A ...
Was diese Programmierer in diesem Umfeld erreicht haben, war erstaunlich.
ZB Pacman - Perfekt. Nach all den Jahren noch spielbar.
quelle
Es gibt diesen einen Programmierer, bei dem ich arbeite und der mehr als einmal Folgendes gemacht hat.
Das jüngste Beispiel war ein Projekt in unserer Gruppe, das 3 Personen zugewiesen wurde. Es war eine komplexe LOB-App mit einem 6-Monats-Zeitplan (das war eine äußerst aggressive Zeitachse).
Die wöchentliche Kodierung sollte beginnen, 1 der 3 Personen kündigte (aus persönlichen Gründen) und eine andere verließ das Unternehmen in einem sehr plötzlichen Urlaub. Der einzige verbleibende Programmierer ging nach Hause, um mit dem Programmieren zu beginnen, und kehrte drei Monate später mit der ausgefüllten Anwendung zurück.
BEARBEITEN
Nur um etwas Klarheit zu schaffen. Der resultierende Code war nahezu perfekt, genau auf die Anforderungen abgestimmt und unsere QS-Gruppe konnte nur drei Mängel dokumentieren.
quelle
Vielleicht zeige ich nur mein Alter, aber ich denke, einige der wirklich beeindruckenden Leistungen des Programmierens werden ignoriert.
Steve Wozniak, Apple Disk II / RWTS
Steve entwarf die Hardware und Software zusammen und verwendete dabei wirklich coole Tricks in der Software, um viel Komplexität (und Kosten) in der Hardware zu vermeiden. Normale Diskettenlaufwerke verwendeten eine LED und einen Fotosensor in der Nähe des Hubs der Diskette, um durch ein Loch zu leuchten, das in das Diskettensubstrat gestanzt war. Der Ausgang des Photosensors war mit einer Prozessorunterbrechung verbunden, damit der Prozessor wissen konnte, wann seine Zeitgeberroutine zu starten ist, um auf den richtigen Sektor auf einer Spur unter dem Lese- / Schreibkopf zu warten (obwohl einige wenige "Festplatten mit Sektoren" verwendet wurden. das hatte ein Loch, um den Beginn jedes Sektors zu signalisieren (statt nur eines für den Beginn der Strecke).
Steve beseitigte diese Hardware, indem er die Software so entwarf, dass die Daten so codiert wurden, dass Sie an einer beliebigen Stelle auf der Festplatte mit dem Lesen beginnen und nicht nur die Daten selbst decodieren, sondern auch herausfinden, wo (logisch) in der Spur Sie sich befanden. Das Disk II-Laufwerk hatte keine LED- / Fotosensor-Einrichtung und ignorierte die Lücke (n) in der Diskette vollständig.
Gordon Letwin, HPFS
Gordon Letwin war Architekt (und Programmierer) im OS / 2-Team. Zumindest, wie ich die Geschichte gehört habe, fuhr er irgendwann in den Urlaub, um sich von den Dingen zu befreien und drei Wochen (oder so) auf seiner Yacht herumzusegeln (ja, frühe MS-Mitarbeiter konnten sich solche Dinge leisten ...). ) ... aber um nicht zu gelangweilt zu werden, nahm er seinen Laptop mit.
Bei seiner Rückkehr ließ er HPFS schreiben, debuggen und arbeiten - vollständig in der Assemblersprache Intel 386. Der von ihm geschriebene Code wurde schließlich als "HPFS386" verkauft, der (zumindest zu dieser Zeit) der LAN Manager Edition von OS / 2 vorbehalten war. Ein anderes Team hat dann ungefähr sechs Monate damit verbracht, eine Version in C zu schreiben, die zum "normalen" HPFS wurde, das in den normalen Editionen von OS / 2 enthalten war (und nachdem sich IBM und MS getrennt hatten, hat IBM den C-Code aktualisiert und neu kompiliert, um deren Code zu erhalten "HPFS386"). Obwohl es modifiziert und aktualisiert wurde, würde NTFS, wenn Sie fair sind, wahrscheinlich "HPFS 2.0" (oder vielleicht 3.0) heißen - es ist keine Frage, dass Microsofts bestes aktuelles Dateisystem noch immer eng von dem abgeleitet ist, was er entworfen hat.
Burroughs B220 Bänder
Diese verkörperten (zumindest IMO) die wahren Anfänge der objektorientierten Programmierung. Während IBM-Bänder (zum Beispiel) "Labels" hatten, die über das Format der Daten auf dem Band Auskunft gaben, entwickelten Burroughs-Bänder die Konvention (ich glaube, niemand weiß genau, wer damit begonnen hat), eine kleine Reihe von Routinen zu erstellen das Band, das die Daten versteht und wie sie formatiert wurden, sodass Sie die Daten korrekt bearbeiten können, ohne die Details zu kennen, wie sie formatiert wurden. Mit anderen Worten, die ersten "Blöcke" auf dem Band waren im Grunde genommen eine V-Tabelle in dauerhafter Form. Sie würden die vtable im Prinzip in den Speicher einlesen und dann die von ihr definierten Methoden verwenden, um die Daten auf dem restlichen Band zu bearbeiten. Alles sehr ordentlich und einfach (wenn auch etwas weniger als vollständig portabel).
quelle
John Carmack beeindruckt mich regelmäßig mit seinen Leistungen der epischen Programmierung. Einer Geschichte zufolge langweilte er sich in seinem Hotelzimmer und schrieb über ein Wochenende die Doom 3-Lichtmaschine auf seinen Laptop.
quelle
Trotz des fragwürdigen Zwecks bin ich immer noch beeindruckt von einem Captcha-Löser-UserScript für MegaUpload . Es ist ein in JavaScript geschriebenes GreaseMonkey-Skript mit einem Bitmap-Decoder und einem neuronalen Netzwerk, das die Buchstaben im Captcha-Bild erkennt, und ich wiederhole, all dies wird mit JavaScript erstellt.
quelle
Miguel de Icaza - das Mono-Projekt.
(Er ist auch unglaublich witzig, witzig und unterhaltsam - zumindest nach dem kurzen Vortrag, den ich bei ihm und beim Anhören einiger Podcast-Interviews gesehen habe.)
quelle
Anders Hejlsberg: die Turbo Pascal Sprache und der Compiler . Ich denke immer noch, dass TPC nach all den Jahren ein Meisterwerk der Softwareentwicklung ist. Es ist der kompakteste und schnellste native Code-Compiler, den ich je gesehen habe. In der Borland Pascal IDE gab es im Wesentlichen keine "Kompilierung". Sie haben Ihren Code geändert, F9 gedrückt und Ihr Programm sofort ausgeführt, und das war auf einer 8-MHz- oder 12-MHz-Maschine. TPC hatte sich später zu Delphi entwickelt, dann wechselte Hejlsberg zu Microsoft und war Co-Autor von C #.
Ich würde gerne einen Blick auf die Quellen früherer TPC-Versionen werfen, aber trotz zahlreicher Anfragen hat Borland sie nie geöffnet.
Hejlsbergs Compiler wurde von diesem Buch inspiriert: Niklaus Wirth, Algorithmen + Datenstrukturen = Programme
quelle
Mein Ausbildungsleiter bei Gemplus (jetzt Gemalto) hat den ersten JavaCard-Interpreter und das erste Betriebssystem während seiner eigenen dreimonatigen Grundausbildung geschrieben. Er produzierte im Alleingang Code aus der Spezifikation. Um die Version 2 zu produzieren, stellte Gemplus ein Team von über 30 Männern auf, ohne den Mann, der mehr als ein Jahr arbeitete. Als er fertig war, aber nicht in der Lage war, anständige Leistungen zu erbringen, riefen sie ihn um Hilfe, und in ein paar Tagen wiesen er und ein Kollege von ihm auf Dutzende von Engpässen hin.
Java Card ist eine Teilmenge von Java, die für die Ausführung auf sehr kleinen Geräten vorgesehen ist. Seine Implementierung lief auf Smartcards mit einigen MHz Takt und 2 oder 3 KB RAM.
Nur zum Spaß: Eine andere persönliche Leistung seines Alltags war es, in eine Arbeitstrance einzutauchen, keine der Fragen zu beantworten, die wir Auszubildenden im Raum brüllten, und dann, plötzlich 2 Stunden später, wieder lebendig zu werden, als seine Arbeit erledigt war und die 5 oder 10 zu beantworten Fragen in einer Reihe.
quelle
Ich erinnere mich sehr gut daran. Auf der Highschool hat ein Klassenkamerad in ein paar Lektionen mit QB45 (Quick Basic 4.5) ein vollständiges Fahrvideospiel programmiert . Vertikales Scrollen, Stoppuhr, Leben, Ebenen; Ich war total geschockt.
quelle
Git und / oder Linux
Linus Torvalds hat einen Betriebssystemkern und ein Versionskontrollsystem von Grund auf neu geschrieben. Ich kenne niemanden mit einer ähnlichen Produktivität.
quelle
Richard M Stallman kommt mir in den Sinn. Dieser eine Mann begann, GNU Emacs, GCC, GDB und viele andere bemerkenswerte Programme zum Leben zu erwecken. Er schrieb sogar die ursprüngliche GPL. Ich habe von ihm gehört, dass er für 18 Monate in eine Höhle geht und mit über 150.000 Codezeilen zurückkehrt, die den C-Compiler der GCC-Suite ausmachen. Diese 150.000 LOC gaben später den Grundstein für g ++. Nach seinen eigenen Worten begann Emacs als Texteditor, dann wurde es zu einem Lebensstil, und jetzt ist es für einige von uns eine Religion. Bis heute werden die Designprinzipien von Emacs in vielen erfolgreichen Programmen verwendet.
Das TeX-System von Donald E. Knuth ist ein weiteres Programm, das mir einfällt, wenn ich über das Programmieren von Wundern nachdenke.
quelle
In meiner Abschlussklasse erstellte mein Klassenkamerad ein Betriebssystem (wenn auch sehr einfach, bootete es aber von einer Diskette und erledigte die erforderlichen Routinen) als Projektanforderung in weniger als 30 Tagen. Die Dauer beinhaltet sowohl das notwendige Lesen / Recherchieren als auch die tatsächliche Kodierung.
Ich erinnere mich an die Mailinglisten von os.com, in denen Leute ihn entmutigten und sagten, er würde das in den nächsten Tagen nicht tun, und ich habe ihn auch gesehen, wie er morgens um 5 Uhr morgens in einem halbbewussten Zustand, der Kauderwelsch redet, durch den Schlafsaal ging. :-)
Er ist ein großartiger Programmierer.
quelle
Ich wollte nichts sagen, aber jemand sagte "Ruby ist eine Meisterleistung"
John McCarthy mit den ursprünglichen REKURSIVEN FUNKTIONEN VON SYMBOLISCHEN AUSDRÜCKEN UND IHRER BERECHNUNG DURCH MASCHINEN , dh dem Aufsatz, in dem er Lisp 1960 definierte, als
if
es sich um ein Konzept handelte, über das die Menschen gerade erst ernsthaft nachdachten . Sprechen Sie darüber, Ihrer Zeit voraus zu sein.quelle
Der Symantec / Zortec C ++ - Compiler von Walter Bright hält mit den Compilern Schritt, die von großen Teams von Programmierern implementiert wurden. Später wurde sein Entwurf und die Umsetzung von D.
quelle
Terry Winograds SHRDLU .
Doug Lenats automatisierter Mathematiker .
quelle
Linus Trovalds schreibt Linux
quelle
8-Bit-Videospielprogrammierer auf einem Computer aus den 80er Jahren (dh: Commodore 64), einige ziemlich gute Spiele waren in Maschinensprache und oft kleiner als eine Bitmap für ein Windows-Symbol ;-) Optimierung vom Feinsten
Geos (ein WYSIWYG-Betriebssystem für Commdore 64) war für seine Zeit sehr beeindruckend
quelle
Ich bin mir nicht sicher, ob das wirklich zählt ... aber der Typ, der Rubin entwickelt hat. Ich komme einfach nicht an der Eleganz der Sprache vorbei. Und ich glaube, es war die erste Sprache, die dynamisches Tippen unterstützte, obwohl ich nicht der Typ bin, der mit Lochkarten und dem Schreiben von Assembler angefangen hat, damit ich mich irren könnte.
quelle
David Heinemeier Hansson kreiert Rails.
Als ich Rails zum ersten Mal installiert und eine Test-Site für eine Datenbank eingerichtet habe, wurden alle Framework- und CRUD-Aufgaben automatisch ausgeführt. Die Test-Site wurde so eingerichtet, als wären meine Augen zum ersten Mal offen für das, was vor Ihnen getan werden kann Starten Sie die Programmierung. Das war wirklich beeindruckend und ich habe seitdem überall Ideen davon in anderen Sprachen / Plattformen gesehen.
quelle