avva: (Default)
[personal profile] avva
Замечательный образ в записи Реймонда Чена:
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... но еще и героическими усилиями во имя совместимости старых приложений с новыми версиями ОС и даже с новыми ОС. Никакой программист не хочет заниматься такой мутной херней - но важность ее для пользователей Майкрософт понимала лучше всех своих конкурентов.

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

Только все-таки одно стандартное микрософтовское вранье они повторяют - что винда основана на VMS.

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2010-05-29 06:14 pm (UTC) - Expand

(no subject)

From: [identity profile] pargentum.livejournal.com - Date: 2010-05-29 06:38 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2010-05-31 07:41 am (UTC) - Expand

(no subject)

From: [identity profile] pargentum.livejournal.com - Date: 2010-05-31 07:53 am (UTC) - Expand

(no subject)

From: [identity profile] iratus.livejournal.com - Date: 2010-05-30 10:29 am (UTC) - Expand

(no subject)

From: [identity profile] oblomov-jerusal.livejournal.com - Date: 2010-05-30 01:22 pm (UTC) - Expand

Date: 2010-05-31 04:27 pm (UTC)
From: [identity profile] gvadelupa.livejournal.com
Только что попробовал создавать файлы типа com1.txt, com1.asp, con.txt в директории IIS под WinXP и IIS их прекрасно возвращает несмотря на утверждение в статье по ссылке, что Because ASP was file-based, URLs by definition could not include /com1-9.asp, /lpt1-9.asp, /con.asp, /aux.asp, /prn.asp, or /nul.asp.

(no subject)

From: [identity profile] ygam.livejournal.com - Date: 2010-06-01 04:30 am (UTC) - Expand

Date: 2010-05-29 05:56 pm (UTC)
From: (Anonymous)
в IBM тоже очень фанатично относятся к совместимости, по крайней мере в их мейнфреймах. Даже в их последнем - z10, который продается за несколько миллионов долларов, стоит очень много всяких костылей из 60-х, 70-х годов.

Date: 2010-05-29 06:08 pm (UTC)
From: [identity profile] ygam.livejournal.com
Он совместим с IBM/360?

(no subject)

From: (Anonymous) - Date: 2010-05-29 06:17 pm (UTC) - Expand

(no subject)

From: [identity profile] blacklion.livejournal.com - Date: 2010-05-31 07:42 am (UTC) - Expand

Date: 2010-05-29 06:27 pm (UTC)
From: (Anonymous)
Костыли стоят(если стоят) в ОС, а не в процессорах. Z10 - это процессор, не так ли?

(no subject)

From: (Anonymous) - Date: 2010-05-29 06:33 pm (UTC) - Expand
From: [identity profile] pargentum.livejournal.com
Как микрософт сумел превратить собственную кривоту и чужие плохие практики в конкурентное преимущество.

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

А теперь вся эта junk DNA рушится под собственной тяжестью. Люди, которые весь этот джанк писали, ушли на пенсию, и единственный способ, которым микрософт может обеспечить совместимость со старым софтом - это запуск XP в виртуалке.
From: [identity profile] vasar.livejournal.com
Что такое "штатное API" во времена MS-DOS?

Date: 2010-05-29 06:16 pm (UTC)
From: [identity profile] msh.livejournal.com
Мне не кажется что это причина победы. Это следствие. Майкрософт смог победить с технологией уровня мониторов для 8-битных калькуляторов, которая уже на тот момент лет 10 как устарела. Почему именно они победили - отдельный вопрос, но ничего технического там не было.

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

То что разработка для MS-DOS постоянно требовала копания в кишках, подмены каких-то interrupt handlers и прочих хаков, которые должны бы были уже отмереть вмести с эпохой Sinclair Spectrum - это серьезная проблема архитектуры. Хвалить Майкрософт за то, что они были вынуждены много лет это поддерживать, это примерно как если бы я сейчас сказал с восторгом "смотрите! Это 2010 год, я работаю с своим виртуализированным линуксом в cloud на супер-дупер серверах с 48 процессорами каждый, через канал, три раза зашифрованный так, что никто не расшифрует за сто лет, а внутри, представляете, эмулируется пишущая машинка!"

Date: 2010-05-29 06:27 pm (UTC)
From: [identity profile] bolk.livejournal.com
подмены каких-то interrupt handlers и прочих хаков, которые должны бы были уже отмереть вмести с эпохой Sinclair Spectrum
Да какие там прерывания были в ZX Spectrum? Оборудование ими не пользовалось, был единственные вектор таймера, сделанный через жопу, а отладочное прерывание запороли.

