Какой самый впечатляющий программный подвиг вы когда-либо видели? [закрыто]

26

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

Вы можете определить впечатляющие по:

  1. Объем поставленной задачи, например, Джон в одиночку разработал основу для своей компании, работу, сопоставимую по масштабам с тем, что делали другие 200 занятых.

  2. Скорость, например, Stu запрограммировал всю ОС для многозадачных приложений в режиме реального времени на неделю, включая собственный компилятор C и инструменты командной строки оболочки

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

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

Очевидно, что чем больше этих характеристик объединено, и чем более экстремальна каждая из них, тем более впечатляющим является подвиг.

Итак, дайте мне это. Какой самый нелепый подвиг ты можешь рассказать? Пожалуйста, предоставьте как можно больше подробностей и постарайтесь избежать городских легенд или преувеличений. Размещайте только то, за что вы действительно можете поручиться.

Бонусные вопросы:

  1. Был ли геркулесовый задание одним из них, или человек регулярно поражал людей?
  2. Как вы объясните такие впечатляющие показатели?
  3. Как программист был признан за такую ​​потрясающую работу?
Дэвид Рейс
источник
5
Однажды я видел парня, жим 2 KLocs ... (извините, не смог устоять)
DevSolo
«Скорость, например, Stu запрограммировал целую ОС для многозадачных приложений в реальном времени на недельном компьютере, включая собственный компилятор C и инструменты командной строки оболочки», - может быть, вы захотите сохранить это реальностью.
Jas
Судя по ответам, некоторые люди легко впечатляются. Я сделал кучу «подвигов», перечисленных здесь.
Стивен Эверс
Хм, я думал о том, чтобы чуть ли не дублировать эту игру ровно вчера;) Большое спасибо, что спросили!
mlvljr
@DevSolo Эй, если речь идет о перфокартах или рулонной бумаге, это может быть физическим подвигом.
Марк С

Ответы:

39

Хотя я не могу официально подтвердить это, меня всегда впечатлял Крис Сойер, который почти полностью разработал Rollercoaster Tycoon на ассемблере.

sglantz
источник
4
это безумие!!!
Нанда
1
-.- +27 за то, что мы уже дважды обсуждали на этом сайте.
Марк С
31

Быстрый обратный квадратный корень . Как кто-то может придумать что-то подобное, совершенно вне меня.

Joonas Pulakka
источник
1
Хм ... Это может быть (очень) умно, но это как 6 строк кода и только крошечный строительный блок гораздо более крупного приложения. Я не понимаю, насколько это экстремально ни в одном из перечисленных мною измерений.
Дэвид Рейс
11
Дэвид Рейс, это, скорее всего, гениальная оптимизация критического узкого места. Не путайте количество строк с объемом работы, необходимым для их написания.
2
@ Дэвид, я не знаю, почему ты настаиваешь на том, что умения программирования должны были быть сделаны за очень короткое время, чтобы быть подвигом?
2
Да, что является большим подвигом: 600 строк кода, написанных за один день, против 6 строк кода, созданных за 100 дней, если оба делают эквивалентные вещи? Я думаю, что это последнее, но ваш пробег может отличаться.
Joonas Pulakka
6
@ Дэвид, я не согласен, что любая проблема может быть решена в бесконечное время. Вы можете прочитать joelonsoftware.com/articles/HighNotes.html . «Настоящая проблема с использованием множества посредственных программистов вместо нескольких хороших заключается в том, что независимо от того, как долго они работают, они никогда не производят что-то столь же хорошее, как то, что могут создать великие программисты».
16

Ранние аркадные игры.

Полностью ограничен памятью, вычислительной мощностью, I / O ...

То, что эти программисты достигли в этой среде, было удивительно.

Например, Пакман - Отлично. По-прежнему можно играть после всех этих лет.

