1. 程式人生 > >技術更新如此快的情況下,給程式設計師的一點建議

技術更新如此快的情況下,給程式設計師的一點建議

昨天老婆說,你永遠不知道未來是什麼樣子,兒子將來的用的技術,與現在的完全是不同的。

這裡我還真有點要說的,其實我是真的什麼都沒教兒子——有點冤。

我只想教他如何吸菸,就我本人來說,因為五歲吸過一根菸,所以才產生了一生的免疫。想抽就抽,不想抽就不抽。

另外,也想教他玩幾個電子遊戲,因為小時候接觸,都會產生一生免疫。

當然,這些直接就被老婆否了。~~,想起有個醫生髮明瞭一個論點:吃鼻咖,能加強免疫。他首先想到拿他女兒做實驗,你猜怎麼著?當然是被他領導否了。

---------------------------------------------------

至於技術,不會教兒子,最好不要當程式設計師。

不過,話說回來,如果將來他真是什麼也不會,就根我一樣,還得當程式設計師的話,我還是有幾句要說的。

特別是老婆說的,你不知道將來是什麼樣子。

這個,我只能說部分認同。

---------------------------------------------------

今天我們就來討論一下,有什麼有什麼技術,不會隨著時間的推進而改變的?

---------------------------------------------------

答案是非常肯定的。

比如數學和物理這樣的基礎學科,當然,這兩種也在飛速前進,但只要是學的,就不會失效——這點可不同。

比如數學的複變函式,雅各比矩陣,等等吧,都是我們目前各行的基礎。

但這個,沒有什麼現實意義。因為人類社會,能養得起的真正的基礎科學家,是有數的——名額有限。

作為一個普通人,什麼技術,應當來學習一下,並且能長久保值呢?

這樣吧,我們反過來問,近幾十年,有沒有什麼技術層面的東西,沒有進步呢?我們是說技術啊,不是社會。社會從來就沒變過。

對於程式設計師來說,有。

首當其衝,就是語言學

有人說,不對啊,翻譯機相關的理論,正在不斷前進啊。

我不否認,但如果你研究過語言學,就知道,的確是從喬姆斯基寫了他那天才的論文《語法結構》後,的確是再也沒前進一步。

目前的進步,來自於統計學和計算機運算速度的提高。但只要是基礎理論沒有突破,就無法突破上限。

由於語言學沒有進步,我們計算機語言學,就沒有半點進步。

因為計算機是不能理解模糊語言的,你不能把統計語言技術,用於計算機指令。

實際上,我們目前用到的所有的計算機語言,只用到了《語法結構》裡,最簡單的模型。

《語法結構》是1950s中後期的事情。見我前面寫的關於巴斯克這個幸運的人故事。

我們算算,50多年了,沒有進步。

這意味著,喬姆斯基還是牛B烘烘地滿世界晃。這傢伙被稱為20世界十大偉大科學家之一,而且是唯一活著的(是不是死了),而且可能是最被低估的。

沒他你想想吧,今天的世界是什麼樣子。今天我們用C語言,好象是理所當然的,但喬姆斯基那個年代,人們認為,人類無法理解自己的語言。哪怕是一點點也不能。

但喬姆斯基說,是理解不了,但至少能理解一點。

這一點就如此強大。

所以說,程式設計師們,你要想學點真的不會落伍的技術,非語言是一個可行的選擇。

等等,跑題了,語言學的書,我也看了一些,很煩的。而且學了也沒得大用。有一點,還記得的,就是語言是以V為中心,也就是以動詞為中心,這一點,如果你還不知道,今天你知道了,知道學英語你要怎麼學了吧?

我們回到現實,說點現實的。

退而求其次,為了省幾個腦細胞,我們可以學習一下編譯器。

後面,我想寫一點與編譯器相關的話題——從實用的角度。

編譯器、資料庫、作業系統,被並稱為三大系統,是計算機世界的三大基礎。他們是共同被發現、定義,共同進步的。

當然,嚴格意義上,真正的作業系統晚於編譯器。真正的計算機語言,也是在編譯器發明之後,在喬姆斯基之後。見巴斯克有故事。

這三大系統,各有特點,比如作業系統,最困難的就是排程衝突問題,為解決CPU硬死鎖,直到一個科學家找到一個方法,見《現代作業系統》現在我想不起來了。

資料庫,也極為複雜,如分塊、定址(因為資料庫是外存的隨機存取系統)。當然,資料庫的SQL語言,也離不開編譯器的啊。

****************************************************

所以說,有興趣,學習一些編譯器相關的知識,永遠也不會用不著。因為我們人類的總智慧加在一起,養不起多少種真正的編譯器。

我是說真正的編譯器。語多編譯器是基於C語言來編寫的。算不上真正的編譯器。

****************************************************

目前網際網路時代,已進入泡沫時代,所以,有許多想法,但沒有一個是現實成立的人們,建議還是回頭學點技術吧。

學習編譯器,肯定是沒錯的。

***************************************************

就這一點,我敢反駁我老婆,再過至少30年,編譯器的相關技術不會落伍。而且,只需要學習C和C++以及object-C 的編譯器就可以了。object-C是C語言的一種應用,是在C的靜態核心上,加入了動態語言。也就是說object-C的解析器,分了兩層,一層與硬體相關,一層需要與應用程式一起釋出,這以後我們來分析吧。

C語言編譯器,有一些特殊概念。因為很多歷史原因吧。但總之,你學習C語言編譯器就對了。

-----------------------------------------------------------

再退而求其次。

編譯器是很好,但太TM困難了。記得一個sizeof,我寫的程式碼,足足有至少三年才算是基本對了。別提了。以後我想寫寫這個東西。

而且,我是可以供用微軟的編譯器來校驗的情況下。所以,可以想象,最早寫編譯器的人,多麼困難?

就學習語言吧。

比如object-C,70年代產生的東西,直到現在這不是還在用嗎?更不要說C語言了。

再如作業系統,UNIX,也是70年代的,iOS核心就是BSD Unix,學學這些東西,肯定不會吃虧。

資料庫就不用多說了。它們也是70年代以前就有了~

再如人機介面,其實基礎理論,沒有什麼太大改變。的確iPhone算是一次革命。當然,以前也都是兩個小偷從施樂偷來的那些東西。

而google所有的技術,大多與數學,如貝葉斯,統計學相關。

-------------------------------------------------------------------------

這麼來看,說技術日新月異,也對也不對。

怎麼老是感覺還是那些東西呢?

當然,系統論目前是真正在高速發展的一個學科。雖然這東西沒什麼神祕,但沒有計算機這種工具之前,談系統是扯蛋成分居多——你演算的速度遠不及現實系統演進的速度,搞什麼呢?

現在可不同了。什麼數字地球,模擬人體(模擬人吃了藥以後的藥理變化),等等吧,都在進行中。

這的確是未來一個可以考慮的方向。