小屋創作

日誌2015-03-26 00:50

【閒聊】程式設計的美學─作業系統與設計哲學

作者:JiJIkopo



圖源:http://www.ictlounge.com/html/operating_systems.htm

前言:

        會打這篇的原因是因為巴哈的好友溫蒂的回覆,當下看到的直覺就是─這真是個挑戰啊。除了我較常接觸的領域是資訊安全以外(不過多少有些關係啦),接觸作業系統相關知識的話就只有大一時合作的專案和學校的課程了。

        還有如果要了解作業系統,我認為先應具備的知識為資料結構、組合語言、C、計算機組織等,這些都算是資訊相關學群的重要科目,學過這些的話,就可以輕易的做出精確的「行話」來介紹,如果要讓沒碰過這些相關知識的人明白,這真的不容易,最後是有些專有名詞我根本不知道要怎麼翻譯,簡單來說就是我的功力不到位啦XD

        不過作業系統也有很多有趣的核心設計可以提到,如Multithreaded Programming、Scheduling、Synchronization、Deadlocks、 Memory Management、Virtual Memory Management、File System,最近是有些時間,但這些每一個議題都可以獨立寫一篇出來,此外,PC的、手機的、家電的作業系統又不太一樣,這也是一開始會錯愕的原因,不過在最近我和幾個朋友說了之後,他們馬上點出我的盲點─「你白癡啊,一般人不會想要瞭解這些吧?」啊,也是,我在想什麼啊,自己的確有些笨笨的,這篇就盡量拋開專有名詞和細節,僅以作業系統的設計哲學來著手。

大綱主要分成:
(1).作業系統也和哲學有關?
(2).親近使用者的Windows
(3).強調美感與流暢的Mac OS
(4).獨立開發者的最愛─Linux
(5).有沒有最好的作業系統?




作業系統也和哲學有關?

        哲學?這傢伙腦袋壞了嗎?如果當下看到哲學的直覺是這個,我想也不會太奇怪,等等
先別按上一頁,讓我來詳細說說這哲學與作業系統的關聯。

        好,我來破個題。或多或少,我們每個人都有自己的一套人生哲學,如可以簡單到像是幫助他人,或是複雜到對抗不公不義,也就是自己的生活準則,或許這樣說不好理解,講白點就是「自己的地雷」吧,我是如何面對自我及自我以外的人事物,這是每個人有意識或無意識的情況下都會遵守的一套規則,也牽涉到他人給予你正面或負面的評價,也因此沒有絕對完美的能人,也沒有可惡至極的壞人。

        而作業系統有沒有這套規則呢?在幾年的使用心得下,我認為是有的。作業系統是一套軟體的服務,既然是一個服務就一定會有些準則或思想,我的使用者對象是誰?想讓使用者有什麼樣的體驗?而我最熟悉的Linux作業系統也不例外,有一套自己的哲學思維或設計思維,讓使用者在操作時有不同於其他作業系統的體驗。

        其實不僅是作業系統,每一個公司都有自己的一套思維或稱企業文化,公司的核心思想和宗旨是什麼,要如何去對待使用者,以IBM的商業運作規則為例,IBM的思維是明文規定的企業文化,舉凡出要如何對待自己的員工、前來光顧的顧客以及與之合作的供應商,這些零碎的事項積累起來正是一套簡單的思維。

圖源:http://www.emblation.com/design.php

