Який найбільший вражаючий програмовий подвиг, який ви коли-небудь були свідками? [зачинено]


26

Всім відомо зі старої приказки, що найкращі програмісти можуть бути на порядок кращими за середні. Я особисто бачив хороший код і програмістів, але ніколи чогось такого абсурдного. Отже, питання полягає в тому, який саме вражаючий подвиг програмування ви коли-небудь бачили чи чули?

Ви можете визначити вражаюче:

  1. Обсяг завдання, наприклад, Джон сингл розробив рамки для своєї компанії - робота, порівнянна за обсягом з тією, що виконували інші 200 зайнятих.

  2. Швидкість, наприклад, Stu запрограмував всю операційну програму в реальному часі для багатозадачних операційних програм у непритомний час, включаючи власний інструмент для компіляції C та інструменти командного рядка оболонки

  3. Складність, наприклад, Джейн переадресувала весь наш додаток LOC на 10 мільйонів для роботи в кластері серверів. І вона це зробила вдень.

  4. Якість, наприклад, код Чарльза, частота дефектів на LOC була в 100 разів меншою, ніж середня компанія. Крім того, він був чистим і зрозумілим усім.

Очевидно, що чим більше цих характеристик у поєднанні, і чим більш екстремальна кожна з них, тим вражаючішим є подвиг.

Отже, дозвольте мені це зробити. Який самий абсурдний подвиг, який ти можеш переказати? Будь ласка, надайте якомога більше деталей та намагайтеся уникати міських легенд чи перебільшень. Опублікуйте лише те, на що ви можете насправді поручитися.

Питання про бонус:

  1. Чи було геркулесовим завданням єдиним, чи людина регулярно дивувала людей?
  2. Як ви пояснюєте таке вражаюче виконання?
  3. Як програміст був визнаний за таку дивовижну роботу?

5
Я одного разу побачив хлопця, який жив на стіні 2 KLocs ... (вибачте, не втримався)
DevSolo

"Швидкість, наприклад, Stu запрограмувала всю операційну програму додатків у реальному часі на багато разів, включаючи власний компілятор C та інструменти командного рядка оболонки" - Erm .. ви можете захотіти, щоб це було реальним.
Яс

Виходячи з відповідей на даний момент, деякі люди легко справляють враження. Я зробив купу "подвигів", перелічених тут.
Стівен Еверс

Гм, я думав про майже дублювання цього саме вчора;) Велике спасибі за запитання!
mlvljr

@DevSolo Гей, якщо ми говоримо про перфоровані картки або рулонний папір, це може бути фізичним подвигом.
Марк C

Відповіді:


39

Хоча я офіційно не можу поручитися за це, я завжди був вражений тим, що Кріс Сойєр майже повністю розробляє арабські гірки на мовленні.


4
це божевільно!!!
nanda

1
-.- +27 за щось, про що ми вже принаймні двічі обговорювали на цьому сайті.
Марк C

31

Швидкий зворотний квадратний корінь . Як хтось може придумати щось подібне, зовсім поза мною.


1
Гум ... Це може бути (надзвичайно) розумним, але це як 6 рядків коду і лише крихітний будівельний блок набагато більшого додатка. Я не розумію, наскільки це надзвичайно в будь-якому з перерахованих нами вимірів.
Девід Рейс

11
Девід Рейс, це, швидше за все, геніально оптимізує вирішальне вузьке місце. Не плутайте кількість рядків з кількістю роботи, необхідної для їх написання.

2
@David, я не знаю, чому ви наполягаєте на тому, що подвиги програмування повинні бути зроблені за дуже короткий час, щоб стати подвигом?

2
Так, що більше подвиг, 600 рядків коду, написаних за один день проти 6 рядків коду, створених за 100 днів, якщо обидва роблять рівнозначну річ? Я думаю, що це останнє, але ваш пробіг може відрізнятися.
Joonas Pulakaka

6
@David, я не згоден, що будь-яку проблему можна вирішити нескінченно. Ви можете прочитати joelonsoftware.com/articles/HighNotes.html . "Справжня проблема використання багатьох посередніх програмістів замість пари хороших полягає в тому, що незалежно від того, як довго вони працюють, вони ніколи не виробляють щось таке хороше, як те, що можуть створити великі програмісти".

16

Ранні аркадні ігри.

Повністю обмежена пам'яттю, потужністю обробки, вводу / виводу ...

Те, що ці програмісти досягли в цьому середовищі, було дивовижним.

Наприклад Pacman - Ідеальний. Досі грати після всіх цих років.


2
Pacman дуже відомий не ідеальний. Він досить сильно виблискує, коли лічильник рівнів переповнює один байт. ;)
Мейсон Уілер

Відмінно! Згідно з Вікіпедією: "Pac-Man має відомий екран вбивства, який часто називають екраном бомби Pac-Man. Лічильник рівня гри був одним 8-бітовим байтом, і тому він міг зберігати лише 256 різних значень (0-255) . Досягнення 256-го рівня призводить до того, що лічильник, який використовується під час малювання плодів, переповнюється до нуля, викликаючи намалювання 256 плодів і сім порожніх пробілів. Однак це може бути виправлено патчем ".
Conor

1
Можливо, ранні космічні човники ???
Робота

Пані Пак-Мен була набагато вищою
Тім Гудман

1
@Mason, ти навіть можеш отримати його на футболці! errorwear.com/shirt-pacman.php

15

Є один програміст, де я працюю, який робив наступне не один раз.

Останнім прикладом був проект нашої групи, який був призначений для 3 осіб. Це був складний додаток LOB з графіком на 6 місяців (це був надзвичайно агресивний термін).

Тиждень кодування повинен був розпочатися, 1 з 3 осіб кинув (з особистих причин), а інший пішов у дуже раптовий медичний відпустку. Одинокий програміст пішов додому, щоб почати програмування, і повернувся через 3 місяці із заповненою заявкою.

EDIT

Просто, щоб додати деякі пояснення. Отриманий код був майже ідеальним, в точності до вимог, і наша група QA змогла зафіксувати лише 3 дефекти.


Для того, щоб зняти цей подвиг, йому довелося перетягувати 100 годин робочих тижнів. Б'юсь об заклад, що він / вона перебрали тонну кофеїну.
Алі

3
Міфічний чоловік місяць у дії. Зняти 2 людей з проекту == половина часової шкали! Хоча це має сенс, що один зосереджений розробник може зробити все швидше, ніж намагатися узгодити 3 людини.
CodexArcanum

Якщо ця людина коли-небудь покине компанію на поганих умовах (немає періоду компромісу знань), компанія зіткнеться з великими проблемами ...
Onion-Knight

3
@bjarkef - код найкращий. Цей кодер є найкращим програмістом нашої компанії, і дуже короткі часові рамки не зменшили нормальну якість, яку ми зазвичай отримуємо від нього.
Вальтер

1
@Walter, ти не можеш точно оцінити, поки ти фактично не зробиш це, що суперечить, коли тобі потрібне число. Це робить оцінки на схід, коли ви раніше виконували завдання, і важко, коли вам це невідомо. Доки ви не занижуєте клієнта, будете щасливі, що він виявився дешевшим, ніж очікувалося.

13

Можливо, я просто показую свій вік, але я думаю, що деякі справді вражаючі подвиги програмування ігноруються.

Стів Возняк, Apple Disk II / RWTS

Стів спільно розробив апаратне та програмне забезпечення, використовуючи дійсно прикольні хитрощі в програмному забезпеченні, щоб усунути багато складності (і витрат) на апаратне забезпечення. Звичайні накопичувачі дискети використовували світлодіод та фотосенсор поблизу ступиці диска, щоб просвічувати отвір, пробитий у підкладці диска. Вихід з фотосенсора був підключений до переривання процесора, щоб процесор знав, коли почати розпорядок часу, щоб чекати, коли правильний сектор на доріжці знаходиться під головою для читання / запису (хоча декілька використовуваних "жорстких секторів" який мав дірку, щоб сигналізувати про початок кожного сектору, а не лише одного для початку треку).

Стів усунув це обладнання, створивши програмне забезпечення для кодування даних таким чином, що дозволить вам почати читати з довільної точки на диску, і не тільки розшифрувати самі дані, але і з'ясувати, де (логічно) в доріжці ви знаходитесь. На диску Disk II не було налаштовано світлодіодний / фотосенсор, і повністю проігноровано отвори в дискеті.

Гордон Летвін, HPFS

Гордон Летвін був архітектором (і кодером) команди OS / 2. Принаймні, як я чув цю історію, в один момент він пішов у відпустку, щоб піти від речей, і провів три тижні (або близько того), плававши на своїй яхті (так, ранні працівники MS могли дозволити собі подібні речі ... ) ... але щоб не набриднути, він вирішив взяти з собою ноутбук.

