聊聊不确定性和确定性

      今天来聊聊不确定性和确定性, 没有提纲, 写到哪里算哪里。


      不确定性有两种:

      一种是绝对的不确定性, 这也是世界的本来面目。所有的人, 都不能确定它(或者也可以广义地认为,困难到所有人都无法确定它)。 举个简单的例子: 抛掷一枚骰子,最后出现几个点,无法确定。更微观地讲,有海森堡提出的著名的不确定原理。 在这个问题上, 爱因斯坦认为上帝不抛骰子,拉普拉斯认为可以推算出世界在每时每刻的精确值。 显然, 爱因斯坦和拉普拉斯, 都错了, 而且很离谱。

      另外一种是相对的不确定性。 来举个简单例子, 对于没有学过算术运算规则的婴儿来说, 这些算术运算规则就是不确定的。而对于一个初中生来说, 这些算术运算规格则是很简单的, 是确定的。


      来分别说说两种不确定性。

      人们对于绝对不确定的事情, 就真的没有办法吗? 非也。虽然投掷一次骰子的具体值不能确定, 但是概率必然是1/6(请注意, 这里是概率不是近似1/6, 而是数学意义上的精确的1/6).   

      电子在导体中杂乱无章地运动, 人们能理解这些乌合之众的电子的行为吗? 不能! 那怎么办? 可以通过忽略细节来进行抽象, 抽象出电压、电阻和电流, 比如, 电压能精确到5V.   从微观到宏观, 从具体到抽象, 从不确定性到确定性。

      可是, 5V真的很精确吗? 这只是理论值, 如果考虑到具体的电子元件缺陷, 为什么不可以是5.000000001V呢? 当然可以。 

      看来, 抽象程度还是不高, 可以把5V附近的值都定义为1, 把0V附近的值都定义为0, 而只让电路中的电压在5V附近和0V附近, 这样, 电路中所有电压的逻辑都是1和0.  而且是准确的1和0, 不会有任何错误。

      回头看一下, 那些到处乱窜的电子, 居然就映射成了准确的1和0, 从不确定性, 到了确定性。 这就是计算机二进制里面的1和0, 计算机无非就是在和这些1和0打交道。

      1和0就一定是精确的吗? 比如A要给B传输一个1, 万一在传输过程中, 受到电磁干扰或者器件缺陷, 1变成0了, 岂不是就错了? 这种不确定性怎么处理?  有个简单的方法可以参考: 每次传1的时候, 就传11111, 每次传0的时候, 就传00000, 这样, A传输给B后, 11111不小心变成了11110, 那么B还是能识别出来的, B认为,肯定是中途出错了才导致11111变成了11110, 所以B可以从11110中还原出11111, 从而知道A要传的实际上1.   这就是信道编码的思想, 除了上述这种1编码为11111, 0编码为00000的笨方法外, 还有很多信道编码方法, 其本质目的就是,减少不确定性,增加确定性。

      略懂点计算机网络的人, 比如我, 都知道计算机网络的物理层目的就是为了传输1和0组成的比特流, 而OSI的7层结构,就是下层为上层服务,让确定性层层增强。所以,当我们用socket编程用得很爽的时候, 要知道,这是经历了多少次的层层抽象,层层保证啊。

      当然, 在计算机中,层层抽象,并不局限于网络, 看看从电子、原子核到原子, 到分子,再到简单电路,模拟电路,数字电路,芯片,集成电路,机器语言,汇编语言, 操作系统,编译器,高级语言, 这一系列的东西, 也是类似的逻辑。

     总之, 通过抽象, 能减少不确定性, 增加确定性。 减少不确定性? 增加确定性? 顺便说下,香农信息论就是讨论不确定性的。


     再看看相对的不确定性, 这个才是真正想说的。 对于我而言, 昨天不确定的东西, 可能今天就是确定的了。

     在这个鸡汤满满的时代了, 心灵导致们互换我们拥抱不确定性, 拥抱未知, 拥抱变化。 为什么要拥抱呢? 抱起来很舒服吗?当然是不舒服。

     多少人, 每天把自己局限于确定性中, 内心或多或少地排斥未知, 倾向于在自己能确定的熟悉的圈子里面活动, 比如我,曾经的我。

      为什么那么多人喜欢做熟悉的事情呢? 因为熟悉的事情, 确定性搞, 容易搞定, 舒服。 为什么那么多鸡汤导师呼唤拥抱不确定性、走出舒适区呢? 因为不确定性才能真正让一个人拓宽自己的领域和能力, 面对不确定性的过程,会有担心和焦虑。

      从乐于做确定的事情, 到乐于做不确定的事情, 这个转变并不容易。 关键在于内心。 人生面临的无非就是各种各样的二进制开关, 各种选择, 并无对错。

      老师如果只是讲讲课, 那么这就是一种相对简单的确定性事情。 今天要讲的东西, 去年就已经会了。 这并没有什么不好。 生活安定。 当然, 有些老师搞科研, 需要面对众多的不确定性。

      在工作中, 仅仅需要体力就可以搞定的事情, 是简单的确定性事情, 比如堆积点一眼能看穿的业务代码。 就好比把一吨的砖从山底搬到山顶, 确实没什么含量。回头看看我自己的CSDN博客, 有很重的搬砖痕迹。 砖头需要搬,但搬多了, 不太好。程序员们天天说自己加班,忙得不得了,其实很多时候, 不过是在搬砖而已。现在经常看到api boy或者api caller这种说法, 跟搬砖差不多。

      我们工作的本质任务, 说白了, 就是化不确定性为确定性, 然后去搬那些确定性的砖。 一个人的时间有限, 如果按照每天9:00上班, 18:00下班来看, 这一天的时间片该如何划分呢?  

      本想画个图, 也画了一下, 感觉很丑,还是用文字吧:

      主时间片(9:00-18:00)

      1.  异步推动,减少不确定性

      2.  同步/异步沟通, 化不确定性为确定性。


      其余时间片(18:00以后):

       3.  搬砖, 处理确定性问题。 额,还是在加班。

      

       不多说, 也不知道说了写什么。


猜你喜欢

转载自blog.csdn.net/stpeace/article/details/80038135