ویندوز ۱۱ از هر نظر به یک سیستمعامل امروزی میماند: گوشههای گرد، طراحی فلوئنت، خدمات ابریِ تنیده در سراسر آن و انبوهی از فناوریهایی که چند دهه پیش مضحک به نظر میرسیدند. اما اگر کمی به زیر این ظاهر سرک بکشید، با تصمیمهای معماریای روبهرو میشوید که از روزگاری بسیار دور همچنان پابرجا ماندهاند.
هر بار که فایلی را ذخیره میکنید، درایوی را به رایانه وصل میکنید یا مسیری را در خط فرمان مینویسید، با قواعدی سروکار دارید که در روزگار سنجش حافظهٔ رایانههای شخصی با کیلوبایت و ارزشمندبودن هر ذره از فضای ذخیرهسازی شکل گرفتهاند.
ویندوز امروزی بر معماری ویندوز انتی اجرا میشود؛ معماریای که زیربنای قدیمی اماسداس را با سیستمعاملی بسیار استوارتر جایگزین کرد. بااینحال، مایکروسافت ناچار بود قراردادهایی را حفظ کند که نرمافزارهای موجود داس و ویندوز به آنها وابسته بودند. ریشهٔ برخی از این ایدهها حتی به سیپی/ام میرسید؛ سیستمعاملی که از خود رایانهٔ شخصی آیبیام نیز قدیمیتر است. این مفاهیم بهمرور در رابطهای برنامهنویسی ویندوز، اسکریپتها، نصبکنندهها و برداشتهای روزمره از شیوهٔ رفتار فایلها و مسیرها ریشه دواندند.
نامهای ممنوع برای فایلها
چرا نمیتوانید نام CON را روی سندتان بگذارید؟





فایل اکسپلورر را باز کنید، یک سند متنی تازه بسازید و بکوشید نامش را CON بگذارید. ویندوز آن را نمیپذیرد. همین اتفاق برای PRN، AUX، NUL، COM1، LPT1 و چند نام مرتبط دیگر نیز میافتد. تغییر پسوند هم فایدهای ندارد؛ بنابراین CON.docx و NUL.pdf نیز به همان اندازه غیرقابلاستفادهاند. اینکه ویندوز هنوز اجازه نمیدهد CON را نام فایل بگذارید، به اماسداس ۱٫۰ بازمیگردد؛ زمانی که داس برخی دستگاههای سختافزاری را با نامهایی خطاب میکرد که نرمافزارها میتوانستند تقریباً مانند فایل به آنها دسترسی داشته باشند.
خطا: نام دستگاه مشخصشده نامعتبر است.
برنامهای که میخواست چیزی را به چاپگر بفرستد، میتوانست آن را در PRN بنویسد. نام CON نمایندهٔ کنسول بود و ورودی صفحهکلید و خروجی نمایشگر را در بر میگرفت. AUX به یک دستگاه سریال کمکی اشاره داشت و NUL نیز مانند سطل زبالهای بیانتها برای دادههایی عمل میکرد که برنامه میخواست دور بریزد.
داس ۱٫۰ از پوشهها پشتیبانی نمیکرد؛ بنابراین ابهام چندانی وجود نداشت. وقتی داس ۲٫۰ زیرپوشهها را افزود، این نامهای دستگاهی همچنان باید فارغ از پوشهای که برنامه در آن بود کار میکردند. فرمانی مانند COPY FILE.TXT PRN باید همچنان به معنای «این فایل را به چاپگر بفرست» باقی میماند، نه «در اینجا فایلی به نام PRN بساز».
مایکروسافت این برداشت را حفظ کرد و وین۳۲ هنوز هم این نامها را دستگاههایی به سبک داس میداند، نه نام فایلهای معمولی. بیش از چهار دهه بعد، نرمافزارها و اسکریپتها همچنان میتوانند انتظار داشته باشند که NUL و CON تقریباً همان معنایی را بدهند که در رایانههای نخستینِ داس داشتند.
حروف گمشدهٔ الفبا
چرا درایو اصلی با سومین حرف آغاز میشود؟