Повернувшись, він написав HPFS, налагодив і працював - повністю мовою збірки Intel 386. Код, який він написав, зрештою був проданий як "HPFS386", який був ексклюзивним (принаймні на той час) для Менеджера локальної версії OS / 2. Потім інша команда витратила щось на кшталт півроку, написавши версію на C, яка стала "нормальною" HPFS, включеною до звичайних видань OS / 2 (а після того, як IBM і MS розпалися, IBM оновив і повторно склав код C, щоб отримати їх "HPFS386"). Хоча це було модифіковано та оновлено, оскільки, якщо ви були добросовісні щодо речей, NTFS, мабуть, називались би "HPFS 2.0" (а може бути і 3.0) - немає сумніву, що найкраща поточна файлова система Microsoft все ще тісно виходить із того, що він розробив.

Прорізує стрічки В220

Вони втілювали (принаймні ІМО) реальні початки об'єктно-орієнтованого програмування. Там, де на стрічках IBM (на прикладі одного) були "мітки", щоб розповісти про формат даних на стрічці, стрічки Берроуза розробили конвенцію (я не думаю, що ніхто точно знає, хто її запустив) про введення невеликого набору процедур стрічку, яка б зрозуміла дані та як вони були відформатовані, щоб ви могли правильно маніпулювати даними, не знаючи деталей того, як вони були відформатовані. Іншими словами, перші кілька «блоків» на стрічці були в основному vtable у збереженій формі. Ви в основному прочитали vtable в пам'яті, а потім використали визначені ним методи для маніпулювання даними на решті стрічки. Все дуже акуратно і просто (якщо трохи менше, ніж повністю портативний).


11

Джон Кармак регулярно вражає мене своїми подвигами епічного програмування. Згідно з однією історією, йому нудно було в його готельному номері, тому він написав освітлювальний двигун Doom 3 на своєму ноутбуці протягом вихідних.


2
Шкода, що він не написав фактичної гри, щоб піти з нею.
DeadMG

10

Незважаючи на сумнівну мету, я все ще в захваті від сценарію вирішення проблеми captcha для MegaUpload . Це сценарій GreaseMonkey, написаний на JavaScript, який має декодер растрових зображень та нейронну мережу, яка розпізнає букви в зображенні captcha, і я повторюю, все це робиться за допомогою JavaScript.


1
Щось показати наступній людині, яка стогне тобі про те, що не можеш зробити гарну роботу через обмеження, що на них ставляться.
Джон Хопкінс

10

Мігель де Іказа - проект Моно.