Там были «точки входа» RSTx, но это было значительно менее удобно, чем прерывания в PC.

(no subject)

From: [identity profile] pargentum.livejournal.com - Date: 2010-05-29 06:51 pm (UTC) - Expand

Date: 2010-05-29 06:31 pm (UTC)
From: [identity profile] ban-dana.livejournal.com
Микрософт сделал ставку на Пользователя. Которому насрать на ОС. Он и слова-то этого чаще всего не знает. Ему комп нужен для решения своих каких-то задач. Поэтому, если переход на новую версию ОС нарушит работу каких-то программ, юзер на эту ОС забьет большой и толстый. И в МС это поняли раньше других, вот и все.

Date: 2010-05-29 06:59 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
Это не так - мы можем это видеть на примере последних ОС от МС, от которых, именно по этой причине, плюются пользователи.

(no subject)

From: [identity profile] ban-dana.livejournal.com - Date: 2010-05-29 07:08 pm (UTC) - Expand

(no subject)

From: [identity profile] mfi.livejournal.com - Date: 2010-05-29 08:34 pm (UTC) - Expand

Date: 2010-05-29 07:09 pm (UTC)
From: [identity profile] pargentum.livejournal.com
Скорее, наоборот - это ранний Apple пытался делать ставку на Пользователя, а DEC пытался делать ставку на культурных программистов. Микрософт же в 80е сделал ставку на безумных спектрумовских хакеров, которым доставляет удовольствие учить наизусть субкоды функции 21h и патчить ядро ОС. Почему эта ставка оказалась выигрышной - отдельный вопрос, но все-таки ставка была именно такой.

При переходе на Висту нарушилась работа кучи программ. И что?

(no subject)

From: [identity profile] mfi.livejournal.com - Date: 2010-05-29 08:40 pm (UTC) - Expand

Date: 2010-05-29 07:21 pm (UTC)
From: [identity profile] msh.livejournal.com
Вы смеетесь, наверное. Жизнь простого пользователя MS-DOS состояла из кропотливого разбирательства с своей ОС, что там конкретно нужно написать в config.sys, чтобы к одной игре загружался HIMEM, к другой QEMM, а к программе для подсчета денег - драйвер принтера. И обязательно не забыть запарковать диск.

Это примерно в тоже время, когда уже были макинтоши с одной кнопкой.

(no subject)

From: [identity profile] ban-dana.livejournal.com - Date: 2010-05-29 07:28 pm (UTC) - Expand

(no subject)

From: [identity profile] msh.livejournal.com - Date: 2010-05-29 07:37 pm (UTC) - Expand

(no subject)

From: [identity profile] mtyukanov.livejournal.com - Date: 2010-05-29 08:35 pm (UTC) - Expand

(no subject)

From: [identity profile] ban-dana.livejournal.com - Date: 2010-05-29 08:38 pm (UTC) - Expand

(no subject)

From: [identity profile] msh.livejournal.com - Date: 2010-05-29 08:53 pm (UTC) - Expand

(no subject)

From: [identity profile] iime.livejournal.com - Date: 2010-06-05 05:34 am (UTC) - Expand

(no subject)

From: [identity profile] pargentum.livejournal.com - Date: 2010-05-30 04:16 am (UTC) - Expand

Date: 2010-05-29 06:53 pm (UTC)
From: [identity profile] xsbos.livejournal.com
А еще был и есть POSIX

Date: 2010-05-29 06:57 pm (UTC)
From: [identity profile] amarao-san.livejournal.com
На что только не идут копирасты, лишь бы не открывать исходники...

Date: 2010-05-29 06:59 pm (UTC)
From: [identity profile] chebureque.livejournal.com
Скажите, а говорить о программе, что она «бежит» — это ваша собственная находка, или кто-то это уже использовал раньше? По-моему, великолепно!

Date: 2010-05-29 08:10 pm (UTC)
From: (Anonymous)
oh, sarcasm! that's original!

(no subject)

