-
1 # freedom02
-
2 # 老蔡學堂
應該你是沒有學習過計算機專業的人員。要想理解這個問題,必須要從兩方面來說,一是不同的平臺有不一樣的硬體和軟體。比如x86和龍芯電腦的硬體不一樣,這樣原始碼肯定不一樣,做不到一樣。比如x86硬體中斷,龍芯是軟體中斷.估計你又會問為什麼硬體不做到一樣,這個就是專利的問題了,它限制硬體做到一樣。同樣軟體也有專利限制。
二是原始碼保密的原則,開發軟體消耗很大成本,但是複製原始碼很容易。如果讓大家都有了原始碼,誰還會花錢買軟體?
-
3 # 日衝資訊 黃
程式語言可分成解釋型語言和編譯型語言。
解釋型語言有Perl、PHP、Javascript等等編譯型語言有C/C++、Object-C、C#等Java是上面兩種的混合型解釋型語言可以用題主設想的方式,做到跨平臺。編譯型語言則需要提前針對各平臺進行編譯。
事實上,無論是那種語言都不能夠完美地跨平臺執行。不就是跨平臺嘛,怎麼這麼麻煩呢?現在執行軟體的平臺實在是太多了。沒有作業系統的微控制器上,只能執行編譯好了的程式。不支援圖形介面的RT-Linux上,沒法執行需要圖形支援的程式。手機平臺跟電腦平臺的顯示器解析度、鍵盤什麼的有很大區別,這些硬體上的差異有些是硬傷,無法跨平臺執行,只能靠修改程式碼做移植。還有一些要靠虛擬技術來彌補,如,Java用的虛擬機器。
世界那麼大,平臺千千萬,沒有哪項技術能涵蓋所有的平臺。
-
4 # 還有一隻喵
其實早期玩linux的人裝軟體,就是下載原始碼再make/make install.
主流不這麼做,一是原始碼屬於商業秘密不便透露;二是編譯過程很慢很慢使用者體驗不好(所以現在Linux軟體大多直接下載編譯後的各平臺二進位制程式);三是對開發者要求比較高,需要考慮各個平臺的編譯引數。很多細微差別還是很煩的。
-
5 # 關春生1
有啊,解釋型語言、指令碼語言就是原始碼釋出的。在宿主環境直接解析原始碼執行。
這樣執行效率不高,很難最佳化。
-
6 # 覆水難收77313204
linux很多軟體都是直接給原始碼,自己編譯的。你能用的來嗎?花上一個小時編譯一遍?還不包括編譯的錯誤呢。
另外依賴也從頭編譯?那你用一個軟體可能一天過去了還沒看到介面…
-
7 # 夜爺
因為微控制器的容量只有幾kb,裝不下虛擬機器……組合語言寫完的程式也需要轉換成機器碼,也就是說也需要編譯器,但是這個編譯器根據的是對應晶片的指令集,轉換成二進位制後直接燒錄進晶片。
原始碼跨平臺的只到作業系統一級,彙編對應的是各種晶片,每個晶片外設的電路都不一樣,也就沒法跨平臺。
就比如說有的晶片p0接的燈,有的晶片p0接的熱敏,也就沒法統一跨平臺,彙編是直接操作電路的,高階程式語言是操作作業系統的
c能寫微控制器,也需要切換到相應晶片的編譯器去編譯。
主要原因還是因為空間限制,晶片裝不進去編譯器,更別說往裡邊新增庫檔案了。
而且有些功能也沒必要,就像有的晶片只連個蜂鳴器滴滴滴滴,太大了晶片沒用還佔空間,裝編譯器也是浪費,不如就dump一下,然後燒錄幾串0101101來得方便
-
8 # 崟嶽論軟體
(1)因為眾口難調,硬體的發展太廣泛太迅速,基於其開發的語言的某些特性必然是小眾的。如果這個語言特性很牛很通用,就會被各個平臺採納形成標準。在os層次也是如此。在早期的c++標準中沒有關於執行緒,同步,記憶體序列模型等重要方面的規範。(2)一些高階語言如javascript、java、Python、Csharp、go、rust等明顯是原始碼跨平臺的,但是無法充分利用或者配合硬體特性。(3)可以預見的將來,新型硬體將催生該平臺特有的程式語言與特性,如千核cpu,ai神經元語言,深度圖形運算等領域等
-
9 # 自然框架
原因很簡單——做不到。
蘋果手機的APP可以安裝到蘋果電腦裡面嗎?
自家的軟硬體系統,都跨不過去,就不要說跨別人家的了。
舉個例子吧,你想寫一個可以拍照的APP。
既然是拍照,那麼肯定要呼叫攝像頭,但是看看現在的手機攝像頭,五花八門啥樣的都有,主攝,長焦,廣角,人像,微距,50x,拍月亮。
你說你寫的原始碼要如何處理這些攝像頭?
想想都頭大。
-
10 # jinesc
QT就是同一套原始碼 Windows和Linux下分別編譯 各自執行的。
我最近在用QT寫了套財務記賬系統就可以在Windows和Linux下執行。
-
11 # 沈菠蘿
這個問題不得不說到現在的幾大陣營,windows,linux/unix,mac,其底層實現是不統一,核心和系統庫也是不一樣,這個依賴這個,那個不支援那個,比較麻煩!
回覆列表
跨平臺是理論上的,就算做的比較好的java也只是理論上跨了,您所說的方法更理想化了,硬體平臺千變萬化且不斷更新。只能說用什麼方法更接近跨平臺。