長短相形

“天下皆知美之爲美,斯惡已;皆知善之爲善,斯不善已。故有無相生,難易相成,長短相形,高下相傾,音聲相和,前後相隨。是以聖人處無爲之事,行不言之教。萬物作焉而不辭,生而不有,爲而不恃,功成而弗居。夫唯弗居,是以不去” ———《道德經》


小時候,常被人教誨,要揚長避短,於是就形成了一種思維定勢:長處永遠是好的,短處就永遠見不得人。長大後讀《道德經》,纔有所明悟:長短相形,長無恆長,短無恆短。

屈原在《卜居》中說:“夫尺有所短,寸有所長,物有所不足,智有所不明,數有所不逮,神有所不通,用君之心,行君之意”。說的也是同一個道理,長和短是會相互轉化的,做人做事,遵循你的內心就好了,如果要無所不用其極的想做好一件事,反而可能會取得相反的效果。

成爲一名程序員是我從高中時代就有的興趣和理想,經過各種曲折,終於是得償所願了,寫代碼確實給我帶來了很多快樂和心靈的充實。隨着時間的推移,我逐漸收穫了編程帶給我的另一種快樂:以編程悟道修心。我知道我說的這話玄而又玄的,很容易被人誤解成一名「神棍」。當然,如果是跟我有相同感受的有緣人,能明白我說什麼。不明白的也不用急,可以跟着我的思緒一起思考一下。

江湖中有一句流傳已久的話:“PHP是最好的語言”。 絕大部分人是把這句話當作一句笑料,一種嘲諷,經常在各種場合來使用,當然也包括曾經的我。但是也有小部分人會問:“爲什麼PHP技術羣裏很少有人去探討語法特性呢?” 。但是反觀其他語言的技術羣,比如C++,比如Haskell,聊的最多的就是語法。噴子請不要誤會,我並沒有要黑哪個的意思。

這其實是我思考的一個點:“PHP語法簡單,是事實,沒有那麼多高大上的語法特性,可能相比於C++/Haskell/Ruby/Python等語言沒有那麼多思想內涵,從這個角度來看,這一點正是PHP的短板。可恰恰是這個短板,成就了PHP”。恰恰是因爲PHP語法簡單,沒有那麼多複雜的概念,沒什麼好討論的,捋起袖子就是幹,反而會更加聚焦於業務和領域層面的問題。

反觀Golang語言也是類似,見過很多人吐槽Golang,也就那麼一句:“if err != nil”, 或者說“golang怎麼沒有泛型?“,但實際Golang技術羣裏也很少有人討論具體的語法,因爲沒什麼好討論的,就是那麼點內容。Golang簡潔的設計,是很多人眼裏的短處,但其實也是它自身的長處。君不見,Golang社區生產力多麼強?噴子請不要誤會,我不是Golang社區派來的,目前我也沒用Golang。

有一段時間,我對軟件架構比較上心,還經常把軟件和建築去類比,甚至還找我做建築行業的朋友去諮詢,有哪些建築方面的書可以閱讀。朋友跟我說了一句話:”我們建築行業,是絕不能出bug的,如果出了bug,付出的就是生命的代價。軟件和建築還是不一樣的”。 我當時並沒有對這句話有過多的考慮,只是覺得,不都是架構嗎?我學習的是架構的「神」,又不是要學建築,就沒有進行深入的思考。

後來機緣巧合,又讓我回到了這個問題上,這一次的思考讓我有所明悟。建築行業,正是因爲要避免付出生命的代價,所以會在項目實施之前會做好非常詳細的規劃,藝術性和工程性都需要保證,然後還需要嚴格的監督才能交付一個完整的工程。而軟件架構不一樣,軟件需求是經常變化的,軟件架構在保證穩定的同時,還需要有一定的靈活性和可擴展性,這和建築行業有本質的不同。

所以,瀑布模型在建築行業,是極具優勢的,因爲它安全,但是拿來軟件行業,就不一定了,除非是對安全有嚴格要求的項目。尺有所短,寸有所長,要看它所處的環境或領域去取捨,所以我們需要敏捷。

這種哲學性的思考,正如我前面所說的「悟道修心」,也是現階段,編程所帶給我的另一種樂趣。其實再往大了思考,整個人類的發展不也是這樣嗎? 人類的大腦計算速度比不過計算機,行動也只是線性的,從物理學方面考慮,人類簡直就是渣渣,但是爲什麼能發展出高度發達的文明呢?正是因爲這種限制,讓人類擁有了抽象的能力,這種能力可以讓人類簡化萬物從而對宇宙有更進一步的認知。宇宙有多少顆星星?我們不需要一顆一顆數,我們只需要找到規律做出預估就可以了。

再反觀生活,又何嘗不是如此?當你想做點事,但資源有限怎麼辦?其實沒必要擔憂,用有限的資源也許能做出更偉大的事呢?故有無相生,難易相成,長短相形,高下相傾,音聲相和,前後相隨。

永遠不要給自己設限,永遠不要害怕限制,與君共勉。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章