親近使用者的Windows

        舉最多人使用的Windows作業系統為例,其實Windows的思維與Digital Equipment 公司的VMS非常相似,並不難理解,Windows提供簡單方便的圖形化介面,縱使沒有資訊相關背景的人員,使用Windows仍不會遇到太多麻煩,移動滑鼠、點擊桌上的圖示,用鍵盤敲敲文字,大部分的工作只要這樣就能完成,創造了一個相當方便的環境,雖然也有CMD這些簡單的命令提示字元來進行些low level interaction,但卻將使用者透過Command Line Interface(CLI)來操作的權力限縮到非常小。

       簡而言之,Windows的設計思維就是「把一切會造成使用者麻煩的可能性,全部都擋在外頭。」我認為Windows是假設使用者不擅長使用電腦,甚至是害怕電腦的,所以要讓「複雜性」遠離使用者,這個地方你不懂,所以你不得修改這裡的任何東西,極力地限縮使用者的權力,優點就是提供了一個安全的空間,讓使用者不用去擔心太細節的問題,但缺點就是也限制了使用者或開發者的創意,個人認為這是十分可惜的一件事情。


強調美感與流暢的─Mac OS

         我大約是四年多前開始使用Apple系列的產品,Mac是由Apple開發的作業系統,Mac與Windows不同的地方為,它因為有設計出一個強大的Bash shell,所以靈活度比Windows高很多,且提供以使用者為出發點的GUI(Graphical User Interface)─Aqua,Aqua包含了外觀樣貌、視窗行為以及各種GUI元素的整合,有非常非常多的優點,高品值的縮圖即是一例,十分簡單易懂,且又是清楚好用,如果想知道更多就點這裡

        除了漂亮高效能的使用者介面以外,更令人印象深刻的則是Mac強大的省電機制(或稱電源管理)和體現了Apple的整合操作系統與硬體端的優勢了,此外在Mac裡,上方比下方重要,左方比右方重要的邏輯,也與Windows不同。

        因為我算是個果粉,只說我個人的經驗不準,或說會有些偏頗,但我多數認識的開發者一致認為,相較於Windows,Mac提供了更一致、更整合流暢的使用者介面,雖然說Linux對於使用者開發來說是最不受限制的,但因為於使用者來說,Mac的設計較為平易近人,所以我認為Mac比起Linux更適合開發者使用。



獨立開發者的最愛─Linux

        那Linux的核心思維又是什麼呢?Linux假定使者熟悉電腦語言,並且知道自己在做些什麼,有一段話曾說:「Unix的設計不是為了讓使用者做出傻事,因為如果是這樣的做法的話,那也會阻止他們做出聰明的事情。」這句話其中就包含了Linux的核心思維,Linux從來就不認為使用者的能力不足,而是假定使用者的每一個操作,他們都明白自己正在做些什麼,會影響什麼。所以Linux不會阻止你去下的任何屬於你這個帳號權限的指令,縱使是會危害系統的指令也一樣。

       這樣一來就給予了使用者很靈活的運用空間,不論使用者是有意還是無意的,作業系統不會阻止使用者做的任何事情,也不會給予你瘋狂的行為踩下煞車,所以你輸入什麼樣的指令,就會導向什麼樣的結果,中間的過程完全不過問,讓你輕鬆掌握一切,這些聽起來十分迷人,但卻也是十分危險的想法,因為大部分使用者不知道自已在做什麼。

        歷年以來,有關探討Linux相關哲學思維的書有很多,如The Unix Philosophy、Linux and the Unix Philosophy、The Art of Unix Programming,這些書整理出裡許多對Linux的核心思想與原則,大約歸類為十條到十七條不等的原則。Oregon State University (OSU)也曾經對Linux有一套精闢的解釋。



        Linux有許多優點,如穩定的系統、支援多工、免費或少許費用、相對不耗資源的作業系統,以及適合小核心的作業系統,只要幾百k就能完成一套完整的作業系統,因此相當適合用於家電或是小電子用品,如數位相機、PDA、手機(Android也是一個以Linux為核心的作業系統)等,也就是現在當紅的技術之一─嵌入式系統嘍。



        Linux的優點其實很難說得完,真要整理的話就是自由與開放、配備要求低廉、功能強大且穩定、獨立作業,自由與開放是指Open Source Code,不論是任何人都能取得與修改,開發者常會因為一些特殊需求要更動Source Code來對應自己的開發環境,這時就是十分受用的,好處是開發方便,壞處就是出了問題,沒人會來負責;配備需求低廉與功能強大與穩定,這兩者則是對於沒有強大的工作站的個人開發者十分受用;獨立作業則是指可以獨自完成work station或server等服務(如:web、mail、FTP...)。也因為上述特色,讓很多「反微軟聯盟」的程式設計師高手得以應用,不斷開發出新軟體與軟體界的「邪惡帝國」抗衡XD

        Linux的缺點就是圖形介面做得不算好,雖然近年來已經有不少圖形介面(如Ubuntu)的Linux作業系統得以使用,但整合度還是不夠好,如果真的要完全掌握Linux,還是要透過CLI進行操作的效果會好些,這樣的限制也造成Linux的普及率一直沒辦法提高。另一個則是我自己的個人問題,因為Linux的硬體要求實在是太低廉了,如果要在Linux的系統上跑Windows,時常會因為硬體的問題而跑不動XD



