程序人生--世界觀



這個東西來自靈光一閃,與時間無關,與境遇相關。可以說「十年循環,不如一夕頓悟」。每個人悟到的東西都不是同樣的,假設你也悟到了什麼。都請堅持這樣的「可遇不可求」的東西,它將幫助你,造成一種不平庸的世界觀。html



咱們尋求問題的答案,從好朋友。從普通交往的人,從本身不太喜歡的人。算法

假設一直從朋友處尋找答案,那是一種「不願讓本身離開溫馨區」的行爲,本質是尋找「本身想聽的答案」。編程

從普通交往的人。從本身不太喜歡的人。則是切入了一個解答問題的新視角,對於具有可操做性的回答,都可以嘗試一下。對於咱們本身,這可以引起「蝴蝶效應」。網絡


興趣和堅持


這是說濫的話了。原本也是真理。就拿學習Java來講,要看很是多書。要學習Linux、容器和IDE。數據結構

看書的過程。學習的過程,都不是一蹴而就的,要有足夠的耐心,投入充足的時間。三年有小成,五年纔可能進入專家行列。併發

因此,在這麼長的時間裏,必定是自驅動的,興趣驅動的,沒有興趣,是很是難很是難持續這麼長時間的。
框架


追求


古人云,「朝聞道。夕死可矣!工具

」,這是忘情,是一種追求的精神。post


責任


生活需要常回家看看。需要多帶上老婆孩子看看世界。這是生命的責任,就像一個牛仔說的,「一個男人最大的成就就是照應家庭」。
性能

作好生命的基本責任,可以接着作好不少其它的事。


我的性格


請看看《代碼大全》,第33章吧,講了我的性格和成爲好程序猿的關係。

這是一本值得沒事的時候,就翻翻的書。技術的浪潮洶涌向前,編程的技法變幻莫測,有些書可以在很很長的時間內指導咱們的工做,不褪色,《代碼大全》就是這樣一本書。


技法和思想


語言、工具等等,都是編程的技法。

編程的技法,當然重要,需要熟練。並能高速解決這個問題。

編程真正重要的東西。是思想和境地,是數據結構。是併發,以後可以是基礎框架。

編程的進步,來源於多寫高質量的代碼,最好能參與開源project並貢獻代碼,也來源於多總結,比方寫技術文章。


境地


一、每個人都活在本身的抽象層次中,能看懂低層次的落後,但沒法理解高層次的先進。

二、從境地高低來說,是有對錯的,但假設沒有進化到一個層次。也是沒法從根本上被說服的。需要到達,才幹認知。

三、可能咱們還處在較低的境地,但是假設能認識到境地的差別,就能逐漸明確問題。就具有了境地提高的可能。

舉個樣例,之前看過兩篇關於「忠告」的文章:http://m.blog.csdn.net/blog/wniushuai666/6382232  http://www.itcodes.cn/226.html ,看過以後的感觸是:

一、大部分需要忠告的人不會理解

二、大部分能理解的人已經不需要忠告了

三、很是少的需要忠告的人,剛好被「忠告」了,境地就變了


農夫山泉


農夫山泉有句廣告語:咱們不生產水,咱們僅僅是大天然的搬運工。

做爲程序猿。咱們是否是農夫山泉?咱們處於哪一個級別?

程序猿的八個級別:

原版:http://blog.codinghorror.com/the-eight-levels-of-programmers/

譯文:http://www.oschina.net/news/34818/the-eight-levels-of-programmers


世界觀


終於,咱們會造成一種基於程序人生的世界觀。。。


軟件


一、CPU、硬盤等硬件有本身的操做指令,用於控制本身或周邊

二、硬件之上有OS,調用硬件指令控制硬件,並提供API,讓軟件可以控制硬件

三、低級語言(彙編/C/C++)編譯後的代碼,可以經過OS控制硬件,需要作較多硬件相關的基礎性工做(比方申請內存、回收內存),性能強悍,但easy出錯,適用於系統級軟件。但不適用於應用級軟件

四、高級語言(典型的是Java/C#),在編譯結果和OS之間。加了一層「虛擬機」。幫咱們作很是多基礎性的工做。比方回收內存

五、算法、數據結構、協議是技術源泉;面向過程、OOP、AOP、SOA是解決方式


Java


這也是一種普通的技法,和工匠蓋屋刷牆同樣。

開始學習Java時。假設是利用Linux+Vim+Javac來學習的。不是用IDE,則技術上更easy進步。


Java執行在虛擬機上。咱們用strace看一個Java程序的執行,發現虛擬機爲了保證程序的順序執行,是有鎖的。因此它的性能會不如低級語言,但快的離譜的CPU把這都彌補了,而且應用系統的瓶頸也不在這裏,因此它已經全然知足了應用級軟件需要的情景。

JDK僅僅是一套類庫,和咱們本身寫的程序,和咱們使用的各類Jar,並無本質差異。技術上仍是一個量級,這樣說未必對,因爲JDK的開發人員的水平高很是多,對IO、網絡、硬件都有很是深入很是深入的理解,但我認爲這樣說,可以破除對JDK的「高莫敢入」,可以帶着輕鬆的心態閱讀它。


Shell


就拿最常用的 Linux Bash Shell來講,就像名字描寫敘述的。就是一層操做系統外殼,封裝操做系統API,提供咱們管理維護操做系統的一些命令。很是多機構或社區開發了多種Shell。而Bash Shell是最廣泛使用的一種。

經過Shell,咱們不僅可以管理操做系統,還可以管理操做系統上安裝的各類軟件。

只要軟件提供了Shell命令就可以了。各類執行在Linux上的軟件,差點兒都提供了管理命令行的,大可能是Shell腳本。

另外,當咱們開發一些基礎組件的時候,比方版本號部署,很是多時候也要寫Shell,來完畢版本號的本身主動打包、部署,等等。

掌握 Linux 上的Shell,仍是蠻故意處的。


待續。。

相關文章
相關標籤/搜索