網上很多技術評論性文章、網站的誤區

轉載自CU,作者 longnetpro  

我們無論在自己學習或者給別人解惑的時候,一定要有嚴謹和認真的態度,要言之有物,要條理分明,雖然有時做得不夠好,但是態度一定要端正!


 最近看了一些國內比較好的技術網站(這裏主要討論與PHP有關的),發現有很多問題,下面簡單說一下個人看法。

一、從水平上來看,國人的文章與老外的文章差距的確很大。很多寫得精彩的內容多是翻譯自國外文章(有的還會有些翻譯錯誤),而國內原創的作品很多缺乏新意 ——基本是千篇一律或是將國外的文章改頭換面,還有就是大量轉載傳抄,很少有人能自己獨立提出一些與衆不同的見解或是心得。同時很多這類文章水平也不高 ——有相當數量文章中描述的都是一些小兒科的做法,沒有什麼太多的技術含量,不但對初學者的指導意義,還會誤導一些人(當然國外的文章也有一部分會誤導人,我將會在下面談到這個問題)。這裏並非強調老外的文章觀點與內容就一定都正確,但是他們的文章中信息含量比較高,指導意義與實用性都相對比較強。

二、對一些源代碼或是技術文章的分析,明顯看得出來中國人與外國人思維的巨大差異性——中國人的思維自由而散漫,毫無體系可言,只顧自己用自己的,把一個東西搞出來就完了,基本不考慮代碼的兼容性,擴展性,友好性,可讀性什麼的,因此其實沒有什麼實用價值,如果要使用這些東西,結果只有兩個:一個就是隻借用思想然後自己開發出一套新的(適合與高手一級,但很可能又會走自由散漫的老路),第二個就是使用後的項目與被使用代碼一樣雜亂,一樣自由散漫,一樣沒有兼容性,擴展性,友好性等等。對文章也是這樣,多數基本上是想到哪寫到哪,雖然總結是總結過,但沒有弄出一個提綱性的東西,可能別人看了半天也搞不懂你在說什麼(當然國人中有的文章也的確很不錯,這點不能全盤否認)。對老外寫的文章,他們大多數在結構上都一樣,但在內容上就是百花齊放,各家不同,而且每篇基本上都有明確的觀點,有一個主旨,無論作者本人的理解或是想法對錯與否,他都會找出一些證據來證明,這至少給讀者一個選擇與判斷的機會,也能引起初學者的思考,使他們不會盲從,對讀者的誤導會大大降低,也有一定的啓發性。國內的文章基本很少給出有力的證據讓人信服,對高手來說,他們自會判斷作者觀點的正誤與否,但對初學者而言卻讓他們不知對錯,對比較崇尚權威的中國人來說,寧可信其有,不可信其無,結果就是某些錯誤的思想影響了一大批人,文章還被做爲經典四處轉載,文章作者在那裏沾沾自喜,結果是“流毒無窮”(說得恐怖一點的話)。而對那些可以自己判斷的高手而言,他的判斷也是相對盲目的,因爲原文沒有有力證據,他必須用自己的知識來判斷,仍然是一樣的狹隘,同時對別人也沒有幫助,他們也不會發表反對意見(與潮流不符)。總之這樣結果就是:這類文章沒有太大的實用價值,又由於文章指導性相對差,學又不一定學到什麼東西(是否學到東西還要看該讀者的悟性與接受新事物的能力與思維創新能力),還有可能禁錮人的思維,因此不如不發,不如不轉。

三、很多文章內容不客觀,不全面,同時缺乏時效性。我剛纔說老外也有很多文章對人有誤導,也有這些方面在內,其中一個主要問題是個時效性,但不幸的是,這一點卻最容易被忽略。很多文章內容與觀點,只在特定的歷史時期,特定的環境與條件下是成立的(包括很多經典文章),但在當前的情況與條件下多數是不成立的(強調是多數)。但往往文章轉帖或發佈者完全不考慮現實情況,將過時的文章原文照發,也不寫註解,結果造成一個後果就是,本來趨於淘汰的技術或方法又被炒起來了,對初學者而言,本來他完全可以直接接受新的內容,卻因爲這類文章的誤導,並發現有些舊的東西比新的好用,就完全不顧舊的東西的問題,因爲貪圖好用而放棄新的內容,最終就是本來可以避免的問題或是已經被逐漸淘汰的問題還在不斷地被重複,總也得不到根治(因爲總有初學者不斷加入這個行列)。一個最典型的例子就是PHP中register_globals的用法問題,大量的所謂安全問題無一例外不是與之有關,網上不斷轉載所謂安全問題,結果導致這個問題一直不斷。其實這個早就是個過時的問題了,手冊及官方網站都已說明,只要大家都用高版本的PHP,用新的寫法寫代碼,就不應該再有大量這類問題出現(注意不是絕對沒有問題)。新手從來沒有在網上看到什麼正面的文章說爲什麼用$_GET而不用變量,大量的文章卻只說用變量會導致安全問題,並只說你不能這樣不能那樣,而到底你應當怎麼卻提得很少,同時那些所謂的解決方案也已經過時了,並不適用。從普通人的思維角度來說,如果你明確說某種做法是正途,並說明了爲什麼,他會按這個正確的路走,如$_GET,即使失去了方便性,對安全考慮多一點的用戶,他會取捨的,而且這時正確的觀點也已樹立了;而另一個角度,你如果不指明正途的話,他就只會儘量不走文章提到的錯誤的路(“不走提到的錯誤的路”與“走指明瞭的正途”從效果上是完全不同的,前者再犯錯的機率會遠遠高於後者)。

四、文章不成體系,水平差別大,也沒有因此而分級別,有些文章的內容觀點或是代碼有明顯問題卻視而不見,有些內容名不符實或是誇大其辭,也被採用,對人誤導極大。有些文章的說明不實事求是,只揀好聽的說,對應當注意的問題隻字不提,極爲有害。即不夠客觀與全面。某些人寫的或是翻譯的文章,語句不通,語法不對,標點亂用,錯別字(同音字)、打字錯誤層出不窮。

針對以上問題,有幾個建議:

首先,網站需要有一個技術與業務水平都比較高的負責人或是管理者,還要有一些高水平的編輯(這個不難做到,找幾個比較有空的人做版主負責即可,但水平要高一些,要做到客觀公正)。編輯的主要工作是修改錯別字或語法標點錯誤,並對觀點有疑問(指有明顯錯誤或明顯不客觀有失偏頗這類問題,不是說你認爲有疑問就有疑問的)的地方加上註解(但最好不要改動原文的文字)。

二、刪除過時文章,或加註解以提醒讀者注意,不能不聞不問。對文章內容精彩或是有啓發性,但某些觀點有疑問的,這時應當加以提示或註解(),語氣還是應以尊重原作者的勞動及版權,但絕不能寫一個“文章內容及觀點與XXX網站無關”了事,這是對讀者不負責任,因爲你是技術網站,你的責任是傳播最新的,正確的,有價值的技術與思想,而不是隻提供場地讓大家亂扯又不負責任。

三、原文作者、原文寫作日期、原文引用自(如果有的話)、轉載人、轉載日期、轉載來源等應當在標題下就註明,這也是對作者及轉載者勞動的尊重。其中原文寫作日期尤其重要,一定不能沒有,最好是明示,並對可能過時的文章加以特殊標記並用加重文字明示出來,最好是直接加上“此文章可能已過時”的字樣明確加以提醒。另外,一定要加上一句“此文章非權威,僅作參考,請讀者自酌”之類的提示,儘量將文章對讀者的可能性誤導降到最低。

四、將文章分級或分類或兩者兼而有之,如按入門級、普通級、進階級、專家級等等這樣分級或是按安全、代碼、技巧等等這樣分類。使整個體系結構清楚。

五、對一些結構比較固定的內容,比如說有人發佈源代碼,可以考慮用特殊結構的提交頁面:如有標題部分,描述部分,代碼部分,說明部分,技巧部分,問題部分,總結部分,下載URL等等,最後形成HTML文章時,將這些部分組合起來成格式統一的文檔。這樣結構清楚,讀者一目瞭然,又具收藏價值。


對於提交文章者而言,我也有幾個建議:

一、一定要有原文作者名,原文日期(如果是原創一般提交時會自動記錄時間),註明是否原創或轉載,如是轉載,轉自哪裏,最好有URL或是書名期號等。

二、在寫文章時,問一下自己,我的觀點是否客觀,是否全面,文章中是否有我自己都似是而非的內容。如果不客觀,則減少主觀觀點,直至改到客觀爲止,如有必要一定要加上主觀觀點,最好加一句話“這是本人個人觀點,僅作參考”或是“我個人認爲。。。”(就是我常說的話)。如果不全面,就應該修改你的文章的中心觀點使你的內容與論題相符,使內容全面。有似是而非的內容,如果必須寫上,請註明“這點我也不甚清楚”或是“這點我也只瞭解一二,不透徹”或是像我自己常寫的那句“在這一點上我沒有太多的發言權,因爲我也不是很瞭解”——沒人因爲你這樣寫會貶低你的水平,如果你真的有水平的話。

三、文章的論題與觀點都有了,要有總結。如果針對某些問題有解決方法,最好提出正解,而不要只說你不應該這樣那樣(上面談過的問題),說一些沒有意義的話。當你提正解的時候或是說你應該如何如何做時,最好不要一口氣倒出所有的詳細步驟,而應該點到即止,但信息應該足夠多,否則一樣沒有意義。信息多到什麼地步呢?多到讓讀者形成一個概念,有辦法自己找到最終解決方案。卻絕對不應該替他包辦代替,不然又多培養了一個懶漢。

四、文章結尾處,如有可能,最好總是加上這一句(前面也提到過的):“個人觀點,僅供參考”。

五、文章最後一定要附上參考信息,或是個人致謝,當然是在有這些信息的情況下。這也是對知識與其作者的尊重。

六、檢查錯誤。包括打字錯誤,標點錯誤,語法錯誤,語句錯誤,到內容錯誤,邏輯錯誤,代碼錯誤,例證錯誤到最後的觀點錯誤。



後記:

我的想法基本也寫完了。其實我對讀者寫文章的建議就是我在國外寫英語文章的一個基本完全步驟。這邊小學生寫文章基本上都是這樣一個過程,只是我在上面建議中加了一些我自己總結的內容。老外很講條理性與觀點和內容的match,多的內容或是與觀點無關的,你寫得再精彩都要刪。另外,老外極其講究語法錯誤和拼寫錯誤及標點錯誤(標點錯誤有時是fetal錯誤,在考試中弄錯了可能會被嚴重扣分),三個大的語法錯誤,你的文章的百分之五十的分就沒了。我的一個真實例子,quiz時一寫作題40分,要寫一段八句話的段落,第一句是主題topic sentence,第二句是main idea 1,這兩句沒問題,但第三句我就寫了一句Because i .... 然後加個句號。在中文這個很正常,我一個觀點出來,然後“因爲。。。”,這個沒問題。但在英語中,because是連詞,只能引導從句,必須要有主句,否則就是fragment,是極爲嚴重的語法錯誤,我全篇就只這個錯誤,當時沒察覺,就被扣掉八分,其實加上一個主句就沒有問題了,如 It was ... because ...。後來再一問,如果只寫“因爲。。。”,就象中文那樣的寫法,你得寫成 This is because ....,當時就暈,不過後來再也沒有類似錯誤發生。我在這裏不是討論英語,只是說寫文章時,對語言的要求是很高的。可能在中國,上了大學都不學中文了,結果是一個個寫的論文寫得象幼兒園小孩寫的,也沒有體系。結果也導致了思維沒有規範,大家也不遵守規範,最後就是一團糟,中國人到哪個地方那個地方就亂 ——地方亂,市場也亂了。


