亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2851 | 回復(fù): 0
打印 上一主題 下一主題

其實(shí)Unix很簡單 [復(fù)制鏈接]

論壇徽章:
1
15-16賽季CBA聯(lián)賽之北控
日期:2022-03-04 22:35:50
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-03-30 10:43 |只看該作者 |倒序?yàn)g覽

 來源: http://blog.csdn.net/haoel/ 作者:陳皓

很多編程的朋友都在網(wǎng)上問我這樣的幾個(gè)問題,Unix怎么學(xué)?Unix怎么這么難?如何才能學(xué)好?并且讓我給他們一些學(xué)好Unix的經(jīng)驗(yàn)。在絕大多數(shù)時(shí)候,我發(fā)現(xiàn)問這些問題的朋友都有兩個(gè)特點(diǎn):
1)對(duì)Unix有畏難心理,對(duì)其沒有信心;
2)喜歡用拿Windows來和Unix做比較。

這兩種特點(diǎn)就像兩個(gè)“心理暗示”,暗示著自己Unix很不好學(xué),暗示著Unix很糟糕,不如Windows好。于是,自己也就被自己的這種長期的“暗示”所催眠了。因?yàn)椋瑥囊婚_始就有畏難情緒,所以也就覺得Unix不好,覺得非常很吃力,最后還會(huì)導(dǎo)致對(duì)Unix的厭惡和反感的情緒。所以,為了糾正上述朋友們的“心理暗示”。我想寫下這篇文章,想告訴大家,Unix真的很簡單。

在正式敘述“簡單的Unix”之前,我想做幾點(diǎn)說明:(以免陷入無意義的爭論)

1) 本文是站在開發(fā)者的角度來說明的,所以,如果有朋友不同意我的觀點(diǎn),請(qǐng)也以開發(fā)者的角度來向我提出質(zhì)問和討論,本人非常歡迎。

2) 本文難免要用Windows來和Unix做對(duì)比。這并不代表我不喜歡Windows,也不代表我要叫你放棄Windows。我們也知道這種對(duì)比已經(jīng)沒有什么意思了,但因?yàn)楸姸嗟呐笥驯籛indows先入為主了,所以,我一定要拿Windows來開刀,才能扭轉(zhuǎn)那個(gè)“心理暗示”。僅此而已。


       OK,言歸正傳。先說Unix的一個(gè)最重要的特點(diǎn)——“高內(nèi)聚,低藕合”!也就是說,Unix下的各種應(yīng)用程序都和別人不相干。這就是貫穿整個(gè)Unix的思維——模塊和程序的高度獨(dú)立性。這樣的設(shè)計(jì)和做法,會(huì)讓你的系統(tǒng)比較的穩(wěn)定,也會(huì)讓你的系統(tǒng)特別地容易管理和維護(hù)。Unix下的應(yīng)用程序們就像一支正規(guī)軍一樣排列地整整齊齊,只要司令(內(nèi)核)還在,系統(tǒng)是不會(huì)因?yàn)槟硞(gè)軍隊(duì)的損失而無法自舉的。而Windows的應(yīng)用程序們就像一片樹林一樣,從地表上看過去,樹木們排列地整整齊齊,但是他們的樹根在地下卻相互纏繞在一起,剪不斷,理還亂,異常地復(fù)雜。

       “高內(nèi)聚,低藕合”的給Unix造成的結(jié)果是,其系統(tǒng)中基本上都是功能單一的小程序,這些小程序就像積木一樣,當(dāng)我們需要構(gòu)造建一個(gè)自定義的建筑時(shí),大多數(shù)情況下,我們只需要做的只是一個(gè)“搭積木”的簡單游戲。Windows建設(shè)得富麗堂皇,可惜,別人的“積木”你幾乎不可能拿到自己的建筑中來。總是要你模仿或重寫。

