編程語言和操作系統是什麼關係?

編程語言 運行在 操作系統 上,而操作系統又是編程語言編寫的(比如C語言和Windows操作系統)

那到底是先有編程語言?還是先有操作系統?二者的關係是怎麼樣的?


語言和系統都是運行在CPU上的,不是語言運行在系統里。系統應該被看成類庫和框架。


二者都是為了高效使用搞出來的上層的殼,好像也沒有啥密切關係....反正你要運行啥都是基本的指令湊出來的。就像輪子哥說的,人為約定一些基本操作集和,運行在cpu上。

操作系統主要是用來管理分配資源(cpu時間,內存,io,等等),就像是一個把各種管理調度策略集中起來的大管家。可以想像1946年的第一台電子計算機是沒有現代意義上的OS的,按電鈕就可以完成操作,但隨著操作不斷複雜化,人們的需求也越來越多,我們希望計算機能處理更複雜的指令,希望通過更高級的方式輸入指令(比如鍵盤而非按鈕),希望能同時並行的處理任務,這就催生了OS的發展....

編程語言大概就是對基本指令操作的封裝然後不斷翻譯成好懂的文字。最早的比指令集更高級的彙編語言應該是早於操作系統的,因為編程語言最初的目的就是把01字元串翻譯成人能懂的東西(mov goto loop之類的指令),這個比操作系統的需求應該更迫切


非要回答的話,先有的還是編程語言

這樣理解,

最早的計算機沒有真正意義上的操作系統,但是可以用機器語言編寫的程序來操作它,

機器語言的程序可以直接輸入0和1到機器里(不一定是鍵盤輸入了,也可以是打孔帶之類的)。

然後機器語言編譯出最早的彙編語言的解釋器,在這台計算機上就可以使用彙編語言了,彙編語言翻譯成機器語言還是可以想像的吧。

彙編語言跟機器語言沒有本質的區別,只是把不知所云的0和1翻譯成了字元。

然後就可以用彙編語言編出操作系統了,

比如最早的Unix系統就是用彙編語言寫的(1970年),運行於PDP-7上(彙編語言跟具體機器相關)。

最早的高級語言的編譯器應該也是彙編語言寫的,但可能功能非常有限。

早期的計算機可以沒有操作系統,開機後的界面就是解釋器,直接輸入程序來操作。

比如1975年,Bill Gates用彙編語言(Intel 8080)為第一台PC機Altair 8800寫了Altair BASIC解釋器,而1977年,Steve Wozniak用彙編語言(MOS 6502)為自家產品Apple II寫了Integer BASIC。

有了現代的操作系統,以及比較基本的高級語言編譯器之後,就可以在此基礎之上編寫更高級的操作系統、功能更豐富的編譯器,以及各種各樣的應用軟體了。

比如1972年,Unix系統隨後用C語言重寫(或者說移植),也使得Unix可以運行於不同的機器架構上了。


如果最原始的機械構造也能算操作系統,那就是先有操作系統。

如果你是指的現代的操作系統,他本身就是編程語言開發的,所以你可以理解為操作系統是一類特殊的底層程序.....

現代的計算機軟硬體體系一般主要是操作系統通過指令集體系和底層執行硬體進行交互,很多用戶級程序都是運行在操作系統之上的,畢竟如果每個應用程序都要負責應用層和系統層的功能會顯得複雜且缺乏安全性。但是僅僅依靠系統提供的介面並不能滿足所有需求,所以應用程序也有部分直接與底層硬體交互的部分。

所以對於「編程語言」和「操作系統」的關係這個問題,就概念的角度來說,【操作系統】本身的目的是為了調度系統的軟硬體資源的一個體系,不一定必須要由編程語言的形式實現,而【編程語言】的目的在於通過人類能夠比較高效理解並應用的語言形式通過編譯形成相應的彙編語言(也是一種編程語言)→機器語言來實現程序功能的一類語言。所以操作系統是一種功能控制體系,而編程語言只是一種實現的方式。

但是現在應該幾乎所有的操作系統都是通過編程語言實現的,所以你可以看做是編程語言實現了操作系統和其他的程序,而其他大多數程序很大一部分是運行在操作系統之上的。目的就是統一有序地調度系統資源進行多任務處理,盡到最大的效率完成工作。


問題都是錯的。首先,編程語言是不能運行的,它是可運行的計算機程序的一種表達方式,而編譯器或者解釋器把編程語言轉換為計算機可執行的程序。

而操作系統也是一種可執行的計算機程序,它通常先在計算機上運行起來,作為一套中間層存在。我們都知道,中間層是為了提供抽象轉換而存在的,而這套叫做操作系統的中間層,定義了一套規則,使得後續的可執行程序能夠更容易的被運行起來,而且能更容易的利用各種硬體(顯示,鍵盤等等),能夠調用一些庫來消除不同的程序間重複的運行邏輯

總結下,編程語言是一種可執行程序的表達方式,編譯器把編程語言的表達方式轉換為可執行的程序,而編譯器做轉換的過程,可以操作系統相關(也就是轉換出的程序運行在特定操作系統上),也可以操作系統無關(直接在裸機運行)。而操作系統,本身是一個程序,也可以是編程語言來表達的(編譯後通常操作系統無關),也可以不是(直接寫機器碼),而操作系統這個特殊的程序,提供了庫,硬體驅動,運行時環境,框架等,是為了讓運行在其上的程序寫得更容易


機器,彙編,高級語言。 就像滾雪球越滾越大。。滾出編譯器。。滾出操作系統。。

就像造機械一樣,最初的機械肯定簡單暴力造的,之後就可以用機械就造機械了


編譯器是造軟體的軟體

操作系統是管軟體的軟體

操作系統能管造軟體的軟體

編譯器能造管軟體的軟體


問題就是錯的,在你理解編譯,以及,程序怎樣使用硬體資源之前,本問題下的所有回答,你都不能理解,甚至不能分辨這些回答的對錯。


安卓下用Java編程.

蘋果下用Swift,Object C

Windows下用VB.Net,VC.Net,VB,VC.

U3D這可以的遊戲開發工具,可以導出安卓,蘋果,Windows不同的版本.


操作系統是用編程語言編寫的,就這麼簡單。

程序在運行,不是某個語言在運行。語言是一個抽象概念,一些規則。


先有編程語言,後有操作系統。

早就計算機誕生之前,編程思想及編程語言就產生了。

計算機的發明,從某一角度來看,不如說是為了驗證編程語言的可用性,而造出來的。

打個比方:計算機就像劍,編程語言就是劍法。

最低層的編程語言是機器語言,這種語言計算機懂,受過專業訓練的人也懂。

後來,計算機越來越複雜,功能越來越強,為了增強開發效率,人們開發出高級語言(編程語言),開發出操作系統,這些都是建立編程語言的基礎上的。

不管是操作系統,應用軟體,還是我們常見的高級編程語言,都要轉換為機器語言才能運行。

操作系統、應用軟體、(高級)編程語言之間的關係,從硬體的角度來看,應視為並列關係。實現的功能不同而已。


編程語言能寫應用程序,操作系統是一種應用程序。


推薦閱讀:

男IT與女IT有無差別?
為什麼北航一直沒有培養出IT大佬?
做電腦運維經常被人說是修電腦的,運維前途在哪?
定居蘇州還是杭州好?(2015蘇州房價飆升之後)?
學計算機專業的女生,剛畢業是去大公司還是小公司比較合適呢?

TAG:個人電腦 | 操作系統 | 編程語言 | IT行業 | 電子計算機 |