有沒有最好的作業系統?

       如果要拿Linux與其他系統做出比較,我曾經看到一個精闢的例子,想像你現在身處於廚房,你現在餓極了,想要吃幾道菜來解解口腹之慾,而你要怎麼解決這些問題呢?

拿到菜單與材料,再進行烹飪即可。

        Linux作業系統在這些流程之中完全透明,且讓使用者完全知道要如何使用做出想要的菜,連所需的材料如何取得與製作都一併給你,但你必須自己料理,而其他大部分的作業系統則是告訴你「可以」做這道菜,但不會讓你知道烹飪的流程,更遑論製作的方法和原料了。如果是一流的廚師自然是適合前者,這樣更可以發揮它的長處,但如果是一般不熟悉烹飪的人則是適合後者,只要知道能做出來就行了,使用前者反而會適得其反。

        總結來說,權力太大確實會有它的危險之處,但如果使用得心應手的話,就能夠確確實實地做出比其他系統更傑出的作品,所以Linux的哲學精神其實並不難,就是給予每個使用者最高限度的尊重,並讓每個使用者用自己想要做的方式做事情。這不是考試,也不是競賽,沒有誰好誰壞,第一名與最後一名,就像去自己喜歡的店家享受服務一樣,對自己胃口的就會成為常客,不對自己胃口的就謝謝再連絡,大概就是這麼簡單的一件事情吧。你,找到適合自己的作業系統了嗎?



後記:


        Steve Jobs 曾說過:「並不是每個人都需要種植自己的食物,也不是每個人都需要做自己穿的衣服,我們說著別人發明的語言,使用別人發明的數學。我們一直在使用別人的成果。使用人類的已有經驗和知識來進行發明創造是一件很了不起的事情。」

        開發作業系統有什麼意義?如果只想當個end user那倒也罷,我們對每天在上面開發程式或使用的Android、iOS、Windows,多少會存些好奇的心態吧,對於圖形處理、通訊協定、作業系統,總會想改個幾行來延伸或理解自己的所學,學習完整的架構,掌握並延伸這些知識,不僅是對以往偉大創新者的致敬,更是能夠提升自己對環境的使命與能力(要把自己認為不可或缺,生活才會快樂喔XD)。

        這篇的觀點只是個人的想法,剛好自己對於Linux的系統較為熟悉,所以會介紹多了一些,但如果是Windows的開發者或許就能明確地指出錯誤的地方,我的瞭解還不夠透徹,所以只能算是個人使用心得,沒有特別的貶抑或讚揚。盡量弄懂自己正在使用的東西,我認為不僅是開發者的工作,還有一般的使用者,這樣才不會被資訊媒體牽著鼻子走,嘖嘖,真是博大精深的一門學科啊><



我有一個小小的夢想,有天,連六歲的小孩都能看著電腦歪著頭說,
「疑?為什麼我的bug沒辦法de出來?」

如果這篇能讓你對資訊科學產生興趣,那就太好了~:))

48

10

LINE 分享

相關創作

apr01

Ciel

聖伝 イラスト

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】