操作系統(tǒng)和語言的關(guān)系(轉(zhuǎn)載)

“我一直弄不懂windows程序是什么?也不知道c++windows程序有什么關(guān)系,哪位高手知道,能不能告訴我一下,謝謝……”

反正天黑,我就胡扯一通,才發(fā)現(xiàn)完全答非所問。寫到這里來。

--------------------------------------------------

Windows 是一個(gè)操作系統(tǒng)……

操作系統(tǒng)必須支持他人(軟件開發(fā)人員)在它上面開發(fā)出新程序……

開發(fā)程序,自然要有開發(fā)語言的選擇,c? c++? pascal? BASIC? C#? java?Python??

這些語言在這個(gè)層面上,并不是平等的……

因?yàn)?,為windows等操作系統(tǒng)最初只提供了一種語言的開發(fā)接口——

那就 C語言。

這當(dāng)然也不能懷疑微軟開發(fā)人員偷懶,而是因?yàn)椤?/p>

因?yàn)闅v史的原因,C語言尾隨匯編被選為操作系統(tǒng)開發(fā)的主要語言。

而在對外(提供給軟件開發(fā)人員上)接口語言選擇上,匯編不僅太復(fù)雜了,而且是硬件相關(guān)的……

所以(加上種種其它原因),歷史讓C語言成為了操作系統(tǒng)開發(fā)接口上的第一語言。

事情當(dāng)然不會僅僅是這樣……

因?yàn)槿绻麅H僅操作系統(tǒng)的支持,那C語言也稱霸不了多久……

關(guān)鍵是,既然操作系統(tǒng)不直接支持其它語言……

那其它語言就只好倒過來去支持操作系統(tǒng)——

所謂既然沒辦法讓山走向穆罕默德,但穆罕默德可以走向山。

而c++,c,pascal,java,python等等語言,雖然在走的方式上有所不同,

但都要走向操作系統(tǒng)這座山,

既然操作系統(tǒng)這座山的近乎唯一的路是C語言——

所有開發(fā)語言就只好放下身段

都提供了對C的支持(編譯的或者鏈接的)。

關(guān)于C就這樣了:

?操作系統(tǒng)是天子

其它語言是諸侯

那句曹孟德說的話,我就不說了。

C的江山就是這樣打下的。


八仙過海,各顯神通……

現(xiàn)在來說說它們各用各的什么招數(shù)走入C的內(nèi)心……


C++

既然你問的C++,那我就先說它,并且說得正經(jīng)一點(diǎn)——

c++,噢,它是走得最近的,基本在語言,語法上都完全兼容C。

當(dāng)初世上最早的C++編譯器,不過是把C++語言直接翻譯成C語言,

然后再調(diào)用C語言的編譯器……

如果那時(shí)候有馬甲這個(gè)詞——

Cer 一定要嘲笑Cpper了,說它們是馬甲,是山寨,是……

但隨著名稱為“C with class”到"C++"的變換……

這一切都是過去式了,C++終于有了真正的編譯器,

可以直接將C++搞成匯編,不再需要通過C的中轉(zhuǎn)。

當(dāng)然了,C++也可以直接使用匯編 。

而語言的兼容,以及庫的兼容依然不變。

雖然后面二者慢慢的也有一些各走各的路了,但——

C++永遠(yuǎn)是眾多語言中,對C最直接的支持者。

?Pascal

Pascal曾經(jīng)是C的競爭者……

曾經(jīng)在在歐洲大陸,它的使用者甚至比C還多……

因?yàn)?,它是學(xué)院里首選的語言。

它有自己的庫……比如那些數(shù)學(xué)庫,這其中原因,當(dāng)然是因?yàn)椋?/p>

它同樣可以驕傲直接使用匯編語言,以及

它覺得其實(shí)自己在效率上根本不比C差。

WINDOWS提供的函數(shù)接口形式,最初就命名為PASCAL

不過……歷史沒有選擇它,大概是因?yàn)椤?/p>

人類總是懶的,誰讓在用花括號的地方,pascal偏偏喜歡用begin和end呢?

當(dāng)然,這是一句玩笑話。

誰當(dāng)真誰是250——C采用的{},在N多國家的鍵盤上,根本找不到。

這一點(diǎn)還得倒過來說pascal有國際觀……

言歸正傳,歷史在發(fā)展,操作系統(tǒng)作用突然變大……

于是pascal終于還是要能調(diào)用C的函數(shù)……

用于Delphi的老人都知道,它要調(diào)用windows的某個(gè)DLL,那個(gè)方便的,VB簡直要流汗——

MS自家的VB,在這點(diǎn)上竟然比不過別人家的delphi……

也沒有什么神奇的,不過是borland的程序員兄弟們比較勤快,

早早的將一大堆的Windows C形式的接口,翻譯成了Pascal的。

停,關(guān)于pascal,我說太多了。

還是要補(bǔ)充一句,操作系統(tǒng)已經(jīng)在又一次變得不重要了……

?Python