در بیشتر رایانههای ویندوزی، سیستمعامل هنوز روی C: نصب میشود. اگر درایو دیگری وصل کنید، ممکن است D:، E: یا یکی از حروف بعدی الفبا به آن اختصاص یابد و A: و B: متروک به نظر برسند.
در آغاز دوران رایانههای شخصی، دو حرف نخست الفبا به درایوهای فلاپی اختصاص یافتند. داس A: را برای نخستین درایو فلاپی و B: را برای دومین درایو فلاپی منطقی به کار میبرد. در واقع، برخی دستگاهها با وجود داشتن تنها یک درایو فلاپی فیزیکی، هر دو حرف را نمایش میدادند و هنگامی که نرمافزار میان آنها جابهجا میشد، از کاربر میخواستند دیسک را عوض کند.
وقتی دیسکهای سخت به رایانههای داس راه یافتند، مایکروسافت باید آنها را در الگوی موجودِ نامگذاری درایوها میگنجاند. ازآنجاکه A: و B: به درایوهای فلاپی وابسته بودند، نخستین دیسک سخت حرف C: را گرفت. فلاپیها سرانجام ناپدید شدند و ویندوز امروزی حتی میتواند جلدهای ذخیرهسازی را بیآنکه حرفی به آنها بدهد، درون پوشهها سوار کند. امروزه همچنین میتوانید A: یا B: را به فضای ذخیرهسازی دیگری اختصاص دهید.
درایو C: همچنان خانهٔ استاندارد ویندوز است، زیرا چندین دهه نرمافزار، نصبکننده، اسکریپت، مستندات و انتظار کاربران پیرامون آن شکل گرفته است. بازگرداندن درایو سیستم به ابتدای الفبا تقریباً هیچ مشکلی را حل نمیکند، اما دردسر سازگاری چشمگیری به بار میآورد.
بکاسلش سرنوشتساز
یک خط جاافتاده میتواند مقصدتان را عوض کند

C:\Data و C:Data آنقدر شبیهاند که دومی ممکن است غلط تایپی به نظر برسد. بااینحال، در خط فرمان میتوانند به دو مکان متفاوت اشاره کنند.
C:\Data یک مسیر مطلق است. بکاسلش پس از حرف درایو به ویندوز میگوید از ریشهٔ درایو C: آغاز کند و پوشهٔ Data را همانجا بیابد. C:Data مسیری وابسته به درایو است و میتواند به پوشهای به نام Data در پوشهٔ جاریِ درایو C اشاره کند.
این رفتار عجیب از داس به جا مانده است؛ سیستمعاملی که برای هر درایو، پوشهٔ جاری جداگانهای را به خاطر میسپرد. میتوانستید در پوشهای تودرتو روی C: کار کنید، به D: بروید، در جای دیگری بگردید و بعدتر بدون نوشتن دوبارهٔ کل مسیر، به مکانی بازگردید که داس برای C: به یاد سپرده بود.
برنامههای Win32 تنها یک پوشهٔ جاری برای کل فرایند دارند، اما «خط فرمان» برای سازگاری با نرمافزارهای قدیمی، رفتار پیشینِ پوشهٔ جداگانه برای هر درایو را بازسازی میکند. این برنامه حتی متغیرهای محیطی داخلی مانند =C: را نگه میدارد تا به یاد بسپارد هر درایو آخرین بار به کدام پوشه اشاره داشته است. به همین دلیل، وقتی در یک اسکریپت واقعاً منظورتان پوشهٔ Data در ریشهٔ درایو C است، نوشتن C:\Data مطمئنتر خواهد بود؛ زیرا اگر آن ممیز وارونه را ننویسید، ممکن است مقصد به فرمانهای پیشین وابسته شود.
تیلدای شبحوار
چرا PROGRA~۱ هنوز در فهرست مهمانان است

گاهوبیگاه ویندوز بهجای نام آشنای Program Files، نام عجیبی مانند PROGRA~۱ تحویلتان میدهد. این صورت کوتاهشده از سامانهٔ قدیمی نامگذاری ۸.۳ میآید که ردپایش هنوز در ویندوز باقی مانده است. نام فایلها در داس کلاسیک به هشت نویسه پیش از نقطه و سه نویسه پس از آن محدود بود؛ الگویی که برای AUTOEXEC.BAT بهخوبی جواب میداد، اما بیتردید از پس Financial_Statement_2026.xlsx برنمیآمد.
هنگامی که ویندوز ۹۵ نام فایلهای بلند را به خانوادهٔ مصرفیِ مبتنی بر داسِ مایکروسافت آورد، سازگاری به دردسر بدل شد. برنامههای قدیمی داس و برنامههای ۱۶ بیتی همچنان نامهای کوتاه میخواستند؛ ازاینرو ویندوز در کنار نام بلند فایل، یک نام مستعار ۸.۳ نیز نگه میداشت. نامهای آشنای دارای تیلدا از همینجا پدید آمدند و Program Files معمولاً بهشکل PROGRA~1 دیده میشد.

