先私有,後公有(prefer private to public)

 

        如果大家放開討論,“私有”和“公有”哪個更優先?恐怕和“雞、蛋”問題一樣,難以有確切結論。
        如果侷限於程序設計領域,則“私有優先公有”,已經被認爲是公理。有的人、項目,想主動或被動地通過反證法來推翻它的,最後都越加驗證了其正確性。
       
        1. 私有化的語言
        現在程序員最熟悉的,用來編碼喫飯的直接武器,就是編程語言。身邊接觸較多的是Java、C++、C,偶爾還有單片機上用匯編的。
        上述語言,依次下來就是一個不斷被私有化的過程。一個個特性逐漸被模塊化封裝起來,自動化從高到底轉換。機器指令集被私有化,提供短語助記符的彙編公有接口;彙編指令被私有化,提供指定標識符的編譯語言公有接口;簡單的編譯方式被私有化,提供支持更多慣用模式的高級語言;最後,連分配內存也私有化,提供回收機制式的後臺公有接口。
        語言私有化的一個現象是,公有接口越來越高級;高級語言、組件、平臺越來越多;程序員新人更多,而且貼近大衆消費者,或者本身就是消費者。中間層次的連接轉換器,也被各家中間轉換商私有化起來。程序員要依賴的人、物、事,越來越多,我們大家至今還混得不錯,得益於私有化後的信任度非常高。
       
        2. 從設計方法看私有化
        私有化(還包括各種不同稱謂:信息隱藏,模塊化,封裝,面向對象...)是設計方法發展的基礎。因爲從古到今,我們普通人要解決問題的複雜化程度,正隨時間呈幾何級數增長。
        小學時候,我們要學阿拉伯數學家的偉大發明“十進制”,能正確使用神祕的'0'。小學畢業了,到古埃及時期,怎麼樣也得撈個國師噹噹。
        初中,我們學希臘先哲的精髓“歐式幾何”,學笛卡爾的畢生心血“座標幾何”。初中畢業了,到羅馬帝國時期,照本宣科,混個哲學家不難。
        高中,我們要懂牛人牛頓的牛X定律,牛頓和萊布尼茲的微積分。這時候,去文藝復興時期推理一下,去哥根廷當個教授,和牛頓交交朋友,合格。
        大學,我們要懂當時只有3個人能搞懂的“相對論”(和女朋友在一起,時間過得快;上政治課,時間過得慢),很多外國人名字命名的公式,定律。畢業後,去二戰時期,可能會被當做人才引渡到美國。
        研究生,我們學什麼?學怎麼讀懂半新不舊的外文論文,操作Matlab弄個圖片,做個實際項目搞些編程經驗。然後希望去一個口碑不錯的公司,找一個薪水不錯的職位,解決複雜用戶的複雜問題。
        遇到複雜問題,將原來解決方案私有化,在封裝一層簡化使用的公有接口。過程設計,面向對象設計,領域設計,敏捷設計等,就是這樣被洋和尚整出來的。整出來後,不是搞單一的登月計劃,而是弄自定義的用戶皮膚多不多、炫不炫。月球只有一個,就在那兒;人有60億,形態各異。哪個問題,外國大師清楚得很。
        
        3. 從日常生活看私有化
        明星的經典說辭:“這是我的私生活,不便回答,請多關注我的作品”。1天24小時,8小時睡眠是完全私有的(如果有小孩了還會少);4、5個小時是與家人的私有時間;其他就是公有的工作時間,要給出公有交付物。成熟的人,能夠很好地獨立和平衡工作時間和私有時間,不會在公有地方吸菸。
        城市裏的建築工地,是典型的私有化示例。在城市裏搞建設,公有環境很複雜,建設單位不會直接開動。而是先建起圍牆,把工地封閉起來,留出大門,寫上“施工重地,非請莫入,進入帶好安全帽”,在臨時的私有地盤裏搗騰。實際情況中,規劃得好的,對周邊交通,安全,噪聲環境等,影響不大;規劃得不好的,堵車,被投訴噪聲等。不管怎麼樣,沒有圍牆一兩年之後,樓房就拔地而起,或者爛尾在那裏。
        旅遊景區,私有化做得太好了,當然特指收入方面。節假日的餃子們,去私有收入的旅遊景區,花了錢,就放馬到了公有地盤,揮一揮手,不帶走一地垃圾。但如果有人在他們的私人家裏如此放肆,應會直接飽以老拳轟出。與此對應的,一些免費公園的整潔程度維持的更好些;一些私有制國家的公共環境也更好些。
                
        4. 現實
        現在寫代碼,大多都是超過3人團隊的複雜項目。私有是必須的,自己的代碼,可以像在家裏一樣,適當放肆一些,赤裸上身,短褲,穿着拖鞋遊蕩。公有的接口,必須像參加任職典禮一樣,正裝出席,彬彬有禮。如果訓練之後,連假裝做不到,這個職位可能不適合你。
        童子軍軍規:讓營地比你來時更乾淨!
        
        參考文獻:
        1. 古今數學思想。
        2. 敏捷軟件開發。

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