跨平台多語言編譯器
⑴ 問下現在比較流行的跨平台編程語言都有哪些
實現的機制不同。
JAVA是基於JVM虛擬機的,JAVA代碼被解釋為位元組碼提供給JVM運行,JVM再根據位元組碼調用系統介面,所以它的跨平台要點是實現能運行在各個平台上的JVM。
其他的跨平台的高級語言是通過編譯器實現的。
例如:DELPHI7的源碼中有針對MS和LINUX平台的條件編譯,在預編譯的時候根據具體平台選擇編譯源代碼的一部分。所以在LINUX平台下編譯DELPHI源碼就會得到KYLIX,在MS平台下編譯就得到DELPHI。
上邊說的是OS層面的跨平台,還有CPU體系的跨平台
比如,GCC支持編譯生成多種處理器下的二進制代碼。在編譯的時候通過選擇相應的處理器類型和恰當的庫文件就可以生成不同體系下的比如X86,IA64,ARM或MIPS等的可執行文件
⑵ c語言是如何跨平台的
c語言能跨平台主要因為各個平台包括DOS,Windows,Linux,UNIX等都有c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能(不包括跨平台的系統調用)。但是這些二進制文件不一樣,Linux中的可執行文件一般情況下都不能在Windows中運行,因為他們是兩個完全不同的操作系統,有不同的內核,不同的系統調用。但編譯器會根據不同的平台生成不同的代碼,使二進制文件能在專有的平台中運行,並且實現相同的功能。
跨硬體平台也是類似,在各種平台上,如x86,x86_64,Sparc,ppc,Motorola等都有相應的編譯器。編譯器會把相同的c語言代碼編譯成不同的機器指令,這樣就可以實現跨平台了。
總而言之,跨平台主要是靠各個平台上的編譯器。
⑶ 搞不懂:如果C++在每個平台都有編譯器,不就想JAVA一樣成了跨平台的了嗎
C++之父評論C++與Java
如果人們非要拿C++和Java來作比較,我建議他們去閱讀The Design and Evolution of C++,看看C++為什麼是今天這個樣子,用我在設計C++時遵從的原則來檢驗這兩種語言。這些原則與SUN的Java開發小組所持的理念顯然是不同的。除了表面語法的相似性之外,C++與Java是截然不同的語言。在很多方面,Java更像Smalltalk。(Sun的培訓教材清楚地寫道:Java在設計上採用了與C++相似的語法,與Smalltalk相似的語義。所以可以說Java與C++是貌合神離,與Smalltalk才是心有靈犀。)Java語言相對簡單,這部分是一種錯覺,部分是因為這種語言還不完整。隨著時間的推移,Java在體積和復雜程度上都會大大增長。在體積上它會增長兩到三倍,而且會出現一些實現相關的擴展或者庫。這是一條每個成功的商業語言都必須走過的發展之路。隨便分析一種你認為在很大范圍內取得了成功的語言,我知道肯定是無有例外者,而且實際上這非常有道理。
上邊這段話是在Java 1.1推出之前寫的。我確信Java需要類似模板的機制,並且需要增強對於固有類型的支持。簡單地說,就是為了基本的完整性也應該做這些工作。另外還需要做很多小的改動,大部分是擴展。1998年秋,我從James Gosling(Java語言的創始人)那裡得到一份建議書,說是要在Java中增加固有類型、操作符重載以及數學計算支持。
還有一篇論文,是數學分析領域的世界級大師,伯克利大學的W. Kahan教授所寫的How Java's Floating-Point Hurts Everyone Everywhere(且看Java的浮點運算如何危害了普天下的芸芸眾生),揭露了Java的一些秘密。我發現在電視和出版物中關於Java的鼓吹是不準確的,而且氣勢洶洶,讓人討厭。大肆叫囂凡是非Java的代碼都是垃圾,這是對程序員的侮辱;建議把所有的保留代碼都用Java重寫,這是喪心病狂,既不現實也不負責任。Sun和他的追隨者似乎覺得為了對付微軟罪惡的「帝國時代」,就必須如此自吹自擂。但是侮辱和欺詐只會把那些喜歡使用不同編程語言的程序員逼到微軟陣營里去。
Java並非平台無關,它本身就是平台。跟Windows一樣,它也是一個專有的商業平台。也就是說,你可以為Windows/Intel編寫代碼,也可以為Java/JVM編寫代碼,在任何一種情況下,你都是在為一個屬於某個公司的平台寫代碼,這些代碼都是與該公司的商業利益扯在一起的。當然你可以使用任何一種語言,結合操作系統的機制來編寫可供JVM執行的程序,但是JVM之類的東西是強烈地偏向於Java語言的。它一點也不像是通用的、公平的、語言中立的VM/OS。私下裡,我會堅持使用可移植的C++作大部分工作,用不同的語言作餘下的工作。
「Java is not platform-independent, it is the platform」,B. S的這句評語對於C++用戶有著很大的影響,有些C++高手甚至把這句話作為自己的簽名檔,以表明對Java的態度和誓死捍衛C++的決心。
⑷ 計算機編程現在有什麼跨平台的軟體開發工具
1. PhoneGap
它能提供一個很好的應用程序開發機制,開源並支持黑莓、Android、iOS、Symbian等7種操作系統。該平台開發使用JavaScript和HTML5等Web編程語言,簡單易用,因此開發成本非常低。
2. WidgetPad
它支持使用HTML5、JavaScript和CSS3編寫最新的智能設備應用程序。這個工具的顯著特點是,它配備了源代碼編輯、協作、調試和版本區分陣列。開發者可利用它為Android、iOS和webOS等很多不同的操作系統開發不同應用。
3. RhoMobile
這是一款深受開發人員歡迎的、可創建智能手機「本機應用程序」的跨平台開發工具。它為開發者提供了一個良好的開發環境,其開源的Rhodes編程框架,可讓開發者只用HTML和Ruby就能開發Android、RIM、Windows Mobile、iPhone和Symbian等各種平台上的應用。
4. Sencha Touch
使用該工具,可基於同一個用戶界面開發黑莓、Android、Windows和iOS等系統應用程序。它為同一個域中的其他工具設置了統一的網路標准。此外,它提供的增強觸摸事件和數據集成能力,也是軟體的亮點之一。
5. Appcelerator Titanium
這是一款全球公認的優秀跨平台開發工具,支持使用HTML、JavaScript等語言開發,同時也支持Ruby、PHP和Python。這款工具的最大吸引力在於,由於是基於硬體的開發,開發過程中所創建的應用程序可選擇存儲在設備上或者雲端。
⑸ c語言為什麼能跨平台或是如何跨平台的
c語言能跨平台是因為各個平台有相應的c編譯器,只要源代碼相同,編譯器編譯出來的二進制文件就會實現相同的功能,但是這些二進制文件本身是不一樣的
exe就是2進制的,但不完全是原來程序的代碼,還包括了windows系統的一些代碼
科普一下,C最早是出現在Unix下的,Windows那都是後話了,C出現的時候Windows還沒開發出來呢。
C有個比較特別的稱呼,叫中級語言,因為它有高級語言的特性又能跟底層硬體很好的交互所以才有這么個說法。DOS時代在C裡面嵌上一段匯編直接從並口讀個數上來那是很流行的,現在沒見誰在VC裡面這么干吧。Windows也不讓啊。想訪問硬體怎麼也得通過驅動。
說遠了,C在多種平台下可以實現代碼級的共享,跨平台就需要重新編譯了。
但是,我也見過有的軟體是可以在多種平台上運行了,可能有什麼特別的技術,可以先識別一下操作系統,再運行相應的代碼。這個應該是在編譯的時候有特殊的技巧。
C編譯、連接器網上有現成的代碼,一般不是很專業的技術人員沒有去研究它。我一直把玩編譯原理的視為天人,有能力把編譯原理那本書看完的就很不容易了,再要能領會其中精要那就成才了,能把龍書虎書鯨書都搞明白的那就是一流專家了。
⑹ 那種編輯器可以直接編譯多種語言,並且可以直接運行它!
沒有這樣的編譯器。編譯器都是針對某種語言設計的,不可能同時針對多種語言。但是,像現在的集成開發環境,比如vs,可以支持集中語言的編譯。但是,在 編譯時,內部還是要調用不同的編譯程序的。
⑺ 哪個C++編譯器是跨平台的
C++編譯器沒有跨平台, 因為編譯生成的可執行程序或者庫文件是和操作系統相關的。 windows下一般是使用Visual Studio編譯器; Linux下用gcc編譯。
不含調用系統API的C/C++代碼 才可以在多平台下編譯
⑻ 計算機語言中編譯性語言不能跨平台,那是不是想跨平台的話要重新寫源代碼,還是換一個編譯器
得看情況,如果是通用的程序,重新編譯就行。如果有調用API等,就要看情況改源代碼了。
⑼ 為什麼說c語言是跨平台語言,不就是編譯器嗎
C語言---是標准,定義了一些條條框框,文字上的東西如C89,C99如ISO/IEC
C99
編譯器是根據這些條條框框來做的,不能違反(但也不是那麼特別死要求的),對於它來說,標准就好像是法律。
說到跨平台,並不是講每一個WIN下的可編譯正確運行的C代碼,就能100%放到LINUX或*bsd下運行的,據我的一點經驗,寫代碼人是否按照標准規范寫的,用的非標准庫函數是否在WIN及UNIX平台下都能正常,都有限制的
⑽ qt 跨平台 選哪個編譯器
Qt 跨平台可以選 MSVC 和 MinGW 兩個編譯器。
MinGW 比較方便,配置易上手,但是 WebEngine 是沒有的。 MSVC 也不錯,功能強大,包括了WebEngine 模塊。 如果項目使用到的一些第三方的 lib,或者 dll,使用 MSVC 編譯出來的,那麼推薦用 MSVC(應該是必須,不同的編譯器生產出的庫一般是不兼容的或者兼容效果差)。