插一句:你是否注意到在網(wǎng)上下載Windows的軟件時(shí),會(huì)有一種所謂的“綠色軟件”?這就是對(duì)Windows的最大諷刺,Windows下裝一個(gè)軟件,N個(gè)DLL放到Windows系統(tǒng)目錄下,注冊(cè)表里寫入N個(gè)鍵值,還有很多你不知道的動(dòng)作。而在Unix裝軟件,你不用擔(dān)心你的系統(tǒng)目錄下會(huì)莫明其妙地多出些亂七八糟的文件。就是copy那么簡單,那怕是rpm自動(dòng)安裝,安裝完后,你也能夠查詢到軟件安裝后對(duì)系統(tǒng)所做的改變。所以,你在Unix下分發(fā)你的軟件時(shí),你會(huì)覺得比Windows下要做得簡單了許多許多。)

       再說說Unix的另一個(gè)最重要的特點(diǎn)——“所有的設(shè)備都可以像文件一樣地操作”。簡單吧。所有的調(diào)備,文件、打印機(jī)、顯示器、終端、網(wǎng)絡(luò)、軟盤、磁帶、USB、CDROM、等等的I/O操作,都以文件描述符的方式進(jìn)行操作。兩個(gè)Unix下最重要的系統(tǒng)調(diào)用read/write就可以勝任所有設(shè)備的I/O了。Unix早就在/dev目錄下為你建好了這些文件。使用起來很簡單。

       也許很多人都覺得Unix的命令行太過復(fù)雜。一個(gè)命令有著若干的參數(shù),異常地復(fù)雜。但之所以今天Unix下的應(yīng)用程序還在以字符界面為主,這恰好體現(xiàn)了Unix的簡單的特征。這也是Unix的另一個(gè)特點(diǎn)——“命令的相互支持性”,命令們通過一個(gè)管道或是重定向,可以互相聯(lián)系在一起,再加以Shell腳本的支持,哪怕要實(shí)現(xiàn)一些復(fù)雜的功能(比如一個(gè)小型的文本數(shù)據(jù)庫),也是簡單之極。

       如果上面的論述依然不能讓你信服Unix很簡單,那么,讓我們來用一些具體地實(shí)際的例子來看一下,Unix是如何簡單的。讓我們?cè)囍鱿旅娴倪@樣一個(gè)假設(shè):“如果我們?cè)趯W(xué)習(xí)編程的時(shí)候一開始是學(xué)Unix,然后轉(zhuǎn)去做Windows”,那會(huì)是怎么樣的一個(gè)情況?

1) 我們?cè)赨nix下創(chuàng)建進(jìn)程,使用fork調(diào)用。到了Windows下,我們查了MSDN,發(fā)現(xiàn)了一個(gè)叫CreateProcess的系統(tǒng)調(diào)用可以創(chuàng)建進(jìn)程,但我們卻發(fā)現(xiàn)這個(gè)系統(tǒng)調(diào)用有10個(gè)參數(shù)。而Unix下的fork卻一個(gè)參數(shù)都沒有。這種情況下,你是否會(huì)有一種頭大的感覺?因?yàn),在Unix下,你根本看不到會(huì)有10參數(shù)這樣復(fù)雜的系統(tǒng)調(diào)用API。

2) 我們?cè)赨nix下操作文件權(quán)限很簡單,文件權(quán)限分三組(本人,同組,別人),每組都是可讀,可寫,可執(zhí)行。兩個(gè)簡單的系統(tǒng)調(diào)用chmod/chown就搞定。到了Windows下,如果是NTFS,如果要以程序的方式設(shè)置文件權(quán)限,呵呵,你需要先了解什么是:SID,什么是DACL,什么是SACL,什么是ACE,還有十幾相關(guān)的系統(tǒng)API函數(shù)等著你。(參看我的《
以程序操作NTFS文件權(quán)限》)你也許會(huì)覺得這么復(fù)雜的安全策略是讓系統(tǒng)更安全的基礎(chǔ),可以自從Windows出現(xiàn)的那一天以后,在安全方面的表現(xiàn)就沒有勝過Unix。這無疑讓人感到Windows做了一件吃力不討好的事。

插一句Unix下的用戶切換是相當(dāng)簡易方便的。而Windows下的用戶切換會(huì)導(dǎo)致你需要退出當(dāng)前用戶的前臺(tái)程序。這導(dǎo)致了Windows下的用戶幾乎無一例外地都會(huì)選擇在超級(jí)用戶的權(quán)限下工作/上網(wǎng),這完全是讓自己的機(jī)器在裸奔,所以,Windows下的病毒一旦在系統(tǒng)中運(yùn)行就為所欲為了。而Unix下,很少用戶會(huì)以root身份操作本機(jī),因?yàn)榍袚Q用戶非常方便。)

3) 在Unix下,用戶有ID,用戶組有ID,進(jìn)程/線程都有ID。ID很簡單易懂,就像我們的身份證一樣。到了Windows下,用戶標(biāo)識(shí)叫Token,進(jìn)程標(biāo)識(shí)叫Handle(其實(shí)也就是一個(gè)DWORD的類型),我看到網(wǎng)上很多問題都在問Windows下的Handle的概念問題。我一直在想,為什么微軟不取一個(gè)簡單易懂的術(shù)語?要取得那么抽象,那么讓人很迷惑。雖然這讓W(xué)indows看起很NB,但也會(huì)因此加大了學(xué)習(xí)復(fù)雜度。(Windows的開發(fā)學(xué)習(xí)復(fù)雜度要比Unix復(fù)雜多了,而且有太多的看似很高深的術(shù)語讓人一頭霧水)