قواعد واقعی نامگذاری بسیار پیچیدهتر از این است که نام فایل را به شش نویسه کوتاه کنید و ~1 را به انتهایش بچسبانید؛ بهویژه وقتی چندین نام با یکدیگر تداخل پیدا میکنند. نکتهٔ اصلی این است که هم نام بلند و هم نام مستعار کوتاه میتوانند به یک فایل یا پوشهٔ واحد اشاره کنند.
ویندوز ۱۰ و ۱۱ هنوز هم از نامهای ۸.۳ پشتیبانی میکنند، هرچند نمیتوان فرض کرد که هر فایلی چنین نامی دارد. ساخت نام کوتاه را میتوان برای کل سامانه یا بهطور جداگانه برای هر جلد فعال یا غیرفعال کرد و مایکروسافت همچنان فرمان fsutil 8dot3name را برای مدیریت آن در اختیار کاربران میگذارد.
مایکروسافت هشدار میدهد که نامهای کوتاه موجود را نباید بیمحابا حذف کرد، زیرا ممکن است نرمافزارهای قدیمی همچنان به آنها وابسته باشند. در برخی موارد، پاککردن این نامهای مستعار میتواند برنامهها را از کار بیندازد یا حتی مانع حذف پاکیزه و کامل نرمافزار شود.
ستارهای که با همهچیز جور درمیآید
چرا نقطه واقعاً بهمعنای نقطه نیست

در «خط فرمان»، *.* از دیرباز بهمعنای «همهچیز در این پوشه» بوده است. اگر آن را تحتاللفظی بخوانیم، معنایش بسیار محدودتر از کاربرد واقعی آن در ویندوز به نظر میرسد. انتظار میرود این الگو بهمعنای هر نام فایلی باشد که پس از آن یک نقطه و سپس هر پسوندی میآید؛ در این صورت، فایلی مانند Notes باید از قلم بیفتد.
داس با نام فایلها به شیوهای متفاوت برخورد میکرد. قالب کلاسیک ۸.۳ نام و پسوند را در دو بخش جداگانه با طول ثابت ذخیره میکرد: هشت نویسهٔ نخست به نام و سه نویسهٔ بعدی به پسوند اختصاص داشت. نقطهای که روی صفحه میدیدید صرفاً جداکنندهٔ این دو بخش بود، نه نویسهای معمولی که در ساختار نام فایل جا اشغال کند.
بنابراین، وقتی داس الگوی *.* را پردازش میکرد، ستارهٔ نخست با بخش نام و ستارهٔ دوم با بخش پسوند مطابقت مییافت. فایل بدون پسوند نیز همچنان بخشی برای پسوند داشت؛ فقط آن بخش خالی بود و در نتیجه الگو باز هم با آن جور درمیآمد. اینگونه بود که *.* به صورت کوتاهشدهٔ «همهٔ فایلها» درآمد.
Win32 پس از آنکه نام فایلهای بلند الگوی قدیمی را ناکارآمد کردند، روش کهنهٔ داس برای تطبیق نام فایلها را کنار گذاشت؛ بااینحال، مایکروسافت برخی رفتارهای عجیب آن را برای حفظ سازگاری نگه داشت. یکی از آنها رفتار آشنای *.* بود که عملاً همچنان «همهٔ فایلها» معنا میداد، نه فقط نامهایی که واقعاً در آنها نقطه وجود داشت. تغییر این رفتار باعث میشد اسکریپتها و برنامههای قدیمی، فایلهای بدون پسوندی را که همیشه پردازش میکردند نادیده بگیرند.
ویندوز اشباحش را نگه میدارد
این قواعد در یک رایانهٔ ویندوز ۱۱ تقریباً خودسرانه به نظر میرسند، زیرا شرایط سختافزاری و نرمافزاریای که آنها را پدید آورد، دههها پیش از میان رفته است. CON، C:، PROGRA~۱، C:Data و *.* همگی در دنیای فلاپیدیسکها، نامهای بسیار کوتاه و برنامههایی که بر پایهٔ قراردادهای داس نوشته شده بودند، بسیار معقولتر به نظر میرسیدند.
البته اینها تنها سنگوارههایی نیستند که هنوز بهجا ماندهاند. ویندوز ۱۱ همچنان از بسیاری قابلیتهای قدیمی پشتیبانی میکند، زیرا مایکروسافت دههها کوشیده است رفتارهایی را حفظ کند که شاید سختافزارها و نرمافزارهای موجود هنوز انتظارشان را داشته باشند. بیشتر اوقات اصلاً متوجه این پیشینه نمیشوید؛ اما هر از گاهی که میکوشید فایلی را CON بنامید یا از خود میپرسید چرا الفبای درایوها از C: آغاز میشود، داس از لابهلای تختههای کف سرک میکشد.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Oluwademilade Afolabi است. مشاهده مقاله اصلی