Wszyscy znają stare powiedzenie, że najlepsi programiści mogą być rzędami wielkości lepszymi od średniej. Osobiście widziałem dobrego kodu i programistów, ale nigdy czegoś tak absurdalnego. Pytanie brzmi: jaki jest najbardziej imponujący wyczyn programowania, jakiego kiedykolwiek byłeś świadkiem?
Możesz zdefiniować imponujące przez:
Zakres omawianego zadania, np. John samodzielnie opracował ramy dla swojej firmy, prace porównywalne w zakresie do tego, co robiło pozostałych 200 zatrudnionych łącznie.
Szybkość, np. Stu zaprogramował cały wielozadaniowy system operacyjny aplikacji w czasie rzeczywistym w tygodniu, w tym własny kompilator C i narzędzia wiersza poleceń powłoki
Złożoność, np. Jane, ponownie zarchiwizowała całą naszą 10-milionową aplikację LOC do pracy w klastrze serwerów. I zrobiła to po południu.
Jakość, np. Kod Charlesa miał wskaźnik defektów na LOC 100 razy mniejszy niż średnia firmy. Ponadto kod był czysty i zrozumiały dla wszystkich.
Oczywiście, im więcej tych cech połączonych, a im bardziej ekstremalna każda z nich, tym bardziej imponujący jest wyczyn.
Więc pozwól mi to mieć. Jaki jest najbardziej absurdalny wyczyn, jaki możesz opisać? Podaj jak najwięcej szczegółów i staraj się unikać miejskich legend lub przesady. Publikuj tylko to, za co możesz ręczyć.
Dodatkowe pytania:
- Czy herkulesowe zadanie było jednym z nich, czy też osoba regularnie zadziwiała ludzi?
- Jak wytłumaczysz tak imponującą wydajność?
- Jak uznano programistę za tak niesamowitą pracę?
źródło
Odpowiedzi:
Chociaż oficjalnie nie mogę za to ręczyć, zawsze byłem pod wrażeniem, że Chris Sawyer rozwija Rollercoaster Tycoon prawie całkowicie w języku asemblera.
źródło
Szybki odwrotny pierwiastek kwadratowy . Jak ktoś może wymyślić coś takiego, jest całkowicie poza mną.
źródło
Wczesne gry zręcznościowe.
Całkowicie ograniczony przez pamięć, moc przetwarzania, We / Wy ...
To, co osiągnęli ci programiści w tym środowisku, było niesamowite.
Np. Pacman - Idealny. Nadal można grać po tylu latach.
źródło
Jest jeden programista, w którym pracuję, który wykonał następujące czynności przy więcej niż jednej okazji.
Najnowszym przykładem był projekt w naszej grupie, który został przydzielony do 3 osób. Była to złożona aplikacja LOB z sześciomiesięcznym harmonogramem (była to niezwykle agresywna oś czasu).
Tydzień kodowania miał się rozpocząć, 1 z 3 osób odeszła (z powodów osobistych), a inna odeszła na bardzo nagły urlop medyczny. Samotny programista poszedł do domu, aby rozpocząć programowanie i wrócił 3 miesiące później z ukończoną aplikacją.
EDYTOWAĆ
Aby dodać wyjaśnienie. Wynikowy kod był prawie idealny, zgodny z wymaganiami, a nasza grupa ds. Kontroli jakości była w stanie udokumentować tylko 3 usterki.
źródło
Może po prostu pokazuję swój wiek, ale myślę, że niektóre z naprawdę imponujących wyczynów programistycznych są ignorowane.
Steve Woźniak, Apple Disk II / RWTS
Steve zaprojektował sprzęt i oprogramowanie razem, używając naprawdę fajnych sztuczek w oprogramowaniu, aby wyeliminować wiele złożoności (i kosztów) sprzętu. Normalne napędy dyskietek wykorzystywały diodę LED i czujnik światłoczuły w pobliżu piasty dysku, aby prześwitywać otwór przebity w podłożu dysku. Wyjście z fotoczujnika było podłączone do przerwania procesora, aby procesor wiedział, kiedy rozpocząć procedurę synchronizacji, aby poczekać, aż właściwy sektor ścieżki znajdzie się pod głowicą odczytu / zapisu (choć kilka z nich używało „twardych sektorów” który miał dziurę sygnalizującą początek każdego sektora zamiast tylko jednego na początek ścieżki).
Steve wyeliminował ten sprzęt, projektując oprogramowanie do kodowania danych w sposób, który pozwoliłby Ci zacząć czytać z dowolnego miejsca na dysku, i nie tylko dekodował same dane, ale również zastanowił się, gdzie (logicznie) na ścieżce jesteś. Napęd Disk II nie ma skonfigurowanej diody LED / czujnika światła i całkowicie zignorował dziury w dyskietce.
Gordon Letwin, HPFS
Gordon Letwin był architektem (i programistą) w zespole OS / 2. Przynajmniej tak, jak słyszałem tę historię, w pewnym momencie pojechał na wakacje, aby uciec od rzeczy i spędzić trzy tygodnie (lub mniej więcej) żeglując na swoim jachcie (tak, wcześni pracownicy MS mogli sobie pozwolić na takie rzeczy ... ) ... ale aby się nie nudzić, postanowił zabrać ze sobą laptopa.
Kiedy wrócił, miał napisany, debugowany i działający system plików HPFS - całkowicie w języku asemblera Intel 386. Napisany przez niego kod został ostatecznie sprzedany jako „HPFS386”, który był (przynajmniej w tym czasie) wyłączny dla LAN Manager Edition OS / 2. Inny zespół spędził coś jak sześć miesięcy piszących wersję w języku C, która stała się „normalna” HPFS zawarte w normalnych wydaniach OS / 2 (a po IBM i MS zerwała IBM aktualizowane i ponownie skompilowany kod C, aby uzyskać ich „HPFS386”). Chociaż został zmodyfikowany i zaktualizowany, ponieważ jeśli byłeś uczciwy, NTFS prawdopodobnie nazywałby się „HPFS 2.0” (a może 3.0) - nie ma wątpliwości, że najlepszy obecny system plików Microsoftu nadal jest ściśle związany z tym, co zaprojektował.
Burroughs taśmy B220
Ucieleśniały one (przynajmniej IMO) prawdziwe początki programowania obiektowego. Tam, gdzie taśmy IBM (na przykład) miały „etykiety”, by powiedzieć o formacie danych na taśmie, taśmy Burroughs opracowały konwencję (nie sądzę, by ktoś wiedział na pewno, kto ją uruchomił) nałożenia małego zestawu procedur taśma, która rozumie dane i sposób ich sformatowania, dzięki czemu można poprawnie manipulować danymi bez znajomości szczegółów ich formatowania. Innymi słowy, kilka pierwszych „bloków” na taśmie było w zasadzie vtable w trwałej formie. Zasadniczo wczytałeś vtable do pamięci, a następnie używałeś zdefiniowanych metod do manipulowania danymi na pozostałej części taśmy. Wszystko bardzo schludne i proste (jeśli tylko nieco mniej niż całkowicie przenośne).
źródło
John Carmack regularnie robi na mnie wrażenie swoimi wyczynami z epickiego programowania. Według jednej historii nudził się w swoim pokoju hotelowym, więc napisał silnik oświetlenia Doom 3 na swoim laptopie przez weekend.
źródło
Mimo tego wątpliwego przeznaczenia wciąż jestem pod wrażeniem skryptu captver dla MegaUpload . To skrypt GreaseMonkey napisany w JavaScript, który ma dekoder bitmapowy i sieć neuronową, która rozpoznaje litery na obrazku captcha, i powtarzam, wszystko to jest zrobione przy użyciu JavaScript.
źródło
Miguel de Icaza - projekt Mono.
(Jest także niesamowicie zabawny, dowcipny i zabawny - przynajmniej z krótkiej rozmowy, którą widziałem, jak udzielał i słuchając wywiadów podcastowych)
źródło
Anders Hejlsberg: język Turbo Pascal i kompilator . Nadal uważam, że po tylu latach TPC jest arcydziełem inżynierii oprogramowania. Jest to najbardziej kompaktowy i najszybszy kompilator kodu macierzystego (poczynając od niektórych wersji optymalizujących), jaki kiedykolwiek widziałem. W Borland Pascal IDE nie było zasadniczo „kompilacji”. Zmodyfikowałeś kod, nacisnąłeś F9 i od razu obserwowałeś, jak program działa, i to na maszynie 8 MHz lub 12 MHz. Później TPC przekształciła się w Delphi, a następnie Hejlsberg dołączył do Microsoftu i był współautorem C #.
Chciałbym rzucić okiem na źródła wcześniejszych wersji TPC, ale niestety pomimo licznych próśb Borland nigdy ich nie otworzył.
Kompilator Hejlsberga został zainspirowany tą książką: Niklaus Wirth, Algorytmy + Struktury danych = Programy
źródło
Mój kierownik szkolenia w Gemplus (obecnie Gemalto) napisał pierwszego interpretera JavaCard i system operacyjny podczas własnego 3-miesięcznego okresu studiów licencjackich. Samodzielnie stworzył kod ze specyfikacji. Aby wyprodukować v.2, Gemplus założył ponad 30 mężczyzn, bez faceta, który pracował przez ponad rok. Kiedy skończyli, ale nie byli w stanie uzyskać przyzwoitej wydajności, wezwali go o pomoc, a po kilku dniach on i jego kolega wskazali dziesiątki wąskich gardeł.
Java Card to podzbiór Java przeznaczony do działania na bardzo małych urządzeniach. Jego implementacja działała na kartach inteligentnych, które mają kilka MHz zegara i 2 lub 3 KB pamięci RAM.
Po prostu dla zabawy: innym jego codziennym wyczynem było zanurzenie się w transie pracy, nie odpowiadając na żadne z pytań, które stażyści krzyczeli w pokoju, a potem nagle 2 godziny później wyskakiwali ponownie, gdy jego praca była wykonywana i odpowiadali na 5 lub 10 pytania z rzędu.
źródło
Pamiętam to bardzo wyraźnie; w liceum kolega z klasy zakodował pełnoprawną grę samochodową podczas kilku lekcji z QB45 (Quick Basic 4.5). Przewijanie w pionie, stoper, życia, poziomy; Byłem całkowicie zszokowany.
źródło
Git i / lub Linux
Linus Torvalds napisał od podstaw jądro systemu operacyjnego i system kontroli wersji. Nie znam nikogo o podobnej wydajności.
źródło
Richard M. Stallman przychodzi mi na myśl. Ten jeden człowiek zaczął dawać życie GNU Emacs, GCC, GDB i wielu innym znaczącym programom. Udał się nawet autorowi oryginalnej GPL. Słyszałem, jak mówi o nim, że idzie do jaskini na 18 miesięcy i wraca z ponad 150 000 wierszy kodu, które tworzą kompilator C pakietu GCC. Te 150 000 LOC dało później podwaliny dla g ++. Jego własnymi słowami Emacs zaczął jako edytor tekstu, potem stał się sposobem na życie, a teraz jest religią dla niektórych z nas. Nawet dziś zasady projektowania Emacsa są stosowane w wielu udanych programach.
System TeX Donalda E. Knutha to kolejny program, który przychodzi na myśl, gdy myślisz o programowaniu cudów.
źródło
W mojej klasie dyplomowej mój kolega z klasy stworzył system operacyjny (choć bardzo prosty, ale uruchomił się z dyskietki i wykonał niezbędne procedury) jako wymaganie projektowe w ciągu 30 dni. Czas trwania obejmuje zarówno niezbędne czytanie / badania, jak i faktyczne kodowanie.
Pamiętam, że listy dyskusyjne os.com zniechęcają go, mówiąc, że nie zrobi tego w ciągu tych kilku dni, a także widziałem, jak chodził po akademiku o 5 rano w półprzytomnym stanie gadającym bełkotem. :-)
On jest niesamowitym programistą.
źródło
Nie zamierzałem nic mówić, ale ktoś powiedział: „Ruby to wyczyn”, więc
John McCarthy z oryginalnymi FUNKCJAMI REKURSYWNYMI EKSPRESJI SYMBOLICZNYCH I ICH KOMPUTACJI PRZEZ MASZYNĘ , tj. Gazetą , w której zdefiniował Lispa w 1960 roku, kiedy to
if
była koncepcja, o której ludzie zaczynali poważnie myśleć. Mów o wyprzedzaniu swojego czasu.źródło
Kompilator Walant Bright Symantec / Zortec C ++ nadąża za kompilatorami wdrażanymi przez ogromne zespoły programistów. Później jego projekt i realizacja D.
źródło
SHRDLU Terry'ego Winograda .
Zautomatyzowany matematyk Douga Lenata .
źródło
Linus Trovalds pisze o Linuksie
źródło
8-bitowy programista gier komputerowych z lat 80-tych (np. Commodore 64), niektóre całkiem dobre gry były w języku maszynowym, a ich rozmiar był często mniejszy niż bitmapa dla ikony Windows ;-) Optymalizacja w najlepszym wydaniu
Geos (system operacyjny WYSIWYG dla Commdore 64) był imponujący jak na swój czas
źródło
Nie jestem pewien, czy to się naprawdę liczy ... ale facet, który rozwinął rubin. Po prostu nie mogę ominąć elegancji tego języka. I wierzę, że był to pierwszy język, który wspiera dynamiczne pisanie, chociaż nie jestem facetem, który zaczynał od puncards i pisania asemblerów, więc mogłem się pomylić.
źródło
David Heinemeier Hansson tworzy Railsy.
Gdy instalowałem Railsy po raz pierwszy i konfigurowałem witrynę testową na bazie danych, wszystkie elementy frameworku i CRUD były automatycznie tworzone, konfigurowałem stronę testową i wyglądało to tak, jakby moje oczy były otwarte po raz pierwszy na to, co można zrobić przed tobą rozpocząć programowanie. To było naprawdę imponujące i od tego czasu widziałem pomysły pojawiające się wszędzie w innych językach / platformach.
źródło