Конор
источник
2
Пакман очень классно не идеален. Сильно глючит, когда счетчик уровня переполняет один байт. ;)
Мейсон Уилер
Превосходно! Согласно Википедии: «У Pac-Man есть известный экран уничтожения, часто называемый экраном« Бомба Pac-Man ». Счетчик уровня игры представлял собой один 8-битный байт и поэтому мог хранить только 256 различных значений (0–255)». Достижение 256-го уровня приводит к тому, что счетчик, который используется при рисовании фруктов, переполняется до нуля, что приводит к вытягиванию 256 фруктов и семи пустых мест. Однако его можно исправить с помощью заплатки ».
Конор
1
Ранние космические шаттлы возможно ???
Работа
Г-жа Пак-Ман была намного выше
Тим Гудман
1
@ Мейсон, ты можешь даже надеть его на футболку! errorwear.com/shirt-pacman.php
15

Есть один программист, на котором я работаю, который делал следующее более одного раза.

Самым последним примером был проект в нашей группе, который был назначен на 3 человека. Это было сложное LOB-приложение с 6-месячным графиком (это был чрезвычайно агрессивный график).

Началось недельное кодирование: 1 из 3 человек ушел (по личным причинам), а другой ушел в медицинский отпуск. Одинокий оставшийся программист пошел домой, чтобы начать программирование, и вернулся через 3 месяца с заполненным заявлением.

РЕДАКТИРОВАТЬ

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

Вальтер
источник
Он / она должен был потратить 100 + часов рабочих недель, чтобы осуществить этот подвиг. Могу поспорить, что он / она прошел через тонну кофеина.
Али
3
Мифический месяц человека в действии. Снимите 2 человек с проекта == вдвое! Хотя есть некоторый смысл, что один сосредоточенный разработчик может сделать все быстрее, чем пытаться координировать 3 человек.
CodexArcanum
Если этот человек когда-либо уйдет из компании в плохих условиях (без периода обмена знаниями), у компании будут большие проблемы ...
Onion-Knight
3
@bjarkef - код на высшем уровне. Этот кодер является лучшим программистом нашей компании, и очень короткие сроки не снижают нормальное качество, которое мы обычно получаем от него.
Уолтер
1
@ Вальтер, вы не можете дать точную оценку, пока вы на самом деле не сделаете это, что противоречит тому, когда вам нужно число. Это делает оценки восточными, когда вы выполнили задание ранее, и трудными, когда оно вам неизвестно. Пока вы не недооцениваете клиента, будете рады, что он оказался дешевле, чем ожидалось.
13

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

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

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

Стив исключил это оборудование, разработав программное обеспечение для кодирования данных таким образом, чтобы вы могли начать чтение с произвольного места на диске и не только декодировать сами данные, но и выяснить, где (логически) на дорожке вы были. Дисковод Disk II не имел настройки светодиода / фотодатчика и полностью игнорировал отверстия в гибком диске.

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

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

Когда он вернулся, у него была написана, отлажена и работала HPFS - полностью на языке ассемблера Intel 386. Написанный им код в конечном итоге был продан как «HPFS386», который был эксклюзивным (по крайней мере, в то время) для LAN Manager Edition OS / 2. Затем другая команда потратила около шести месяцев на написание версии на C, которая стала «нормальной» HPFS, включенной в обычные выпуски OS / 2 (и после распада IBM и MS, IBM обновила и перекомпилировала код C, чтобы получить их "HPFS386"). Хотя он был изменен и обновлен с тех пор, если бы вы были честны в отношении вещей, NTFS, вероятно, назвали бы «HPFS 2.0» (или, возможно, 3.0) - нет сомнений, что лучшая текущая файловая система Microsoft по-прежнему тесно связана с тем, что он разработал.

Берроуз ленты B220

Они воплотили (по крайней мере IMO) реальные начала объектно-ориентированного программирования. В тех случаях, когда ленты IBM (для одного примера) имели «метки», указывающие на формат данных на ленте, ленты Берроуза разработали соглашение (я не думаю, что кто-то наверняка знает, кто его начал) о введении небольшого набора процедур лента, которая будет понимать данные и как они были отформатированы, чтобы вы могли правильно манипулировать данными, не зная деталей того, как они были отформатированы. Другими словами, первые несколько «блоков» на ленте были в основном vtable в сохраненном виде. Вы в основном читали vtable в память, а затем использовали методы, которые он определил, для манипулирования данными на остальной части ленты. Все очень аккуратно и просто (если только немного меньше, чем полностью портативный).

Джерри Гроб
источник
11