我要跳過java,先說說可愛的python.

啊,它當(dāng)然可以有 Java的實(shí)現(xiàn),也可以有.NET的實(shí)現(xiàn)。

因?yàn)樗陌l(fā)明者說:實(shí)現(xiàn)了python的語言,及它的必須運(yùn)行時(shí)庫,那就是一門python。

(原話是怎么說的?要不怕被某奇怪的事實(shí)給傷到我的心,可以去官方查一查)

但CPython必然是Python中的Python。

它和C語言可以雙向互調(diào)——

它可以非常方便地調(diào)C寫的模塊

C也可以嵌一個(gè)它的解釋器,有肚子里運(yùn)行Python寫的腳本。

對C++也有很好的支持,包括數(shù)據(jù)結(jié)構(gòu)……推薦一下boost.python。

Pythoner已經(jīng)不認(rèn)為Python只是一個(gè)解釋器,他們說:

Python其實(shí)已經(jīng)是一個(gè)虛擬機(jī)。

其實(shí)這根本是侮辱Python.

Python真正強(qiáng)大的地方在于:有C/C++的XXX

基本上,就會有一個(gè)pyXXX在神奇地那兒候著——

什么叫老牌腳本語言!

不管啥場子內(nèi),都有人認(rèn)識他,這才尊稱“老”。

?Java

好吧說到虛擬機(jī),Java當(dāng)然應(yīng)該要出場。

雖然VM這個(gè)東西,60年代Pascal就在玩了……但

誰叫它出生得太早?沒遇上Internet?

?(網(wǎng)絡(luò)當(dāng)然只是表象,關(guān)鍵是那用K計(jì)的內(nèi)存喝兩杯啤酒就得溢)

操作系統(tǒng)是匯編和C寫的,猜一下虛擬機(jī)會是誰寫的?

Java.exe 是操作系統(tǒng)萬千進(jìn)程中的的一個(gè)進(jìn)程……

而所有java寫成的class

都活在是java.exe這個(gè)進(jìn)程從OS里分來的內(nèi)存里……

其中某個(gè)帶有靜態(tài)的,名叫main的函數(shù)的類,是某個(gè)java程序的最外面的那個(gè)門。

進(jìn)了這個(gè)門,那叫一個(gè)大同世界……

再也沒有人世間鬧人的差距……就差連貧富分化也解決了。

偶爾Javaer也覺得不爽,于是在那個(gè)門口,伸出了一只腳。

腳上一只鞋,牌子 JNI。(結(jié)論:Java仍然沒有放棄對C的支持)

若要問Java和Windows的關(guān)系?你可以一并問:

Java和Linux/UNIX的關(guān)系? Java和Android的關(guān)系?

我來回答你:沒什么關(guān)系,因?yàn)樗瞧脚_無關(guān)的,操作系統(tǒng)就是平臺。

原因?

因?yàn)镴ava很牛,這么多年來,只有它真正成為語言界的穆罕默德……

它逼著操作系統(tǒng)走向了它——

方法不過幾句話:

先說: “當(dāng)今操作系統(tǒng),跨平臺是主流……”

然后說: “你是一個(gè)操作系統(tǒng)?”

關(guān)鍵一問:“可是你居然不支持java語言?”

結(jié)論:“那你還是一個(gè)正常的操作系統(tǒng)嗎?”。

大多數(shù)男人在一句“那你還是一個(gè)正常的男人嗎?"

就生氣地脫下褲子證明一下……

但也有不吃這一套的,像微軟,反正已經(jīng)是微軟,

脫了也還是微軟。

沒辦法,曾經(jīng)的“日”公司,只好自己替它寫一個(gè)。

用什么寫? C和C++啊。

還有其它的每個(gè)操作系統(tǒng)的廠商,也一樣。

操著C寫一個(gè)JVM實(shí)現(xiàn)了Java搶走了c++的曾經(jīng)的大塊地盤。



C# 和 .NET


那一天一定是特別的一天……

Windows的開發(fā)人員學(xué)著上帝說:

操作系統(tǒng)要有支持多種語言的API!

于是有了COM形工的編程接口。

它果真支持C——當(dāng)然,沒有它也支持C。

它還支持C++,還是面向?qū)ο蟮模?dāng)然用起來那是怪怪的。

還愿意支持其它語言,不過數(shù)來數(shù)去,

也就Borland亦敵亦友跟著他玩啊啊……

生氣,直接從borland挖走它們的靈魂人物:Anders Hejlsberg

于是一切有了很大的改觀:

先是終于borland也沒法陪他玩了——因?yàn)?/p>

Borland沒有了Ander Hejlberg,拖再久也終要在語言這條路上玩完。

而跑到微軟的Ander Hejlberg也沒閑著

先是搞了java比sun還要快,雷得SUN公司里焦外嫩……

硬是不允許這世上有MS自己寫的JVM。

后來sun也……落幕。


突然的悲哀啊,這段就不寫了……

還好有g(shù)ooooooogle,還有它們的go.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容