2015-11-06 58 views
-4

我認爲明顯的優點是可維護性,程序員友好性等,但有什麼缺點?使用高級語言有什麼缺點?

編譯器被放在額外的工作下來轉換它可能沒有必要的地方嗎?

由於上述缺點,是否存在低級語言更適合於任務的情況?

+0

我想到的第一件事情是高級語言的簡單定義:這些語言是建立在誰定義某種預先定義的層配置,實施......,這是很常見的。 如果你的意思是創建一個遵循這些常見配置,實現......的程序,我會說,繼續使用高級語言。 但是,如果您想創建一個以全新方式執行任務的程序,那麼使用低級語言可能會有幫助。 想象一下,你不喜歡滾動條的外觀。您只能使用低級語言進行更改。 – Dominique

+0

它們比寫得很好的低級程序慢得多。當然,使用低級語言寫得不好的程序可能會很慢。 (例如,一個天真的鏈表+線性搜索在C中手工實現,而不是僅僅使用Python的哈希表) –

回答

1

簡而言之:由於非常具體的優化,低級語言可以產生更好的性能。

優勢低級語言:

  • 您可以專門針對和利用芯片的功能(或寄存器)
  • 一般來說它可以是(很多)更快,如果你知道你做了什麼,但這是一種罕見的情況。

缺點高級語言的:

  • 你需要某種形式的編譯器,以獲得HLL到LLL
  • 在某些情況下(例如,Java/C#),你有一個解釋器之間這也消耗資源(但也可以在運行程序時優化自己!)

這裏有一個更詳細的LLL的優點列表:

  • 你可以訪問機器相關的寄存器和I/O
  • 可以控制在臨界區的確切代碼的行爲,否則可能會涉及多個軟件線程或 硬件設備之間的僵局
  • 可以打破常規編譯器的慣例,這可能允許一些優化(例如暫時違反關於內存分配,線程,調用約定等的規則
  • )使用不兼容的約定(例如由不同的編譯器產生的,或由一個
    低級接口分開)
  • 可以得到訪問自己的處理器異常的編程模式(例如16位模式接口啓動,固件,或遺留代碼上
    英特爾個人電腦)
  • 可以產生相當快的代碼緊密循環到一個壞的非優化編譯器處理(但後來,有免費的優化
    編譯器可用!)
  • 你就可以生產手工優化的代碼完全調整爲特定的硬件設置,雖然不是別人的
  • 你可以寫一些代碼爲你的新語言的優化編譯器(這是什麼東西很少有孩子能不能做,甚至他們不經常)
  • 即你可以在c你的代碼omplete控制

來源:http://www.tldp.org/HOWTO/Assembly-HOWTO/x133.html

+0

現在,C被認爲是低級語言。與Python相比,即使是C++也是相當低的水平。 –

0

不自己分配內存是一回事。這些語言背後的程序員創建垃圾收集器,他們有時(大部分)會給你大量的內存。

以JavaScript爲例。如果你這樣做var arr = array(501);它可能會給你600字節,或1000甚至更多。

對於像在操作系統上的嵌入式設備或視頻遊戲(上PS4遊戲等)存儲器是VITAL低電平程序。所以你不能承擔比你需要更多的空間。

+0

這並沒有提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – M4ks

+0

我不能擁有20點聲望點。 :) –