?

Log in

No account? Create an account
junk dna (программистское) - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

junk dna (программистское) [май. 29, 2010|08:36 pm]
Anatoly Vorobey
Замечательный образ в записи Реймонда Чена:
MS-DOS is perhaps one of the strongest examples of requiring absolute unyielding backward compatibility. Hundreds if not thousands of programs scanned memory looking for specific byte sequences inside MS-DOS so it could patch them or hunted around inside MS-DOS's internal state variables so it could modify them. If you move one thing out of place, those programs stop working.

MS-DOS contains chunks of "junk DNA", code fragments which do nothing but waste space, but which exist so that programs which go scanning through memory looking for specific byte sequences will find them. (This principle is not dead; there's even some junk DNA in Explorer.)
Я не знал об этом. Я знал, что DOS и Windows проводили политику фанатичной совместимости с предыдущими версиями. Я знал, что во всех версиях Windows хранится и пополняется список "совместимых программ": когда Windows распознает, что бежит такая программа, она специально возвращает ей нестандартные результаты на определенные системные вызовы - потому что такие результаты возвращала какая-то прошлая версия, и данная программа этим пользуется, хоть они и были недокументированы.

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

Когда очередные победители будут в очередной раз писать историю первых десятилетий персональных компьютеров, давайте и это вспомним. Уверенная победа Майкрософта была обусловлена многими причинами: глупыми поступками IBM, недальновидностью Apple, агрессивной тактикой самого Майкрософта по экслюзивным сделкам с OEM... но еще и героическими усилиями во имя совместимости старых приложений с новыми версиями ОС и даже с новыми ОС. Никакой программист не хочет заниматься такой мутной херней - но важность ее для пользователей Майкрософт понимала лучше всех своих конкурентов.
СсылкаОтветить

Comments:
[User Picture]From: pargentum
2010-05-29 06:08 pm
Ну да, разъяснение большинства загадок винды начинается с фразы "Когда в 1974 году Гари Кидал начал писать то, что потом стало известно как CP/M, ему в голову не могло прийти..."

Только все-таки одно стандартное микрософтовское вранье они повторяют - что винда основана на VMS.
(Ответить) (Parent) (Thread) (Развернуть)
From: (Anonymous)
2010-05-29 05:56 pm
в IBM тоже очень фанатично относятся к совместимости, по крайней мере в их мейнфреймах. Даже в их последнем - z10, который продается за несколько миллионов долларов, стоит очень много всяких костылей из 60-х, 70-х годов.
(Ответить) (Thread)
[User Picture]From: ygam
2010-05-29 06:08 pm
Он совместим с IBM/360?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: pargentum
2010-05-29 05:57 pm

Я бы это описал немного иначе

Как микрософт сумел превратить собственную кривоту и чужие плохие практики в конкурентное преимущество.

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

А теперь вся эта junk DNA рушится под собственной тяжестью. Люди, которые весь этот джанк писали, ушли на пенсию, и единственный способ, которым микрософт может обеспечить совместимость со старым софтом - это запуск XP в виртуалке.
(Ответить) (Thread)
[User Picture]From: vasar
2010-05-29 06:12 pm

Re: Я бы это описал немного иначе

Что такое "штатное API" во времена MS-DOS?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: msh
2010-05-29 06:16 pm
Мне не кажется что это причина победы. Это следствие. Майкрософт смог победить с технологией уровня мониторов для 8-битных калькуляторов, которая уже на тот момент лет 10 как устарела. Почему именно они победили - отдельный вопрос, но ничего технического там не было.

Победили они при этом себя тоже - Xenix, OS/2 - все пали жертвой. Им сколько понадобилось чтобы все-таки пропихнуть новую архитектуру ОС - 15 лет?

То что разработка для MS-DOS постоянно требовала копания в кишках, подмены каких-то interrupt handlers и прочих хаков, которые должны бы были уже отмереть вмести с эпохой Sinclair Spectrum - это серьезная проблема архитектуры. Хвалить Майкрософт за то, что они были вынуждены много лет это поддерживать, это примерно как если бы я сейчас сказал с восторгом "смотрите! Это 2010 год, я работаю с своим виртуализированным линуксом в cloud на супер-дупер серверах с 48 процессорами каждый, через канал, три раза зашифрованный так, что никто не расшифрует за сто лет, а внутри, представляете, эмулируется пишущая машинка!"
(Ответить) (Thread)
[User Picture]From: bolk
2010-05-29 06:27 pm
подмены каких-то interrupt handlers и прочих хаков, которые должны бы были уже отмереть вмести с эпохой Sinclair Spectrum
Да какие там прерывания были в ZX Spectrum? Оборудование ими не пользовалось, был единственные вектор таймера, сделанный через жопу, а отладочное прерывание запороли.

Там были «точки входа» RSTx, но это было значительно менее удобно, чем прерывания в PC.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: ban_dana
2010-05-29 06:31 pm
Микрософт сделал ставку на Пользователя. Которому насрать на ОС. Он и слова-то этого чаще всего не знает. Ему комп нужен для решения своих каких-то задач. Поэтому, если переход на новую версию ОС нарушит работу каких-то программ, юзер на эту ОС забьет большой и толстый. И в МС это поняли раньше других, вот и все.
(Ответить) (Thread)
[User Picture]From: amarao_san
2010-05-29 06:59 pm
Это не так - мы можем это видеть на примере последних ОС от МС, от которых, именно по этой причине, плюются пользователи.
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: xsbos
2010-05-29 06:53 pm
А еще был и есть POSIX
(Ответить) (Thread)
[User Picture]From: amarao_san
2010-05-29 06:57 pm
На что только не идут копирасты, лишь бы не открывать исходники...
(Ответить) (Thread)
[User Picture]From: chebureque
2010-05-29 06:59 pm
Скажите, а говорить о программе, что она «бежит» — это ваша собственная находка, или кто-то это уже использовал раньше? По-моему, великолепно!
(Ответить) (Thread)
From: (Anonymous)
2010-05-29 08:10 pm
oh, sarcasm! that's original!
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: denizzzka
2010-05-29 08:56 pm

про винду и симсити тоже красивая история была

перед выходом Windows 95 (по-моему) выяснилось что на ней не идет симсити - старая но до сих пор популярная на тот момент игрушка

в микрософт нашли причину (баг в самой игре, на сколько я помню) и встроили патч к бинарнику в сам windows. При запуске ОС определяет что запускается эта игра и патчит что нужно
(Ответить) (Thread)
[User Picture]From: syarzhuk
2010-06-03 09:42 pm

Re: про винду и симсити тоже красивая история была

По-моему, там было немножко не так. Симсити освобождал одну и ту же память дважды. В однозадачном ДОСе это ни к чему плохому не приводило, потому что освобождённую память некому было занять. В 95й была хоть какая-то, но многозадачность, поэтому был шанс, что память будет использована и при попытке её освободить вторично произойдёт фигня. Поэтому МС не патчил бинарный образ Симсити (за такое можно и в суде огрести), а предоставлял ему другой вариант менеджера памяти
(Ответить) (Parent) (Thread)
[User Picture]From: brainsucker
2010-05-29 09:51 pm
и самое удивительное, что не смотря на эту заботу о юзверах эпл за достаточно короткий срок (сколько там лет ipod/iphone) догнал и перегнал ms по капитализации.
(Ответить) (Thread)
From: (Anonymous)
2010-05-29 10:04 pm
у мс 90% рынка и 5% норма прибыли
y эппла 5% рынка и 90% норма прибыли
(цифры условные)
подход к извлечению прибыли совершенно разный
эпплу все подряд юзеры не нужны, всякая шваль денег не принесет
а мс нужны именно все подряд, именно всякая шваль
ну то есть это мне так кажется, я на самом деле глубоко ситуацию не изучал
прав я или нет?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: ahtolllka
2010-05-30 07:14 am
Не могу разделить радость от тотальной обратной совместимости, потому как не далее как вчера перенося здоровенный MS SSIS 2008 dts-файл на MS SSIS 2005, обнаружил, что несмотря на отсутствие каких бы-то ни было изменений, пакет оказался абсолютно нечитаемым. Оказалось, что MS полностью перекроила всю xml-ку, зачастую просто меняя местами описательные теги. Никакой функциональной выгоды обнаружить мне не удалось. Смысл в этом мне видится только один - стимуляция пользователей к покупке нового софта.
(Ответить) (Thread)
[User Picture]From: k4rlos
2010-05-30 09:51 am
Обратная совместимость это наоборот.
Это когда MS SSIS 2005 файл без проблем открывается на MS SSIS 2008
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: anoxoon
2010-05-30 10:42 am
Вот только почему Чен назвал этот код "мусорной ДНК"? Ведь функции кое-какие он выполняет, даже в качестве простой метки.
(Ответить) (Thread)
[User Picture]From: _iga
2010-05-30 12:19 pm
Junk DNA полно и в Windows.
Откройте на просмотр любой EXE-файл - там будет "This program cannot be run in DOS mode" в MZ-заголовке. А всё от того, что когда-то в Microsoft работал Mark Zbikowski.
(Ответить) (Thread)