都哪些程式設計語言是跨平台的?

來源:互聯網
上載者:User
都說java是跨平台語言 什麼叫跨平台語言呢? 我看php C語言也能在不同平台下開發啊 都有什麼語言是跨平台的呢 他們的跨平台特性有區別麼

回複內容:

Java的跨平台是“一次編譯,到處運行”。Java在編譯的時候沒有編譯成指定CPU類型的彙編代碼,也沒有和具體作業系統的系統調用相關聯,所以編譯出來的結果是和CPU,作業系統都不相關的。Java編譯出來的是一種位元組碼,這種位元組碼必須在Java的虛擬機器上才能運行,Java虛擬機器會屏蔽不同作業系統,CPU之間的差異。

C編譯出來後,就是指定CPU類型的彙編代碼,編譯過程中肯定也要和具體作業系統的系統庫相關連,所以做不到Java那種跨平台。但是,如果寫的C代碼,沒有直接調用任何系統調用,這個代碼在不同的平台下都能編譯,也能運行。和Java的區別是,C要在不同平台上分別編譯。

有些語言如JavaScript,Python等,他們是解釋執行的,不存在編譯過程,所以也能跨平台,前提是必須要有一個對應的解譯器,PHP好像也是解釋性的。語言的跨平台是建立在不跨平台的底層設施之上的
比如C/C++的標準庫
Java虛擬機器,.NET運行時
這些都是不跨平台的其實現在討論跨平台意義不大,所謂跨平台的語言,就是說,你寫的代碼,可以不經改動直接應用在另一個作業系統系統、甚至cpu上。
但是現在幾乎所有的語言都是這樣的……C/C++,Java,C#,Python,PHP,JS,Ruby,Go……等等等等。
java說自己跨平台,是因為它和C相比,編譯出來的二進位檔案可以在其他任何 安裝了Java運行環境的平台上運行,注意,沒安裝的話那就歇菜。而C,編譯出來的東西一般只能在一類作業系統上運行,換了地兒就不行了,但是運行時 不需要額外安裝任何運行環境,然而你依然可以為指定的cpu、作業系統單獨編譯一份。
另外C#,python,php,js等等全都可以一份代碼在多種平台上直接運行。不過都需要 相應的運行環境。是時候秀我大JavaScript了!

只要能上網就得用js吧。

手機上跑WebView,當然比較高逼格的是React-native。
遊戲Canvas
連單片機都能寫了,雖說功能比較弱吧。
PC端,現在有很多用electron的。
瀏覽器。。。說出來,哪個語言想被虐。

我看“跨平台”的意義應該只是介面方面。
畢竟伺服器端幾乎就是Linux的天下。寫個伺服器端軟體也犯不著做Windows版本。

請相信!介面UI這一塊必定是js或者其衍生語言的天下!java跨平台開發人員的代價最小,一次編譯到處運行。c語言,python和php的一些功能都要使用一些作業系統的特定函數,開發代價比較大。
實際上現在的很多語言都有了一定程度的跨平台能力,但其實一般也沒什麼卵用,像java和h5這種沒什麼代價就能跨平台使用的,多半體驗不好。跨不跨有意義不大,能很方面的把東西做出來是第一位的,然後在用C去重寫重效能的模組。現在嚴格來說,沒有哪個語言不能跨平台。你說C#吧,開源了,說Swift吧,也開源了……首先不把可移植叫做跨平台,很多人容易搞混這個概念。
那麼跨平台語言最大特點是不編譯機器碼,不使用系統API。
1. 不編譯機器碼,因為不同環境CPU不同,雖然PC都是x86,但如果不是PC而是手機,那麼CPU的指令集就不是x86,那麼你的機器碼就全廢,不能跨平台。
2. 不使用作業系統API,很簡單不同的系統API定義不同,用法不同,非強制中斷向量不同,凡是使用系統API建立線程,建立進程的代碼,代碼將無法通用。
java運行在虛擬機器上,編譯的代碼是JVM在運行,邏輯直接運行者不是CPU,只要硬體裝JVM,那麼不需要關心是什麼CPU,同理他把系統API封裝成了JAVA通用的庫,雖然系統不同,但系統核心做的都是做相似的事,封裝一下,也是到處使用,所以沒問題,還有上面提到的QT,就是靠這樣封裝統一化實現跨平台或可移植,但問題是QT不是程式設計語言,所以答非所問。。。
但語言本身跨平台不代表代碼跨平台,否則PC和android就不會要寫兩個版本的java了,因為很多系統資源想要全部用統一封裝,這工作量極大,也容易帶來一些負面作用,這是要付出代價的,有代價沒回報(比如微軟做一個支援android系統的VS,而且能在PC上運行,做這個回報在哪裡?做了也有可能被程式開發人員認為嘩眾取寵,無意義,做兩個APP不算問題,兩者出現不相容BUG才是問題),沒有回報就沒人做這個造福人類的工作,所以java的一次編譯處處運行,看起來很美,實際只是句扯淡話,但這不妨礙說java是跨平台語言,只是工作沒做到位。
另一種跨平台叫做宏語言,很多此類語言是不用編譯,這類語言通常工作範圍受限,比如專門就是搞網頁,專門就是搞資料庫,以及flash的as指令碼等等。。拿HTML來說,他是不編譯的,說到底他只是個協議,這個語言的目就是用文本描述網頁呈現,有瀏覽器商來實現這個協議,它可以實現android版本,PC版,蘋果版的瀏覽器,但都識別HTML指令碼,那麼HTML就是個跨平台語言。。。其他此類語言也是同理,形象的說他們算是是一個的抽象協議,需要執行他們的APP或者服務來運行他們,只要開發商按約定的協議做程式,這個語言就跨平台,但這種宏語言,功能範圍被限定。。。必須是qt啊。程式語言的作用僅僅是描述演算法,如果不是為了最佳化或者自己去翻譯,那麼它怎麼翻譯不關我事
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.