(Він також неймовірно веселий, дотепний і захоплюючий - принаймні з короткої розмови, яку я бачив, як він давав та слухаючи деякі інтерв'ю у подкасті)


+1 Хлопець, очевидно, близнюки чи, можливо, трійняти, всі під своїм іменем. Немає можливості, щоб одна людина була залучена до всіх тих, що є, і на такому детальному рівні.
Дан Розенстарк

8

Андерс Хейльсберг: мова Турбо Паскаль та упорядник . Я все ще думаю, що після всіх цих років TPC є шедевром інженерії програмного забезпечення. Це найбільш компактний і найшвидший власний код (починаючи з певних версій і оптимізуючи) компілятор, який я коли-небудь бачив. У IDE Borland Pascal по суті не було "компіляції". Ви змінили свій код, натиснули F9 і спостерігали, як програма працює відразу, і це було на машині 8 МГц або 12 МГц. Пізніше TPC перетворився в Delphi, потім Хейльсберг приєднався до Microsoft і був співавтором C #.

Я хотів би поглянути на джерела попередніх версій TPC, але, на жаль, незважаючи на численні запити, Borland їх ніколи не відкривав.

Укладач Хейлсберга надихнув цю книгу: Ніклаус Вірт, Алгоритми + Структури даних = Програми


У Delphi все ще є дійсно швидкий компілятор. Я думаю, що тому воно не вдається з підтримкою зміни та продовження.
Joeri Sebrechts

6

Мій керівник з навчання в Gemplus (тепер Gemalto) написав першого перекладача JavaCard та ОС під час власного 3-місячного студентського періоду навчання. Він вручну виготовив код із специфікації. Щоб створити версію 2, Gemplus створив команду для чоловіків 30+ без хлопця, який працював більше року. Коли закінчили, але не змогли отримати гідну роботу, вони покликали його на допомогу, і через кілька днів він і його колега вказали на десятки вузьких місць.

Java Card - це підмножина Java, призначена для роботи на дуже маленьких пристроях. Його реалізація проходила на смарт-картах, які мають тактову частоту декількох МГц і 2 або 3 КБ оперативної пам’яті.

Просто для розваги: ​​ще одним його особистим повсякденним подвигом було занурення в робочий транс, відповідаючи на жодне з питань, на які ми стажисти кричали в кімнаті, а потім, несподівано через 2 години, знову вискочив живий, коли його робота була виконана і відповідала на 5 або 10 питання поспіль.


1
Я думаю, що я перекрив 200-річну річ ... Я не можу згадати занадто добре, це було більше 10 років тому. Я все-таки надіслав йому це питання!
Габріель

1
Чорт, цей хлопець повинен бути кіборгом ..
mlvljr

Правильно, їм було 30+ (=
Габріель

5

Я пам’ятаю це дуже чітко; у середній школі однокласник зашифрував повноцінну водійську відеоігру за пару уроків із QB45 (Quick Basic 4.5). Вертикальна прокрутка, секундомір, життя, рівні; Я був абсолютно шокований.


1
Я бачив хлопця, що робить це з текстовою пригодницькою грою в Ліспі. Не вражаючий сам по собі, але в той час, коли він це зробив у ... ух.
Майкл К

5

Git та / або Linux

Лінус Торвальдс написав ядро ​​операційної системи та систему управління версіями з нуля. Я не знаю нікого з подібною продуктивністю.


16
Популярний як Linux, легко переоцінити труднощі та / або оригінальність. Це майже повністю клон існуючої системи. У порівнянні з (на один очевидний приклад) Дейв Катлер написав RSX / 11, VMS та Windows NT з нуля, кожен новий та унікальний твір (і для тих, хто дбає, файлова система VMS включала контроль версій) Linus hasn ' т навіть не потрапив на карту ще.
Джеррі Труну

1
Кудо для VMS, але з тими ж міркуваннями вам доведеться знижувати NT. У Вікіпедії сказано, що "[...] на чолі з Дейвом Катлером для створення Windows NT, і багато елементів дизайну відображають попередній досвід DEC з VMS та RSX-11 Cutler." У будь-якому випадку, я вважаю, що Git вражає.
LennyProgrammers

@ Lenny222: хоча це, безумовно, правда, що ви можете знайти істотну схожість між VMS та Windows NT, це навіть не близький до того, що це клон, як Linux. Я теж дуже думаю про Git - але якби він не існував, я можу придумати принаймні двох-трьох інших, які б добре працювали на його місці.
Джеррі Труну

5
Невже Лінус не працював один на Linux протягом місяця або близько того, а потім перетворив це на дуже успішний проект спільноти? Дійсно велика робота, але я б не класифікував її як індивідуальний подвиг програмування, а як дуже вдалий спільний проект з відкритим кодом.
Девід Рейс

1
Я думаю, що тут ми добираємося - це той факт, що зараз у нас є користувачі X, які вдома використовують Linux, ... я думаю, у вас вдома є вікно VMS? Зрозумійте, що це був не один твір одного автора ... навпаки, якби він цього не зробив, чи були критично вишиковані ті, хто це робив замість цього?
RobotHumans

5

Річард М Сталлман приходить до мене в голові. Цей чоловік почав дарувати життя GNU Emacs, GCC, GDB та багатьом іншим помітним програмам. Він навіть продовжував автор оригіналу GPL. Я чув, як про нього говорять, він заходить на печеру протягом 18 місяців і повертається з понад 150 000 рядків коду, які роблять компілятор C GCC набір. Ці 150 000 LOC пізніше віддали грядку на г ++. З його власних слів, Emacs почав працювати як текстовий редактор, потім це стало способом життя, і тепер це релігія для деяких із нас. Навіть сьогодні принципи дизайну Emacs використовуються у багатьох успішних програмах.

Система TeX Дональда Е Кнута - це ще одна програма, яка спадає на думку, коли думаєш про дивовижні програми.


Спробуйте прочитати TeXbook. Це не для простих смертних.

Авторство GPL - не вражаючий подвиг. Це було б так, як зараховувати себе Singletons.
DeadMG

4

У моєму класі ступінь мій однокласник створив ОС (хоч і дуже основну, але вона завантажилася з дискети і зробила необхідні процедури) як проектну вимогу менше ніж за 30 днів. Тривалість включає як необхідне читання / дослідження, так і фактичне кодування.

Я пам’ятаю, що хлопці списків розсилки os.com відштовхували його, кажучи, що він цього не зробить протягом декількох днів, і я також бачив, як він ходив по гуртожитку о 5 годині ранку в напівсвідомому стані, розмовляючи по-доброму. :-)

Він дивовижний програміст.


4

Я не збирався нічого говорити, але хтось заграв "Рубі - подвиг", так

Джон Маккарті з оригінальними РЕКУРСИВНИМИ ФУНКЦІЯМИ СИМВОЛІЧНИХ ВИРАЗІВ І ЇХ КОМП'ЮТЕРАЦІЇ МАШИНОЮ , тобто з документом, в якому він визначив Ліспа ще в 1960 році, коли це ifбула концепція, про яку люди тільки починали серйозно думати. Поговоріть про випередження свого часу.


приємна довідка. Я був тим, хто обтягував рубіном, для елегантності над умовністю. це теж достроково
RobotHumans

1
Маккарті зробив математичну статтю. Лише пізніше було встановлено, що він може бути перетворений у фактичний код.

1
@ Thorbjørn Ravn Andersen - Я обережно використовував "визначений", а не "реалізований".
Inaimathi

@Thor Це дещо як заперечення Артура Кларка кредиту за виявлення (або винайдення) кругової геосинхронної орбіти просто тому, що він не міг створити ракету, щоб поставити туди супутник, або тому, що технології ще не існували.
Марк C

4

Компілятор Symantec / Zortec C ++ Walter Bright в курсі компіляторів, реалізованих величезними командами програмістів. Пізніше його проектування та реалізація Д.




0

8-бітний програміст відеоігор на комп’ютері з 80-х (тобто: Commodore 64), деякі досить непогані ігри були машинною мовою, і їх розмір часто був меншим, ніж растровий малюнок для піктограми Windows ;-) Оптимізація на найкращому рівні