4) 讓我們?cè)賮砜匆幌掠脩艄芾砗统绦蛩姓叻矫娴臇|西。在Unix下,需要你做的是配置NIS服務(wù)器和NFS服務(wù)器(以Autofs自動(dòng)mount),簡潔,清楚。到了Windows下,與其相似的是一個(gè)叫Domain的東西(主域控制器),首先,為了加入域,你需要重啟電腦(Unix下只需要配置/etc/nsswitch.conf文件來告訴本機(jī)的用戶登錄源,無需重啟),而對(duì)開發(fā)者來說,Unix的這個(gè)配置對(duì)程序是完全透明的。而Windows的域用戶和本地用戶需要一個(gè)域名來區(qū)分。在程序中切換用戶時(shí),Unix只需要setuid/seteuid就行了,Windows對(duì)此有三個(gè)比較復(fù)雜的API:CreateProcessAsUser, ImpersonateLoggedOnUser, LogonUser,其復(fù)雜度就不用比較了。另外,在Domain方式下,你的Document and Setting目錄下的文件,會(huì)全部放到Domain服務(wù)器上去,你在別的機(jī)器上登錄時(shí),需要下載這些文件。最后,我倒不擔(dān)心你和網(wǎng)友的MSN聊天記錄會(huì)因?yàn)槟愕牡卿浂教幎际牵覔?dān)心的是,你在這么復(fù)雜的管理環(huán)境中寫出來的代碼是否能讓別人放心?:-(

5) 在Unix下,要把自己的程序加入系統(tǒng)的啟動(dòng)服務(wù)只需要在/etc/init.d中配置就行了。寫下一個(gè)有啟動(dòng)停止功能腳本,以特殊命名的方式鏈接到不同啟動(dòng)模式目錄下就行了。Windows下加一個(gè)啟動(dòng)服務(wù),如果你不編寫程序,估計(jì)比較困難。

6) 在Unix下,如果要取得系統(tǒng)的信息。只需要到/proc目錄下去cat那堆文件。所有進(jìn)/線程的狀態(tài)、命令行、內(nèi)存/交換區(qū)使用情況、打開的文件描述符,等等,系統(tǒng)的CPU,內(nèi)存,交換區(qū),內(nèi)存文件IO,分區(qū),信息,網(wǎng)絡(luò),系統(tǒng)運(yùn)行狀態(tài),系統(tǒng)設(shè)備,等等,要有多詳細(xì)就有多詳細(xì),而且完全是純文本的,直接就可以看了。到了Windows下,要窮舉系統(tǒng)當(dāng)前進(jìn)程的信息,就不是一樣很容易的事,更別說要取得別的信息了。


我很佩服微軟把操作系統(tǒng)搞得那么復(fù)雜,又是注冊(cè)表,又是安全策略,又是OLE,又是COM……。每次打開regedit.exe時(shí),我根本不敢碰HKEY_CLASSES_ROOT,因?yàn)槲铱粗锩婺切┏汕先f個(gè)CLSID,我有點(diǎn)暈菜。

自1995年以來,10來年過去了。微軟推出了多種各式各樣的技術(shù)。我還記得Visual Studio 6.0中還有兩個(gè)叫做FoxPro和J++的東西,F(xiàn)oxPro來自Foxbase,還有個(gè)幾年,J++好像就沒有幾年。ActiveX Control完全是一個(gè)失敗的技術(shù),而那個(gè)叫做VB的編程語言,今天看來,它的確毀了很多很有潛力的程序員。在COM出現(xiàn)的時(shí)候,不知道今天還有多少人還記得一個(gè)叫MTS的玩意?今天,不知道還有多少人記得有一個(gè)叫ODBC的東西?在這種復(fù)雜混亂的Windows世界中,是否讓你疲于追趕?今天的.NET不知道又有多少技術(shù)會(huì)隨著時(shí)間所沉淀?在Windows上面,我們學(xué)習(xí)了許多的失敗技術(shù)或是說是過渡技術(shù)。而我們的Unix自從上紀(jì)70年代以來,就沒有多大的變化,而因?yàn)閁nix應(yīng)運(yùn)而生的C語言直到今天依然光彩奪目。我相信這個(gè)30多年來久經(jīng)考驗(yàn)還那么簡單的Unix。

Unix就是這么簡單,各位想在Unix下學(xué)開發(fā)的朋友,Windows那么復(fù)雜的操作系統(tǒng)都過來了,你還會(huì)怕這么簡單的Unix么?

本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/31/showart_511746.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP