《黑客与画家》读书笔记(四)
1. 摘錄
? ? 機器語言
? ??機器語言和匯編語言的共同問題就是,只能讓大多數(shù)計算機做一些很簡單的事情。編程語言的一個重要特點:代碼越多,越難避免bug,也越難發(fā)現(xiàn)bug。
? ? 高級語言
? ? 高級語言使程序更簡短,更具有可移植性。高級語言的實現(xiàn)方法有編譯器和解釋器,編譯器是先將整個程序全部翻譯成機器語言,然后再運行。解釋器的作用是實時地將代碼解釋為相應的機器語言,然后一行行運行。
? ? 開放源碼
? ? 開放源碼對軟件有更大的控制權(quán),可以修改軟件、重新編譯。開放源碼的優(yōu)勢在于所有人都可以參與解決bug。
? ? 語言的戰(zhàn)爭
? ? 一些黑客只喜歡自己用的語言,反感其他所有的語言。另一些黑客則說所有的語言都一樣。事實介于這兩個極端之間。語言之間確實有差別,但是很難確定地說明哪—種語言是最好的。
? ? 抽象性
? ??高級語言比匯編語言更接近人類語言,有利于編程,但如果關注運行速度,那么最好使用接近機器的語言。
? ? 語言的分歧
? ??有些人認為編程語言應該防止程序員干蠢事,另一些人則認為程序員應該可以用編程語言干一切他們想干的事,前者的代表是Java語言,后者的代表是perl語言。
? ? 面向?qū)ο缶幊?/strong>
? ??面向?qū)ο缶幊痰膬?yōu)點在于,如果需要修改程序,只需要增加相應的代碼,可以不修改程序的其他部分。但反對者認為這種方法往往導致寫出性能不佳甚至有副作用的代碼。應該使用允許你面向?qū)ο缶幊痰恼Z言。至于最后到底用不用則是另外一個問題了。
? ? 設計自己的語言
? ??一些自己設計的語言內(nèi)核設計得并非很好,但是卻有著無數(shù)強大的函數(shù)庫,可以用來解決特定的問題,這些庫本身可能比核心的語言還要重要。自己設計語言使得編程語言多樣化,語言之間存在很大區(qū)別。
? ? 百年后的編程語言
? ??編程語言存在一個進化的脈絡,思考在整個進化過程中,某一種語言的位置,爭取找到編程語言進化的主干,選擇那些靠近主干的語言,有利于當前的編程。認清進化的主干就不僅有助于識別現(xiàn)存的優(yōu)秀語言,還可以把它當作設計語言的指南。
? ? 內(nèi)核最小、最干凈的編程語言才會存在于進化的主干上。一種語言的內(nèi)核設計得越小、越干凈,它的生命力就越頑強。
? ? 語言聚合
? ??出現(xiàn)聚合是編程語言進化與生物學進化的主要區(qū)別,編程語言之所以可能出現(xiàn)聚合,一個原因是它的概率空間較小,另一個原因是它的突變不是隨機的。語言的設計者們總是有意識地借鑒其他語言的設計思想。
? ? 運行速度
? ??基本可以斷定未來計算機的運行速度一定會快得多,這將實質(zhì)性地改變編程的基本規(guī)則。如果其他條件不變,現(xiàn)在被認為運行速度慢的語言將來會有更大的發(fā)展空間,但是一些應用程序依然會對運行速度有很高的要求。當運行速度大幅提高時,如何才能充分利用是一個值得深思的問題。
? ? 目前的一些以加快運行速度為目的、卻使得編程語言的語義大大復雜的行為,對未來的編程來說也是不明智的。當速度不是最關鍵的因素,通常不需要考慮硬件層面上的微觀管理。
? ? 語言靈活性
? ? 語言設計時,對實現(xiàn)方式少作限制還會使得程序具備更大的靈活性。語言的規(guī)格發(fā)生變化不僅是無法避免的,也是合理的。
? ? 軟件層次
? ??在應用軟件與硬件之間設置很多的軟件層,也是未來的發(fā)展趨勢。即使是應用程序,使用多層形式開發(fā)使得程序可重用性就越好。
? ? 并行計算
? ??由于硬件性能的大幅提升,除了一些特殊的應用程序,很多情況下并行計算可能不再使用。
? ? 語言數(shù)量
? ??由于硬件性能提高,程序員根據(jù)使用目的在運行速度和編程便利性之間做出不同的取舍,使得編程語言數(shù)目變得更多,但是常用語言可能只有很少幾種。
2. 思考
? ? 百年前的生活是什么樣?學術一些的人翻翻歷史書,偷懶一些的人看看電視劇。但史書是勝利者書寫的,古裝劇比倫理劇還荒唐,所以盡信書不如無書,相信劇不如無劇。想要知道真相,只有獨立思考,認真分辨吧!
? ? 百年后的生活是什么樣?很多人也會天馬行空的想一想,汽車會飛,大樓會動,資源枯竭,星際移民,會有個來自星星的你,會有個穿越時間的他。思維發(fā)散一些,腦洞開大一些,都沒關系,未來嘛,一切皆有可能。但是,未來的編程語言是什么樣子的,這個......真沒想過。
? ? 計算機的歷史并不長,我們熟知它的產(chǎn)生,了解它的進展。編程語言也隨之進步,從底層到高層,從簡單到復雜,林林總總,數(shù)目繁多。我選擇學習主流的語言作為工具,以輔助目前的研究,為未來的工作做好準備,但未來的語言會是怎樣呢?通過這次的閱讀,才真正有了些許的概念。
? ? 未來編程語言的一些趨勢是很容易想象的,如靈活性強,語言種類多,運行速度快,內(nèi)核簡潔,但是一些變化是不容易看出來的,如軟件層次增加,編程語言扁平化趨勢,以及大規(guī)模并行計算的需求減少。
? ? 當然,這只是筆者的一家之言,究竟如何,還需要認真思考,但是有一點是可以肯定的,摒棄早期編程語言的影響,根據(jù)編程語言進化的脈絡,發(fā)揮想象力,就可以設計出適合編程,效果良好的語言。
?
?
總結(jié)
以上是生活随笔為你收集整理的《黑客与画家》读书笔记(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 你被Slashdot了吗?
- 下一篇: ARM探索之旅 03 | 如何使用 AR
