Windows系統中軟體的默認安裝目錄為何是Program Files這個名字?

mac的軟體默認安裝目錄是applications,類unix系統的軟體默認安裝目錄是/usr/local/,而windows的軟體默認安裝目錄是 Program files,為啥微軟的系統要搞個那麼特殊的有空格的目錄,不用與微軟本家更貼切的softwares呢?而且我們可以發現,微軟系的目錄都喜歡用些超級長的帶空格的目錄,例如Documents and Settings(Vista開始被Users替代),System Volume Information(NTFS文件系統特有),大家能否考究一下這些目錄是因何考慮而設置成這麼長的名稱的?

還有以前是8.3文件格式的,導致命名是 Program files,但實際上的文件名則是 Progra~1,一點都不適合當年dos下對目錄的訪問。


謝邀

大概是剛剛進入Windows 95時代的時候Windows第一次支持長文件名和帶空格的路徑名,於是微軟就帶頭使用這些路徑來展示這些「新特性」


這名字多貼切啊,放 File of Programs 的。

相反,/usr 誰特么知道是什麼意思?


謝邀。

我倒是覺得這些名字挺貼切的。

當然我更喜歡 ProgramFiles 而不是 Program Files ~

換個名字的話大概也會有人問為啥是這個名字吧……


/usr/local不是放軟體的,它只是一個前綴。

Unix系統的軟體是分布放置的,通常可執行文件放到prefix/bin,資源放到prefix/share/app_name/。


當初起這個名字,主要就是從 Windows 95 開始,支持長文件名特性了,然後微軟將這個特性展露出來,同時讓明眼人一看就知道這文件夾是什麼意思,一舉兩得。

但是,在那個時候,帶空格的路徑會出現一些麻煩。空格本身就有一個作用,那就是一條命令的各參數間的分隔符,而如果文件或文件夾名本身帶有空格,則會導致命令運行錯誤。但是那時微軟也意識到了這個問題,於是就規定可以用引號將帶空格的路徑給括起來,保證了不會出現空格錯誤。那時候,在跨平台不盛行的時候,這種問題好像並不是什麼大問題。

後來又過了一段時間,跨平台程序開始發展,空格問題也漸漸暴露出來。但很快大家也都意識到了,不論什麼路徑,只要打上引號,那就是 100% 沒問題,不管路徑里有沒有空格。久而久之大家也都習慣了,畢竟只玩 linux 的人是少之又少的,絕大多數也在同時玩 Windows,那麼空格問題在絕大多數人身上都不是問題。再加上兼容性及歷史遺留問題,Program Files 就一直保持著了。

那麼,為什麼用戶文件夾由原先的 Documents and Settings 改成了 Users 了呢?首先,多用戶的概念是 XP 之後才有的,不會過多影響兼容性。其次,我們寫程序,獲取配置文件目錄,並不是直接寫絕對路徑的,很多時候都是通過獲取環境變數來獲得路徑的,比如臨時目錄,你會用 %TMP% 或 $TMP 來獲取該目錄,而不是引用絕對路徑。所以,這一項的修改,對於兼容性來說,影響是微乎其微,順帶能解決潛在的空格 bug,何樂而不為呢。

而 Program Files 早在 Windows 95 開始時就有了,如果直接改的話,會不會有一些早期的程序出現潛在的 bug 呢?而且,對於一些跨平台程序,它們一般默認都不安裝在 Program Files 這樣一個帶有空格的目錄中,比如 Python 的默認安裝目錄是在系統盤下的 Python 目錄中,這樣做的好處是避免一切可能的空格問題,即使軟體本身已經規避了,那對於開發者呢?會不會出現潛在問題?我個人是將開源軟體全部安裝在一個固定目錄下的,且目錄名一定沒有空格、全部小寫字母。比如說 D:opensource 或者 D:open。所以,Program Files 的修改,是沒必要且不討好的。所以一直到現在的 Win10,都一直保持著這個名字。

8.3 格式應該已經是老古董了吧。現在主流的都是 64 位機,Win7 以上系統,以前的 QBASIC、Pascal、VC6.0 等都已經沒法用了吧,那還考慮對 8.3 格式的兼容性幹嘛?再說了,當年的 DOS 是沒有必要去訪問 Program Files 目錄的,因為裡面的可執行文件都是在視窗環境下才能運行的,放到 DOS 里不能運行,而只能在 DOS 下運行的程序,誰會閑得蛋疼放到 Program Files 這樣一個連訪問都如此困難的目錄里?

至於縮寫不縮寫,那是習慣問題。而且,再說了,起什麼名字都只是一個符號象徵而已。比如說,Linux 里的 /usr 文件夾,我只需要知道那是存放 linux 的系統文件的(包括系統內核和各種第三方軟體的核心文件)就行了,我管它是什麼意思呢?C 語言編程,首先一句 #include &,有幾個人想過 stdio.h 的全稱是什麼?又有幾本書上說過這是 Standard Input/Output 的縮寫?所以說這只是個記憶符號,不論名字長短,既然使用了這樣的符號就一定有它的道理,我們只需要去用就行了,不需要知道這是為什麼。


首先題主舉的例子就不恰當。Softwares本身就是一個錯誤的用法。Software是不可數名詞,軟體的總稱。另外,不知道題主寫過程序沒有,當變數太多的時候,很多比較扯的名字就會蹦出來。


推薦閱讀:

機械革命X7Ti和神舟Z7-KP7S1選哪個?
為什麼現在的新主板上還有USB2.0的介面?
在加拿大讀UW的coop是一種怎樣的體驗?
為何在手機操作系統上沒有出現類似Windows「回收站」這樣的功能?
同一台電腦,win10和win7哪個系統的性能更好?

TAG:MicrosoftWindows | 操作系統 | 計算機 |