Gakki 鎮樓~程序員
首先明確一點:你必定須要一個操做系統嗎?web
答案是:不是。操做系統並非 magic,它也是一個程序,只不過是比較特殊的程序。理論上徹底可能不借助於操做系統寫程序。操做系統只是給你提供了一套現成的接口,讓你能夠輕鬆高效地控制硬件。(固然,操做硬件是很是繁瑣的,感謝操做系統,才能讓咱們可以高效地開發應用程序。)django
操做系統是什麼這個問題太大了,牽涉到了不少不少方面,一會是確定講不完的。先來說講操做系統有什麼用?或許這能幫助咱們更好地理解操做系統。編程
其中硬件資源包括 CPU、內存、IO 設備等等。因此,能夠把 OS 看做是對硬件的一種抽象。不一樣的 OS 對硬件有不一樣的抽象接口,應用程序經過調用這些接口來完成對硬件的操控,而避免了直接和硬件進行接觸(這一般是很是繁瑣且易出錯的)。框架
那麼,你可能會問:我能夠跳過操做系統這一級直接開始擼代碼嗎?答案是:Yes!你固然能夠,理論上徹底可行,上古時期的程序員就是這麼作的。性能
咱們來看看一個 word 程序牽涉到了哪些和硬件的交互。操作系統
試想一下,若是沒有操做系統,你得手動控制硬件,那會有多困難!感謝操做系統,你寫程序的時候,這些功能基本均可以經過很簡單的 API 調用實現。好比你要顯示一個字符到屏幕上,只要調用 printf 方法就好了。3d
再好比說存儲一個文件,若是要你本身實現的話,你得考慮具體把數據存在哪一個物理位置,該如何保存,爲了保存文件得分配多少內存......有了操做系統,這些過程就只是一個簡單的system call 調用了。cdn
能夠這麼說,編程技術的發展就是這麼一層一層抽象疊加起來的。以 Python web 開發爲例,從下到上的抽象,想到的能夠有:硬件 -> 操做系統 -> C語言 -> Python 語言 -> Python HTTP, WSGI 等基礎 web 實現 -> Django web框架 -> 你的業務代碼。blog
通常來講:抽象層次越多,速度也就越慢。Python 抽象層次已經算很高很高了,總所周知,Python 的性能也是比較慢的。django 在 Python 層次上又抽象了一下,性能可想而知也是比較差的。可是,抽象層次高有抽象高的優勢,這意味着你能夠用少許的代碼完成大量的功能,快速開發業務。
我認爲,隨着硬件的不斷髮展,以後 Python 與其餘語言的性能差距將只會是0.01S 和0.001S 的問題,這一點點的性能差別,徹底能夠被忽略。開發者的時間纔是最值錢的。
附錄: