今天看到一篇關於20行**的文章,說到js圈子裡有一項賽事,就是在20行**中寫出盡可能
豐富的效果來。當然,類似的事情在種種語言中都有,不惟js。
於是一時興起,打算把qomo寫出個20行的版本來。是啊,如果qomo可以寫成20行,將是何等快
意啊?於是就動手寫了寫。寫之前,看了別個的一些20行,大意是宣告語句可記為一行,連續
表示式可以記為一行,又則,函式宣告按內部的行數來記行……
於是動手寫吧。寫了三數行,便覺得不對了。僅為了增減行數,再複雜的功能在js裡也寫得成一
行(當然這有點誇張)。例如說qomo的class()函式原本是有27行的, 去掉空行和注釋剩下10
行。如果把語句後的分號換作逗號,就變成了連續表示式運算,則其中的8句可算作一句。最後
就剩下了乙個var變數宣告,和乙個return返回子句(將所有的表示式運算連在return之後,它
就只返回最後乙個表示式值了)。
現在剩下兩行,乙個是用來宣告變數的,乙個是用來返回值的。若講點技巧,再把變數宣告換
成函式的形式引數就好了——儘管這實際上並不是好習慣。現在就只剩一行了。而這一行在js
裡面,也可以變成「宣告即使用」函式,也可以是乙個表示式的運算元,所以它放在更大範圍
裡面去,也就一行也不是了。我們最終寫出來的**形式上就是這樣(這仍只能算成運算元,1
行語句都算不上):
********************
x + (function(x,y,z)()) + y
********************
出了什麼問題?
20行真的重要麼?對於乙個玩弄技巧的人來說,20行和1行,以及和0行都沒什麼區別。真正寫
到一定程度,**的行數就成了玩物,就成了虛無。我們寫**不是給計數的機器用的,我們
是寫給別人看的。我們的目的是要別人理解這份**,以便讓**生存下去,活下去,活在除
開我們自己的另乙個群體中去。僅有如此,「寫**」才有意義。
沒有幾個人是高手,也沒有幾個人是玩技巧的票友。真正的高人要從自得中走出來,變成它得,
變成別人看得見的得。僅僅是玩玩自娛自樂的技術技巧,便是死物乙個。
有個有趣的、出自禪學的問題:雙手相叩出音聲,隻手音聲如何聞?這個問題放在禪學環境裡,
是有解的。音聲自得,你自己聽得便是聽得了。換句話說,你自娛自樂的境界裡,還是聽得到
這「隻手音聲」的。
但上面這個禪學的問題還有下半段:你若聞得只手聲,如何令我也聞?我讀到這後半個問題時,
心下凌然、危然、大懼。因為這個問題是何等普遍啊:高手們自娛自樂,自曲自歌。他們聽得
見每乙個非出自自然的、器械的音符,彷彿他們具有神性一般。
然而,不過是死物乙個。如何讓別人聽得呢?
**寫到上面那種地步,無怪乎lisp幾十年來也成不了主流,無怪乎erlang令人望而生畏(盡
管它已經比lisp好了許許多多)。形式對於乙個高手來說確實不重要,但高手若不能「讓人聽
得」,那仍不過是死物。化而用之,從無形而有形,形質俱現,才能還本來面目。
本來面目,還是有面目的。
技術重要嗎?
size medium 技術重要嗎?是不是最重要?到底什麼最重要?當然沒有固定的答案。如果做乙個建模,這樣的問題的答案顯然是乙個多變數的方程式,必須去看上下文 限制條件。從企業 團隊成功的角度來說,當然產品的成功是至關重要的 但也有前提條件 你所處的是不是乙個自由競爭的市場?產品的成功取決於很多因素...
高階記憶體重要嗎?
記憶體重要嗎?答案是肯定的。記憶體可謂是最便宜 最簡單 也是普遍最有效的硬體公升級方案之一。但是,你是否考慮過到底怎樣才能做到最有效的記憶體公升級嗎?當你決定要為電腦公升級記憶體時,你會如何挑選記憶體呢?是直接選擇更快速的高效能記憶體,還是基於延遲時間 容量大小以及工作頻率等指標做出結論?是啊,選擇...
測試真的重要嗎?
測試,園子裡頭應該沒有人不對軟體測試耳熟能詳吧?測試的重要性我想很多書和很多大公司的專案人員配備上都告訴過我們了。其實我說錯了,並非每個人對測試都很了解,至少我上大學的時候就沒有開設過這課程,至少我呆過的公司就沒有把它放在正確的位置。當然,個人還是很看重它的。至少今天的事情又一次告訴了我,不應該小瞧...