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

 

        如果大家放开讨论,“私有”和“公有”哪个更优先?恐怕和“鸡、蛋”问题一样,难以有确切结论。
        如果局限于程序设计领域,则“私有优先公有”,已经被认为是公理。有的人、项目,想主动或被动地通过反证法来推翻它的,最后都越加验证了其正确性。
       
        1. 私有化的语言
        现在程序员最熟悉的,用来编码吃饭的直接武器,就是编程语言。身边接触较多的是Java、C++、C,偶尔还有单片机上用汇编的。
        上述语言,依次下来就是一个不断被私有化的过程。一个个特性逐渐被模块化封装起来,自动化从高到底转换。机器指令集被私有化,提供短语助记符的汇编公有接口;汇编指令被私有化,提供指定标识符的编译语言公有接口;简单的编译方式被私有化,提供支持更多惯用模式的高级语言;最后,连分配内存也私有化,提供回收机制式的后台公有接口。
        语言私有化的一个现象是,公有接口越来越高级;高级语言、组件、平台越来越多;程序员新人更多,而且贴近大众消费者,或者本身就是消费者。中间层次的连接转换器,也被各家中间转换商私有化起来。程序员要依赖的人、物、事,越来越多,我们大家至今还混得不错,得益于私有化后的信任度非常高。
       
        2. 从设计方法看私有化
        私有化(还包括各种不同称谓:信息隐藏,模块化,封装,面向对象...)是设计方法发展的基础。因为从古到今,我们普通人要解决问题的复杂化程度,正随时间呈几何级数增长。
        小学时候,我们要学阿拉伯数学家的伟大发明“十进制”,能正确使用神秘的'0'。小学毕业了,到古埃及时期,怎么样也得捞个国师当当。
        初中,我们学希腊先哲的精髓“欧式几何”,学笛卡尔的毕生心血“坐标几何”。初中毕业了,到罗马帝国时期,照本宣科,混个哲学家不难。
        高中,我们要懂牛人牛顿的牛X定律,牛顿和莱布尼兹的微积分。这时候,去文艺复兴时期推理一下,去哥根廷当个教授,和牛顿交交朋友,合格。
        大学,我们要懂当时只有3个人能搞懂的“相对论”(和女朋友在一起,时间过得快;上政治课,时间过得慢),很多外国人名字命名的公式,定律。毕业后,去二战时期,可能会被当做人才引渡到美国。
        研究生,我们学什么?学怎么读懂半新不旧的外文论文,操作Matlab弄个图片,做个实际项目搞些编程经验。然后希望去一个口碑不错的公司,找一个薪水不错的职位,解决复杂用户的复杂问题。
        遇到复杂问题,将原来解决方案私有化,在封装一层简化使用的公有接口。过程设计,面向对象设计,领域设计,敏捷设计等,就是这样被洋和尚整出来的。整出来后,不是搞单一的登月计划,而是弄自定义的用户皮肤多不多、炫不炫。月球只有一个,就在那儿;人有60亿,形态各异。哪个问题,外国大师清楚得很。
        
        3. 从日常生活看私有化
        明星的经典说辞:“这是我的私生活,不便回答,请多关注我的作品”。1天24小时,8小时睡眠是完全私有的(如果有小孩了还会少);4、5个小时是与家人的私有时间;其他就是公有的工作时间,要给出公有交付物。成熟的人,能够很好地独立和平衡工作时间和私有时间,不会在公有地方吸烟。
        城市里的建筑工地,是典型的私有化示例。在城市里搞建设,公有环境很复杂,建设单位不会直接开动。而是先建起围墙,把工地封闭起来,留出大门,写上“施工重地,非请莫入,进入带好安全帽”,在临时的私有地盘里捣腾。实际情况中,规划得好的,对周边交通,安全,噪声环境等,影响不大;规划得不好的,堵车,被投诉噪声等。不管怎么样,没有围墙一两年之后,楼房就拔地而起,或者烂尾在那里。
        旅游景区,私有化做得太好了,当然特指收入方面。节假日的饺子们,去私有收入的旅游景区,花了钱,就放马到了公有地盘,挥一挥手,不带走一地垃圾。但如果有人在他们的私人家里如此放肆,应会直接饱以老拳轰出。与此对应的,一些免费公园的整洁程度维持的更好些;一些私有制国家的公共环境也更好些。
                
        4. 现实
        现在写代码,大多都是超过3人团队的复杂项目。私有是必须的,自己的代码,可以像在家里一样,适当放肆一些,赤裸上身,短裤,穿着拖鞋游荡。公有的接口,必须像参加任职典礼一样,正装出席,彬彬有礼。如果训练之后,连假装做不到,这个职位可能不适合你。
        童子军军规:让营地比你来时更干净!
        
        参考文献:
        1. 古今数学思想。
        2. 敏捷软件开发。

你可能感兴趣的:(先私有,后公有(prefer private to public))