其實,我以上說的這些情況其實國內外很多類似網站都有,國外的不說,國內的大站phpe以及前幾天在CU上做廣告的troyoo都有類似的問題。 PHPE上的很多文章都犯了我提的那些問題(當然我不是專門針對PHPE或是TROYOO)。還有PHPE上的很多源代碼也是,有的水平極低,有的名不符實,有的亂吹,有的根本不合理的東西居然被下載次數最多——當然我沒看的或是不懂的我也不敢亂發表意見——至少我看到的很多代碼中,甚至有一半左右都是有那些問題的。一個典型的例子,PHPE上有一個類庫是ZipLib,作者在他的說明中吹得離譜,好象解決了一個很大的問題,下載的人數也非常之多,很多地方都轉載推薦,我在LEOHACK和CTB的論壇上都看到過。然而實際情況完全不是這樣,他的代碼我只看了一遍,就已經完全知道他的全部思路和他犯的全部錯誤,因爲他這類似功能的代碼我不但設計過,也寫過一個完整版的,功能比它的強大得多(以前發給過shukebeita),他的想法我原來全都想過,他的錯誤我在設計階段就排除了,就是說,同樣的功能與操作,他的思路從一開始就被我拋棄了,而我當時的思路還沒有他的這麼沒有價值(只能這麼說,因爲的確沒有價值)。首先,他就把打包與壓縮的概念弄混了,他吹的不用服務器提供壓縮庫就可以壓縮完全是錯的,我以爲他高手高到把壓縮算法給用PHP實現了,抱着學習的想法來看它,一看,發現只是打包而已,在沒有ZLIB庫函數的情況下還是不能壓縮,PEAR中的TAR不早就實現了嗎?PEAR中也可在ZLIB有效的情況下壓縮,無效的情況下只打包。最爲可笑的是,作者自己定義了一套打包格式,使用前還要先在本機用作者自己寫的WINDOWS程序(LINUX下不能用)先打包壓縮再上傳到網上用他的PHP解壓解包,或是在網上打包壓縮後在本機上用他的程序解壓解包。有現成的TAR不用,自己搞一套,又不通用還特麻煩。更爲嚴重的是,分析代碼後發現他的文件格式設計不好,需要他把所有文件打包壓縮成一個巨大的字符串後(所有過程在內存中操作),才能寫到磁盤上去,而不是象TAR或是TGZ那樣可以邊打包壓縮邊寫盤的。因此這個庫根本就不可用,用了它只會爲以後留下無窮的後遺症。我說這個不是說我的水平有多高多高,也不說那個作者本身的水平有多低多低(是說那個寫的庫水平比較低),只是說,就象PHPE這樣的站,上面很多東西都是很有問題的,很多讀者慕名而來,最後可能反受誤導,這對雙方都不好。


寫這麼長的文章,也是一時興起,正好這邊週一放假,是長週末,沒事也是沒事。幾天前EasyChen對我說PHPE想辦雜誌,要我支持,我當然支持。但我看了一下PHPE,發現有很多問題,其實這些問題早就看到過,也深惡痛絕,只是一直不想花時間寫這麼長的文章。我平時反正想,“中國人很多都這德性(不是全部),你沒有頭腦,願意迷信別人,你自己不會分析,不會學習是你自己的問題,你倒黴你被誤導關我鳥事!”,因此也沒有什麼興趣寫下我這些想法。不過,既然這次有這個機會,其實也早想說了,只是想到中國學風不正,寫了這些肯定會有人說你出風頭,你牛什麼牛之類的,因此也懶的管。其實我是無所謂,並不在乎別人怎麼想,在北美,我上面談到的那些根本就是司空見慣,習以爲常的事,在中國卻是像怪物。中國的學風我現在想起來只會搖頭,想不通當年在大學裏是怎麼混過四年的——當年我只懂數學和原理,不會寫程序,論文也不會寫。幸好我會用五筆打字,比較快,可以在計算機上打論文了,因此論文五十多頁光COPY 就三十頁,不然,我手工寫就算是COPY也要累死,結果現在看來寫的還沒有這邊高中生寫的文章好。要在這邊,你論文沒有一定量的原創或是突破,你十年都拿不到學位。在國內這樣混雖然能混個文憑,但根本是做不出什麼東西的,也無法創新。

中國的教育現在大致流於這種形式,實在可悲,教育成爲產業,成爲賺錢工具了。對於我來說,賺錢也成爲第一位了,但不是靠寫程序。寫程序,只是個人愛好,寫評論或是技術文章也只是個人愛好。我是不會再做程序員的了,有好多種賺錢的方法比做程序員輕鬆自由,也賺得多。

言盡於此,希望這篇文章給大家一點啓發。對PHP還是一如既往地關注,有空時也會寫幾個類玩玩。

順便做個廣告,如果大家覺得好,不妨廣泛轉載,但請註明作者與時間。涉及到有一些批評性的內容(如ZipLib庫的問題),如不方便可以刪除。對這篇文章本身,雖然不一定很好,但我自信還是有一定說服力的,相對也是客觀的,反正大家可以保留自己的觀點。持反對意見的,請批評指正,我會迴應的,但請不要搞人身攻擊或出言不遜。

最後還是聲明一句,個人觀點,僅供參考,如有不妥,敬請見諒,各位有保留自己觀點的權利。

向所有提出合理的批評意見與建議的人致敬!向所有看這篇文章的人致謝!多謝大家這麼有耐心看完這篇文章。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章