From: (Anonymous) - Date: 2010-05-29 11:20 pm (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2010-05-30 11:17 am (UTC) - Expand

Date: 2010-05-29 10:11 pm (UTC)
From: [identity profile] nec-p1us-u1tra.livejournal.com
А что они, по-вашему, делают?

(no subject)

From: [identity profile] salas.livejournal.com - Date: 2010-05-29 11:38 pm (UTC) - Expand

(no subject)

From: [identity profile] nec-p1us-u1tra.livejournal.com - Date: 2010-05-29 11:48 pm (UTC) - Expand

(no subject)

From: [identity profile] salas.livejournal.com - Date: 2010-05-30 12:59 am (UTC) - Expand

(no subject)

From: [identity profile] gvadelupa.livejournal.com - Date: 2010-05-31 04:31 pm (UTC) - Expand

Date: 2010-05-31 06:53 am (UTC)
From: [identity profile] secondary-tea.livejournal.com
Это калька с английского.
From: [identity profile] denizzzka.livejournal.com
перед выходом Windows 95 (по-моему) выяснилось что на ней не идет симсити - старая но до сих пор популярная на тот момент игрушка

в микрософт нашли причину (баг в самой игре, на сколько я помню) и встроили патч к бинарнику в сам windows. При запуске ОС определяет что запускается эта игра и патчит что нужно
From: [identity profile] syarzhuk.livejournal.com
По-моему, там было немножко не так. Симсити освобождал одну и ту же память дважды. В однозадачном ДОСе это ни к чему плохому не приводило, потому что освобождённую память некому было занять. В 95й была хоть какая-то, но многозадачность, поэтому был шанс, что память будет использована и при попытке её освободить вторично произойдёт фигня. Поэтому МС не патчил бинарный образ Симсити (за такое можно и в суде огрести), а предоставлял ему другой вариант менеджера памяти

Date: 2010-05-29 09:51 pm (UTC)
From: [identity profile] brainsucker.livejournal.com
и самое удивительное, что не смотря на эту заботу о юзверах эпл за достаточно короткий срок (сколько там лет ipod/iphone) догнал и перегнал ms по капитализации.

Date: 2010-05-29 10:04 pm (UTC)
From: (Anonymous)
у мс 90% рынка и 5% норма прибыли
y эппла 5% рынка и 90% норма прибыли
(цифры условные)
подход к извлечению прибыли совершенно разный
эпплу все подряд юзеры не нужны, всякая шваль денег не принесет
а мс нужны именно все подряд, именно всякая шваль
ну то есть это мне так кажется, я на самом деле глубоко ситуацию не изучал
прав я или нет?

(no subject)

From: [identity profile] msh.livejournal.com - Date: 2010-05-30 12:36 am (UTC) - Expand

(no subject)

From: (Anonymous) - Date: 2010-05-30 03:21 am (UTC) - Expand

(no subject)

From: [identity profile] syarzhuk.livejournal.com - Date: 2010-06-03 09:47 pm (UTC) - Expand

(no subject)

From: [identity profile] lykac.livejournal.com - Date: 2010-05-30 05:24 pm (UTC) - Expand

Date: 2010-05-30 07:14 am (UTC)
From: [identity profile] ahtolllka.livejournal.com
Не могу разделить радость от тотальной обратной совместимости, потому как не далее как вчера перенося здоровенный MS SSIS 2008 dts-файл на MS SSIS 2005, обнаружил, что несмотря на отсутствие каких бы-то ни было изменений, пакет оказался абсолютно нечитаемым. Оказалось, что MS полностью перекроила всю xml-ку, зачастую просто меняя местами описательные теги. Никакой функциональной выгоды обнаружить мне не удалось. Смысл в этом мне видится только один - стимуляция пользователей к покупке нового софта.

Date: 2010-05-30 09:51 am (UTC)
From: [identity profile] k4rlos.livejournal.com
Обратная совместимость это наоборот.
Это когда MS SSIS 2005 файл без проблем открывается на MS SSIS 2008

(no subject)

From: [identity profile] ahtolllka.livejournal.com - Date: 2010-05-30 10:59 am (UTC) - Expand

Date: 2010-05-30 10:42 am (UTC)
From: [identity profile] anoxoon.livejournal.com
Вот только почему Чен назвал этот код "мусорной ДНК"? Ведь функции кое-какие он выполняет, даже в качестве простой метки.

Date: 2010-05-30 12:19 pm (UTC)
From: [identity profile] http://users.livejournal.com/_iga/
Junk DNA полно и в Windows.
Откройте на просмотр любой EXE-файл - там будет "This program cannot be run in DOS mode" в MZ-заголовке. А всё от того, что когда-то в Microsoft работал Mark Zbikowski.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 09:39 pm
Powered by Dreamwidth Studios