ps。 我知道進階語言不一定“高端”。但問題是,既然屬於進階語言,既然圖靈完備,為什麼會“低端”。哪裡招惹其他語言了?
回複內容:
N卡和A卡其實都很牛逼,但是你看N卡黨和A卡黨還不是互相黑來黑去的?
iOS 和 Android 其實都很牛逼,但是你看 iOS 黨和 Android 黨還不是互相黑來黑去的?
同理,來來來,題主你告訴我有哪個程式設計語言是不被黑的?
程式設計語言大體可分兩種:1) 被人黑的 2) 沒人用的
——奧斯托洛夫斯基
樓上說得對
——卡巴斯基
這個話題經久不衰
XXX語言才是真正的程式員。
XXX編輯器才是程式員的最終歸宿。
XXX語言在未來是一種趨勢,必將幹掉XXX。
你看他們討論出來什麼了嗎?
我好想把這些XXX補上,為了避免大規模戰爭,還是算了吧。
進階語言才會被黑 低級語言黑不動哈哈哈,首先我們要堅持PHP是世界上最好的語言~
話說PHP low確實是入手簡單,寫起來也快,內建函數多,基本都大多數人用。
沒啥設計模式,隨便怎麼寫都能run,運行成本低(是個空間就能跑)
PHP是進階語言,同時也是被黑次數可以與java抗衡的語言。
另外,PHP寫得快是因為不會有下面這種類名 。。。。。
臨走前黑下java。喏,你看
javax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonWindowNotFocusedState Class Reference
連結:JavaDevelopmentKit(JDK)1.7.0_03: javax.swing.plaf.nimbus.InternalFrameTitlePaneMaximizeButtonWindowNotFocusedState Class Reference
呵呵,哪個語言不被黑?就算再優秀,那也不可能被所有人喜歡。
維基百科是這樣解釋低級語言的:
低級語言(英語:Low-level programming language),在電腦科學之中,是電腦程式設計語言的一類。該類程式設計語言之所以被稱為低級,是因為該類語言在運作時無法進行進一步的抽象化,而與中央處理器的機器語言或指令直接對應,因此一般亦被指是原始的程式設計語言。即使是與進階語言相對,但這並非指低級語言較進階語言為差,相反,低級語言由於無需大量的編譯動作即可被中央處理器所運行,因此以該類程式設計語言編寫的原始碼編譯和運作效率一般較進階語言的原始碼為高。
低級與進階其實只是相對的概念,Java對比C語言可以被認為是一種相對進階的程式設計語言。
有一篇博文是這樣解釋進階語言和低級語言的區別:
一般來講進階語言和低級語言有一下特點:
進階語言:實現效率高,執行效率低,對硬體的可控性弱,目標代碼大,可維護性好,可移植性好
低級語言:實現效率低,執行效率高,對硬體的可控性強,目標代碼小,可維護性差,可移植性差
我們都知道CPU啟動並執行是二進位指令,所有的語言編寫的程式最終都要翻譯成二進位代碼,但是為什麼實現會有以上眾多差異呢?下面以C語言為進階語言代表,組合語言為低級語言代表來解釋一下。
越低級的語言,形式上越接近機器指令,組合語言就是與機器指令一一對應的。而越進階的語言,一條語句對應的指令數越多,其中原因就是進階語言對底層操作進行了抽象和封裝,使編寫程式的過程更符合人類的思維習慣,並且極大了簡化了人力勞動。也就是說你用進階語言寫一句,會被轉換成許多底層操作,大部分的工作交給了負責轉換的機器(即編譯器),從而人力得到瞭解放。因為機器就是用來為人類提供便利的,所以說進階語言的出現是電腦發展的必然結果。
下面重點解釋為何低級語言的執行效率更高:
1.低級語言可以通過控制硬體訪問來最佳化效率
越低級的語言月接近底層,即控制硬體訪問的能力越強,對硬體資源的利用效率越高。比如說組合語言能夠訪問寄存器,而C語言就做不到。通過對寄存器等硬體的訪問,我們可以將程式的運行效率最佳化到最大,而像C這樣的進階語言用的最多的是堆棧這樣的記憶體結構,訪問速度自然不如寄存器了。
2.進階語言程式存在工作冗餘,有效率損失。
各種語言需要通過編譯器翻譯成機器碼,不管編譯多麼智能和強大,都是會產生冗餘。這裡的冗餘不是指指令的多少,而是有沒有做沒有必要的事情。 產生冗餘的多少關鍵要看語言跟機器指令之間的耦合度。耦合度越大,編譯器翻譯過程越簡單,產生的冗餘越少。對應彙編來書,由於與機器碼一一對應,所以翻譯後基本沒有冗餘。而進階語言由於進行了抽象和封裝,所以與機器指令間的耦合度較低,因此整個翻譯過程較複雜,因此在進階語言在具體化的過程中不可避免會產生較多的冗餘。據說C語言有10%的效率損失。
3.效率高不高,還取決於程式員水平。
一個差的程式員用彙編寫程式,可能存在很多沒有用的操作,而程式高手用c語言寫,可以將程式最佳化到最大。最終的結果可能是彙編的程式跑不過C語言程式。
總之,完成一項工作的工作量是不變的,機器做的 多了,人就做的就少了,同時人對程式的很多細節的控制性也減弱了。各種語言都是在這個平衡點附近糾結。從C/C++的注重機器運算效率的最佳化,到C#/JAVA注重開發效率的最佳化。人操作起來更加方便了,更高效了,代價就是,機器要處理的東西更多,運算效率被進一步壓縮。但是這個壓縮在功能內,那麼這也是一種進步。
我是這樣認為的:
- 低級語言可以直接操控電腦硬體,而達到一些功能,(可以直接操作硬體CPU 和 記憶體)如果程式員的水平夠好的話,直接可以寫出高效能的程式,但是由於,每次開發程式都需要對程式的重新編程,代碼量比較巨大,於是出現了封裝。
- 封裝的優點是,複用率高,可以質性強,但是缺點也有就是封裝後的東西為了適應電腦的各種環境,和複用,不得不犧牲掉記憶體,和CPU,不夠簡潔。但是利大於弊,隨著科技的發展,電腦硬體不在這麼值錢。
- 進階語言也就是低級語言的封裝,封裝成一系列的函數,便於程式員學習,和開發,不必要再學習一些以後用不到的東西。由於低級語言可以直接操控硬體,提高程式的效能,和大部分進階語言的底層語言,也就不會被淘汰。
程式設計語言俗稱“電腦語言”,種類非常的多,總的來說可以分成機器語言、組合語言、進階語言三大類。C、java、PHP都屬於進階語言。
進階不等於高端。對於 PHP 有一篇完整的吐槽 PHP: a fractal of bad design / fuzzy notepad
,沒有什麼要補充的了。一群傻逼沒事幹。