|

Недавно один из разработчиков Microsoft объяснил, почему замечательную игру Pinball не включили в состав Windows Vista. Раньше ходили слухи, что это было сделано "по юридическим причинам". Ан нет, причины оказались сугубо технические. Оказывается, Pinball просто не смогли портировать на 64-битную платформу.
В процессе разработки Windows Vista пришлось портировать на 64-битную архитектуру миллионы строк кода, в том числе созданного 20 лет назад сторонними разработчиками. Иногда возникали проблемы. С упомянутым пинболлом возникла конкретная проблема: шарик не отражался от препятствий, а проходил сквозь них. Например, с самого начала игры, когда шарик подавался на пусковую пружинку, он просто медленно проходил сквозь неё и исчезал. ;) Вот что пишет оный разработчик M$:
Двое из нас попытались отладить программу и выяснить причину, но этот код был написан несколькими годами ранее сторонней компанией, и никто в Microsoft никогда не понимал, как он работает (ещё меньше до сих пор это понимают), и большая часть кода была полностью без комментариев. Поэтому мы просто не могли понять, почему детектор столкновений не работает. Чёрт, мы даже не смогли найти детектор столкновений!
Ещё нужно было портировать несколько миллионов строк кода, так что мы не могли позволить себе потратить несколько дней на поиск, где спрятана какая-нибудь ошибка округления с плавающей запятой, из-за которой детектор столкновений не работает. Мы просто приняли волевое решение исключить Pinball из продукта.
Кстати, Пинбол для MS написала фирма Maxis (да-да, те самые, что создали Sims и Sim City), которая является дочкой Electronic Arts.
И как всё круто у Майкрософт в Windows Store: Пинбол — 123 МБ, Сапёр — 103 МБ, Маджонг — 119 МБ, Пасьянсы — 92 МБ. А я ведь помню, что в 80-е годы подобные игры запросто умещались в 40 килобайт вместе со спрайтами.
Ну и для понимающих - повод поржать:
Заметьте - это книжка самой Микрософт Пресс. То есть они кагбэ в курсе насчет реальности 64-битности своих виндов. И о том, что 32-битный софт там прекрасно работает - тоже в курсе. В той же Win7 x64/2008R2 есть даже две версии IE — x32 и x64. И обе работают. И вообще даже в семёрке достаточно много приложений остались 32-битными. То есть отмаза мелкомягких разработчиков о портировании кода в 64-битный для Висты - не канает. Там явно проблема куда глубже - из-за переделки 32-битных библиотек там дохрена ошибок, из-за ошибок библиотек Пинболл перестал работать, а понять, где ошибки в библиотеках - программеры M$ не смогли. Хотели переписать код Пинбола в 64 бит - не смогли понять и его.
Кстати, MS IE для мелкомягких индусами написан. Как и многое-многое другое. Тоже "сторонний код", в котором "никто в Microsoft никогда не понимал, как он работает".
В общем, оказывается, все легенды от М$ и Максис — про кодеров-суперпрофи, комментированный код, описанный дизайн, спроектированные интерфейсы - всё врака.
А правда вот в этом тексте от автора оного пинбола:
Ah, the quantum tunneling pinball!
We ran into this while writing the original code at Cinematronics in 1994. Since the ball motion, physics, and coordinates were all in floating point, and the ball is constantly being pushed «down» the sloped table by the gravity vector in every frame, we found that floating point error would gradually accumulate until the ball's position was suddenly on the other side of the barrier!
(To simplify collision detection, the ball was reduced to a single point/vector and all barriers were inflated by the ball radius. So, if the mathematical point got too «close» to the mathematical line barrier, a tiny amount of floating point rounding or truncation error could push the point to the other side of the line)
To mitigate that, we added a tiny amount of extra bounce to push the ball away from the barrier when it was nearly at rest, to keep the floating point error accumulation at bay. This became known as the Brownian Motion solution.
Разумеется, ничего сложного в нахождении детектора коллизий там нет. И не в ошибке округления плавающей запятой там проблема - разработчик элегантно решил проблему накопления ошибки округления координат, отбрасывая шарик заранее, до точного "контакта" со стенкой. Да и шарик у них не шарик, а математическая точка с массой и векторами - а чтобы картинка была правдоподобной, все препятствия раздуты в размерах на радиус "шарика".
Короче, проблема была лишь в том, что разработчики и "эксперты" M$ - тупые дебилы. Как и подавляющее большинство нынешних американских разработчиков. Они на самом деле давно ничего не разрабатывают, а просто заказывают модули на стороне - в Индии, в Китае и т.д. Это так для софта, это точно так же для железа. Им сдают модули по спецификации - и они ставят их в продукт, ни секунды не понимая, как они вообще устроены и работают. Это уровень папуасов - "нажми на кнопку, получишь результат". Поэтому когда им всё-таки приходится всмотреться во внутренности устройства, чтобы что-то там поправить - у них рожи как у блондинки, увидевшей открытый компьютер. "Ой, а что это такое за верёвочки и круглые штучки?"
Не верите? Типичная строчка кода на С++ из исходника ядра Windows XP выглядит вот так:
int magic_number8640 = 8640 //magic number
Причем на самом деле это константа, имеющая простой физический смысл (число десятков секунд в сутках). Но и название переменной, и комментарий - сделаны такие, что никак смысл не раскрывают. "Волшебный номер", хрен ли. Более того - сам "комментарий" сгенерен автоматической утилитой и ничего не поясняет, он нужен только для того, чтобы исходный текст прошел через столь же автоматический валидатор (проверяющий количество комментариев в исходниках). Другими словами - разработчик нагенерил псевдокомментариев, проверяющий столь же механически проверил наличие комментариев утилитой, а в смысл никто не вникал, более того - сначала никто вообще глазами этот исходник не смотрел ("работает и ладно"), а когда стали смотреть - никто уже не понимал, что это за "волшебный номер" и почему он 8640 а не 8756.
И вот на таких "разработчиков" Медведев ездил смотреть в Кремниевую Долину. И для таких, как они, придумал замутить Сколково - думая, что они двигают прогресс. А они просто перепродают продукты чужого интеллекта - это такие же торгаши, как те, что сидят в лабазах и продают технику, ничего в ней не понимая. Торгаш не может двигать прогресс - он вообще ничего не создает, только барыжит чужое.
Вот такой вот нынче на Западе "хайтек". Постиндустриальный постмодерн.
Барыга, прикинувшийся создателем.
Отсюда и специфичный "технический прогресс" в США. Нужен элементарный БТР для армии - сами разработать не могут, берут швейцарскую "Пиранью" образца конца 60-х годов, называют "Страйкер" и впаривают как новейшую разработку General Motors. Нужен автомат вместо древнего М16 - заказывают немцам из Heckler Und Koch. Нужен двигатель для ракеты - покупают у русских.
А знаете, почему истребитель F-35 уже превысил бюджеты разработки чуть ли не в десять раз, и при том сорвал все сроки готовности? Так в кооперации только по планеру задействованы Локхид, Нортроп, БАЕ системз и Фоккер. Плюс над двигателями колдовали Pratt & Whitney, Rolls-Royce, Allison и British Aerospace (BAE). Так что ничего удивительного, что этот зоопарк еле-еле взлетает. Вы вдумайтесь - Локхид сам не в состоянии сделать планер самолета, он перезаказывает части еще у трёх разработчиков, а те - будьте уверены - перезаказывают разработки еще на стороне, от русских до китайцев. То есть у тех, кто реально умеет это делать. Ну и картина такая - если раньше что-то можно было заказать задешево, то теперь и разрабы знают себе цену, и посредники аппетиты увеличили. Отсюда рост бюджетов и падение качества разработки.
А потом с удивлением обнаруживается, что в блоках управления для F-35, поставленных англичанами из BAE Systems, стоят не просто китайские микросхемы, а еще и б-у китайские микросхемы, выпаянные из старых плат. Да никто же туда внутрь просто не смотрел - ни англичане, ни пиндосы, пока самолет не грохнулся.
Точно как с пинболом в винде. "Сторонний код", ага.
Автор - Observer специально для takie.org
|
Комментарии
"Вот такой вот нынче на Западе "хайтек". Постиндустриальный постмодерн. Барыга, прикинувшийся создателем.
Отсюда и специфичный "технический прогресс" в США. Нужен элементарный БТР для армии - сами разработать не могут, берут швейцарскую "Пиранью" образца конца 60-х годов, называют "Страйкер" и впаривают как новейшую разработку General Motors. Нужен автомат вместо древнего М16 - заказывают немцам из Heckler Und Koch. Нужен двигатель для ракеты - покупают у русских. "
"А потом с удивлением обнаруживается, что в блоках управления для F-35, поставленных англичанами из BAE Systems, стоят не просто китайские микросхемы, а еще и б-у китайские микросхемы, выпаянные из старых плат. Да никто же туда внутрь просто не смотрел - ни англичане, ни пиндосы, пока самолет не грохнулся.
Точно как с пинболом в винде."
" "Сторонний код", ага."
Утешает, что киборги, которые призваны заместить армию ввиду её небесного цвета, тоже окажутся относительно мирными и безобидными.