生活作为一个系统工程
生活是一个系统工程
生活是一个复杂的概念,也是一个复杂的过程。它涵盖了我们在存活时间中所有的一切,简单来说即我们的工作与私人事务
一个系统工程,只有一个方面拔尖是无效的,它需要的是各个方面的合力达到最大值。这就意味着,我可能在工作上非常优秀,但私人生活却一塌糊涂,那么我的生活并说不上是好的,除非我可以一直留在工作的状态;我可能在私人生活上非常自得,但在工作上并不如意,除非我可以不用工作。但事实是,久而久之,一塌糊涂的私人生活,最后会影响到优秀的工作状态;不如意的工作,最后也会影响到自得的私人生活
作为一个系统工程,它解决的是实际的问题。这意味着,即使有一个或多个方面拖后腿,我依然可以利用占优的方面直接或间接地去弥补,而并不是让坏的停留在坏的、集中精力去发展好的
于是,我不必过于羡慕他人,因这令人羡慕的,只是他人生活的其中一个方面。重要、值得思考的是:
* 如果自己没有了这方面的优秀,是否对总体生活产生消极影响?
* 如果自己有了这方面的优秀,是否会对总体生活产生积极影响?
生活是一个系统工程
生活是一个复杂的概念,也是一个复杂的过程。它涵盖了我们在存活时间中所有的一切,简单来说即我们的工作与私人事务
一个系统工程,只有一个方面拔尖是无效的,它需要的是各个方面的合力达到最大值。这就意味着,我可能在工作上非常优秀,但私人生活却一塌糊涂,那么我的生活并说不上是好的,除非我可以一直留在工作的状态;我可能在私人生活上非常自得,但在工作上并不如意,除非我可以不用工作。但事实是,久而久之,一塌糊涂的私人生活,最后会影响到优秀的工作状态;不如意的工作,最后也会影响到自得的私人生活
作为一个系统工程,它解决的是实际的问题。这意味着,即使有一个或多个方面拖后腿,我依然可以利用占优的方面直接或间接地去弥补,而并不是让坏的停留在坏的、集中精力去发展好的
于是,我不必过于羡慕他人,因这令人羡慕的,只是他人生活的其中一个方面。重要、值得思考的是:
* 如果自己没有了这方面的优秀,是否对总体生活产生消极影响?
* 如果自己有了这方面的优秀,是否会对总体生活产生积极影响?
老实
做老实人并没有错,实际上也应是长远之计
然而,在做老实人的同时,必须明白老实的前因后果:
* 我为什么需要做一个老实人
* 我做这件老实事或不做这件老实事,会有什么后果
* 我应该如何应对他人占我作为老实人便宜的行为
强调做老实人是对的,但必须要同等甚至更多地强调做老实人的智慧,否则是揾自己笨
做老实人并没有错,实际上也应是长远之计
然而,在做老实人的同时,必须明白老实的前因后果:
* 我为什么需要做一个老实人
* 我做这件老实事或不做这件老实事,会有什么后果
* 我应该如何应对他人占我作为老实人便宜的行为
强调做老实人是对的,但必须要同等甚至更多地强调做老实人的智慧,否则是揾自己笨
榜样作为起点
树立榜样,并不是以他作为追逐的目标,更不是以他作为自己的终点。更实用性的做法,是将榜样作为起点
将榜样作为起点,并不意味着我必须要达到榜样的高度,才能开始旅程
将榜样作为起点,正是因为我们对即将的旅程一无所知。在获得足够多的认识前,换位思考,尽可能以榜样的角度思考,借鉴他们会采取的策略、行动。以榜样为起点,是模仿行为
将榜样作为起点,是解决自身对前景不确定性的手段,是解决不确定性的确定性做法
再次,将榜样作为起点,并不是以榜样作为终点。在旅程中,基于榜样的模式,我们会逐渐发现自己的模式。这才是终点
树立榜样,并不是以他作为追逐的目标,更不是以他作为自己的终点。更实用性的做法,是将榜样作为起点
将榜样作为起点,并不意味着我必须要达到榜样的高度,才能开始旅程
将榜样作为起点,正是因为我们对即将的旅程一无所知。在获得足够多的认识前,换位思考,尽可能以榜样的角度思考,借鉴他们会采取的策略、行动。以榜样为起点,是模仿行为
将榜样作为起点,是解决自身对前景不确定性的手段,是解决不确定性的确定性做法
再次,将榜样作为起点,并不是以榜样作为终点。在旅程中,基于榜样的模式,我们会逐渐发现自己的模式。这才是终点
杠精
一件事可以有多个分析角度;当我们选择其中一个角度作为主题,加以分析论述后,杠精会从其它的角度入手,举出一个与主题角度不符甚至相反的例子进行反驳
此乃另辟蹊径
这种做法,在严谨的逻辑意义上是没有错的;但我们所讨论的事,作为一种现实状况,是复杂的;这意味着促成这件事之所以是事实的因素是多个的,只是占重多少的区别;于是,杠精的做法,在深嵌于复杂性的现实意义上,是错误的
然而,当我们谈论杠精时还如此理性分析,也未免太过可笑,因最重要的是,在交流讨论的意义上,他们是恶心的
一件事可以有多个分析角度;当我们选择其中一个角度作为主题,加以分析论述后,杠精会从其它的角度入手,举出一个与主题角度不符甚至相反的例子进行反驳
此乃另辟蹊径
这种做法,在严谨的逻辑意义上是没有错的;但我们所讨论的事,作为一种现实状况,是复杂的;这意味着促成这件事之所以是事实的因素是多个的,只是占重多少的区别;于是,杠精的做法,在深嵌于复杂性的现实意义上,是错误的
然而,当我们谈论杠精时还如此理性分析,也未免太过可笑,因最重要的是,在交流讨论的意义上,他们是恶心的
跟风
跟风其实没有不妥之处,它本质上是将思考外包到你信任的群体
而将思考外包到其它群体其实也没有不妥之处,它是一种减轻自身心智负担的行为,实际上还是一种聪明的行为。如果说跟风是一种本能的话,那么这种聪明的行为可以说是刻进 DNA 的行为,是一种本能的扬长避短的做法
那么,当我们批判跟风的时候,到底是在批判什么?
跟风的分水岭在于所选择的群体,或曰选择信任的群体。当嘲笑跟风行为时,我们实际上是在取笑对方选择了“错误”的群体
跟风行为所需要的思考,是对群体选择的思考,这是无法外包的;跟风行为所外包的思考,是超出自身所能思考的范围,具体而言即超出自身能力。我愿称前者为战略上的思考,后者为战术上的思考
但倘若战略思考本身也是一种困难呢?无他,只能多训练、多犯错、多借鉴,像一个贝叶斯那样去逼近你所渴求的战略思维
跟风其实没有不妥之处,它本质上是将思考外包到你信任的群体
而将思考外包到其它群体其实也没有不妥之处,它是一种减轻自身心智负担的行为,实际上还是一种聪明的行为。如果说跟风是一种本能的话,那么这种聪明的行为可以说是刻进 DNA 的行为,是一种本能的扬长避短的做法
那么,当我们批判跟风的时候,到底是在批判什么?
跟风的分水岭在于所选择的群体,或曰选择信任的群体。当嘲笑跟风行为时,我们实际上是在取笑对方选择了“错误”的群体
跟风行为所需要的思考,是对群体选择的思考,这是无法外包的;跟风行为所外包的思考,是超出自身所能思考的范围,具体而言即超出自身能力。我愿称前者为战略上的思考,后者为战术上的思考
但倘若战略思考本身也是一种困难呢?无他,只能多训练、多犯错、多借鉴,像一个贝叶斯那样去逼近你所渴求的战略思维
撒旦
撒旦根本不应该是我们害怕的对象。他只不过是鼓励或怂恿我们去做社会框架不容许的事,去思考社会道德谴责的事
我们害怕的是踏出社会框架、违反社会道德的后果;真正让我们感到害怕的,正是社会框架、社会道德本身,是它们压倒性的权威
然而,我们更应该害怕的是:在现行的社会框架下,循规蹈矩的我们究竟错过了什么
框架、道德,它们只是在当下不变,但在时间线上却是剧变的
撒旦根本不应该是我们害怕的对象。他只不过是鼓励或怂恿我们去做社会框架不容许的事,去思考社会道德谴责的事
我们害怕的是踏出社会框架、违反社会道德的后果;真正让我们感到害怕的,正是社会框架、社会道德本身,是它们压倒性的权威
然而,我们更应该害怕的是:在现行的社会框架下,循规蹈矩的我们究竟错过了什么
框架、道德,它们只是在当下不变,但在时间线上却是剧变的
情绪稳定
情绪稳定不是目的,而是手段;重要的是,不要让情绪的起伏影响到作决定以及健康
强调情绪稳定,是因为我们永远不知道下一个需要作决定的时刻什么时候会到来,我们的健康会在什么时候会突然因为无法承受情绪的起伏而崩溃
稳定,意味着为未来的关键时刻保留余地、建立缓冲
情绪稳定不是目的,而是手段;重要的是,不要让情绪的起伏影响到作决定以及健康
强调情绪稳定,是因为我们永远不知道下一个需要作决定的时刻什么时候会到来,我们的健康会在什么时候会突然因为无法承受情绪的起伏而崩溃
稳定,意味着为未来的关键时刻保留余地、建立缓冲
在 Go 中使用 Channel 保证并发安全,意味着:读与写必须在同一个协程中进行
如果无法保证到在同一个协程中进行,就必须新建一个协程来完成这件事;否则就不能用协程,只能用其它手段,如锁
倘若需要新建一个协程来实现并发安全,那么就必须保证在开始并发读写前,完成对相关 Channel 的监听,这就必然会引申出形如
使用 Channel 来实现并发安全,至少需要 3 个 Channels。一是接收写操作命令,并完成写操作;二是接收读操作命令,读取数据,传递到第三个 Channel 返回给调用方。这是由于 Go 的类型系统比较简单,第一个 Channel 类型是
接收写操作命令的 Channel 与接收读操作命令的 Channel,它们本质上都是用来接收,那么两者可以合并成一个吗?
可以,但不必要。
首先,由于两者接收的数据最终目的不同,这就要求有一个 interface 作为接收这个操作的统一类型,这需要写更多的代码来表示读与写具体操作实现;然而,这不是重点
其次,每次需要读或写操作时,我们都需要新建一个操作实例发送到 Channel;然而,当我们谈及并发安全时,意味着读写是相当高频的操作,进一步,在垃圾回收前,将会产生大量的废弃对象。而相比于直接使用 3 个 Channels,最后也只需回收 3 个对象
当然,读写操作实例,我们可以复用;但复用也意味着我们需要对这些对象进行维护;而当操作不止是读或写两种操作时,是可以根据情况考虑
综上,可以在开始时无脑使用 3 个 Channels
如果无法保证到在同一个协程中进行,就必须新建一个协程来完成这件事;否则就不能用协程,只能用其它手段,如锁
倘若需要新建一个协程来实现并发安全,那么就必须保证在开始并发读写前,完成对相关 Channel 的监听,这就必然会引申出形如
Start 之类的调用使用 Channel 来实现并发安全,至少需要 3 个 Channels。一是接收写操作命令,并完成写操作;二是接收读操作命令,读取数据,传递到第三个 Channel 返回给调用方。这是由于 Go 的类型系统比较简单,第一个 Channel 类型是
chan <data type>`;第二个 Channel 类型一般是 `chan structure{}`;第三个 Channel 类型是 `chan <data type>接收写操作命令的 Channel 与接收读操作命令的 Channel,它们本质上都是用来接收,那么两者可以合并成一个吗?
可以,但不必要。
首先,由于两者接收的数据最终目的不同,这就要求有一个 interface 作为接收这个操作的统一类型,这需要写更多的代码来表示读与写具体操作实现;然而,这不是重点
其次,每次需要读或写操作时,我们都需要新建一个操作实例发送到 Channel;然而,当我们谈及并发安全时,意味着读写是相当高频的操作,进一步,在垃圾回收前,将会产生大量的废弃对象。而相比于直接使用 3 个 Channels,最后也只需回收 3 个对象
当然,读写操作实例,我们可以复用;但复用也意味着我们需要对这些对象进行维护;而当操作不止是读或写两种操作时,是可以根据情况考虑
综上,可以在开始时无脑使用 3 个 Channels