原創:糾正國人對Linux的誤解和錯誤認識

來源:互聯網
上載者:User

錯誤印象和認識羅列如下,一一解釋:

1。linux下的軟體太少

回答:linux 下的軟體一點也不少。windows還在娘肚子裡的時候,Unix已經如日中天了。要知道微軟公司開發的第一個作業系統是什麼嗎?是一個叫做Xenix的東西,是Unix的一個分支,後來才去搞DOS的。有人又問了,Unix不是Linux阿,要知道,Linux完全重新的實現了Unix,是一個完整的類Unix系統,幾乎所有的Unix下的軟體要移植到Linux下不費吹灰之力,甚至把二進位代碼拷貝過來就能用(前提是硬體平台相同)。另外,GNU旗下的自由軟體更是數不勝數,完全能滿足你的任何需要。
    如果硬要說Linux有什麼硬傷的話,那就是遊戲軟體不足。windows下的許多大家耳熟能詳的遊戲,是不能直接在linux下玩的,但是現在出來了一些軟體,可以似得windows下的軟體在linux下直接運行,如wine.據我所知,在Linux下安裝wine後,可以跑起來許多遊戲,包括魔獸爭霸等等,而且不卡,很流暢。但可惜的是,wine還不太成熟,還有部分軟體跑不起來。
    但是Linux下的遊戲軟體仍然很多,不過許多大家都不熟,但在歐美很流行。要知道Linux在歐美是相當流行的。
    撇開遊戲軟體來說,Linux下的軟體完全能取代windows。有許多重要的軟體甚至只有Linux版的,沒有windows版的(要知道,在好萊塢,製作電影特效,windows就完全敗給了Linux)。下面把我們常見的軟體在linux下的代替品羅列一下
    Photoshop---> Gimp
    Office------> OpenOffice 等等
    ……
    其中只有autoCAD的替代品不行,也有可能是我不知道。

2。linux下的軟體難用
    說句實話,許多軟體是基於命令列的,沒用習慣會很難受,因為要記大量的命令和參數。但是用習慣了後,會瘋狂的愛上他。理由如下:GUI的介面雖然用起來很方便,但是等功能複雜到一定程度後,你一定會有找了N久都找不到一個功能藏到哪個菜單裡的經曆。此時調用命令是很方便的。在畫圖方面,GUI的介面精確度不夠,如autoCAD就設計了命令介面。如果工作量很大,又都是些重複的操作的時候,使用GUI就不再是享受,而是折磨。此時你肯定非常的需要一個程式能自動化操作這些,也就是所謂的指令碼化。而指令碼化在命令列是很自然的事情。用GUI可以做大量工作,但是表現力不夠,不能表達複雜的東西:比如在word中,大家一定有這樣的經曆,想調整一些位置和間距,但word死活不按自己的意思來,光點滑鼠又沒辦法傳達自己精確的意思,只有惱火而已。我說這些,並不是有意敵對GUI,而是想說明一點,GUI並不是萬能的,他的缺陷恰好命令列可以完美的彌補.
    Linux也不是只有命令列,也有豐富的GUI,你可以充分的按你的意願來配置你的案頭,玩一些花哨的特效,如3D,模仿蘋果的酷眩的應用程式欄,你可以做任何你想作的事情。
    不過有一點是要承認的,Unix是為程式員設計的系統,因此普通使用者覺得難用是不可避免的。不過這一點已經通過GUI得到了很大的彌補。

3。linux下的開發環境不友好,沒什麼好的整合式開發環境
    說到這裡,我只想說一句,閣下你一定是一個菜鳥。你肯定不知道你在VS下編譯器時後面都發生了什麼事,你偵錯工具時都調用了什麼程式,你的模組是怎麼串連起來的,你只知道點一下按鈕。整合式開發環境,也叫IDE,意思是把編輯器,編譯器,調試器,檔案管理工具等等整合到一起。
    在這裡插入一點Unix的知識:Unix的文化有這麼幾點:
    1。一個程式只做一件事,並且把這件事做好。
    2。程式之間通過協作來做一個複雜的任務。
    因此在這些思想的指導下,Unix骨子裡是比較反對IDE這種東西的。像IDE這種軟體背後隱藏了許多windows背後的價值觀:
    1。把功能整合到一個軟體裡,大而全。
    2。如果功能需要改進,就等著軟體升級下一版。
    兩者的差別顯而易見,windows下會經常對某一個功能實現一次又一次。如VS有實現了編輯器,word也實現了編輯器,記事本也實現了編輯器,每個軟體如果需要編輯器,如果有特殊的需要,就需要自己實現一次。而在Unix下,編輯器是分開的,幾乎所有的軟體如果設計到編輯工作,一定會開一個分進程調用專門的編輯器程式,如果你習慣了vi ,你可以總是選擇用vi進行編輯。

    當然了,Linux下也有IDE,Emacs就基本上說可以是。有人笑話說Emacs是一個偽裝成編輯器的作業系統。你可以搜一下用Emacs的人有多少,有多少牛人在用這個東西。

    編輯器用vi或者Emacs,編譯器用gcc,調試器用gdb(可以和vi和Emacs聯合起來用),編譯整個軟體用make,自己寫makefile,或者用工具自動產生makefile。這些用習慣了,就會發現一點都不麻煩。另外,Linux下編程經常的會用到一些代碼產生器,如lex,yacc,這些都是標準化了的基本工具,這些在IDE下不太好用(WINDOWS),在makefile 裡寫則稀鬆平常。
    在windows下習慣了的使用者,一定會對軟體不停的更新換代記憶頗深,還以為世界本來就是這樣的,而在Unix下,因為都是分開的程式,你對編輯器不滿意,你換一個編輯器就完了,而沒有必要等升級換代。
    windows下的東西沒有核心價值,許多技術隨著時間會貶值甚至消亡。
    Unix下的東西擁有核心價值,技術幾乎沒有貶值,如vi編輯器,80年左右就出來了,發展到今天,基本操作變化很少,仍然流行,你掌握的技能不會失去作用。
    如perl,lex,yacc,等等,這些使用了數十年的程式太多了。
    而在windows下,遠的不說MFC,現在已經沒什麼人用了,VB也被改成了幾乎成了另一種語言,現在又是.net,我去年開發項目還在用.net 2.0,現在都已經出到.net 4.0了,總感覺在微軟後面不停的追阿追,新東西還沒學會,可能就要淘汰。微軟又在搞一個什麼M語言,我的天納,技術貶值的速度也太快了。
    而我在Linux下,可以開心的學幾十年前就有的軟體,而不用擔心會過時。並不是說在Linux下就不會有軟體過時,而是你會很清楚什麼東西不會過時,什麼有可能過時。在windows下就做不到。