Джон Кармак регулярно впечатляет меня своими подвигами эпического программирования. Согласно одной истории, ему было скучно в его гостиничном номере, поэтому он написал на своем ноутбуке движок освещения Doom 3 на выходных.

CodexArcanum
источник
2
Жаль, что он не написал настоящую игру, чтобы пойти с ней.
DeadMG
10

Несмотря на сомнительную цель, я все еще в восторге от пользовательского скрипта с капч-решателем для MegaUpload . Это сценарий GreaseMonkey, написанный на JavaScript, с растровым декодером и нейронной сетью, которая распознает буквы на изображении капчи, и я повторяю, все это сделано с использованием JavaScript.

teukkam
источник
1
Что-то, чтобы показать следующему человеку, который стонет вам о неспособности сделать хорошую работу из-за ограничений, наложенных на них.
Джон Хопкинс
10

Мигель де Иказа - проект Mono.

(Он также невероятно забавный, остроумный и интересный - по крайней мере, после краткого разговора, который я видел, что он дал, и в прослушивании некоторых интервью подкаста)

Тим
источник
+1 Парень, очевидно, близнецы или, может быть, тройняшки, все идут под его именем. Невозможно, чтобы один человек был вовлечен во все то, что он есть, и на таком детальном уровне.
Дэн Розенстарк
8

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

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

Компилятор Хейлсберга был вдохновлен этой книгой: Никлаус Вирт, Алгоритмы + Структуры данных = Программы

mojuba
источник
В Delphi все еще есть очень быстрый компилятор. Я думаю, именно поэтому это обходится без поддержки модификации и продолжения.
Джори Себрехтс
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). Вертикальная прокрутка, секундомер, лайф, уровни; Я был полностью шокирован.

systempuntoout
источник
1
Я видел, как парень делал это с текстовой приключенческой игрой в Лиспе. Не впечатляет само по себе, но в то время, когда он сделал это в ... вау.
Майкл К
5

Git и / или Linux

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

LennyProgrammers
источник
16
Популярный, как Linux, легко преодолеть сложность и / или оригинальность. Это почти полностью клон существующей системы. По сравнению с (для одного очевидного примера) Дейвом Катлером, написавшим RSX / 11, VMS и Windows NT с нуля, каждая новая и уникальная работа (и, для тех, кому небезразлично, файловая система VMS включала контроль версий), Линус не имеет Я даже не попал на карту.
Джерри Гроб
1
Престижность для VMS, но с той же аргументацией вы должны сделать скидку на NT. Википедия говорит, что «[...] во главе с Дейвом Катлером была создана Windows NT, и многие элементы дизайна отражают более ранний опыт DEC с VMS и RSX-11 Катлера». Во всяком случае, я нахожу Git впечатляющим.
LennyProgrammers
@ Lenny222: хотя, безусловно, вы можете найти существенное сходство между VMS и Windows NT, это даже близко не клон, как в Linux. Я тоже очень хорошо отношусь к Git - но если бы его не было, я бы мог подумать, по крайней мере, о двух или трех других, которые бы отлично работали на его месте.
Джерри Гроб
5
Разве Линус не работал один под Linux в течение месяца или около того, а затем превратил его в очень успешный проект сообщества? Действительно, большая работа, но я бы не относился к ней как к индивидуальному подвигу программирования, а скорее как к очень успешному совместному проекту с открытым исходным кодом.
Дэвид Рейс
1
Я думаю, что мы имеем в виду тот факт, что теперь у нас есть пользователи X, использующие Linux дома ... Я полагаю, у вас есть VMS-бокс в вашем доме? Да, это была не единственная работа от одного автора ... и наоборот, если бы он этого не сделал, были ли те, кто критичен, сделать это вместо этого?
RobotHumans
5

Ричард М Столлман приходит мне на ум. Этот человек начал давать жизнь GNU Emacs, GCC, GDB и многим другим известным программам. Он даже стал автором оригинальной GPL. Я слышал, как он говорил, что он идет в пещеру на 18 месяцев и возвращается с более чем 150 000 строк кода, которые составляют компилятор Си из набора GCC. Эти 150 000 LOC позже дали скалу для g ++. По его собственным словам, Emacs начинал как текстовый редактор, затем он стал образом жизни, и теперь это религия для некоторых из нас. Даже сегодня принципы дизайна Emacs используются во многих успешных программах.

Система TeX Дональда Кнута - это еще одна программа, которая приходит в голову, думая о чудесах программирования.

vpit3833
источник
Вы должны попробовать Чтение TeXbook. Это не для простых смертных.
Создание GPL не является впечатляющим подвигом. Это было бы как приписать себя синглетам.
DeadMG
4

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

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

Он отличный программист.

Кристи Джон
источник
4

Я не собирался ничего говорить, но кто-то сказал: «Руби - это подвиг», так что

Джон Маккарти с оригинальными рекурсивными функциями символьных выражений и их вычислений на машине , т. Е. В статье, в которой он определил Лисп еще в 1960 году, когда ifэта концепция только начинала всерьез задумываться. Разговор о том, чтобы опередить свое время.

Inaimathi
источник
хорошая ссылка. я был тем, кто напичкан рубином, для элегантности над соглашением. это также раньше времени
RobotHumans
1
Маккарти сделал математическую статью. Только позже было обнаружено, что он может быть преобразован в реальный код.
1
@ Thorbjørn Ravn Andersen - я осторожно использовал «определено», а не «реализовано».
Инамати
@Thor Это похоже на отказ Артура Кларка за открытие (или изобретение) круговой геосинхронной орбиты просто потому, что он не мог построить ракету для размещения спутника или потому, что технология еще не существовала.
Марк С
4

Компилятор Вальтера Брайта Symantec / Zortec C ++ идет в ногу с компиляторами, реализованными огромными командами программистов. Позже его дизайн и реализация Д.

dsimcha
источник
0

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

Geos (ОС WYSIWYG для Commdore 64) была очень впечатляющей для своего времени

Chipster
источник
-2

Я не уверен, что это действительно важно ... но парень, который разработал рубин. Я просто не могу пройти мимо элегантности языка. И я считаю, что это был первый язык, поддерживающий динамическую типизацию, хотя я не тот, кто начинал с перфокарт и написания ассемблера, поэтому я мог ошибиться.

RobotHumans
источник
3
Это был не первый язык с динамической типизацией, и нет, вам не следовало начинать с перфокарт, чтобы знать это.
Jas
-3

Дэвид Хайнмайер Ханссон создает Rails.

В первый раз, когда я установил Rails и настроил тестовый сайт для базы данных, и он автоматически выполнил все фреймворки и CRUD, настроил тестовый сайт, и я впервые увидел, что можно сделать перед вами. начать программирование. Это было действительно впечатляюще, и с тех пор я видел идеи, появляющиеся повсеместно на других языках / платформах.

glenatron
источник
Как это подвиг программирования?
Дэвид Рейс
тот факт, что он хорошо справляется с разметкой таблиц с простыми значениями, относится к habtm ... далее он абстрагирует соединение с базой данных в независимую от dB классовую структуру, где это почти кажется магией, и все, что вам нужно сделать, - это создать новые -d (dbtype) bundler генерирует и набирает набор команд db: create db: migrate. Генерация скаффолда для базы хороша. похоже, что кому-то не нравятся рубины / рельсы, так как за них довольно сильно отказываются, когда они были новыми подходами к элегантности по сравнению с конвенцией
RobotHumans
после некоторого размышления, я думаю, это потому, что мы были впечатлены художественной природой вещи в противоположность техническому мастерству
RobotHumans
Это был совершенно другой способ мышления - сделать все полностью ориентированным на то, что было бы идеальным, а не на то, что было достаточно. Казалось, что все мы, веб-разработчики, ездили в бродах Model T, и вдруг появились рельсы, и это современный BMW. Это было огромное изменение в простоте и удобстве использования для разработчиков как пользователей, и за эти годы я видел много других платформ, построенных на этих идеях.
Гленатрон
1
Справедливо, но обратите внимание, что в вашем вопросе не упоминается имя парня, что он сделал, когда он это сделал и т. Д. Он просто говорит: «Руби хорош». Ну, щенки тоже хороши, но это не ответ на этот вопрос.
Дэвид Рейс