Реймонд Чен: Why does each drive have its own current directory?
Во всех версиях DOS и Windows командная строка "помнит" отдельно текущую директорию для каждого диска. Если на C: сделать cd foo, потом пойти на D: и там сделать cd bar, а потом вернуться "c:", то окажешься в запомненной директории foo. Так было всегда, но я никогда не понимал, зачем это нужно. У такого поведения были свои преимущества, но были и недостатки.
Из этой записи Чена я наконец узнал, зачем это так сделано: для совместимости DOS 2.0 с программами DOS 1.0. И по этой причине текущая директория так работает во всех версиях DOS и Windows, включая самые последние. Потому что когда-то нужно было, чтобы программы для DOS 1.0, не знавшие что такое "директория", могли писать в разные директории на дискетах, когда их запускали в DOS 2.0. Бедный, бедный мой мозг.
Было бы полезно сделать подборку записей Реймонда Чена (а у него немало записей в таком духе) обязательной для изучения будущими программистами в университетах.
Во всех версиях DOS и Windows командная строка "помнит" отдельно текущую директорию для каждого диска. Если на C: сделать cd foo, потом пойти на D: и там сделать cd bar, а потом вернуться "c:", то окажешься в запомненной директории foo. Так было всегда, но я никогда не понимал, зачем это нужно. У такого поведения были свои преимущества, но были и недостатки.
Из этой записи Чена я наконец узнал, зачем это так сделано: для совместимости DOS 2.0 с программами DOS 1.0. И по этой причине текущая директория так работает во всех версиях DOS и Windows, включая самые последние. Потому что когда-то нужно было, чтобы программы для DOS 1.0, не знавшие что такое "директория", могли писать в разные директории на дискетах, когда их запускали в DOS 2.0. Бедный, бедный мой мозг.
Было бы полезно сделать подборку записей Реймонда Чена (а у него немало записей в таком духе) обязательной для изучения будущими программистами в университетах.
no subject
Date: 2010-10-14 09:58 pm (UTC)no subject
Date: 2010-10-14 10:05 pm (UTC)no subject
Date: 2010-10-14 10:19 pm (UTC)no subject
Date: 2010-10-14 10:22 pm (UTC)no subject
Date: 2010-10-14 10:32 pm (UTC)no subject
Date: 2010-10-14 10:36 pm (UTC)no subject
Date: 2010-10-14 10:43 pm (UTC)no subject
Date: 2010-10-14 10:47 pm (UTC)no subject
Date: 2010-10-14 11:06 pm (UTC)no subject
Date: 2010-10-14 11:10 pm (UTC)no subject
Date: 2010-10-14 11:23 pm (UTC)no subject
Date: 2010-10-14 11:36 pm (UTC)RUN []
Батч-файлы были с Unix, а может еще до него, но на CP/M не использовались..
Драйверы .. в CP/M - не помню, там вроде компилировали сразу всю ОС и по ^C шла горячая перезагрузка - ( в районе полсекунды - считать с восьмидюймовой дискеты один файл и закинуть его в память. Потом MS DOS, который грузился с пятидюймовки целых две минуты вызывал удивление). В RT-11 драйверы были, сам писал, но они вроде отдельными модулями лежали?
В CP/M не было 8.3, если моя память мне не врет(проверил, врет). В RT-11 был стандарт 6.3, не 8.3. А вот если в MS DOS и CP/M оно идет из триад RADIX - это объясняет многое, кроме одного - в каталогах этих ОС использовали просто побайтовый текст, а не сжатый код RADIX!
Слэшэй в СП/М и RT-11 - не помню в упор, там разве вообще было понятие пути и подкаталоги? ДИСК:ФАЙЛ.ЕХТ - и все. (В MS DOS даже сначала была переменная и прерывание, определяющее, какой символ разделителя использовать - прямой, как в Юниксе - или обратный слэш.)
У RT-11 файлы были вроде с экстентами, соответственными экстентам - записям в каталоге диска (каталог представлял собой навороченный бинарный список-дерево, автоматически перетряхивавшийся). Странно, Wiki этого не подтверждает, но я их точно помню - разбирался с дефрагментацией. У СП/М - таки непрерывные файлы, устройство главного каталога не помню, но простое какое то.
В общем, если бы Вы сказали, что DOS - гибрид CP/M и Unix - я бы горячо одобрил. А вот RT-11, как отец CP/M - тут я в больших сомнениях. И не забудьте - RT-11 работал на 16-ти разрядниках, а CP/M - на восьми битовых процессорах. Это два разных мира.
no subject
Date: 2010-10-14 11:53 pm (UTC)no subject
Date: 2010-10-15 12:04 am (UTC)Батч-файлы вообще от перфокартной технологии идут.
Насчет РАДИКС - да, я ответил кому-то за вами. Скорей для простоты переняли традицию без технологии сжатия.
Про слэши - имеется ввиду знаменитая оппозиция юникса и "другого мира". В первом прямые слэшы разделяли каталоги, а признаком флага команды был -. А в "другом мире" - команду от флагов отделял прямой слэш, поэтому, когда им наконец пришла в голову идея иерархической файловой системы, пришлось для разделения каталогов использовать обратный слэш.
Экстентов я не застал точно. Посему основной спасительной командой был squeez - собрать непрерывные файлы в единый блок, чтоб теоретически доступное место стало реально доступным. Очень смеялся года три назад, когда выяснилось, что пресловутая проблема пожирания памяти Firefox-ом примерно в этом и состоит:)
Так что с последним тезисом не согласен никаким боком. Разве что за ооочень солидное материальное вознаграждение.
P.S. Застал СP/M и для 16-разрядников. И даже его "мультизадачное" расширение - MP/M
no subject
Date: 2010-10-15 12:46 am (UTC)Про РАДИКС - ага. Точнее, Гэри Килдалл перенял понятие окончания имени - хорошая идея была, даже если осью поддерживалось только .COM. А сама длина имени в 8 байт - FILE9999.TXT - это просто - заведомо больше, чем можно было поместить файлов на дискету :-)
Слэши в плане оппозиции двух миров - пожалуй соглашусь тоже.
Насчет экстентов - Wiki говорит, что я ошибаюсь, может я помню экстенты дескрипторов файла в каталоге (но зачем они тогда?) а не экстенты файлов? Я как то писал на Macro-11 самопальную файловую систему для дискет - и мне пришлось разбираться с главным каталогом жесткого диска RT-11.
Материального вознаграждения предложить не могу, но в итоге мы имеем слеши и трехбайтовое окончание имен - маловато для родственных связей :-)
П.С. Ага, я видел ее для 16-ти разрядников тоже - но это сразу стало столь несерьезно... В конце концов, весь софт CP/M отлично бегал под MS DOS, требуя минимума поддержки от разработчика (помните разницу между .COM и .EXE и специальный режим intel процессора?). Oн выглядел там чужим и убогим - но он был!
Когда мы впервые увидели MS DOS, первый вопрос всей команды был - а утилита поддержки ххх (не помню имя, но мы из нее не вылезали) - тут пойдет? Она есть? И ответ "Да", был решающим. Тут же появился PC Tools, не говоря уже о Нортоновских утилитах, крывших CP/M-овские как бык овцу, но для нас было главное, что в первые же минуты мы не оставались с незнакомым софтом (или без него) в руках. А если учесть, что dBase-3, редакторы текстов и SuperCalc остались неизменны (скопируй информацию клиентов as is и продолжай разработку), то переход на другую ОС был вопросом решенным. Умные парни сидели в Microsoft.
no subject
Date: 2010-10-15 12:47 am (UTC)no subject
Date: 2010-10-15 12:59 am (UTC)no subject
Date: 2010-10-15 01:12 am (UTC)no subject
Date: 2010-10-15 01:35 am (UTC)no subject
Date: 2010-10-15 01:39 am (UTC)dir 'HKLM:\SOFTWARE\JavaSoft\Java Runtime Environment'
no subject
Date: 2010-10-15 01:48 am (UTC)no subject
Date: 2010-10-15 02:33 am (UTC)cd c:\temp не переводит меня на диск c?
no subject
Date: 2010-10-15 02:48 am (UTC)no subject
Date: 2010-10-15 04:16 am (UTC)c:
cd a
> c:\a\
cd b
> c:\a\b\
d:
cd docs
> d:\docs\
copy *.* c:
____________
и вот тут он как раз и скопирует все файлы из d:\docs в текущую дирректорию на диске (c:\a\b\)
именно поэтому мне всегда казалось удобным, что он помнит текущую диру на каждом диске...
no subject
Date: 2010-10-15 06:01 am (UTC)