4。說一下windows下文化與Unix/Linux下文化的差別
    在一個作業系統上呆久了,一定會造就相應的文化。windows下的文化,也就是大家所謂的常識,有這麼些:軟體比較龐大,軟體越來越胖;每隔數月要重裝系統;軟體頻繁的升級換代;殺毒;混亂的註冊表;新裝好的系統啥都幹不了,滿天下的去找破解版軟體,找到後又滿天下的搜註冊碼,裝好軟體有可能還中毒……
    在Unix/Linux下,這些文化幾乎都不存在。新裝好的作業系統,除非是自己要搞壞,一般是不可能壞的。前提是不用root登入案頭,養成用sudo的習慣。幾乎沒有病毒,反正我用了一年了,從來沒遇到病毒。軟體多而全,一般體積都很小,不是那種一個大型軟體包幹一切,而是許多專門性的小程式在一起協作搞定,需要的時候,很容易自己寫一個小軟體出來和原來的軟體集協作,極端的時候只要10行以內的C代碼就可以搞定。設定檔放到/etc下,整潔有序;有些讀者可能想知道詳細一點的內容,在這裡我略微說一些:
    Linux下每一個裝置(除了網卡)都是一個檔案,基本都放在/dev下,你可以用基本的拷貝,等命令來操作這些檔案。因此,Linux不需要虛擬光碟機。一個iso檔案,只需要將其放到迴環裝置上,然後掛載到主檔案系統就行:
    # losetup xx.iso /dev/loop0
    # mount /dev/loop0 /mnt/cdrom
    或者簡便一點,只用mount命令:
    # mount -o loop -t iso9660 xx.iso /mnt/cdrom
    這些命令都是每個Linux發行版一定都有的基礎命令。
    備份硬碟的MBR: 這個在windows下沒有專門軟體,還做不到,而在Linux:
    # dd if=/dev/sda of=/home/MBR.backup bs=512 count=1
    搞定。dd命令是Linux基礎命令。
    建立一個記憶體磁碟,就是在記憶體中虛擬一個硬碟分區出來,在windows下要專門軟體,而在linux下用基礎性的東西輕鬆搞定:
    如果要小分區,就直接用/dev/ram0-15 系統內建了16個記憶體裝置檔案,只要把這些裝置檔案格式化,然後掛載到檔案系統就行:
    $ sudo mkfs.ext2 /dev/ram0
    $ sudo mount -t ext2 /dev/ram0 /mnt/my_directory
    sudo 意思是用超級管理員的許可權來執行這個命令。這樣掛載上來的假分區,一般只有64MB大。如果要很大的分區,可以用tmpfs檔案系統:
    $ sudo mount -t tmpfs 任意名 /mnt/my_directory
    搞定。預設情況下這個分區會佔用一半的記憶體。
    現在你看到了吧!什麼叫做把裝置當作檔案,就是可以用操作一般檔案的命令來操作裝置檔案!不需要額外的軟體。不知道這個算不算做方便?
    統計某篇英語文章的詞頻:在windows下要專門編程或者專門的軟體吧?在linux下且看:
    tr 'A-Z' 'a-z' | tr -cs 'a-z' '/012' | grep -v '^/s*$' | sort | uniq -c | sort -n
    結果就出來了。解釋下:|表示管道,意思把前一個程式的輸出作為下一個程式的輸入,這樣形成一系列的過濾器。第一個tr命令,把所有的大寫字母轉換為小寫;第二個tr命令把不是a-z的字母轉換為分行符號,接下來的grep過濾掉空行,然後sort排序將重複的單詞排到一起,uniq 將重複單詞的數目放到單詞前面,最後又用sort對單詞的數目排序。怎麼樣?漂亮吧。這裡所有用到的命令,都是Linux下的基礎命令。
    再者,如果你寫了個排序的程式,想測試效能,可以如此:
    seq 1 10000 | shuf | time sort
    seq命令產生一個數字序列,這裡是1到10000,結果通過管道傳遞給shuf命令,shuf是用來將輸入行的順序隨機打亂的,之後送給sort。time放到sort前面是測試sort執行的時間。
    在Linux下,這樣組合各種小程式來完成一個任務是再稀鬆平常的事情了,現在你能理解為什麼Linux許多的程式不會過時的原因了吧?編程會讓你感到十分有趣,因為寫一個程式只要做一件事,其他的和其他程式協作就可以了。許多程式不用寫的很多,就是產生些文本,過濾些文本而已,簡單,搞定一切。
    這些,恐怕是在windows下想都不敢想的吧。聽說現在windows 7出了個power shell, 意思是要超越Unix/Linux shell的強大功能,姑且拭目以待!

 

後記:更多的內容,請在網上搜 吳垠的一篇著名的文章《完全用Linux工作》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.