Пенсиониран софтуерен инженер на име Мартин К. Мартин съобщи, че наскоро е открил грешка в кода на оригиналната компютърна игра Lunar Lander, докато се е занимавал със софтуера. Създадена от 17-годишния гимназист Джим Сторър през 1969 г., тази "древна" игра представя действието само като текстови актуализации на състоянието на телетайп, но поставя началото на бъдещите версии.
Легендарната игра, която Сторър разработва на миникомпютър PDP-8 на езика за програмиране FOCAL само няколко месеца след историческата разходка на Нийл Армстронг и Бъз Олдрин по Луната, позволява на играчите да управляват спускането на лунен модул на повърхността на Луната. Играчите трябва внимателно да управляват разхода на гориво, за да постигнат плавно кацане, като вземат критични решения на всеки десет секунди, за да изразходват точното количество гориво.
Обратно към 2024 г., когато Мартин - експерт по изкуствен интелект, разработчик на игри и бивш постдокторант в Масачузетския технологичен институт - се натъква на грешка в кода на Сторър от гимназията, докато изследва оптималната според него стратегия за приземяване на модула с максимална горивна ефективност - техника, известна сред ентусиастите на Kerbal Space Program като "самоубийствено изгаряне". Този метод включва свободно падане, за да се набере скорост, и след това запалване на двигателите в последния възможен момент, за да се забави достатъчно, за да се приземи безопасно. Той изпробва и друг подход - по-деликатно кацане.
"Наскоро проучих оптималния график за изгаряне на горивото, за да кацна възможно най-леко и с максимален остатък от горивото", пише Мартин в блога си. "Изненадващо, теоретично най-добрата стратегия не проработи. Играта погрешно смята, че спускаемият модул не каца на повърхността, а всъщност го прави. Вниквайки в играта, бях изумен от сложната физика и изчисленията в нея. В крайна сметка открих грешката: липсващо "деление на две", което сякаш беше останало незабелязано в продължение на почти 55 години".
Въпреки че приложи стратегията за кацане, която би трябвало да е като от учебник, Мартин установява, че играта непоследователно съобщава, че спускаемият апарат е пропуснал изцяло повърхността на Луната. Заинтригуван от тази аномалия, Мартин се зарови в изходния код на играта и откри, че алгоритъмът за кацане се основава на изключително сложна за времето си физика, включително уравнението на ракетата на Циолковски и разширение на редицата на Тейлър.
Както става ясно, проблемът се е състоял в прост изчислителен пропуск - липсващо деление на две във формулата, използвана за изчисляване на траекторията на спускаемия модул. Тази на пръв поглед дребна грешка имаше големи последствия, тъй като симулацията подцени времето, докато спускаемият модул достигне най-ниската точка на траекторията си, и неправилно изчисли кацането.
Въпреки грешката Мартин е впечатлен, че Сторър, който тогава е ученик в гимназията, успява да включи напреднали математически концепции в играта си - постижение, което остава впечатляващо дори по днешните стандарти. Мартин се свързва със самия Сторър и авторът на Lunar Lander разказва на Мартин, че баща му е бил физик, който му е помогнал да изведе уравненията, използвани в симулацията на играта.
Въпреки че хората са играли и са се наслаждавали на играта на Сторър в продължение на години с наличието на грешката, това показва, че реализмът невинаги е най-важната част от едно завладяващо интерактивно преживяване.
Снимка: Unsplash
Виж още: Microsoft направи Recall в незадължителна функция на компютрите с Copilot+ заради опасенията