每乙個有思想的程式設計師都應該通過網路,把思想傳播出去。
有思想的程式設計師,不會甘於平庸,也不會為五斗公尺折腰,程式設計師需要的是更多的思考,更少的編碼。
無盡的加班,無盡的需求,詭異的bug,只能困擾平庸的程式設計師。有思想,源於有深度的思考。只有深入思考,才能脫穎而出,才能舉重若輕,治大國若烹小鮮。程式設計師有程式設計師式的世界觀,人生觀和價值觀。
思考框架。
從語言說起。沒有誰生來就懂計算機,就會程式設計。 經驗豐富的老鳥都是從菜鳥過來的。 可以說行內人都是先學了那個舉世聞名的hello world 程式 之後,慢慢對程式有了更深更廣的認識。有了一定經驗後,某些程式設計師就開始對語言本身進行思考,語言的本質是什麼,它有怎樣的模型,它的侷限是什麼。 光研究數理邏輯中的語言概念,似乎不能給出什麼有趣的答案。 我覺得書本上的內容總是太孤立,無趣,總是不能明顯的跟現實中的問題聯絡起來。不過有思想的程式設計師,不用什麼書本的引導,他天生就對這些事情感興趣,總是以他人鮮有的歸納廣度,對這個世界進行遞迴的抽象。
計算機程式語言,自然語言,甚至肢體語言,這些都是語言,他們的共同之處是什麼,和程式有什麼聯絡。
語言,是人類思考的工具。 思考語言本身,就有著自我糾纏的遞迴的意味。遞迴,也正是思維的起點。 因為如果想說明乙個概念或問題,必須以其他概念為基礎,比如說明概念a: 概念a是『邊長為一公尺的正方形』 , 如果繼續解釋, 那可能是 : 正方形是『臨邊相等的長方形』 ,長方形是『對邊相等,四個角都是直角的四邊形』 ,xx是……樣的yy,這個模式一直可以走下去,但是現實中, 都有個終點, 我們沒法再解釋的那個概念, 叫做不定義概念。 這是遞迴的終點。
以上達到了邏輯的根基。從根基出發,將演繹出基本的邏輯元素:概念,判斷,推理。 邏輯學上來就會搬出這幾個概念,但不說明他們如何形成。似乎這是心理學的任務,可我覺得邏輯學應該說明這些東東才好。說這個,常常是誤解難免, 因為在概念形成之前就說明概念在邏輯上是不可能的,因為他在邏輯上遞迴了。 這個邊界,似乎就是語言的能力邊界了。好了不糾纏語言能力之外的事情了。以下**語言能力之內的事。
看不懂上邊的話,正常。因為語言是你思考的工具,閱讀的工具,這注定了,它對表達清楚自身無能為力。
說了半天,這與程式何干,關程式設計師屁事?
各種語言,不論計算機語言,還是自然語言,都涉及如下東東。 注意我現在說的語言概念不是數理邏輯力那個。 憑你常規理解就夠。 這些東東包括: 描述物件, 物件怎樣怎樣。也就是主語,謂語。謂語導致主語狀態改變,也可能不改變。你注意到狀態這個東西。還有狀態改變。狀態機正是它所描述的數學模型。
文章開頭提到了三觀。似乎和現在說的沒什麼聯絡。 實際上它和世界觀聯絡非常緊密。在你的頭腦裡,一定有個外部世界模型, 比較完整的,還應該有自身。也就是說所有人都會對客觀世界,和主觀世界建模。這裡同樣有乙個難題,本質上還是遞迴。對客觀世界建模沒什麼困難,注意客觀世界不包括建模者自己。 對主觀世界建模就有了問題,造成了遞迴。先不管這個遞迴難題。說明現在的問題,只需知道,人腦中有乙個模型,這個模型對應於外部世界。模型是如何描述的呢。把自然語言對應起來看。會發現語言中的這些詞很容易被模型解釋了。 如時態想關的詞, 「曾」 , 「已經」 ,「了」 , 「著」 , 「將」 ,「會」 ,這些揭示了狀態機模型的歷史和未來。 為什麼我們要關心歷史和未來? 或者說,語言為何發展出了描述時態的功能? 可以這樣解釋, 人在環境中生存, 環境在變化,人將在預見到環境的不利變化前調整自己行為,以適應環境,求得生存。 這其中有個時間差,調整行為必須在環境變化之前。也就是說,兩個模型, 乙個真實世界,以自身為模型,乙個是真實世界在人腦中建模的模型。或者說是兩個自動機,都在執行, 人腦中的模型必須執行的比真實模型快, 才可以在環境變化前預見到未來,調整自身,否則慢了就沒有意義了。
從上述可知, 人類智慧型的本質是**,而程式的本質是自動機。 這個結論跨度很大, 不過也是很多書所得出的結論。詳細的說明他們不是三言兩語的事,都需要一正本書的篇幅。
此文,算是提綱挈領式的描述,實際上很多內容需要很大篇幅說明, 以後在其他文中只抓一點詳細說。
原來以為一切都是程式,萬事萬物。幻想著哪天能上傳意識得以永生,最近有科學家說人類意識壓根就不是自動機,意識上傳不可能。困惑。
你要問這些東東有什麼用? 確實有用,稍後就說。 不過我在此特別想說,這個世界是按經濟學原則執行的,經濟學的原則可能是普適的。就是說總會抽象出乙個付出和回報,你看了半天發現沒什麼用,就不看了,或者看完後悔浪費時間了。
有什麼用呢? 既然一切過程都可用程式描述, 那程式設計本身為什麼不能?這就是牛哄哄的元程式設計。 它讓你程式設計生活輕鬆百倍是輕而易舉。一門好的語言,應該是語言的語言,應該包括構造一門語言的能力, lisp語言是其中的典範, 其專業詞彙叫dsl,領域特定語言。任何乙個問題域的程式化描述,都是建立在特定的一組概念上的,自然語言有構造語言的能力, 你發現你可以很簡潔的描述乙個問題, 但是程式設計卻很難,為什麼呢, 是程式語言沒有提供特定的概念, 你最好按照自然語言的結構先構造這些概念,然後再在這個層次上程式設計, 這會十分輕鬆。
程式設計師思想指導
諸位,咱當程式員工二年多了,不算有出息,環顧四周,也沒有看見幾個有出息的!回顧程式設計師生涯,感慨萬千,願意講幾句掏心窩子的話,也算給咱們師弟師妹們提個醒,希望他們比咱們強!0 見人說人話,見鬼說鬼話.技術經理 肯定是男的 面試技術的時候。不要總說自已會這會那的。而且都很強。這歷害的一招是。將技術和...
有「品」的程式設計師
完美程式設計師的10種品質 完美程式設計師的每種品質都有乙個範圍,這個範圍取決於具體的問題和背景。沒有能解決所有問題的 完美程式設計師 至少在我們這個星球上 並且對於特定問題,完美程式設計師應該具有以下品質 1.才智非凡 能夠理解問題 能夠用清晰可讀的 翻譯並表達想法 善於分析並且邏輯思維能力強 範...
老程式設計師的思想變遷
老程式設計師的思想變遷 驀然回首自己做軟體開發這個行業已經十年了,這十年中我獲得了很多,技術能力 培訓 出國 大公司的經歷,還有很多很好的朋友。但再仔細一想,這十年中我至少浪費了五年時間,這五年可以足夠讓自己成長為乙個優秀的程式設計師,可惜我錯過了,我用這五年時間和很多程式設計師一樣在困惑和迷茫中找...