Geos (ОС WYSIWYG для Commdore 64) був дуже вражаючим для свого часу


-2

Я не впевнений, що це насправді рахується ... але хлопець, який розробив рубін. Я просто не можу оминути елегантність мови. І я вважаю, що це була перша мова, яка підтримала динамічний набір тексту, хоча я не той хлопець, який почав з пунш-карт і писати збірку, щоб я міг помилитися.


3
Це була не перша мова з динамічним набором тексту, і ні, ви не повинні почати з пунш-карт, щоб це знати.
Яс

-3

Девід Хайнмейер Хансон створює Рейки.

Перший раз, коли я встановив Rails і встановив тестовий сайт проти бази даних, і він робив усі рамки та CRUD речі автоматично, налаштовував тестовий сайт, і це було так, як мої очі вперше були відкриті до того, що можна зробити перед тобою почати програмування. Це було дуже вражаюче, і з того часу я бачив ідеї, що з'являються в інших місцях на інших мовах / платформах.


Як це подвиг програмування?
Девід Рейс

той факт, що він робить хорошу роботу в складанні таблиць з простим має, належить, habtm ... далі він абстрагує підключення до бази даних в структурі db агностиків, де це майже здається магічним, і все, що вам потрібно зробити, - це рейки нові -d (dbtype) пакетний генератор генерує та грабує db: create db: migrate set set. Генерувати ешафот для базової роботи, це добре. схоже, що хтось не любить рубіни / рейки, тому що вони доволі важко зводяться, коли були нові підходи до елегантності щодо конвенції
RobotHumans

після деяких роздумів, я думаю, це тому, що нас вразила художня природа речі на відміну від технічної майстерності
RobotHumans

Це був зовсім інший спосіб мислення - зробити все повністю орієнтованим на те, що було б ідеально, а не на те, що було достатньо. Це було схоже на те, що всі ми веб-розробники їхали навколо в моделях T fords і раптом з'являється рейка, і це сучасний BMW. Це була велика зміна простоти та зручності в користуванні з точки зору розробників як користувачів, і я бачив так багато інших платформ, побудованих на цих ідеях за останні роки.
Гленатрон

1
Досить справедливо, але зауважте, що у вашому питанні не згадується ім'я хлопця, що він робив, коли робив це і т. Д. У ньому просто сказано: "Рубі приємно". Ну, цуценята теж хороші, але це не відповідь на це питання.
Девід Рейс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.