程序语言的设计和解决问题的范式都是有很多讲究的, 它们决不止于解决一个个具体的问题. 它对于我们人生的思考也有很好的启发, 或者可以看成相当棒的辅助工具. 借助编程的思想, 帮我在混沌的人生中指出一条清晰的道路.
面向对象
把宽泛无序的东西都严格限定在"对象"里, 定义好它的 variables 和 methods,规定好类型和权限才能使用, 规定好 input 和 output, 这样在使用时才不会因为随意导致各种诸如越界等错误.
思考:
- 在工作和生活中, 无处不见因为越界导致的麻烦事. 领导和下属对责任的不明晰, 导致任务无法有效完成. 领导只关心 output, 下属却更在意 input; 因为结果最终是算领导的, 下属不过领取微博的薪资过日子.
- 为什么"清官难断家务事"? 因为法官判的是法律案件, 法律是有章可循的\面向对象的. 而家务事拉拉杂杂,界限模糊,你中有我,我中有你, 更多时候就是心里不平衡, 这种无法量化的东西也只能虚晃一招. 也就是多给对方脸上贴金, 说点暖心的话, 支持的话,理解的话, 宽慰的话. 更实在一些, 多一点实际的关心和帮助, 物质的补偿和酬谢, 时间和空间上的陪伴, 给足 input.
- 处对象时, 一定要弄清楚对方的需求是什么. 你一厢情愿的喜欢对方并没什么用. 要双方的 input 和 output 都对接好了,关系才能持久. 不然, 就算结婚了就算有孩子了就一定幸福快乐吗? 另一方面, 很多家庭之所以还能维系, 是因为利益捆绑在一起了, 分开了生活成本(居住, 饮食, 出行, 社交等)会陡然上升, 于是将就在一起吧. 为什么现代人的离婚率远远高于农业时代? 经济条件好了嘛, 一个人也能活的很好, 我宅我自在.
divide and conquer
人们常常在大问题面前惊慌失措. 其实, 再大的问题, 第一步就是要将它切割, 变成一步步可以执行的小步骤. 困难不再可拍, 困难可以最终解决.
self-balanced tree
不论理想和情怀, 大部分人工作是为了换取生活的物资. 工作是兢兢业业\精力高度集中的状态; 生活则是随意,轻轻松松的状态. 虽然娱乐业,服务业和现代通讯把这两者的界线变得模糊, 但是这两种状态是不一样的.
一个人要活得健康有活力, 这两者的平衡是要把握好的. 工作再成功, 也不能代替生活的空白; 生活再丰富, 也不能代替工作上的称心如意.
一个家庭要幸福美满, 两个人的平衡也是必须的. self-balanced 不是意味着两者的高度绝对相同, 而是高度差不能超过一个 level, 也就是它们至少够的着对方. 自己跑太快时,愿意拉对方一把.
natural ordered data
虽然直白地谈论年龄\薪资\官阶是不礼貌的\伤和气的, 但是你必须承认这就是事实. 因为这些数字, 它们才好排序,才好 sorted, 不然你那么多算法都无从实施. 如果你把自己看成统计学上的一个点, 蚁群中的一个蚂蚁, 星星中一颗不发光的行星, 就不需要自卑难过了. 而且, 这也只是你暂时的状态, 你意识到你的起点低, 这是奋起直追的第一步. 只怕自己沾沾自喜而追得太慢.
binary search
世界上最快的算法效率是 log2(n),也就是二分法. 所以刚开始懂事时, 小孩就被教区分好人和坏人. 虽然现在知道世界是复杂的, 那种分法不准确. 可是这是最有效率的教法, 总比混淆是非好! 所谓复杂, 主要是维度/角度的不同. 我们可以从道德\法律\财富\成绩\智商\情商\外貌\性格等 attribute 上区分他们