Giter Club home page Giter Club logo

blog's People

Contributors

wangshengfei avatar

Watchers

 avatar

blog's Issues

关于「网易云音乐客户端提示无可用窗口」的问题的解决方案

网易云音乐客户端提示无可用窗口

电脑环境:MacBook Pro 10.15.4

软件版本:NeteaseMusic_2.3.2_832_web

问题描述:网易云音乐打开之后,程序坞中显示软件已经打开,但是在桌面找不到窗口,客户端「消失不见了」

起因与过程

前一段时间由于电脑存储不够用,内存当占用特别多的时候,硬盘的虚拟内存就占用很多。我打开很多 Chrome 标签的时候,硬盘存储直接从几个G压缩到了几百M。最后电脑一直提示内存不够用,请关闭应用程序后再使用。我不关闭的话,后面就会自动关闭应用程序。一天要重启好几次,每次重启打开网易云都需要重新登录,之前不需要重新登录的。最后实在受不了把 Xcode 给删了。后来发现 网易云音乐客户端打开之后不显示窗口了。Google了下发现没有人遇到过相同的问题。只能试着自己解决,分别从官网和 App Store 上下载完成的客户端安装包 都不行。我猜想应该和软件没关系,毕竟是官网软件,肯定有保证。就打开活动监视器,试着摸索了下解决了这个问题。

详细步骤如下:

  1. 打开活动监视器,双击「网易云音乐」进程,查看进程详情
  2. 点击「打开的文件和端口」tab
    image
  3. 找到缓存文件的目录 Users/yourusername/Library/Containers/com.netease.163music,在 finder 中打开这个目录
  4. 手动删除里面的所有文件(在软件退出的情况下)。如果软件正在运行,手动删除了之后,再退出软件,会自动再创建一份文件
  5. 重新打开软件即可

复盘思考: 反思这个解决过程,从进程着手解决比较重要,想了下这个问题。

为什么想到去进程里面着手解决:

  1. 下载了官方软件都不行,想着应该是自己本地电脑的问题
  2. 代理梯子之类的都关了还是不行,和网络没关系
  3. QQ音乐 和 Spotify 都可以,就网易不行,电脑底层声音辅助类软件应该没问题
  4. 之前重启之后要重新登录,想着可能是软件的缓存文件重启时被破坏了或者受到了影响,应该去本地存储的文件看看

Xcode 可以删!

之前遇到过因为电脑没有 Xcode 导致前端项目本地打包失败的问题。后来就一直保留 Xcode 在电脑里面。后来电脑存储实在是太小了。就迫不得已把 office 删除了。但是后来还是不够用,最终决定试一试再把 Xcode 删除,本地构建会不会失败。试了几个项目,发现没啥问题了。

终于抛弃了闲置在硬盘上的庞大无用的 XCode 应用程序。

《公正》读书笔记(第7-8章:谁应得到什么-亚里士多德)

公正、目的与荣誉

亚里士多德政治哲学的核心是两种观念。

  1. 公正是目的论的。对于权利的界定要求我们弄明白所讨论的社会行为的目的(telos,意图,目标或本性)
  2. 公正是荣誉性的。为了推理一种行为的目的--或讨论之,就至少要部分地推理或讨论它应当尊敬或奖励什么样的德性

现代的各种公正理论,都试图将公平和权利的问题与荣誉、德性和道德应得的问题分离开来。它们寻求那些中立于各种目的的公正原则,并使人们能够自由选择和追求他们的目的。亚里士多德并不认为公正可以以这种方式保持中立。他认为,关于的公正的争论,不可避免地就是关于荣誉、德性以及良善生活本质的争论。

对亚里士多德而言,公正意味着给予人们应得的东西,给予每个人所应得的东西。可是,什么才是一个人应得的呢?优点和应得之间相关联的基础是什么?这取决于我们要分配什么。公正包括两个因素:“物品以及分配得到这些物品的人”。总的来说,我们认为“那些同等之人应当分配得到同等之物”。

假设我们在分配长笛,谁应得到最好的长笛呢?亚里士多德的回答是:那些最好的长笛吹奏者。
公正根据优点,根据相关的卓越而有差别的对待。在吹长笛这一情形中,相关的优点就是那吹得好的能力。如果基于任何其他的因素,如财富、贵族身份、身体上的美丽以及机会(抽奖)等,而有差别地对待的话,那将是不公正的。

将最好的长笛给最佳长笛吹奏者的最显而易见的理由是,这样做将会产生最好的音乐,对我们的听众有利。然而,这并不是亚里士多德的理由。他认为,最好的长笛应当归给最佳长笛吹奏者的理由是,这是长笛存在的目的--被很好的吹奏。长笛的目的在于产生动听的音乐,那些能够最佳地实现这一目的的人。就应当拥有最好的长笛。

亚里士多德认为:为了决定某物品的正当分配方式,我们需要研究被分配之物的目的或意图。

关于公正和权利的争论,经常都是关于某种社会制度的意图和目的的争论,这反过来又反映出不同的,关于这一制度应当尊敬和奖励何种美德的观点。

当我们现在讨论分配公正的时候,我们主要关心的是关于收入、财富和机会的分配。而对于亚里士多德来说,分配公正并不主要涉及钱财,而是涉及职务和荣誉。谁应当拥有**权?应当如何分配政治权威?
亚里士多德认为,所有关于分配公正的理论都具有歧视性。问题在于:哪一种歧视是公正的?而这一问题的答案则取决于上述行为的目的。因此,我们在说政治权利和权威应当被怎样分配之前,我们必须研究政治的意图和目的。我们必须提出疑问:“建立政党是为了什么?”

如今我们不再认为政治拥有某种特定的,实质性的目的,而是认为政治应该考虑公民可能拥护的多种目标。这不就是我们拥护选举制度的原因吗--为了在任何时候都能够选择那些他们集体想要追求的各种意图和目的?如果我们事先将某种意图和目的施加给政治共同体,那么就似乎取代了公民们自己做决定的权利;这样也有一种危险,即:将那些并非每个人都接受的价值观强加于人。我们不情愿赋予政治以某种特定的目的或目标,这反映出我们对个体权利的关心。我们将政治看做一种程序,它使每个人都能够选择自己的目标。

亚里士多德并不这样。对他而言,政治的目的并不在于建立一套中立于各种目的的权利框架,而是要塑造好公民,培育好品质。

寡头制认为:城邦应当由富人**。**制认为:出生自由是公民身份和政治权威的唯一标准。亚里士多德批判了这两种制度,他认为寡头制仅仅是为了保护财产和促进经济繁荣。**制在于满足大多数人的各种偏好。这两者都忽视了政党的最高目的,对亚里士多德而言,这最高目的就是培养公民德性。国家的目的并不是“为相互间的防御提供一种联盟---或疏通经济贸易以及推进经济交往”。在亚里士多德看来,政治关系到某种更高的事物,它关心到试着怎样去过一种好生活。政治的目的完全在于:使人能够发展各自独特的人类能力和德性--能够慎议共同善,能够获得实际的判断,能够共享自治能够关心作为整体的共同体的命运

如果政治共同体的存在就是为了促进良善生活,那么,职务和荣誉的分配又具有什么样的含义呢?亚里士多德对待政治如同对待长笛一样:他从物品的目的来推理恰当的,分配它的方式。“那些对这种联盟贡献最大的人”,就是具有卓越的公民美德的人,也是那些最善于慎议共同善的人。那些具有最高公民成就的人--而并非那些最富有,数量最多的或最帅的人--就是那些应该得到最多的政治认可和影响力的人。

那么,为什么亚里士多德会认为,参与政治在某种程度上对于过一种好生活而言必不可少呢?为什么我们不能在没有政治的情况下,完美地过一种好的,有德性的生活呢
这些问题的答案源于我们的本性。只有生活在一个城邦之中并参与政治,我们才能完全地实现我们作为人类的本性。亚里士多德认为我们“注定为了政治联盟而存在,要比蜜蜂和其他群居动物更高级”。他所给出的原因如下:自然不会徒劳地创造任何事物,与其他动物不一样,人类拥有语言能力。其他动物能发出声音,声音能够表明快乐与痛苦,还要声明何谓公正,何谓不公正,并在对错之间做出区分。我们并不是先默默地理解这些事物,然后再用词语表达出来;语言是我们识别,慎议善的介质。

道德生活的目标是幸福,但是亚里士多德做说的幸福并不是功利主义所说的意思--使抵消掉痛苦所剩下的那部分快乐最大化。有德性的人就是那个在正当之事中获得快乐和痛苦的人。例如:如果有人从观看斗狗中获得快乐,那么我们就认为这是一种需要克服的恶,而不是一种真实的幸福之源。道德上的卓越并不在于累计快乐与痛苦,而在于校正它们,以使我们从高尚的事物中获得快乐而从卑贱的事物中获得痛苦。幸福并不是一种心态,而是一种存在方式,是“一种灵魂与德性相符合的行为”。

可是,为什么我们有必要居住在一个城邦并过一种有德性的生活呢?为什么不能在家里或哲学课上来学习正确的道德原则,然后在需要的时候运用它们呢?亚里士多德认为,我们并不能通过以这种方式成为有德性之人。“道德德性产生于习惯的结果。”它是我们通过行动而学到的。

如果道德德性是某种从行动中学到的东西。那么,我们在某种程度上就得养成正当的习惯。对于亚里士多德而言,这就是法则的首要目的--培养那些形成好品质的习惯。

习惯无论有多重要,都不是道德德性的全部。不断会有新的情境出现,而我们需要知道在这些情况下,哪一种习惯是恰当的。因此,道德德性就需要判断,这是亚里士多德称为“实践智慧”的一门知识。与涉及“普遍的,必要的事物”的科学知识不同,实践智慧与如何行动有关。它必须“认识到特殊性,因为它是实践性的,而实践与特殊性有关”。 亚里士多德将实践智慧界定为“一种合乎逻辑的、真实的、根据人类善而行动的能力”。

亚里士多德的公民身份与我们的相比要更加崇高、更加热烈。对他而言,政治并不是变相的经济学,其目的要高于使功利最大化,或为追求个体利益提供公平的规则。与此相反,政治是我们本性的一种表达,是一个展现我们人类能力的场合,是良善生活一个必不可少的方面。

亚里士多德对奴隶制的辩护

亚里士多德说,奴隶制是必要的。有些人生来就是奴隶。他们区别于普通人。

如何甄别谁适合成为一个奴隶呢?原则上,你可能必须明白,谁(如果有的话)当奴隶的时候比较活跃,谁比较烦躁或试图逃跑。如果需要强迫的话,那么就很好的说明,我们所讨论的这个奴隶并不适合于这一职责。对于亚里士多德而言,强迫标志着不公正,这并不是因为同意使所有的职责都合法化,而是因为如果需要强迫,就暗示了一种违背自然的适合。那些担任着一种符合于自己本性的职责的人,并不需要被强制。

关于公正和权利的争论,经常不可避免地是关于社会制度的目的、社会制度所分配的物品以及它们所尊敬和奖励的德性的争论。尽管我们尽最大努力地使法律在这些问题上保持中立,可是如果我们不讨论良善生活的本质,就不可能说明何谓公正。

《公正》读书笔记(第3章:我们拥有自身吗-自由至上主义)

(我们拥有自身吗,我们不能拥有自身。自我所有权)
美国贫富差距非常大,美国最富的1%的人口拥有整个国家的1/3的财富,超过底层90%的家庭所拥有的的全部财富之和。有些人认为,应该向富人征税以帮助穷人。
有两个主要反驳的观点:

  1. 功利主义者认为高税率,尤其是针对收入的高税率,会降低人们工作和投资的热情,从而导致生产力下降。如果经济大蛋糕缩水了,可再分配的财富就减少了,社会总体的功利水平也会下降。
  2. 向高税率人征税侵犯了根本性的自由权。(自由至上主义者)

关于再分配:

自由至上主义者们并不是以经济效率的名义,而是以人类自由的名义,支持不受约束的市场,并反对政府官职。他们的核心主张是:我们每一个人都拥有一种根本性的自由权:用自己拥有的事物去做任何事情的权利,只要我们同样尊重他人这样做的权利。

如果自由至上主义是正确的,那么现代政府许多行为都是不合法的,并侵犯了自由。只有最小政府,一个只监督合同得到履约,保护私人财产不被偷盗,维持和平的政府才能与自由至上主义者的权利理论相容。任何一个做得更多的政府在道德上都是不正当的。
自由至上主义者反对三种类型的政策和法律,而这些法律和政策在现代国家中普遍存在。

  1. 反对家长式作风。比如系安全带,骑摩托车带头盔。即使骑摩托车不带头盔是鲁莽的,即使头盔能挽救生命并防止致命性的伤害,自由至上主义者仍然认为这些法律侵犯了个体决定承担何种风险的能力。
  2. 反对道德立法。自由至上主义者反对运用法律的强制力来推进各种德性观念,或表达大多数人的道德信念。很多人认为卖淫不道德,然而并不能证明那些禁止自主的成年人从事这一行业的法律就是正当的。某些社会中的大多数可能反对同性恋,可是这并不能证明剥夺男女同性恋们选择性伙伴的权利的法律就是正当的。
  3. 反对收入或财富的再分配。自由至上主义者认为通过税收把财富再分配是一种压迫,甚至偷盗。

同性恋的权利,生育权利,言论自由,以及政教分离等问题也都持有类似自由至上主义者们的观点。

以下是一些自由至上主义者的观点:

反对最低工资制度,政府没有权利干涉个体与他人自愿达成协议的自由(经双方同意的吃人是反例)。反对行业执照的制度。如果我希望一个不太专业的人给我理发,政府无权干涉这笔交易。比如一个烂尾切割手术的医师没有执照但是价格低,政府无权干涉我是否可以找他来做手术。

在《无政府、国家与乌托邦》一书中,罗伯特·诺奇克为自由至上主义原则提供了一种哲学辩护。他主张个体拥有“如此强大和影响深远的权利”,以至于他们提出这样一个问题:“有什么事政府可以做的?”他总结道:只有职责仅限于保证合同执行,保护人们不受压迫,偷盗和欺骗的最小政府,才是正当的。任何一个职责更加宽泛的政府都侵犯了个人不受强迫去做某些事的权利,因此都是不正当的。

在那些任何人都不应当被迫去做的事情当中,最显著的一项就是帮助他人。向富人征税以帮助穷人,就强迫了富人,这侵犯了他们用自己的东西去做自己想做之事的权利。
根据诺奇克的观点,经济不平等没有任何错误,只要满足两点,这就是分配公正的。

  1. 初始拥有的正当性。即用来赚钱的资产是否合法的属于你
  2. 财产转移的正当性。即是否是在市场上进行自由交换。

诺奇克认为:向劳动所得征税就等于强迫人劳动。如果政府有权索要我的一部分财产,就有权索要我的一部分时间。政府也可能要求我话费30%的时间为它工作,而不从我这里拿走30%的收入。如果政府强迫我为了它的利益而工作。本质上就对我拥有了一种所有权
这样一个推理将我们带到了自由至上主义主张的一个道德核心:自我所有权观念。如果我拥有自身,我就必须拥有我自己的劳动力。(如果有其他人能命令我去工作,那么那个人就是我的主人,我就可能是个奴隶)。如果我拥有劳动力就必须拥有劳动成果。(如果他人有资格获得我的劳动成果,那这个人就拥有我的劳动力)。如果那个人拥有我的劳动力,就拥有了我的部分所有权。(我的思考:劳动力成果的部分所有权不是政府和共同体给的吗)
。所以可以推论,政府或共同体是我们的部分拥有者。

自由至上主义者从征税(拿走我的财产)到被迫劳动(拿走我的劳动力)再到奴隶(否认我拥有自身)中,看到了一种道德上的关联。

那么问题来了,我们拥有自身吗?也就是个人的所有权。如果我们拥有自身。那么政府没有权利干涉我使用自己身体或处理自己生命的自由。比如出售肾器官(大多数国家禁止买卖移植所用的器官,在美国人们可以捐赠他们的一个肾,但不能在市场上公开出售)。如果拥有自身,那么辅助性自杀就会发生,一个人想要结束生命,通过找人帮忙来完成这件事。更极端的是经双方同意的吃人也可能会发生。如果自由主义的主张是对的,那么禁止达成同意的食人的法律就是不正当的。然后现实不是如此。

Babel 编译器原理

学习 babel,官网给了一个例子。看了一遍,感觉比较好,整理一下核心思路。

文章主要通过一个例子(lisp 风格的函数调用转换为 C 风格的函数调用)讲解了 babel 编译器的工作原理。

三个阶段

整个过程分为三个阶段:

  1. 解析(Parsing)
  2. 转换(transformation)
  3. 代码生成(Code generation)

解析 是将字符串源码转化成一种更抽象的形式,即抽象语法树 AST。
转换 是通过一些增删改的操作将抽象语法树的形式进行一系列转化。
代码生产 将抽象语法树生成字符串代码

例子:

转换前代码:

(add 2 (subtract 4 2))

Tokens:
[
  { type: 'paren',  value: '('        },
  { type: 'name',   value: 'add'      },
  { type: 'number', value: '2'        },
  { type: 'paren',  value: '('        },
  { type: 'name',   value: 'subtract' },
  { type: 'number', value: '4'        },
  { type: 'number', value: '2'        },
  { type: 'paren',  value: ')'        },
  { type: 'paren',  value: ')'        },
]

AST:
{
  type: 'Program',
  body: [{
    type: 'CallExpression',
    name: 'add',
    params: [{
      type: 'NumberLiteral',
      value: '2',
    }, {
      type: 'CallExpression',
      name: 'subtract',
      params: [{
        type: 'NumberLiteral',
        value: '4',
      }, {
        type: 'NumberLiteral',
        value: '2',
      }]
    }]
  }]
}

转换后的代码:

add(2, subtract(4, 2))

解析(Parsing)

解析分为两个阶段:

  1. 词法分析(Lexical Analysis)
  2. 语法分析(Syntactic Analysis)

词法分析 通过一个词法分析器(tokenizer)将字符串代码分解成字符串序列,字符串序列被叫做 tokens。
tokens 是一个数组,每一项代表一个词,符号或者一个片段。
语法分析 将 tokens 转化成抽象语法树。(这样做的目的是更容易对信息进行处理比如嵌套循环)

转换(Transformation)

将一个旧的 AST 转化成新的 AST。
使用软件设计模式中的访问者模式来遍历旧的 AST。一般通过一些第三方遍历工具来遍历。babel 使用 @babel/traverse

比如要遍历上面的 AST。一个访问者里面定义不同类型的处理函数。比如遇到 NumberLiteral 节点,就会调用 visitor 的 NumberLiteral 方法处理这个节点。

var visitor = {
  NumberLiteral() {},
  CallExpression() {}
};

代码生成(Code Generation)

代码生产器主要做了两件事

  1. 根据不同的 AST 节点输出对应的 字符串
  2. 递归的调用自身,打印所有节点

写一个自己的编译器

词法分析器实现思路

大致过程:

  1. 声明一个空数组 tokens,存储输出结果
  2. 循环读取输入的每一个字符,遇到不同的字符生成对应的 token 对象,然后 push 进 tokens
  3. 通过正则判断如果遇到数字或者字母,一直循环读取下一个字符直到不是数字或字母,然后把这个数字或字符串对应的对象 push 进 tokens
  4. 最后输出一个 tokens 数组

语法分析器实现思路

将 tokens 转化成 AST

  1. 首先明确的是:每一种类的 token 都会有对应的 AST 节点。
比如说 type  number  token:
{ type: 'number', value: '2' }
会被转化成 以下 AST 节点
{
  type: 'NumberLiteral',
  value: '2'
}
  1. 用一个 current 变量来作为 tokens 的索引。即一个游标指针,处理完一个节点,游标加一
  2. 定义一个递归函数,返回一个 AST node 节点。每次如果正常递归返回了一个 node 节点,current 就加 1。
  3. 最终递归调用 tokens。生成一个 AST 节点树。

遍历器实现思路

要修改一个旧的 AST 变成一个新的 AST。
需要一个遍历器,然后在这个遍历器里面写处理函数,来转换。
遍历器做了两件事:

  1. 执行用户定义的处理函数
  2. 递归调用树形节点

思路大概如下:

  1. 定义一个遍历函数 traverser。;两个参数,一个是接收的 AST 节点树(ast)和一个转化处理函数组成的对象(visitor)。
  2. traverser 里面定义了两个函数,一个是遍历节点函数 traverseNode,一个是 遍历子节点函数 traverseArray
    traverseArray 函数接收两个参数,一个是需要遍历子节点的数组,一个是父节点。内部对数组的每个节点调用 traverseNode 函数。
    traverseNode 接收两个参数,一个是当前处理的节点,一个是父节点。
  3. traverseNode 做了两件事
    • 执行处理函数:首先会判断是否在 visitor 中定义了处理函数,如果定义了,就执行这个处理函数,这个处理函数接收两个参数,一个是 node,一个是 node 的父节点 parent,传递 parent 的原因是因为一些节点的操作需要用到父节点。
    • 递归调用处理节点树:
      通过节点的类型判断如何递归处理节点树,比如如果是 Program,就递归处理 这个节点的 body 字段。如果是 CallExpression,就遍历他的 params 字段。
  4. 每一次递归都分别执行了对应节点的处理函数(如果有的话),并且如果有子节点就继续递归下去,直到完成所有节点的遍历。
  5. 将 ast 和 null 作为参数传递给 traverseNode,就开始递归遍历整个节点树。

转换器实现思路

  1. 将 AST 和 visitor 传递给遍历器。即可实现 transform
  2. visitor 里面声明某个类型匹配时该做的事情。比如声明一个新节点插入到 AST 中
  3. 最后返回整个 AST

代码生成器实现思路

  1. 声明一个 codeGenerator 函数,返回一个字符串或者 Error。
  2. 对于不同的 AST 节点,输出不同的字符串,比如遇到 CallExpression。会输出一个长字符串。这个字符串是左右小括号和递归调用的 codeGenerator 的结果拼凑起来的。
case 'CallExpression':
  return (
    codeGenerator(node.callee) +
    '(' +
    node.arguments.map(codeGenerator)
      .join(', ') +
    ')'
  )

相关链接

babel https://babeljs.io/docs/en/

在线分词工具 https://esprima.org/demo/parse.html

AST Explorer(在线查看AST) http://astexplorer.net/

抽象语法树 https://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E8%AA%9E%E6%B3%95%E6%A8%B9

访问者模式 https://zh.wikipedia.org/zh-hans/%E8%AE%BF%E9%97%AE%E8%80%85%E6%A8%A1%E5%BC%8F

参考

https://github.com/jamiebuilds/the-super-tiny-compiler/blob/master/the-super-tiny-compiler.js

什么是运行时?

在没有明确上下文的情况下,运行时(runtime)通常理解为“运行时库(runtime library)”或“运行时损耗(runtime overhead)”。
比如一个程序在硬件上,必须有一个中间层把程序语言转化成机器能读的懂的机器语言。这个中间层可以理解为一个运行环境。比如你想在电脑上写 Java 就必须安装一个能编译执行 Java 代码的环境。写任何语言都必须先安装环境,这个环境可以理解为运行环境,也可以理解为运行时。
一个初步的认识,Java 和 JS 都有运行时。Rust 没有运行时,有很小的运行时损耗。

运行时库

编程语言的运行时库,通常理解为:其编译出的可执行程序在运行时必须依赖的非操作系统本身的动态库。简单理解是一些基础函数,底层操作 API 的一些封装。
例如 C 必须依赖 msvcrt 或 glibc。Java 程序必须依赖 JRE。因为 C 语言运行时库和操作系统密切集成,因此可以认为 C 运行时库也属于操作系统的一部分。进而可以认为 C 没有运行时。同理,Rust 也是仅仅依赖了 C 的运行时库,因此可以认为 Rust 也没有运行时。没有运行时库,就没有运行时消耗,那么代码执行就很快。没有运行时也是 C 执行很快的原因之一。

语言没有运行时库是一个优势

对于一个语言来说,没有运行时库是一个优势。JS 需要依赖运行时库。Rust 没有运行时库。
因为运行时库本身有平台依赖性,意味着程序只能在运行时库支持的平台上运行。比如你想在嵌入式平台上跑 JS,如果没有一个 JS 运行时库支持的话根据没有办法跑。运行时库限制了程序的部署平台。
所以没有运行时库的话,可以部署和适用的平台就会很广泛。适用性更强。

运行时损耗

程序的运行时损耗,是指程序在运行过程中所必须付出的额外的代价。例如Java 的虚拟机、脚本语言的解释器等等,这些子系统本身在运行时都会消耗数量可观的内存和CPU,影响程序和系统的运行性能。Rust 没有虚拟机、垃圾回收器和解释器,所以没有这类运行时损耗。

JavaScript 的运行时

主流的两个

为什么能在浏览器和服务器中运行JS呢?因为浏览器中有一个 JS 引擎,也就是有一个 JS 运行时库(JS运行时环境)。服务器中有一个名字为 nodeJS 的 JS 引擎(JS 运行时库)。所以如果我想要在嵌入式设备中开发 JS,那么嵌入式系统必须有一个可以让我跑JS 的运行时库,也就是有一个可以让我跑 JS 的虚拟环境才行。

Node.JS is a JavaScript runtime built on Chrome's V8 JavaScript engine.

NodeJS 是基于 Chrome V8 引擎来开发的一个运行时库。所以如果有一个人开发了一个更高效的 JS 引擎,名字叫 V9,那完全可以基于 V9 封装一个更加高效的 JS runtime。

未来 JS 的运行时

Deno

Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Deno 网传说是 nodeJS 的替代品,目前还在发展中,替代不代替不知道。但从概念上来看 deno 本质上也是一个运行时。由于 C/C++ 程序的内存安全性问题日渐严重,未来内存安全更进一步被强化,所以看来 deno 是一个未来的或者说一个更加 modern 的方案。deno 建立在 V8 引擎并且使用 Rust 和 TS 编写的。

物联网/嵌入式

未来一个是嵌入式,随着 VR,AR 的发展,这一方便的需求肯定是有的。比如我搜到的两个

  1. ShadowNode https://cnodeJS.org/topic/5a68d49fafa0a121784a8f48
  2. IotJS https://github.com/jerryscript-project/iotJS
    物联网,在其他设备上写 JS。我初步看来他更像是一个框架和平台,但他本质上是要解决“运行时”这个问题的。就是解决“如何在其他非主流设备上编写 JS 的问题”

END

Any application that can be written in JavaScript, will eventually be written in JavaScript.

最近比较流行这句话,这里的“can be written” 其实就是“提供一个JS 的运行时”的意思。

Docker 学习笔记

概念

docker 将运维和开发的职责完全分离,保证开发环境和生产环境一致性。使得程序有可移植性,易于构建,易于协作。

Docker 核心组件

  1. Docker 客户端
  2. Docker 服务器端
  3. Docker 镜像
  4. Register(注册中心)
  5. Docker 容器

docker 是客户端/服务器端架构的程序。客户端通过 docker 命令行工具与 docker 服务器端进行交互。

Register 存储所有镜像,有公有和私有之分。最大的公有镜像是 docker hub https://hub.docker.com/

容器基于镜像构建起来的。

安装

在官网中可以看到 Superseded products and tools 中包含 Docker Toolbox 已经过时的安装工具。推荐安装最新版本的 desktop。

镜像

两种构建镜像的方式

  1. 利用镜像启动一个容器后进行修改,利用 commit 提交更新后的副本
  2. Dockerfile

docker image ls === docker images 列出所有镜像
docker search [centos] 搜索镜像
docker pull [centos] 获取镜像
docker image rm 删除一个镜像

docker build 创建镜像

创建镜像过程中(失败的时候),可以通过中间态的容器id,查看中间态的容器
docker exec -it [] 进入容器
docker inspect 查看容器
docker logs 查看执行日志
若构建成功,将自动 remove 容器

docker build -t="shengfei-10-12/centos:git" .
-t 镜像名字
. 当前目录下查找Dockerfile

容器

两种运行方式

  1. 交互式运行 docker run -it
  2. 后台运行 docker run -d 【创建并启动容器】

docker run —name test1 -it centos:latest /bin/bash
运行一个名字为 test1 的容器 并执行 /bin/bash 命令

docker create 创建一个停止状态的容器
docker start 启动容器

docker ps: 查看当前运行的容器
docker ps -a: 查看所有容器,包括停止的。 === docker container ls -a

docker container rm [] 删除一个容器 -f 强制删除一个运行中的容器

exit命令/control+D 退出容器内部命令行

存储

docker run -d -v my-volume:/var/lib/mysql --name my-mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 运行一个有存储的mysql

docker volume ls
docker volumn inspect [my-volume] 查看名字为my-volume的存储

推荐阅读

https://www.docker.com/

《第一本 Docker 书》

预约系统项目复盘

概述

背景:和别人合作的一个小外包项目,内容不复杂,简单复盘整个过程,实战经验和问题总结。
项目:一个预约系统。入口是放在微信公众号里面的底部 menu 的外链。

开发

前端

  1. 开发
    cra 起ts项目(选择typescript模板)
    react-router,react-redux hooks写法
    主要依赖:
    • axios
    • ahooks
    • ant design ant mobile按需加载
    • date-fns
    • less
  2. 部署
    npm run build 打包之后,压缩给后端。由后端解压放到网站的根目录。后端配置下启动服务。

后端

后端使用的 iis,.net 开发。

给的接口是 IP 形式的。

沟通

使用石墨记录接口文档,可以多人实时在线编辑。
尽量不适用 word 传输文件
邮箱传递打包压缩的文件

后端的 ASP.NET 框架会自动生成一份接口文档 ASP.NET Web API Help Page。地址类似
http://xxx.xxx.xxx.xxx:1203/Help
但最好事先和后端约定好 请求和返回的参数字段。这样避免后期联调的问题。

遇到的问题

跨域访问

前端使用 axios 或其他请求库
.net IIS 后端需要配置跨域访问

单页应用 browserHistory 模式刷新页面或者访问某个路由会出现 404 的情况

单页应用 history 模式会出现这种情况,需要配置重定向,将所有路由重定向到 index.html
由于后端是iis,有三步:

  1. 安装 IIS UrlRewrite
  2. 需要在网站的根目录新建一个文件,web.config
    将下面的代码放进去
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
       <rewrite>
            <rules>
                <rule name="ReactRouter" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
						<add input="{HTTP_METHOD}" pattern="^GET$" />
						<add input="{HTTP_ACCEPT}" pattern="^text/html" />
						<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
					</conditions>
					<action type="Rewrite" url="/index.html" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

备注:注意是网站根目录(前端 index.html 文件的那个目录),而不是 webapi 的 web.config,也不是后端代码的配置。如果放到 webapi 里面是不会生效的。如果配置了正确 web.config 但是没有安装 UrlRewrite 会直接报错 500 服务器错误。

  1. 重启服务

CRA 遇到的一个 issue

升级最新版本(v4.0.1)可以解决这个问题,就可以把 verifyTypeScriptSetup 文件删除了。
https://github.com/facebook/create-react-app/releases/tag/v4.0.1
updated 2020-11-28

cra v4.0版本 npm start 报错
临时解决方案
facebook/create-react-app#9868 (comment)
updated 2020-11-21

参考

https://router.vuejs.org/zh/guide/essentials/history-mode.html
https://blog.yahui.wang/2018/05/18/React-Router-browserHistory-IIS/

《从 0 到 1》读书笔记

《从 0 到 1》读书笔记

未来的挑战

在什么重要问题上你与其他人有不同的看法?
世界必然会变得不同,但变化必须基于当今的世界。针对这个反主流问题的多数回答都是对现在的不同看法,而好的回答应该尽尽可能地使我们看到未来。

我们期待的未来是进步。进步有两种形式:

  1. 水平进步,照搬已取得的成就的经验,从 1 到 N。
  2. 垂直进步,从 0 到 1 的进步。尝试从未做过的事情。

水平进步典型例子:全球化

垂直进步典型例子:科技发展

好的回答是:
大部分人认为世界的未来由全球化决定,但事实是科技更有影响力。

像 1999 年那样狂欢

遭受硅谷之劫的企业家们学到 4 点经验。

  1. 循序渐进

    不能沉浸在宏大的愿景中,否则会使泡沫膨胀,自称可以成大事的人都不可信,因为心存改变世界之雄心的人通常要更加谦逊。小幅地循序渐进地成长才是安全前进的唯一道路

  2. 保持精简和灵活性

    所有的公司都必须留出一定的空间,不要事事都严格计划。你不知道你的事业会变成什么样,实现规划通常既死板又不现实。相反,你应该做些尝试,反复实践,把创业当成未知的实践。

  3. 在改进中竞争

    不要贸然创造一个新市场,以现成的客户作为出发点创业才是有保障,成功者已经创造出被认可的产品,在此基础上加以改进,才是可取之道。

  4. 专注于产品,而非营销

    如果产品需要广告或者营销人员去推销,说明产品还不够好,科技应用于商业应该主打产品开发。

所有成功的企业都是不同的

开头提到的反主流问题用在商业上就是:「还有什么有价值的公司没有成立?」

完全竞争和垄断

完全竞争:处于竞争市场中的公司差别不大,没有市场支配力,价格由市场决定。经济利润很低。

垄断:拥有自己的市场,自己决定供给量和价格,以实现利益最大化。

垄断者的谎言:
为了自我保护而撒谎,如果炫耀垄断就会招致检查和审核,甚至反垄断。为了继续不受干扰的获得垄断利润。会通常隐瞒垄断的事实,通常的方法是夸大(并不存在的)竞争。

非垄断者的谎言:

为了获得更高的地位,声望和使公司发展的更好,通常通过将他们的市场定义成各种更小的市场的交集来夸大自己的独特性。(对应垄断者就是:通过把他们的市场描述成若干大市场的并集来伪装他们的垄断性)

在完全竞争中,企业着眼于短期利益,不可能对未来进行长期规划。要想将企业从每日的生存竞赛中解脱出来,唯一的方法就是:获取垄断利润

重新认识垄断

垄断对于社会是好是坏?

静态的世界是坏的:因为垄断提升价格,人们只能买他的。
但世界是动态的,可以创造更好的事物。富有创意的垄断者创造出崭新的事物,给消费者更多选择。有创意的垄断企业不仅仅对外界社会没有坏影响,相反是使得社会更加美好的推动力(数年甚至数十年的垄断利润是有力的创新动机,利润给了他们规划长远未来的资本,有能力投资雄心勃勃的研究项目,这是困在竞争中的企业想都不敢想的)

但为什么经济学家崇尚和痴迷企业间的竞争呢?

源于历史遗留问题,经济学家的想法来源于物理学家的平衡态。

但现实是每个企业的成功恰恰都是做了其他企业不能做的事情。因此垄断不是商界的症结,也不是异常存在,是每个成功企业的写照。

托尔斯泰在《安娜·卡列尼娜》里说:幸福的家庭总是相似,不幸的家庭各有各的不幸

商业中,恰恰相反:

企业成功的原因各有不同:每个垄断企业都是靠解决一个独一无二的问题获得垄断地位;而企业失败的原因都相同:他们都无法逃脱竞争

竞争意识

竞争是一种观念,这种观念在社会中蔓延,扭曲了我们的**,我们宣扬竞争,内化竞争的必要性,颁布竞争条例。结果是竞争越来越激烈,实际获得的越来越少,我们还把自己困在了竞争里面。

在所有人类冲突的戏码中,人们往往忽略了真正重要的事情,只把精力放在竞争对手身上。

竞争有几点坏处:

  1. 使我们过分重视过去的机会,一味重复过去的模式
  2. 使人出现幻觉,徒劳找一些并不存在的“机会”
  3. 让人分心

逃脱竞争方法:

  1. 如果不能把对手打败,就和对手联合,合作(作者观点)
  2. 垄断(我的思考)

后发优势(如何打造垄断事业)

规避竞争会帮助你打造垄断企业,但只有经受住未来考研的企业才是成功的企业。

一个公司要有价值,不但必须成长, 还必须能持续发展。

垄断企业的特征:

专利技术

专利技术是指某些方面必须比它最相近的替代品好上 10 倍才能拥有真正的垄断优势。

专利技术是一家公司的最实质的优势,他使你的产品很难或不能被别的公司复制。

方法

  1. 创造全新的事物(秃顶治疗)
  2. 彻底改进已经存在的事物,做到 10 倍好,避开竞争(亚马逊改造书店)
  3. 出众的综合设计(ipad 改进平板)
网络效应

网络效应使一项产品随着越来越多的人使用变得更加有用。但要从非常小的市场做起。

规模经济

考虑如何大规模发展的问题

品牌优势

建立自己的品牌,加强公司对市场的垄断。

但要首先要考实力来经营公司,而不是没有实力空有品牌。

建立垄断企业的方法

  1. 占领小市场

    在小市场占主导地位比在大市场里容易的多

  2. 扩大规模

    在特定的利基市场占据主导地位,然后逐步扩大规模

  3. 不要破坏性创新

    不要痴迷于「破坏性创新」的概念。之所以称为「破坏」,是从旧企业的眼光看待自身的。
    创新的行为远远比旧企业不喜欢你的创造来的重要。
    所以不要破坏,尽可能避开竞争。

重新理解先发优势:先行一步是策略,不是目标。不要把策略当成目标。

总结:先主导一个小的利基市场,在这个基础上扩大,直到到达你预期的长远目标。

成功不是中彩票

一个明确的愿景可以坚定人的信念。目标明确的人会选择最该做的事,并专心做好。

有人认为未来比现在更好,有人认为未来比现在更糟。乐观的人迎接未来,悲观的人害怕未来。这些可能性组成四种观点:

  1. 对未来不明确的悲观主义(现在的欧洲)
  2. 对未来明确的悲观主义(现在的**)
  3. 对未来明确的乐观主义(1950-1970年的美国)
  4. 对未来不明确的乐观主义(1982年-至今的美国)

当今的世界:对未来不明确却很乐观

不明确的金融:人们不知道拿钱在实体经济中做什么,钱比其他用钱能得到的东西更有价值。(明确的未来中:钱是达到最终目的的手段,而非最终目的)

不明确的政治:政府的选举,政府的性质变的不明确。

不明确的哲学

不明确的人生:生物技术的缓慢发展

长期规划仍然是最重要的。规划优先于机遇

秘密

有哪些有价值的公司还没有被建立?

每个正确的回答都是一个秘密:有些事情很重要但是无人知晓,有些事困难却可为。

人们的目标分为三类:

  1. 稍作努力即可达到的目标
  2. 不懈努力才能达到的目标
  3. 再怎么努力也不可能达到的目标

为什么人们普遍不相信/探索秘密?

  1. 渐进主义:

    积硅步以致千里,再做其他的多余的也没有用或价值

  2. 奉献规避

    将一生奉献于别人不相信的事物,在正确的路上已经很艰难,在错误的道路上更是不可忍受

  3. 自满

    社会精英有极大的自由也有能力探索新想法,但可以选择舒服享用已有成果何必探索新的未知。

  4. 扁平化

    人们认为世界是一个激烈竞争的同质的市场,全球人才库中更加聪明更加创造力的人都没有发现,我还有可能发现吗?

每个失败者都运用被普遍认可的观念来描述自己的璀璨未来。但是伟大的企业是构筑在秘密之上的,这是他们取得成功的独特原因,而别人对此一无所知。

相信秘密

成功的企业建立于开放但未知的秘密之上,这秘密关乎世界如何运作(Airbnb,Uber)

如何发现秘密

关注「无人关注的地方」

基础决定命运

创始人团队如何选择?

所有权:谁在法律上拥有公司的资产

经营权:谁实际上在管理着公司的市场事务

控制权:谁在形式上管理公司事务

初创公司一般是创始人,员工和投资者是所有权。经营公司的管理人员和员工享有经营权。董事会通常由创始人和投资者组成,行使控制权。

现金不是王道,股票报酬才能让员工全力以赴。

只要公司创新,创业就没有结束。一旦创新停止,创业就结束了。

让创业延续,始终创业。

打造帮派文化

  1. 公司使命
  2. 团队(志趣相投等)

每名员工专注于一件事。

内部和谐是初创公司存活的关键

**在重要问题上通常错的离谱。成功的初创公司则对其他公司不理解的事有非常正确的看法。

顾客不会主动上门

营销的重要性
产品售价越高,销售成本越高。

不同销售方法的客户获取成本:

销售方法 病毒式营销 市场营销 盲区 销售(人员) 复杂销售
客户获取成本 1 美元 100 美元 1 万美元 1000 万美元
目标 客户 小企业 小企业 小企业 大企业和政府

人类和机器

计算机是辅助人类的工具,而非替代品。发展计算机是增强人类的能力,而不是淘汰人类。

全球化是替代,科技是补充

人工智能的利弊参半。对未来的不确定的恐惧不应阻止我们现在制定明确的计划。

勒德分子认为我们不应该制造未来可能取代人类的计算机,狂热的未来学家则持相反的观点。

绿色能源与特斯拉

每个公司都应回答的问题:

  1. 工程问题:你的技术具有突破性,而不仅仅是稍有改进吗?(10 倍)
  2. 时机问题:现在开创事业,时机合适吗?(时代背景,世界发展)
  3. 垄断问题:开创之处,是在一个小市场抢占大份额吗?
  4. 人员问题:你有合适的团队吗?
  5. 销售问题:除了创造产品,你有没有办法销售产品?
  6. 持久问题:未来 10/20 年,你能保住自己的市场地位吗?
  7. 秘密问题:你有没有找到一个其他人没有发现的独特的机会?

特斯拉把七个问题都解决的很好,所以一定能成功。如果你能解决好五六个问题,也能取得成功。

创始人的悖论

创始人通常具有特立独行的个性。

声名远扬之人与臭名昭著之人组成了大众情感宣泄的通道。他们因成功而被赞美,因灾难而被指责。远古社会面临一个最重要的基本问题:如果无法解决冲突,社会就会四分五裂。因此,当瘟疫,灾难,暴力斗争威胁和平宁静时,将骂名转嫁到所有人一致赞同的替罪羊身上对社会是有益的。

创始人不要高估自己的能力,应该汲取的教训是不要沉醉于自己的声望和他人对自己的追捧。否则会使自己臭名昭著或被妖化。要小心行事。

停滞不前,还是临近奇点

人类未来四种模式

  1. 兴衰交替
  2. 稳定发展
  3. 人类灭绝
  4. 加速腾飞

但无论有多少趋势可以追踪,未来都不是自行发生的。奇点描述的未来并不比我们今天面临的抉择重要。不能理所当然的认为未来会更美好,而是今天努力创造美好的未来。

我们是否在整个宇宙范围内实现「奇点」并不重要,重要的是我们能否抓住独一无二的机会,在日常工作中创新。所以开始独立思考,重新认识世界,找到创新的独特方式,使得未来不仅仅与众不同,而且更加美好,即从 0 到 1。

《公正》读书笔记(第5章:重要的是动机-康德)

自由至上主义者认为:人们不应该被仅仅当做促进他人福利的手段(功利主义者这么认为)而加以利用,因为这样侵犯了根本性的自我所有权。我的生命,劳动力和人格属于我,且仅属于我。

康德论权利

伊曼纽尔·康德为义务和权利提供了一种论证。是迄今为止哲学家给出的最强有力,最有影响力的论证之一。它并不依赖于“我们拥有自身”这样的观念,也不依赖于“我们的生命和自由是来自于上帝的礼物”这样的主张。相反,它依赖于这样一个观念--我们是理性的存在,值得拥有尊严和尊重

1781年,在他57岁的时候,他发表了第一本著作《纯粹理性批判》,该书对大卫·休谟和约翰·洛克的经验主义理论提出了挑战,四年之后他发表了《道德形而上学基础》,这是他诸多著作中第一本道德哲学著作。在杰里米·边沁的《道德与立法原理导论》发表五年之后,康德的《道德形而上学基础》对功利主义发起了一场猛烈的抨击。它认为,道德跟使幸福最大化以及任何目的无关,而在于将人作为目的本身而加以尊重。

康德的《道德形而上学基础》出现在美国革命(1776)爆发后不久,而有恰好在法国大革命(1789)爆发之前。与这些革命精神和道德驱动力相契合,这本书为18世纪的各种革命所倡导的人的权利以及21世纪初期我们所说的普遍人权,提供了一种强有力的基础。

在《道德形而上学基础》中提出了一个重要问题:道德的最高原则是什么?在回答这一问题的过程中,它阐述了另一个重要的问题:什么是自由?

康德对后世的道德和政治哲学影响深远,影响了当代人关于道德和政治的思考,即使我们没有意识到它。

重新复习一下关于公正的三个不同观念:

  1. 功利:界定公正和判断何谓正当之事的方法在于询问什么将会使福利和社会总体幸福最大化。
  2. 自由:自由至上主义者认为关于收入和正当分配就是任何一个不受约束的市场中自由交换商品和服务所产生的分配,调节市场是不公正的,因为侵犯了个体选择的自由。
  3. 德性:公正就是给予人们在道德上所应得的,以分配物品和奖励来促进德性。

康德反对第一种(使福利最大化)和第三种观念(促进德性)。他认为两者没有尊重人类自由,因此他选择第二种。将公正与道德同自由联系起来。但他提出的自由观念更苛刻--比我们在市场上买卖东西时所行使的选择自由更苛刻。康德认为,我们日常所认为的市场自由和消费自由并不是真正的自由,因为它仅仅满足我们事先并没有选择的各种欲望。

康德为什么反对功利主义

康德反对功利主义,他认为,由于将权利建立在什么会产生最大幸福的算计基础上,功利主义使权利的基础变得脆弱。此外更深层次的原因是:试图从我们恰好具有的各种欲望推导出道德原则是一种错误的思考道德的方式。仅仅因为某物给很多人带来快乐,并不能使他成为正当的。仅仅根据大多数喜欢一种法律,并不能使这个法律成为正当的。

康德认为,道德不能仅仅建立在经验主义的考量至上---如人们在特定时间具有的各种兴趣,期望,欲望和偏好。这些因素是多变的,偶然的,根据他们很难做出普遍性的道德原则的基础。康德的根本性观点是,如果将道德原则建立在各种偏好和欲望--即使对幸福的欲求的基础之上,就误解了道德是什么这一问题。功利主义的幸福原则“对于确立道德而言毫无贡献,因为使一个人幸福不同于使他变好;使一个人追求自己的利益时变得审慎明智,不同于使他更有德性”。将道德建立在兴趣和偏好基础之上,就破坏了它的尊严。它并不教导我们如何区分对与错,而“只是更加工于计算”。

康德认为可以使用“纯粹实践理性”而到达道德的最高原则。因此,因此要弄明白如何推导出道德法,就要先探索我们的理性能力和自由能力直接的紧密关系。

康德认为,每个人都值得尊重,并不是我们拥有自身,而是因为我们是理性的存在,既能够进行推理;我们是意志自由的存在,能够自由的行动和选择。
康德并不是说我们总是能够理性的行动或自主的选择。有时候我们可以,有时候不能。他的意思是我们有理性的能力和自由的能力,这两种能力是人类所共有的。

康德认为理性不是我们拥有的唯一能力,还有感性的能力,也就是感受快乐和痛苦的能力。但绝对不是边沁认为的:“快乐和痛苦是我们至高无上的主人”。康德认为,理性可以是最高**者,至少某些时候如此,当理性掌握我们的意志,我们不受欲望的驱动去追求快乐,避免痛苦。
我们的理性能力和自由能力密切相关,这些能力合起来让我们变得独特,并将我们和动物性区分开;它们使我们不仅仅是欲望的存在。

什么是自由?

我们认为毫无障碍的做我们想做的事就是自由。对此康德有一个更加严格,要求苛刻的自由观。推理如下:
当我们像动物一样追求快乐或避免痛苦时,我们并不是真正的自由的行动,而是作为欲望和渴求的奴隶而行动。为什么呢?因为无论何时,只要我们追求欲望的满足,那么我们做任何事情,都是为了某种外在于我们的目的。我已这种方式来充饥,以那种方式来解渴。

假设我试图购买一个口味冰淇淋,巧克力,香草还是咖啡太妃糖颗粒呢?我可能认为我是在运用选择的自由,但是我真正做的是弄明白哪一个口味是最能满足我的偏好---那些事先并没有加以选择的偏好。康德并没有说我们的各种偏好是不对的,他的要点是:当我们这么做的时候,我们并不是自由的行动,而是根据外在给定的规定性而行动。毕竟,我对巧克力的偏好而不是对香草的偏好并不是我刻意选择的---我就是有这个偏好。

只要我的行为被生物性所决定,或被社会性所规范,那它就不是真正的自由。根据康德的**,自由的行动就是自律的行动,自律的行动就是根据我给自己立的法则而行动--而不是听从于本性或社会传统的指令

一种理解康德所说的“自律的行动”的途径,就是将意志自由与其对立面作比较。康德发明了一个词**:他律。当我根据他律而行动的时候,我就是根据那外在于我而给定的规定性而行动。**举个例子:当你丢下一个台球,他会落到地上,当他下落的时候,它并不是自由的行动,而是受到自然法则(地球引力)的支配。

我落在另一个人身上并砸死了那个人,我不会对这一不幸死亡负有任何道德上的责任。因为就像那个台球,从高处跌落砸到某人脑袋,它不会负有道德责任。这两种情况下。我和台球都不是自由的行动,而是受到地球引力这一法则。由于这里没有意志自由,就没有道德责任。这就是意志自由和道德观念之间的联系。自由的行动并不是为给定的目的选择最佳的方式,而是选择目的本身。---这是一种人类可以做出,而台球(以及大多数动物)不能做出的选择。

做某事为了其他事情, 其他事情再为了其他事情等等。这是一种他律的行动,我们是为了某些外在于我们的给定的目的而去行动,我们是自己所追求的各种目的的工具,而非目的的设定者。
康德的意志自由观念与此截然对立。当我们自律的行动也即根据我们给自己所里的法则而行动时,我们做某事是为了这件事本身,他自己就是目的。我们不再是那些外在于我们的给定的各种目的的工具。“自律地行动”这一能力,赋予了人类以特殊的尊严,它标示人和物之间的区别。

对于康德而言,尊重人的尊严就意味着将人当做目的本身来对待。这就是为什么功利主义为了总体福利而利用人是不对的,因为他把人当做是一种工具,一个对象,一种让他人幸福的手段。

所以引出了一个新的问题:哪些行为是有道德价值的?即什么赋予了一个行为以道德价值?(将我们从康德的特殊的要求苛刻的自由观带到了同样苛刻的道德观)

何谓道德?寻求动机

根据康德的理论,一个行为的道德价值并不是由随之而来的结果构成,而是由完成这一行为的意图构成的。重要的是动机。而这种动机必须是特定种类的。重要的是,我们要因为一件事情是对的去做这件事,而并不是由于某些隐晦不明的动机去做它。

一个好的意志之所以好,并不是因为它所表达的效果或成就。他本身就是好的,而无论它是否盛行。即使这一意志完全没有力量实现它的目的,即使它付出了最大努力缺仍然一事无成···它也仍然像一颗珠宝一样因其自身的缘故而熠熠发光,就像那些本身就拥有完整价值的事物一样。

赋予一个行为以道德价值的动机,就是履行义务的动机。后者在康德这里是指为了正当的理由而做正当之事。

在谈及只有义务的动机才能赋予一个行为以道德价值的时候,康德并不是在讨论我们拥有什么样的特殊义务,他也不是在告诉我们那最高道德原则所命令的是什么。他不过是说明当我们评价一个行为的道德价值时,我们要评价产生这一行为的动机,而不是它产生的后果。

如果我们是出于某些动机,如自我利益,而不是义务的去行动的话,那么我们的行为就缺乏道德价值,康德坚持认为这是真实,这一点不仅仅是针对自我利益而言,也是针对所有企图满足我们的各种期望,欲望,偏好和渴望的行动而言。康德将这样的动机,称之为“倾向的动机”。并且认为:只有出于义务动机的行为,才具有道德价值。

有一个例子:帮助他人,有些人是利他主义,他们同情他人并且从帮助他人中获得乐趣。然后对于康德而言,出于同情而做好事,“无论它多么的正当,也无论它多么友善”,都缺乏道德价值。这似乎是违背直觉的。难道从那种帮助别人中获得快乐不好吗。康德会说好,当然不会认为帮助他人会有什么错。但是他将这种帮助他人的动机--做好事给我带来快乐--与与义务的动机区分开来,并且坚持认为,只有义务的动机才能赋予一个行为以道德价值。利他主义者的同情,值得我们称赞和鼓励,但不值得尊敬。
康德强调:重要的是,人们之所以做某件好事是因为它是正当之事,而无论这样做是否给我们带来快乐。

道德的最高原则是什么

康德的《道德形而上学基础》的目的就是要回答这一问题。
以下是通过弄明白康德是如何将三个重要的观念--道德,自由,和理性联系在一起的,从而接近他的答案。以下是一系列的对比和二元论来解释这些观念。

  1. 对比1(道德):义务 VS. 倾向
  2. 对比2(自由):自律 VS. 他律
  3. 对比3(理性):绝对命令 VS. 假言命令

道德

第一个对比刚才已经解释;只有出于义务的动机才能赋予一个行为以道德价值。

自由

第二个对比描述了两种不同的,可以决定我们的意志的方式--自律和他律。根据康德的**,只有当我的意志是被自律所决定、受我自己给定的法则所支配的时候,我才是自由的。再者,**我们经常将自由看做是能够做任何自己想做的事情,能够不受阻碍的追求我们的欲望。然后康德向这种**自由的方式提出了一种强有力的挑战:如果你没有首先自由的选择这些欲望,那么,你在追求他们的时候,又怎么能够认为自己是自由的呢?**康德在自律和他律这一对比中,表达了这一挑战。

当我的意志被他律所决定时,它是被外在的、从我之外而决定的。然后这引发了一个棘手的问题:如果自由意味着不只是服从我的欲望和倾向,这又如何可能呢?我所做的每一件事,不都是受这些欲望或倾向--他们由外在影响而决定--所推动的吗?

康德论述到:自然中的任何事物都符合法则。如自然中必然性的法则,物理规律以及因果律。这也包括我们自身。我们毕竟是自然的存在,人类并不豁免于自然定律。

然而如果我们能掌握自由,就必须能根据某些其他种类的法则,并非物理规律--而行动。康德认为所有的行为都是由这种或那种规律支配的。如果我们的行为仅仅受到物理规律支配,那我们与台球没有区别。因我们能够掌握自由,就**必须不根据给予我们或强加给我的法则而行动,而是根据我们给自己定的法则而行动。**可是,这种法则从何而来?

康德说:从理性而来。我们不仅是受感官所产生的快乐与痛苦支配的感性存在,同时也是理性的存在,具有理性思考的能力。如果理性决定我的意志,那么这种意志就会成为一种不受自然或倾向所支配而进行选择的力量。(我们注意到,康德不是在断言理性总是支配我的意志;他只是在说,当我能够自由的行动--根据我给自己所立的法则而行动--那么,这肯定就是那种“理性能够支配我的意志”的情况)

功利主义者认为人类具有理性的能力,但仅仅是工具理性能力。对于功利主义者而言,理性的工作并不在于去决定什么样的目的是值得追求的,而是在于弄明白,怎么样通过满足那些我们恰好具有的各种欲望,而使功利最大化。然而康德反对理性的这种附属性角色。

理性

理性如何做到这一点呢?
康德区分了两种理性能够命令意志的方式,两种不同的命令。

假言命令

假言命令运用的是工具理性:如果你想要X,那么就做Y。如果你想要一个良好的商业信誉,那么就要诚实的对待你的顾客。
(有条件的)

绝对命令

(无条件的)

如果一个行为,只是作为一种达到其他事物的手段时才是好的,那么这一命令就是假言命令。如果这个行为本身就是代表着善,并因此对意志---这种意志自身符合理性--来说非常必要的话,那么这一命令就是绝对的。“绝对”这一术语是指:“无条件”。同样的一个绝对义务或绝对权利,就是一个无视各种环境而普遍适用的义务或权利。

对于康德而言,一个绝对命令就是绝对的,不涉及或依赖于任何进一步的目的--发出命令。它与这个行为的内容及其预期目的无关,而与这个行为的形式以及那产生这一行为的原则有关。这一行为本质性的善在于意图,而无论结果如何。康德论证到,只有一个绝对命令才有资格作为一种道德命令。

这就引出了一个重大问题:什么是绝对命令?它又命令我们什么呢?
康德认为我们可以通过这样一个观念--一项绝对的,不带任何进一步的动机而自主命令的实践法则--来回答这些问题。我们可以依据那种使我们作为理性存在而联合起来的法则的观念,而不管具体目的--来回答这个问题。
那么它又是什么呢?

绝对命令1: 使你的准则普遍化

康德将这一形式称为普遍法的准则:“只按照你同时认为也能成为普遍规律的准则去行动”。康德说的“准则”是指一种给予你的行动以理由的规则或原则。他实际上是在说,我们应当仅仅依据那些我可以使之毫无矛盾地普遍化的原则而行动。

比如一个例子,我急需用钱,因此我通过一个虚假的承诺说将很快偿还这笔钱--一个我知道无法遵守的承诺--而获得这比借款。这在道德上是否允许呢?一个虚假的承诺与绝对命令是否一致呢?康德说不,很明显,我看清这一虚假的承诺与绝对命令不一致的途径是:试着将我即将赖以行动的准则普遍化。
在这里情形中,准则是:“无论何时,当一个人急需用钱,应当借款并承诺还款,即使它知道自己并不能还”。康德说如歌这一准则普遍化,就会发现一种矛盾,实际上,将会没有“承诺”这个东西,将这种虚假的承诺普遍化会破坏“遵守承诺”这一习俗。届时,试图通过承诺获得一笔钱的尝试是徒劳的,非理性的。这表明虚假的承诺在道德上是错误的,与绝对命令不一致。

对于康德而言,弄明白我是否能够将自己的行为准则普遍化并继续依据它而行动,并不是一种推测可能性结果的方式。它是一种考察,以弄明白我的准则与绝对命令是否相一致。一个虚假的承诺,在道德上之所示错误的,并不是因为它明显会破坏社会信用(尽管它会这样)。它之所以错误,是因为在做出这样一个虚假承诺时,我将自己的需要和欲望(在这种情况下,是对金钱的欲望)置于他人的需要和欲望之上。这种普遍化的考察表明了一种强有力的道德主张:这是一种检验的方式,它力求弄明白--我即将做出的行为是否将我的利益和特殊情况置于他人的之上。

绝对命令2:将人看做目的

绝对命令的道德力量在康德的第二个绝对命令的准则--将人看做目的--当中,显现的更加清楚。
康德这样提出他的第二种绝对命令:我们不能将道德法则建立在任何特殊的利益,意图或目的基础上,因为如果那样的话,它就仅仅与那些目的的拥有者相关联。“然而,如果我们假设它们是一些其存在本身就具有绝对价值的东西”,作为目的本身,“那么在其中--仅仅在其中,就会有一个可能的绝对命令的基础”。

什么作为目的本身会有一种绝对的价值呢?康德的答案是:人性
“我认为,每一个人--一般来说就是每一个理性存在--都是作为目的本身而存在,而不仅仅是这种或那种意志所任意使用的手段”
康德提醒我们,这是人与物之间根本性的区别。人是理性的存在,他们不仅具有一种相对价值,而且具有一种绝对的价值,、一种本质性的价值。也就是说,理性存在拥有尊严。

这种论证路线引导康德到达第二种形式的绝对命令:应当这样行为:不要总是将人--无论是你自己本身还是任何其他人--仅仅看做是一种手段而加以对待,而总是同时也把他们看做一种目的而加以对待。这就是将人作为目的的准则。

用这个绝对命令来看第一个例子,会发现。当我说承诺要把钱还给你,而有知道自己并不能这样做的时候,我是在利用你,我将你当做我经济上的偿还能力而加以利用,并不将你看做一个值得尊重的目的而加以对待。

从道德上看,我们经常将谋杀和自杀看做完全不同的行为。谋杀是违背别人的意志而剥夺他人生命,而自杀是自杀者自己的行为。但康德对于自杀和谋杀看做是完全相同的行为,因为如果我实施了谋杀,就是为了自己的利益-如抢银行,巩固自己的政治权利,发泄我的愤怒--而夺走某人生命。我将这个受害者当做一种手段加以利用,而没有将他的人性当做目的加以尊重。这就是为什么谋杀违背了绝对命令。自杀是为了逃避痛苦的情形,我将自己作为一种摆脱痛苦的手段,而康德提醒我们,一个人并不是一个东西,不是被仅仅当作手段加以利用的东西。我没有权利舍弃那内在与自己的人性,就像我没有权利舍弃那内在与他人的人性一样。所以自杀和谋杀都是一样的错误,都是把人看做物来加以对待,都没有将人性作为目的本身加以尊重。

对于康德而言,公正要求我们支持所有人的人权,无论他们生活在哪里,以及我们与他们有多熟悉;仅仅因为他们是人类,具有理性能力,就因此而值得尊重。

道德与自由

现在弄明白了道德和自由的之间的联系了。有道德地行为意味着出于义务--为了道德法则--而行动。道德法则由一个绝对命令所构成,也即一个要求我们尊敬地将他人当做目的本身而加以对待的原则。只有当我的行为和这个绝对命令相一致的时候,我才是自由的行动。因为,无论什么时候当我依据一个假言命令而行动的时候,我都是为了某些外在于我而定的利益或目的。可是在这种情况下,我并没有真正的自由;我的意志不是由我自己决定的,而是由外在力量决定的--由我的环境需要或我恰好拥有的各种期望和欲求所决定的。

我只有自律的行动--根据我为自己所立的法则而行动--我才能脱离于本性和环境的命令。这样一种法则,必须不受到我的特殊期望或欲求制约。因此,康德的要求苛刻的自由观念和道德观念是相互关联的。自由的行动--亦即自律--与有道德地行动,尊重绝对命令地行动,是一回事。

这种思考道德和自由的方式,促使康德对功利主义进行了毁灭性的批评。那种将道德建立在某些特殊利益或欲望(如幸福或功利)基础之上的努力,注定是要失败的。“因为它们所发现的从来都不是义务,而只是出于某一特定利益而行动的必要性”。然而,任何基于利益的原则都“注定总是有一个有条件的原则,而不可能作为一个道德法则”。

对康德的疑问

疑问1:绝对命令要求我们尊敬地对待每一个人,把他们当做目的本身加以对待。这与黄金法则(你们愿意人怎样对待你们,你们也要怎样待人)是不是非常相似呢?
回答:不。黄金法则依赖这样一个偶然性事实,即人们愿意怎样被对待。绝对命令要求我们从这些偶然性当中抽象出来,并将人们当做理性存在并加以尊重,无论他们在某一特殊的情境中可能想要什么。

疑问2:如果自律意味着根据我自己给定的法则而行动,那么什么能保证每个人都会选择同样的道德法则呢?如果绝对命令是我的意志的产物,那不是很可能不同的人会产生不同的绝对命令吗?康德似乎认为,我们都会认同一样的道德法则,可是,他怎么能够确定,不同的人不会经由不同的推理并达到各种各样的道德法则呢?
回答:当我们在命令道德法则时,我们并不是作为自己所是的特殊的个人,如你、我而进行选择,而是作为理性的存在,作为康德所说的“纯粹实践理性”的参与者进行选择。因此,那种认为道德法则取决于作为个体的我们的观念使错误的。当然,如果我们从自己特殊的利益、欲望和目的进行推理,那么,我们可能会被引导至众多的原则。然而,这并不是道德原则,而只是一些慎重的原则。当我们运用纯粹实践理性时,我们便抽象与自己的各种特殊利益。这就意味着,每个运用纯粹实践理性的人,都会得出同样的结论--都会达到一个单一的(普遍的)绝对命令。“因此,一个自由的意志,与一个遵从道德法则的意志,是同一回事。”

疑问3:康德认为,如果道德不仅仅是一种慎重的算计,那么它就必须采取一种绝对命令的形式。可是我们如何能够得知,道德独立于权利和利益的作用而存在呢?我们是否能够确定,我们拥有暗中带着意志自由而自律的行为的能力呢?如果科学家发现(如通过脑成像或认知神经科学)我们根本就没有意志自由呢?这会不会否定了康德的道德哲学呢?
回答:意志的自由不是科学能证明或否定的东西。道德也同样不是。人类确实居住在自然王国,所做的每一件事都能从物理或生物的角度加以描述。但是我们同样是一个理性的存在:

一个理性的存在···有两种立场,从中他可以关注到自己,也可以知道那些支配他的所有行为的法则。他可以认为自己首先服从于自然法则(他律)--只要他属于这个感性世界;其次服从于这样的法则---只要他属于理智世界:该法则独立于自然,他并非经验性的,而只是以理性作为基础

因此上面的三个对比后面会加一个对比4。
对比4(立场):理智王国 VS. 感性王国

作为一个自然的存在,我属于感知世界,我的行为由自然法则和因果规律而决定,这是物理学、生物学和神经科学所能描述的人类行为的一个方面。作为一个理性的存在,我居住在理智王国。在这里,由于独立于自然法则,我能够自律,能够根据我给自己所设定的法则而行动。

康德主张只有通过第二种(理智的)角度,我才能把自己看做自由的,“因为独立于感知世界各种原因的支配(这也是理性必须总是归功于自己的东西),就是自由。”

如果我仅仅是一个经验性的存在,那么我就不能自由;每一次意志的运用都要受到某些利益或欲望的制约。所有的选择都将是他律性的选择,受制于对某种目的的追求。我的意志可能永远都不会成为第一原因,而仅仅是某种先在的原因的结果,是这种或那种冲动或倾向的工具。

只要我们将自己看做自由的,那么我们就不能将自己只看做经验性的存在。“当我们认为自己是自由的时候,我们就将自己转化为理智世界的成员,并且认识到意志的自律及其结果--道德。”

康德承认我们不仅仅是理性的存在,我们不仅仅居住与理智世界。如果我们仅仅是理性存在,不受自然法则和自然需要的制约,那么我们所有行为“都将始终与自律的意志相一致”。由于我们同时栖息于两种立场之中,在事物所是的方式与它们应当所是的方式之间,就总是存在有一个鸿沟。
另一种表述这一要点的方式是:就是认为道德不是经验性的,它总是与这个世界保持着一定的距离。它对这个世界进行批判。科学尽其所能的力量与洞见,都不能触及道德问题,因为它是在感知领域起作用。

“要论证自由并不存在的话”,康德写道,“这对于最深奥的哲学以及最普通的人类理性来说,都是不可能的。”康德很可能会补充说,对于认知神经科学来说,无论它怎样先进发达,也是不可能的。科学能够研究自然,能够考察经验世界,可是它不能回答各种道德问题或推翻意志自已。这是因为,道德和自由并不是经验性的概念。我们不能证明它们存在,然而没有它们,我们也不能弄明白我们的道德生活之意义所在。

一个有趣的例子:
康德坚决反对撒谎,在《道德形而上学基础》一书中,撒谎被作为不道德行为的一个主要例子。然后假设一下:一个朋友正躲在你家,而一个杀人犯来到你家门口找他。此时对杀人犯撒谎难道不对吗?康德说不对,说真话的义务保持不变,而无论结果如何。

邦雅曼·贡斯当提出了异议,他认为说真话的义务仅仅适用于那些应该得知真相的人,而这个杀人犯肯定不应该得到真相。康德回应道:对这个杀人犯撒谎是错误的,并不是因为这伤害了他,而是因为这违背了正当性原则:“不能避免表达的真实性,这是每个人的正式义务,无论这会对任何他人产生怎样的不利”。
康德想说,道德不是关于结果(不管这个有偶然性的结果是怎样)的,而是关于原则的。

但看起来会有一种解决方案:
针对杀人犯有两个选择:

  1. 直接撒谎说:“不,他不在这里”
  2. 给出一个真实然而具有误导性的陈述:“一个小时之前,我在路那头杂货店看见过他”

从康德角度来说,第二种策略在道德上是允许的,而第一种不是。你可能认为是吹毛求疵,第二句话不过是希望误导杀人犯相信你的朋友没有藏在房子里。

康德认为有一个至关重要的区别。善意的谎言(如果朋友送你一个礼物,打开盒子看到一个丑陋的你一辈子都不会系的领带,你会说:真漂亮)会给朋友一个错觉,即你喜欢这个领带,可是它们不是真实的。
谎话与误导性的实话之间有一种与道德相关的差别。
一个精心设计的措辞,以某种方式对说实话的这一义务心存感激,而一个直率的谎言则并不如此。任何一个人如果不厌其烦的编造一种具有误导性但在技术上却是真实的陈述--而一个简单的谎言也可以同样表达,那么,无论它多么闪烁其词,他都是尊重道德法则的。

一种误导性的真话包含两个动机,而不是一个。如果我仅仅对杀人犯撒谎,我是出于一种动机而这样做--为了保护我的朋友不受到上海。如果我告诉杀人犯在杂货店看到了朋友,我是出于两种动机而这样做的--保护我的朋友,同时维护说实话的义务。在这两种情形中,我是在追求同一种令人称赞的目的,即保护我的朋友。而只有在第二种情形中,我是以一种与义务的动机相一致的方式去追求这一目的的。

前端内存概述

内存结构

内存分为堆(heap)和栈(stack),堆内存存储复杂的数据类型,栈内存则存储简单数据类型,方便快速写入和读取数据。在访问数据时,先从栈内寻找相应数据的存储地址,再根据获得的地址,找到堆内该变量真正存储的内容读取出来。

在前端中,被存储在栈内的数据包括小数值型,string ,boolean 和复杂类型的地址索引。

所谓小数值数据(small number), 即长度短于 32 位存储空间的 number 型数据。

一些复杂的数据类型,诸如 Array,Object 等,是被存在堆中的。如果我们要获取一个已存储的对象 A,会先从栈中找到这个变量存储的地址,再根据该地址找到堆中相应的数据。如图:
image

简单的数据类型由于存储在栈中,读取写入速度相对复杂类型(存在堆中)会更快些。

Object 存储

哈希表

哈希表存储是一种常见的数据结构。所谓哈希映射,是把任意长度的输入通过散列算法变换成固定长度的输出。

对于一个 JS 对象,每一个属性,都按照一定的哈希映射规则,映射到不同的存储地址上。在我们寻找该属性时,也是通过这个映射方式,找到存储位置。当然,这个映射算法一定不能过于复杂,这会使映射效率低下;但也不能太简单,过于简单的映射方式,会导致无法将变量均匀的映射到一片连续的存储空间内,而造成频繁的哈希碰撞。

哈希碰撞

所谓哈希碰撞,指的是在经过哈希映射计算后,被映射到了相同的地址,这样就形成了哈希碰撞。想要解决哈希碰撞,则需要对同样被映射过来的新变量进行处理。

众所周知,JS 的对象是可变的,属性可在任意时候(大部分情况下)添加和删除。在最开始给一个对象分配内存时,如果不想出现哈希碰撞问题,则需要分配巨大的连续存储空间。但大部分的对象所包含的属性一般都不会很长,这就导致了极大的空间浪费。

但是如果一开始分配的内存较少,随着属性数量的增加,必定会出现哈希碰撞,那如何解决哈希碰撞问题呢?

对于哈希碰撞问题,比较经典的解决方法有如下几种:

  • 开放寻址法
  • 再哈希法
  • 拉链法

在 JS 中,选择的是拉链法解决哈希碰撞。所谓拉链法,是将通过一定算法得到的相同映射地址的值,用链表的形式存储起来。如图所示(以倾斜的箭头表明链表动态分配,并非连续的内存空间):
image

映射后的地址空间存储的是一个链表的指针,一个链表的每个单元,存储着该属性的 key, value 和下一个元素的指针;

这种存储的方式的好处是,最开始不需要分配较大的存储空间,新添加的属性只要动态分配内存即可;

Array 存储

Array 是一种特殊类型的对象。所谓特殊类型,就是指在 Array 中,每一个属性的 key 就是这个属性的 index;而这个对
象还有 .length 属性;还有 concat, slice, push, pop 等方法;这种特殊类型的对象可以针对操作带来极大的方便性。但数据量大的时候数组索引会遇到问题, 可以使用es6 的 ArrayBuffer来解决性能问题。

web worker 共享内存机制

垃圾回收机制

JS 语言并不像诸如 C++ 一样需要手动分配内存和释放内存,而是有自己一套动态 GC 策略的。通常的垃圾回收机制有很多种。前端用到的方式为标记清除法,可以解决循环引用的问题。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management

《公正》读书笔记(第6章:平等的理由-罗尔斯)

大多数美国人从未签署过社会契约。宪法从来没有要求我们表示同意,因此我们有什么义务服从于法律呢?

约翰·洛克说,我们已经给了心照不宣的同意。任何一个享受政府福利的人,即使只是在高速公路上穿行,也含蓄的对其法律表示同意,并受其约束。

伊曼纽尔·康德诉求于假象的同意,一项法律如果能够得到全体公民的认同,那么它就是公正的。

约翰·罗尔斯给出了一个启发性的答案。他主张,思考公正的方式就是要询问,在一种平等的原始状态中,我们会认可什么样的原则。

罗尔斯推理如下:假设我们当时聚集到一起,去选择一些管理我们集体生活的原则, 也即起草一份社会契约。我们会选择什么样的原则呢?我们可能会发现很难达成一致意见。不同的人会支持不同的原则,这体现出他们各自的利益,道德和宗教信仰以及社会地位等。有些人很富,有些人很穷;有些人拥有权利并广泛社交,而有些人则并非如此;有些人是少数种族,民族或宗教,而有些人不是。我们可能会达成一种妥协,然而即使是这种妥协,很可能反映出某些人讨价还价的能力高于另外一些人。因为我们没有理由认为,以这种方式形成的社会契约会是一种公正的安排。

现在来考虑一种**性的实验:假设我们聚集到一起来选择各种原则,我们并不知道自己再社会中将身处何处。假设我们在一道“无知之幕”的背后进行选择,这道“无知之幕”将暂时不让我们知道任何关于我们自己是谁的信息。我们不知道自己的阶层和性别,民族,政治观点或宗教信仰;我们也不知道自己的优缺点--我们是健康还是体弱多病,是接受高等教育还是中学辍学,是出生于一个完整和睦的家庭还是支离破碎的家庭。如果不知道这些事情, 那么,我们实际上就会从一种原初的平等状态而进行选择。因为没有人会有一个更高的讨价还价的地位,那么我们所同意的各种原则就是公正的。

这就是罗尔斯的社会契约理念--一种假象的,在平等的原初状态中所达成的协议。罗尔斯要求我们询问:我们--作为理性的、追求自我利益的人--如果发现自己出于这样一种状态中,会选择什么样的原则?他没有假设我们生活在现实生活中都受到自我利益的驱使,而只是假设我们为了这个**实验而搁置自己的道德和宗教信念,我们会选择什么样的原则呢?

罗尔斯说,在无知之幕背后,我们不会选择功利主义,因此担心自己可能是少数被压迫的群体。也不会选择自由至上主义。
这种假象的契约中,会产生两种公正原则。第一个原则为公民提供平等的基本自由,如言论自由和宗教自由。这一原则优先于社会功利和总体福利的考虑。第二个原则关心社会和经济的平等。尽管它不要求一种平等关于收入和财富的分配,它却只允许那些有利于社会最不利者的社会和经济的不平等。

一会儿会看到为什么罗尔斯认为人们会选择这两个原则。在讨论这些原则之前,让我们先讨论一个在此之前的问题:罗尔斯的**性实验是思考公正的正当方式吗?公正原则如何能够产生于一种从来都没有发生过的协议之中?

契约的道德局限

实际契约是有道德局限的。比如两个人做一个交易,他们的协议的条款一定是公平的吗。那么就会引出一些关于公平的独立标准。最容易想到的就是宪法。宪法是由人们认可的,但并不能证明其条款就是公正的。比如1787美国宪法,尽管有很多优点,但却是被奴隶制玷污了,后来这一瑕疵一直保留到内战以后。

法国**家们认为:只要实际合同实现了两种理想:意志自由和互惠,那么它们就有道德分量。
作为自愿的行为,合同体现出我们的意志自由;它所产生的义务之所以有分量,是因为它们是自我给定的--我们自由地、自主地承担它们。作为相互谋取利益的手段,合同利用了互惠性的理想;履行这些合同的义务,产生于那种偿还他人给我们提供的利益的义务。

实际上,这些理想--意志自由和互惠性--都没有完全实现。有些协议尽管是自愿的,却不是互相获利的。有时候,我们仅基于互惠而有义务偿还一种利益,甚至不需要合同。这便是同意的到的局限性:在某些情形中同意并不足以产生一种具有道德约束力的义务,而在另一些情形中则不需要同意。

设想完美的契约

契约的道德约束力来自于两种不同的理念:意志自由和互惠性。然后,大多数实际的契约都缺乏这些观念。如果我与某个更高讨价还价地位的人打交道的话,我的同意可能并不完全是自由的,而是被迫的,或者是在极端情形下,是被强迫的。如果我与某个对我们所交换之物更为了解到人谈判,那么这一交易可能就不是相互获利的;在极端情形下,我可能是被欺诈或蒙骗了。

在现实生活中, 人们的处境大不相同,这就意味着,不同的交易力量和知识是可能的。而只要这一点是真实的,那么协议的既定事实本身,就不能保证该协议的公平性。这就是为什么实际中的契约并不是自足的道德工具,我们总是能合情合理的质疑:“他们所达成的协议是否公平呢?”

想象一种那些拥有平等的,而非不平等的权利和知识的人们之间所达成的协议:他们处于同样的境况,而并非不同的境况。同时也设想一下,这份契约的对象并不是管道铺设或其他普通交易,而是那些治理我们生活的、分配我们作为公民所具有的权利和义务的各种原则。在这样的各方所达成的这样一个契约,就不会有压迫、欺骗或其他不公正的缺点。它的各项条款由于同意本身,就必然是公正的,而无论它们是什么。

公正的两个原则

根据罗尔斯的观,我们不会选择功利主义。在无知之幕背后,我们不知道自己会在社会中处于什么地位,然后我们却知道我们想要追求自己的目的,并得到郑重的对待。如果我们在社会是一个少数民族或小宗教团体成员,我们不希望被压迫,即使这会给大多数人带来快乐。因此我们反对功利主义。并同意一种保证所有公民的基本平等自由的原则,包括意识自由和**自由的权利。并我们坚持认为这一原则要优先那些使总体福利最大化的各种尝试;我们就不会为了社会和经济利益,而牺牲自己根本性的权利和自由。

我们会选择什么样的原则来治理社会和经济的不平等呢?为了避免我们自己身处极度贫困的危险,我们可能会想要支持一种收入和财富的平等分配政策。然而,我们可能接着会想到,我们可以做的更好,甚至为了那些社会底层的人。假设我们通过允许某些不平等,如给医生所支付的工资要高于汽车驾驶员的工资,来改善最不利者的境况--如为穷人增加医疗机会。考虑这种可能性,我们就可能接受罗尔斯说的“差异原则”:只有当社会和经济的不平等能够有利于社会最不利者的利益时,它们才是可允许的。

罗尔斯支持差异原则的理由源于一种道德论证:关于收入和机会的分配,不应当依赖于那些从道德上来说具有任意性的因素。

源于道德任意性的论点

没有人维护封建特权**或种姓制度的公正性,因为这些体制是不公平的,因为根据他们出生的偶然性来分配收入、财富、机会和权利。如果出身贵族就拥有各种从那些生而为奴的人们那里剥夺而来的权利和权利。可是,你所出生的环境并不是你的行为结果。因此,基于这些任意性的因素而设定你的生活前景,是不公平的。

市场社会纠正了这些任意性,至少某种程度上,将就业机会对具有所需要的才能的那些人开放,并规定法律面前人人平等。他们保证公民们能得到平等基本自由,并且关于收入和财富的分配是由自由市场来决定的。这一体制--一个具有形式上的机会平等的自由市场--与自由至上注意的公正理论相契合。

那些拥有良好家庭背景的受过良好教育的人,比那些没有这些的人们,明显具有优势。允许每个人进入比赛是一件很好的事情,然后如果选手们从不同的起点出发,那么比赛很难说是公平的。这就是为什么罗尔斯认为,那源于具有形式上的机会平等的自由市场的有关收入和财富分配,并不能看做是公正的。自由至上主义体制的最明显的不公正,在于“它允许分配的份额收到这些道德上看来非常任意的各种因素的影响”

差异原则实际上体现了一种协议,即将自然才能的分配看做一种公共资产,并共享这一分配的好处,无论结果是什么。那些收到自然宠爱的人们,无论他们是谁,都只有当他们的好运气改善了那些最不利者的状况时,才能从自己的好运气中获利。那些在天赋上占优势的人们,不能因为天分高而仅仅自己受益,而要通过抵消那些训练和教育所产生的费用,从而帮助那些比较不幸的人们。没有人应当得到更大的自然能力,也没有人在社会上值得拥有更加有利的起点。然而这并不是由此产生这样一种观点:人们应当消除这些差别。我们还有另一种途径来处理它们。人们能够安排社会的基本结构,以至于这些偶然性对那些最不利者有利。(我自己想到了蜘蛛侠里面说道:能力越大,责任越大。原来这句话的理论基础在这里...)

现在有四种不同的分配公正理论:

  1. 封建制度或种姓制度:基于出生的固定等级制
  2. 自由至上主义:拥有形式上的机会均等的自由市场
  3. 精英**制度:拥有公平机会均等的自由市场
  4. 平等主义:罗尔斯的差异原则

精英**制度:试图超越形式上的机会平等,而做到这一点。它通过提供平等的受教育的机会--这使得那些来自于贫困家庭的人们,能够在一个平等的基础上与那些享有特权的人们相竞争--而除去了通往成功之路的诸多障碍。这种精英社会认为:源于一个自由市场的,关于收入和财富的分配是公正的--但只有当每个人都有同等机会发展他们的各种能力的时候。只有每个人都开始与同一个起跑线的时候,我们才能说,这场比赛的获胜者应当得到奖励。

罗尔斯认为,前三种理论将分配份额建立在那些从道德上看来具有任意性的因素之上--要么是出生的偶然性,要么是社会和经济的优势,要么是自然才能和能力等。只有差异原则避免了将关于收入和财富的分配,建立在这些偶然性基础之上。

分配公正与道德应得无关

(这个观点很冷酷)
罗尔斯认为:分配公正与道德应得无关

他认识到,这一结论与我们日常的思考公正的方式不太一致:“我们有一种常识倾向,即认为收入、财富以及生活中的好东西,一般来说都应当根据道德应得而加以分配。公正就是依据德性而来的幸福···但是现在,作为公正的公**对这一观念”。

考虑一下机会游戏和技能游戏的区别。机会游戏比如购买彩票,我的输赢与我的德性,或玩这个游戏的技能毫无关系。技能游戏比如棒球大赛,一个队伍通过展示卓越的技巧和德性。其中的区别是技能游戏奖励某些德性的运用与展示。

罗尔斯根据以下理由反对将道德应得作为分配公正的基础。
我们拥有的那些使我能够比其他人更加成功的竞争的才能,并不完全是我的行为结果。可是,第二个偶然因素却具有决定性:一个社会在特定时期所恰好看中的各种才能,在道德上也同样具有任意性。即使我对自己的各种才能拥有唯一的,毋庸置疑的权利,可是事实仍认识:这些才能所获得的回报,将会取决于供需关系的偶然性。在中世纪时期的塔斯卡尼,人们对壁画师极其看重,而在21世纪的加利福尼亚州,人们对电脑程序设计师极为看重。如此等等。我的各种技能的收获好坏,取决于这个社会恰好想要什么。什么算作贡献,这取决与一个特定社会所恰好看重的各种才能。

成功人士经常忽视他们的成功所具有的这一偶然性方面。我们当中的很多人都幸运地拥有--至少是某种程度上--我们这个社会所恰好看中的才能。在一个资本主义社会,拥有企业家的驱动力很有利;在一个官僚制度的社会,轻易平和和地与领导相处很有利。在一个大众**社会,在电视上看起来不错,说话简短,嗓音有感染力很有利;在一个法治社会,在法学院深造,拥有能帮你在法学院入学考试中获得高分的逻辑和推理技能,会很有利。

我们这个社会看重这些事物的这一事实,并非我们行为的结果。假如拥有这些才能的我们。并不是生活在现在这样一个科技发达,喜欢诉讼的社会,而是生活在一个狩猎的社会,喜欢武力的社会,或一个将最高的奖励和特权授予那些展示了身体力量和宗教虔诚的人们的社会,这时我们的才能会变成什么呢?很显然,他们不会让我发展的太好。并且毫无疑问,我们中的一些人会发展一些其他的才能。可是,我们会比现在具有更少的价值或德性吗?

罗尔斯的答案是否定的。我们可能会少获得一些,而且很可能如此。但是,在我们对较少的东西拥有权利的同时,我们不会比他人具有更少的价值和更少的道德应得。这一点对于生活在我们这个社会中的那些缺少某些特权地位,以及拥有较少这个社会恰好奖励的各种才能的人而言,同样是真实的。

因此当我们有资格获得游戏规则所承诺的,由于运用才能而得到的那些利益时,要是认为我们首先应得一个看重我们拥有的各种才能的社会的话,那就是一种错误和自负。

生活是公平的吗?

米尔顿·弗里德曼在《自由选择》一书中承认:那些成长与富裕家庭并进入名校上学的人,要比那些来自拥有较少特权的背景中的人,拥有一种不公平的优势。他还承认,那些拥有才能和天赋的人--尽管这不是他们自己行为的结果--要比其他人拥有一共不公平的优势。然后与罗尔斯不同,弗里德曼坚持认为,我们不应当试着去纠正这种不公平。相反,我们应当学会去适应它,并享受它带来的益处:

生活是不公平的。如果认为政府能够纠正自然地产物,这种观点确实很吸引人。但是认识到以下这点也同样重要:即我们从自己所强烈反对的这种不公平中获得了多少利益。穆罕默德·阿里天生拥有使他成为一个伟大的拳击手技能···这里没有什么公平可言···穆罕默德·阿里一夜能挣好几百万美元,这当然不公平。但是如果为了追求某种抽象的平等理想,而不允许穆罕默德·阿里在一个晚上的比赛中做挣的钱,比那个出于社会最底层的人在码头上做一天没有技术含量的活所挣的更多,那么这对于那些喜欢看他比赛的人们而言,难道不是更加不公平吗?

在《正义论》中,罗尔斯反对弗里德曼的观点,他表达了一个人所熟知,却经常被我们忘却的真理:事物所是的方式,并不决定它们应当所是的方式。

我们应当反对这样一种论点:制度的安排总是有缺陷的,因为自然才能的分配和社会环境的偶然性因素是不公正的,而这种不公正不可避免地必然要转移到人类的制度安排中。这种**有时候被用来作为对不公正熟视无睹的借口,仿佛拒绝默认不公正的存在和不能接受死亡一样。自然的分配无所谓公正不公正,人们降生于社会的某一特殊地位也说不上不公正。这些只是一些自然事实。公正或不公正在于制度处理这些事实的方式。

罗尔斯建议我们这样来处理这些事实:同意“与他人分享命运”,并且“只有当利用那些自然和社会环境的偶然性能够有利于整体时,我们才能这么做”。无论他的公正理论最终能否成功,它都代表了美国政治哲学中迄今为止所提出的、最具说服力的、支持一个更加平等的社会的理由。

(生活是公平的吗?
答案是生活本身是公平或公正的(或者无所谓公平),是一些客观的自然事实。不公平或不公正的原因在于制度或者社会环境处理这些自然事实的方式)

《公正》读书笔记(第2章:最大幸福原则-功利主义)

四个海员被困在小救生艇上,等待救援。他们决定杀死其中一个年轻人并吃掉他才能保证他们不会被饿死,否则他们四个都会被饿死。结果他们杀死了他并得以活下去并等到了救援。

一种论调是如果不杀死年轻人全部都被饿死,所以杀死一个救其他3个从功利角度是合理的。但另一种论调认为某些人的权利和义务应该被尊重,不能随意剥夺别人的生命。

边沁是英国道德哲学家和法律改革者,创立了功利主义学说。其主要观点是:道德的最高原则就是使幸福最大化使快乐总体超过痛苦。对边沁而言,正当的行为就是任何使功利最大化的行为。他说的“功利”,意指任何能够产生快乐或幸福,并阻止痛苦或困难的东西。

边沁认为:我们都被痛苦和快乐的感觉控制着。它们是我们“至高无上的主人”,在我们所做的任何事情中都主宰着我们,并决定着我们应该做什么事情。对与错的标准“与它们的王权紧密相连”。

我们都喜欢快乐厌恶痛苦,功利主义者意识到这一点,并使得它成为道德和政治生活的基础。使功利最大化不仅仅是个人的原则,同时也是立法者的原则。一个政府决定要制定什么样的法律和政策时,他应当要做任何能使作为整体的共同体的幸福最大化的事情。那么什么是共同体呢?边沁认为,他是一个“想象的集体”,由组成它的个体总数构成。

边沁认为功利原则提供了一种道德原则,可以作为政治改革的基础。

关于反驳功利主义。有以下2种观点:

  1. 个体权利
    功利主义的一个缺陷是没有尊重个体权利。比如严刑逼供,对恐怖分子嫌疑人进行严刑逼供,虽然可能可以避免更大的损失,但是这种做法侵犯了人权。

  2. 通用价值货币
    功利主义提供了一个基于衡量,合并和计算幸福的道德科学。反驳者认为,不能将所有价值都用同一种通用的价值货币来衡量。比如经研究发现吸烟给政府的收入要大于治疗肺部疾病带来的支出。因为烟民死的早,政府可以花费更少的支出在烟民的医疗和养老方面。这种得失计算和背后的功利主义思维在道德上是愚蠢的,难以接受的。
    更有甚者对人类生命进行价值计算,比如一条生命xx美元,这是违反人性的

约翰·斯图亚特·密尔试图改进功利主义。

他的著作《论自由》是英语世界为个体自由所作的经典辩护。其核心原则是:倘若不伤害到他人的话,人们应该可以自由地去做任何他们想做的事情。政府不能为了保护人们不受伤害,而干涉个体的自由,或将大多数关于怎样最好的生活的观念强加于每个人。密尔认为,一个人对社会负责的唯一一种行为,就是会影响到他人的行为。只要我不伤害到任何人,那么,我的“权利的独立性就是绝对的。个体是他自己,是自己身体和**的最高**者”。

密尔认为,将功利看做是所有伦理问题的终极诉求,这里所说的功利必须是最宽泛意义上的功利,建立在作为进取性存在的人的永恒利益至上。

密尔认为我们不应当就事论事的使功利最大化,而应当长远来看。从长远来看,尊重个体自由会导向最大的人类幸福。允许大多数使持异议者保持沉默或抑制自由思考者,可能会使目前的功利最大化,但从长远来看,这使得社会变得更坏,更加缺乏快乐。
原因有如下几点:

  1. 反对者的意见正确或部分正确可以给正统观点提供纠正
  2. 反对者意见错误的话,可以使正统观点接受一些观念的挑战,防止变成硬性的教条或偏见
  3. 一个强迫其成员接受习俗和传统的社会很可能会陷入一种荒谬的一致性,从而剥夺了自身促进社会进步的能量和活力

更高级的快乐并不是因为我们更喜欢它而更加高级。比如相对于哈姆雷特,大多数人更喜欢看喜剧。我们之所以喜欢它是因为我们认识到它们更高级。之所以将哈姆雷特看做伟大的艺术,不是因为较之于低级快乐(比如喝汽水)更喜欢它,而是因为它运用了我们的最高级的能力,并使我们成为一个更加完善的人。

(功利计算可以,但要考虑德行)

麦肯锡入职培训第一课:让职场新人一生受用的逻辑思考力

前言

真正的“逻辑思考”,是提出方案和行动,让对方产生兴趣:“这个不错!是怎么做到的?”

引言

逻辑思考是指批判性思考(通过深刻洞察来得出自己的想法)和逻辑性展开(用简单易懂的方式表达)。逻辑思考的基本要点,就只是这两点。

从深刻的洞察得出自己的想法,这一点最接近逻辑思考的本质。

如果社会上所谓的“逻辑思考”是指先想到一个答案,然后再对这个答案进行逻辑验证,看这个答案中有没有矛盾和错误,那么麦肯锡的“逻辑思考”,则通常就会用零基思考和假设思考,在当下场合创造性地打造正中靶心的“新答案”。

第1章 逻辑思考并不难!逻辑思考的入门课

思考过程,通过接下来的 3 个步骤,

Step1 亲自确认前提条件(这是真的吗?)
Step2 深入查证(……所以会这样)
Step3 持有属于自己的意见(这个不错)

“逻辑思考”究竟有什么用?

  1. 具备真正逻辑思考能力的人并不会让对方觉得无聊或烦闷,他们会充满魅力地让对方轻松领会自己的意图。这种人会得到很多赞同,工作起来自然也会“顺风顺水”。
  2. 擅长“逻辑思考”的人,能够把自己的想法简洁地传达给他人,让对方开心,所以才会成为“擅长沟通”的人。打造良好的人际关系。

越会工作的人,越重视对人的“逻辑思考”

就算自己对提案内容再有自信,执行计划再正确,如果不被对方接纳,无法消除对方的不安和担忧的话,工作也是无法展开下去的。

工作做得好的人,为了避免如上情况出现,会一直通过“逻辑思考”深化自己的思维,让自己的“好直觉”被对方理解接受。

Step1 自己认真确认前提(是真的吗?)
Step2 深入调查证据(……所以会这样)
Step3 持有属于自己的意见(这个不错哦)

正如前面所说的,要在有意识或无意识地进入这三个阶段后,带着自信进行提案,才不会看到对方奇怪的眼神,而且还能听到“这个不错”的肯定。

真正的逻辑思考,会改变大家的行动

其中有一种变化就是“行动”。这是指一个人的行动和业务能力,或者在系统中的运作情况。算是狭义的变化。

另一种变化称作“行为”,这个不仅限于人类的行动,对组织和社会等广义范围的概念也适用,就是指能引起很大波动的变化,影响他人行为的变化。

重要的不是要掌握多少数据和方法,而是要有创造性、逻辑性地找到“现在眼前发生的真正问题是什么”。

  • 全盘观察现在眼前发生的问题
  • 锁定现状中真正的问题
  • 找出证据,证明锁定的问题是“真正的问题”
  • 设立解决问题的计划
  • 开始实际解决问题的行动

为了将这一系列流程顺利完成,不可缺少的引擎就是逻辑思考。

无论什么时候,眼前发生的都不一定是全部的真相,背后一定有其背景。留心思考这方面也能够培养“逻辑思考”。

带着“零基思考”的意识去生活

有人认为,所有人通过逻辑思考都会得出同样的结论。
这话一半正确,却也有一半是不妥当的。

的确,运用逻辑思考的话,从相同的【前提条件】和【调研观察】可以得出大体相同的【结论】。

但是在有竞争关系的情况下,跟对方做同样的课题,就必须得出“不同的结果”。不仅要用逻辑思考,还需要加上创造性思维。往往过去自己的“思维框架”和“成功体验”会起干扰作用。这时候就需要从过去自己的“思维框
架”和“成功体验”中跳出来,运用零基思考。

第2章 批判性思考 深入思考的核心

Step1 自己确认前提(是真的吗)

不要把“关联关系”和“因果关系”混为一谈。

【关联关系】=结果上有关,但并非直接的原因和结果

【因果关系】=结果上有关,而且有合理且直接的原因和结果关系

批判性思考的3个基本方法

  1. 明确目的是什么
  2. 明确思维模式框架
  3. 不断发问(所以呢?为什么呢?)

在进行第二点的时候,避免进入思维定式,比如远距离大巴比飞机更能让人疲劳,这也是一种思维定式。思维定式使得思维更加轻松,但是往往容易形成陷阱。远距离大巴也开始重视舒适度了,越来越多的大巴坐起
来的舒适度甚至能接近飞机的经济舱和头等舱了。
思维定式:一般意味着钻牛角尖,守旧经验,习惯,世间的看法,教育,自己的信念,常识,媒体报道,网络消息,成功经验,失败经验

第三点例子如下:

下面是一段营业部同事之间的对话——
“最近营业的成绩不如之前想的好啊。”
“不增加商谈的次数,评价就会变差吧。”
“产品如果再稍微降价一点点的话,就能卖出去更多了。”
“但是就算咱们努力卖出去了,也没什么奖励,也就没热情了。”

乍一看是非常合理的对话,但如果这样继续营业工作,不作深入思考的话,到底能不能有好成绩呢?大家不会产生疑问吗?

就某个问题(进行不顺利的)进行谈话的时候,听者摆出“批判性倾听”的姿态,是非常重要的。

在进入相互抱怨的“惯有模式”时,必须要进行批判性思考,将自己放入问题中。

【然后又如何?so what?为什么是这样?Why so?】

带着这两个问题进行交流,就可以避免自己陷入“惯有模式”。

现在我们带着问题,再听一下刚才两人的对话吧。
“最近营业的成绩不如之前想的好啊。”→营业进程在哪个阶段没有做好?so what?(所以呢?)

“不增加商谈的次数,评价就会变差吧。”→为了出成果真正重要的是什么?so what?(所以呢?)

“产品如果再稍微降价一点点的话,就能卖出去更多了。”→具体来说要降价多少才能卖出去更多呢?又能多卖出去多少?why so?(为什
么?)

“但是就算咱们努力卖出去了,也没什么奖励,也就没热情了。”→改善奖励机制的哪个部分会卖出去更多?why so?(为什么?)

只停留在解决“营业成果出不来”这一表面现象,只能进行问题的“浅层次解决”。如果因“营业成果出不来”就增加商谈次数,二者之间固然有关联关系,但仅因为二者互相联系就认为有因果关系,这也是不恰当的。

将表面的很多事实,用“然后又如何?so what?”“为什么是这样?Why so?”进行发问,挖掘事实,将其作为一个结构的问题来看待,就可以发现“什么是真正的问题”了。

锻炼批判性思考的 7 个习惯

习惯 1:对身边的人讲话更加“具体些”

比如熟悉的人对你说“我去趟便利店”,你就会回应“那顺便帮我带点饮料吧”。不说“随便带点饮料”,而说“我想振作一下,所以帮我买点能量饮料吧”。

日常生活中,可以避免像“随便带点喝的”这种“模糊”的说话方式,而是要意识到“然后要怎样”,用这种跟“批判性思考”联系在一起的方法,可以锻炼“思考的力量”。

习惯 2:不要随波逐流

哪怕是小事,也不要简单地随大流。对自己做出的选择,想想理由,说出确实的“根据”。不管是 Facebook 的点赞也好,点菜的菜单也好。做出自己的选择。

习惯 3:看新闻的时候联想到“其他事情”

2013 年,《国家对男女相亲进行支援?研究设立“少子化 危机缓解基金”》这条新闻一度成为热门话题。可以联想到出生率,国家经济发展等问题。

习惯 4:冲动购物之前要思考

习惯 5:区分事实和意见

习惯 6:尝试当一下苏格拉底

无论面对自己还是别人,无论是觉得正确还是觉得奇怪的事,提问都是最卓越的方法。

古希腊哲学家苏格拉底认为,对各种事物的“疑问”,在确认其本质的同时,还可以提升自己的智慧。

这就是“苏格拉底方法”(苏格拉底的问答法),根据问题,在自己或他人身上,找到更好的答案。

例如针对“顾客满意度很重要”这件事,反问“那么顾客的满意度究竟是什么呢”,对于“背叛别人是不好的”,反问“你觉得什么样的行为算是背叛”。

对于所有发言,不要放任不管,而是要找出某个“问题”。这种苏格拉底的方式,算是锻炼批判性思考的捷径。

习惯 7:不能放任对话的模糊

这是某个上司跟部下的对话。

上司:“之前那件事,做得怎么样了?”
部下:“啊,那件事啊。目前还可以吧。”
上司:“那就尽快吧。”
部下:“好的。我会再跟您汇报。”

这种对话十分常见。但仔细看来,不觉得有什么异样吗?

当事者对于“之前的事”,认为对方都明白到底是什么事,但他们所说的未必就是同样的事情。

而且部下对工作的进程表示“还可以”,这是说顺利呢,还是说之前顺利但现在遇到了问题所以暂时停滞了呢,也完全不清楚,还需要进一步确认。

上司说“尽快”这种时间限制,也没说具体到什么时候。之后部下回答说“会再跟您汇报”,也没提到什么时候,汇报什么内容。

像这样对每句话都进行批判性思考,就会明白“这完全是没意义的”,但平时的对话,很多都像这样,虽然逻辑不通,但居然都能沟通下去。

如果对这种模糊的话语放任不管,到了关键的时候,自然就会出现“进展不顺畅”的结果。

第3章 逻辑性展开 易于理解的表达方式

告别没有说服力的自己

职场上所讲的话,基本要满足如下四个要素:

  • 在说什么(主题·论点)
  • 想说什么(结论·内容)
  • 这么说的理由是什么(证据)
  • 必须要做的是什么(行动)

说服力工具:

  • 逻辑上是不是有漏洞(广度)
    要确认自己想要表达的“事实和信息”是否有遗漏和重复,是不是只对自己有利的“事实和信息”。
    也就是说,要确认证据逻辑范围是否够广。

  • 逻辑是否挖得够深(深度)
    【作为论题的主题】【作为结论的关键信息】【作为证据的事实和信息】,分别都要进行深刻洞察,发掘出“so what?所以呢?”

  • 逻辑是否讲得通(跳跃)
    一眼看上去逻辑是通的,但还要经过深刻洞察发掘“原本是如何的呢”,来俯瞰逻辑的整体。反复进行“然后又如何?so what?为什么是这样?Why so?”来确认逻辑是否有所跳跃。

用金字塔结构展开

金字塔结构是可以让话语变得有说服力的有效工具。

金字塔的好处:1. 以让自己积累的事实和信息,以及表达信息的方法等逻辑结构变得“可视化”。2. 接收信息的一方明确“这个想法是怎么得出来的”,从而更便于理解和接受。

展开金字塔结构的步骤

Step1 决定课题
明确【课题】是关于什么内容的思考。

Step2 考虑逻辑框架

Step3 明确思考
进行“so what(然后如何)?”的深入思考,用信息明示出其意义。

Step4 明确证据
进行“why so(为什么)?”的思考,确认信息的证据。

jinzitapng

金字塔结构的检查要点

  • 结论是否回答了课题
  • 横向呈现 MECE 分析法的关系(没有遗漏和重复)
  • 纵向呈现“然后呢?为什么?”的状态

金字塔结构中的【关键线索(主要证据)】中显示的就是 MECE 的“相互独立,完全穷尽”的关系,这一点很重要。

MECE 是 Mutually Exclusive Collectively Exhaustive 的略称。其意思是“相互独立,完全穷尽”,逻辑思考中,简单把它称为“无遗漏,无重复”。

展开逻辑思考的时候,经常会遇到“要考虑什么,到什么程度为止”的问题,这时可以通过 MECE 方法,就可以实现“既没有遗漏也没有重复”的逻辑思考了。

【课题】和【信息】要从哪里开始思考比较好呢?

可以使用“演绎法”和“归纳法”这两种思考工具。

演绎法:【前提条件(大前提)】→【调研观察(小前提)】→【结论行动】

比如:

雨天电车经常晚点【前提条件(大前提)】
今天从早上开始就下大雨【调研观察(小前提)】
要比平时早出门【结论行动】

归纳法:【多个事实·情况】→【类似的调研观察】→【推论(结论)】

比如:
“便利店的纸杯咖啡很受欢迎”【多个事实·情况】
“其他行业的商店也提供这种咖啡,来吸引客人”【类似的调研观察】
“纸杯咖啡成为了吸引客人的武器”【推论(结论)】

从什么开始说才有说服力

讲话没有表达清楚的几种情况:

  1. 不知道在说什么,不明白说话的“主题”
  2. 最终不知道最想说的“结论”是什么
  3. 不明白说的话是基于什么样的事实和解释的“证据”
  4. 然后,不明白到底想让对方做什么样的“行动”

造成上面这几种情况的原因是:没有根据主题→结论→证据→行动这四个要素的顺序说话。即:就什么内容说话→想说什么→是根据什么证据这么说→想做什么(想让对方做什么)

【表达不好的说话方式】
“为了提高效率,有必要使用云服务。我推荐 D 公司的服务,最近我个
人也在用这个。”
这么说的话,只表达了自己个人在用 D 公司的云服务这一事实。具体
要说什么,结论是什么,听话的对方要做什么,都没有说清楚。

【表达到位的说话方式】
要说的是制作部门共通的云服务导入问题(主题)
我认为 D 公司的服务是最好的(结论)
免费而且容量大,安全性也很高,做备份工作的效率会提高(证据)
可以的话就尽快推进导入准备工作吧(行动)
按照这四个要素的逻辑顺序来说话,“表达方式”和“说服力”就完全不一
样了。

第4章 批判性思维——这个不错哦

针对 Step3 持有只属于自己的意见(这个不错哦)
该怎么做呢

创意思考-等价交换法

具体的思考要按照以下四个步骤进行:

  1. 设定对象主题
  2. 找到可以跟对象进行等价交换(相同性质、作用的事物)的东西
  3. 将等价物放在主题中,然后进行构思
  4. 使用3的构思,放回原主题中进行思考

有朋友拜托你在他的结婚典礼上当二次聚会的主持。怎么办好呢?如果不能让场面活跃起来怎么办呢……

看起来自己做很困难,不知道自己到底要怎么做才好。

运用等价交换法就是:

  1. 当结婚典礼二次聚会的主持(主题)
  2. 草根出题的娱乐节目(等价)
  3. 草根出的题目是不可预测的,非常有趣(构想)
  4. 参加二次聚会的各位来出题,减轻主持的负担,活跃气氛(回到原主
    题的构想)

草根出题的意思是:自己不需要承担所有主持工作,而可以把麦克风轮流递给参加二次聚会的人,让他们出一些带有自我介绍性质的小谜题,这样气氛可以活跃起来,自己也不费力。

头脑风暴

在想点子的时候,大家经常会听到“头脑风暴”这种说法

多个人进行头脑风暴,就会得到很多角度的看法和主意

人在没有框架束缚的自由状态下,反而无法进行自由的构想,这是一种矛盾的情况。

例如,经营杂粮点心的糕点企业经营者们说“为了开拓新视野,你们说什么都可以,自由地去想点子出来”的话,会产生什么效果呢?虽然说是自由的,但是范围太宽泛了,反而什么都想不出来。

那么“你们想一些能让大人也愿意吃的杂粮点心品种”这个问题会带来什么效果呢?“适合喝酒时吃的成年人点心”以及“能成为收藏品的附赠礼物的杂粮点心”等主意就会层出不穷。

这就是所谓的在什么都没有的“自由”状态下思考,还不如在独创的、具体的“问题框架”中进行头脑风暴,更加能促进想法,实现真正的自由思考。

进行头脑风暴时,要遵守如下的 5 个规则,这样更容易产生批判性的构想。

  • 设定合适问题(促进思考的新箱子)
  • 无论什么样的想法和点子,都不要予以批判,这样是不会得到结论的
    (禁止批判)
  • 哪怕是粗略的构想也请自由发挥(自由奔放)
  • 比起完成度和质量来说,更要重视数量(量大于质)
  • 用想出的点子来进行下一步构思(发展性展开)

然后,最终跟头脑风暴的目的和主题进行对照,将“可以用”的想法进行“具体探讨”。

打破思维定式的“六顶思考帽”思考法。

  1. 白帽【客观的思考】从数字、数据和可信的信息出发进行思考
  2. 红帽【感性的思考】用感情、感觉和直觉进行思考
  3. 黑帽【否定的思考】从课题、风险和损失等方面进行思考
  4. 黄帽【肯定的思考】从价值和利益等方面进行思考
  5. 绿帽【创造性思考】从创新的、之前未出现过的方面进行思考
  6. 蓝帽【过程管理思考】从整体的可实现性进行思考

第5章 用批判性思维 和逻辑思维实现全新的飞跃

“脚本法”就是预测未来将要实践的事情“发展顺利会怎样”“发展不顺利会怎样”,然后针对各个局面的“对策”准备好脚本。
实行脚本法的步骤:

  1. 实行计划的时候至少要做 2 个版本的脚本
  • A 进展顺利的情况
  • B 进展不顺利的情况
  1. 对可能会发生的情况预想对策
    • A 进展顺利的情况的对策
    • B 进展不顺利的情况的对策
  2. 预想到紧急度和重要度
    x轴为紧急度,y轴为重要度。分为四个象限:重要且紧急,重要不紧急,紧急不重要,不重要不紧急
    将想好的对策按照紧急度和重要度作矩阵对照,从紧急且重要的工作着手

大家都说这个很重要,所以要做。大家都说这个好,所以要做。
实际上“批判性思考”和“逻辑思考”,会将我们从那些不需要做的事情中解放出来,明确我们“真正要做的事情”。

如何开发一个node.js命令行(cli)工具

背景

在日常的开发中,有以下三种开发模式

  1. 使用部门的 cli 新建一个空的目录,这个目录有可能是在某个独立的 git 代码仓库,也有可能是某个代码仓库的一个子目录。越来越多的微前端的出现,很多项目都被统一收口到一个代码仓库的情况越来越多。
  2. 使用一个活动平台进行拖拽组件的方式来搭建页面,活动平台上有很多通用组件,可以配置一些属性值来满足业务需求,如果通用组件不满足需求,有两种解决方案,一种是迭代开发现有的通用组件(通常是通用组件开发者自己迭代,很少会有多人协作开发通用组件的情况)。一种是新开发一个组件,然后上传发布到活动平台以供业务方使用。实际情况下,第二种情况较多。
  3. 活动平台支持代码块的模式,即活动平台有一个组件叫做代码快。前端可以上传代码到代码块里面,代码块会自动解析代码并执行 js 和渲染 dom。开发方式是:使用方法1新建一个目录,开发完 build 之后将生成的 dist 里的文件上传到活动平台代码块组件。

在第二种开发模式中进行新组件开发的时候,活动平台会维护一个当前组件的版本号,通过进行版本的管理来维护组件的稳定性,如果 publish 之后不手动更新版本号,那么旧的业务页面还是使用的旧版本组件。自己开发中会遇到一个痛点,开发完成 publish 之后,需要每次都手动打开活动平台组件版本管理页面去搜索我的组件(页面有点难用),然后修改对应的版本号,这样的话,其实是非常繁琐的。因此考虑将【修改版本】这一动作抽成一个自动化的方式来做,更加标准化,流程化。

登录校验问题

修改组件版本要请求活动平台接口,接口有登录限制,如果是在浏览器中,会默认带上 cookie 。但是使用三方工具代码的方式进行请求,是拿不到 cookie 的。怎么解决 cookie 的问题?

经过一番调研,平台接口里会有一个 auth 的东西。只要 request header 里正确的设置 auth token,就可以解决登录的问题,即后端接口如果判断 header 里面有正确的 auth token 就可以拿到用户信息而不去进行登录校验。这样就可以解决接口的登录校验问题。
目前的解决方案是 token 是传递的我写死的一个值,这样做的有两点风险,第一点是由于 token 是硬编码的我自己的 token。不同人用这个工具的时候如果产生的错误,不知道是谁导致的,因为从后端接口来看都是我请求的。第二点是安全性问题,如果别人查看代码知道了我的 token 就可能做一些危险操作。
目前想到的解决方案是用户第一次使用的时候,允许用户在命令行中定义一个全局变量也就是自己的token,以后的操作直接读取这个变量就OK。

技术选型

自动化工具怎么做,技术方案怎么选型?

技术方案选型最初想做一个后端服务,提供一个修改版本的接口,这个接口是封装了活动平台的接口。便于在不同地方使用。然后在项目代码里面新建一个 changeVersion.js 文件,在 package.json 的 scripts 字段里面添加 "changeVersion": "node ./changeVersion.js"。然后每次仅需执行 npm run changeVersion 即可。这样的缺点是每次项目都要新建这个文件,并且修改 pkg 文件。比较麻烦。

后来发现一个更好的方式就是开发一个 node cli 工具,不需要每个项目都把 changeVersion.js,只需全局安装,以后所有项目都可以使用。

node cli 工具

CLI 全称 Command Line Interface 是一种通过命令行来交互的工具或者说应用。比如我们使用的 npm,vue-cli,webpack,create-react-app等。
cli 有很多应用场景,本质上是通过命令行交互的方式在本地电脑运行代码,执行一些任务。比如以下

  1. 快速生成应用模板,如 vue-cli,create-react-app
  2. 启动服务 or 编译,如 webpack
  3. 代码校验,格式化如 eslint
  4. 其他自定义功能,如生成文件,执行某些请求等

1. 新建 npm

popeye(大力水手) 是项目名字

$ mkdir popeye
$ cd popeye
$ npm init -y

Wrote to /popeye/package.json:

{
  "name": "popeye",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

2. 创建可执行文件

在 popeye 根目录新建一个文件 bin/index.js

#!/usr/bin/env node

#!/usr/bin/env

#! 表示要指定脚本文件的解析程序
/usr/bin/env 表示要去哪里找解析程序
node 是解析程序的名字

并且在 package.json 中添加配置项:

{
  "bin": {
    "popeye": "bin/index.js"
  }
}

指定在 cli 中的名称为 popeye,可执行文件为 bin/index.js。通过 npm install -g 安装这个模块。就可以在任何项目的命令行中执行 popeye 命令了。安装之后在 Mac 可以通过查看 /usr/local/lib/node_modules 路径看到全局安装的模块了。如果开发或者执行遇到什么问题,可以优先查看这个文件安装的对不对。

3. 命令行参数

通常命令行工具都会有很多功能,每个功能通过不同的命令来调用,并且每个功能还会接收不同的参数,比如常用的 vue-cli,在终端输入 vue 并回车就可以看到 vue-cli 所支持的所有命令及其可选参数:

$ vue
Usage: vue <command> [options]

Options:
  -V, --version                              output the version number
  -h, --help                                 output usage information

Commands:
  create [options] <app-name>                create a new project powered by vue-cli-service
  add [options] <plugin> [pluginOptions]     install a plugin and invoke its generator in an already created project
  invoke [options] <plugin> [pluginOptions]  invoke the generator of a plugin in an already created project
  inspect [options] [paths...]               inspect the webpack config in a project with vue-cli-service
  serve [options] [entry]                    serve a .js or .vue file in development mode with zero config
  build [options] [entry]                    build a .js or .vue file in production mode with zero config
  ui [options]                               start and open the vue-cli ui
  init [options] <template> <app-name>       generate a project from a remote template (legacy API, requires @vue/cli-init)
  config [options] [value]                   inspect and modify the config
  outdated [options]                         (experimental) check for outdated vue cli service / plugins
  upgrade [options] [plugin-name]            (experimental) upgrade vue cli service / plugins
  info                                       print debugging information about your environment

  Run vue <command> --help for detailed usage of given command.

process.argv

在 node.js 中可以使用 process.argv 数组来获取命令行输入的参数:

// bin/index.js
console.log(process.argv);
$ cli-test one two=three four
['/usr/local/bin/node', '/path/to/cli-test', 'one', 'two=three', 'four']

但是 process.argv 拿到的内容不方便区分参数和参数的值。这里可以用一个第三方模块 yargs-parser。

const yArgsParser = require("yargs-parser");

// 这是命令
const command = process.argv[2];
console.log(command);
// one

// 这是参数
const args = yArgsParser(process.argv.slice(3));
console.log(args);
// args 是一个对象:
// { two: 'three', four: true }

如果要实现帮助信息,就可以

const chalk = require('chalk');

const showInfo = params => {
  console.log(chalk.grey(params));
};

if (command && command !== '--help') {
  if (command === 'changeVersion') {
    // 可以使用 axios 等请求库 执行业务操作
    console.log('修改版本')
  }
} else {
  showInfo(`
  Usage: popeye <command> [options]
     changeVersion

     Commands:
      changeVersion [options]                   change component version of http://xxx.com/

     Options:
      --name                                    component name
      --beta                                    component rc_version
      --prod                                    component version
      --help                                    see help
     For Example: popeye changeVersion --name project-test1 --beta 0.0.1 --prod 0.0.2
  `)
}

4. 实现业务逻辑

在上面的代码块判断 changeVersion 的地方即可实现业务逻辑

通过以上四步,即可完成一个简单的 cli 的开发。当然如果想要更好的开发一个复杂的 cli 就需要引入必不可少的工具来提高开发效率和体验了。

相关工具

commander.js

对于命令和参数的处理,包括一些命令行本身的一些操作的处理比较麻烦,在此推荐使用 Commander.js 工具。Commander.js 是一个完整的 node.js 命令行解决方案。
包括自动生成帮助信息,以简洁的方式添加命令参数和逻辑判断分支。
可以看到 vue-cli 也是用的 Commander.js 来实现的。

chalk

https://github.com/chalk/
可以定义字符串样式,美化命令行的输出

比如:chalk.grey('这是灰色的字体')

node-semver

版本号解析工具
https://github.com/npm/node-semver
比如通过获取本地环境的 node 版本和 package 要求的版本去做对比,看是否满足要求

const semver = require("semver");

const requiredVersion = require("../package.json").engines.node;
const nodeVersion = process.version;

if (!semver.satisfies(nodeVersion, requiredVersion)) {
  console.log("node.js 版本必须满足 " + requiredVersion + " 才能运行本工具");
  return;
}

Popeye Todo

  • 使用 Commander.js 重构
  • 仅仅是修改版本这个功能很单薄,后续需要结合整个开发,发布流程,添加更多的自动化的功能
  • 目前的修改版本命令是「popeye changeVersion --name project-test1 --beta 0.0.1 --prod 0.0.2」。必须传入测试版本(beta)和线上版本(prod),但大多数情况是在修改 beta 版本,后续将支持仅提供一个参数的功能。
  • 目前需要手动输入项目名字,后续考虑变成交互式或环境变量的方式

《复活》读书笔记

导读笔记

托尔斯泰的朋友,法官柯尼,讲给他一件真实的事:
有个上流社会的年轻人,在充当法庭陪审员时,认出了一个被控犯盗窃罪的妓女就是他亲戚家的养女。他曾诱奸这个姑娘,使她怀了孕。收养她的女主人知道这事后,把她赶出家门。姑娘生下孩子后把他送给育婴堂,她从此逐渐堕落,最后落入下等妓院,当了妓女。
这个年轻的陪审员认出她就是他糟蹋过的姑娘,于是找到法院检察官柯尼,告诉他自己想同这个妓女结婚以赎罪。柯尼非常同情这个年轻人,但劝他不要走这一步。年轻人很固执,不肯放弃自己的主意。没想到婚礼前不久,那妓女竟得伤寒症死了。这就是《复活》产生的渊源。
托尔斯泰写《复活》前后花了十年(1889-1899)时间,当时他已进入老年,世界观已发生激变,他彻底否定了沙皇制度,而俄国社会当时正处于“山雨欲来风满楼”的大革命前夕。

托尔斯泰没有将男主人公最终结为眷属作为结局,因为这不符合生活的真实,而纯属个人的愿望。男主人公不可能使女主人公在精神上复活,而精神上复活的女主人公也不可能跟他结婚,共同生活。这才是生活的真实。女主人公卡秋莎·玛丝洛娃是一个平民女性,是俄罗斯人民中的普遍一员。她身上反映了下层人民的朴素,纯洁和善良,也表现出不合理社会对她的肆意蹂躏和残酷**。她的一部血泪史是对**阶级最有力的控诉和最无情的鞭挞。

托尔斯泰借助冤案,批判了荒唐的法庭,黑暗的监狱,苦难的农村和腐朽的上流社会,最后是黑幕重重的政府机构。

在后半段,玛丝洛娃原谅了聂赫留朵夫之后,对他并非不可能重新产生爱情。但是,在经历了血泪斑斑的摧残之后,要玛丝洛娃再像以前那样爱他,这也是不可能的。她的爱已大大褪色,但也可以说是升华了,玛丝洛娃对聂赫留朵夫的爱已没有少女时代的狂热,也没有理想化的成分,她更不想同他结合。含苞欲放的爱情的芳香已经消失,鲜艳娇嫩的花瓣已经褪色,有些东西失去了就永不复返,生活就是这样残酷。当然这些只是玛丝洛娃拒绝聂赫留朵夫的部分原因。她对这事是经过仔细权衡的:她要是同意结婚,势必严重影响聂赫留朵夫的前程,他在上流社会将很难生活。这在她是办不到的。宁可忍受他人对自己的伤害,自己决不伤害他人,这事托尔斯泰笔下正面主人公的为人之道。

《复活》是一副触目惊心的人民受难图。作者提出了尖锐的问题,人民的苦难是怎样造成的,谁是罪魁祸首?人民怎样才能过上好日子。作者发现,罪为祸首就是沙皇制度和官方教会。沙皇专制和官方教会完全建筑在对人民的压迫和欺骗之上。
《复活》结尾引用了大量《圣经》章节,这反应托尔斯泰晚年一方面彻底否定沙皇制度,同上流社会决裂;另一方面,他在精神生活上极端苦闷,找不到一条出路,在无可奈何的情况下不得不从他长期矛盾的宗教观中寻求慰藉。(译者草婴说)这是托尔斯泰--十九世纪最复杂的伟人--的大悲剧。
(草婴认为 托尔斯泰晚年苦闷的精神生活在宗教中寻求慰藉 是一个悲剧。我对草婴的这种观点持保留意见。)

正文笔记

尽管好几十万人聚集在一个小块地方,竭力把土地糟蹋得面目全非,尽管他们肆意把石头砸进地里,不让花草树木生长,尽管他们锄尽刚出土的小草,把煤炭和石油烧的烟雾腾腾,尽管他们滥伐树木,驱逐鸟兽,在城市里,春天毕竟还是春天,阳光和煦,青草又到处生长,不仅在林荫道上,而且在石板缝里。凡事青草没有锄尽的地方,都一篇翠绿,生意盎然。桦树、杨树和稠李纷纷抽出芬芳的黏稠稠的嫩叶,菩提树上鼓起一个个胀裂的新芽。寒鸦、麻雀和鸽子感到春天已经来临,都在欢乐地筑巢。都连苍蝇都被阳光照暖,在墙角下嘤嘤嗡嗡地*动。花草树木也好,鸟雀昆虫也好,儿童也好,全都欢欢喜喜,生气蓬勃。唯独成年人却一直在自欺欺人,折磨自己,也折磨别人。他们认为神圣而重要的,不是这春色迷人的早晨,不是上帝为造福终生所创造的人间的美,那种使万物趋向和平,协调、互爱的美;他们认为神圣而重要的,是他们自己发明的**别人的种种手段。

那是一个纯洁无邪的青年同一个纯洁无邪的少女相互吸引的特殊关系。只要卡秋莎一走进房间,或者聂赫留朵夫老远看见她的白围裙,世间万物在他的眼里就仿佛变得光辉灿烂,一切事情就变得更有趣,更逗人喜欢,更有意思,生活也更加充满欢乐。她也有同样的感觉。不过,卡秋莎在场或者同他接近时有这样的作用,聂赫留朵夫只要一想到世界上有一个卡秋莎,就会产生这样的感觉。而对卡秋莎来说,只要想到聂赫留朵夫,也会产生同样的感觉。聂赫留朵夫收到母亲令人不快的信也罢,论文写的不顺利也罢,或者心头起了青年人莫名的惆怅也罢,只要一想到世界上有一个卡秋莎,他可以看见她,一切烦恼就都烟消云散了。

那时他是个正派青年,富有自我牺牲精神,乐意为一切高尚事业献身;如今他可成了一个彻头彻尾的利己主义者,迷恋酒色,乐享成癖。那时,上帝创造的世界在他看来是个谜,他兴致勃勃地企图解开这个谜;现在呢,生活中的一切事情都简单明了,都是由他所处的生活环境安排的。那时接触大自然,接触前人--在他以前的生活、**和感觉过的哲学家、诗人--是最重要的。现在呢,重要的是社会制度和跟同事们的交际活动。那时,他觉得女人是神秘而迷人的,正因为神秘就更加迷人;现在呢,女人,除了亲人和朋友的妻子,他们的作用都很清楚,女人是他领略过的最好的玩乐用具。那时他不需要钱,母亲给他的钱连三分之一都花不掉,他可以放弃父亲名下的地产,分赠给他的佃户;现在呢,母亲按月给他一千五百卢布,他还不够用,为了钱他给母亲拌过嘴。那时,他认为精神的生命才是真正的“我”;现在呢,他以为精神充沛的强壮的兽性的“我”才是他自己。

他身上发生的各种可怕的变化,只是由于他不再坚持自己的信念而相信别人的理论。他不再坚持自己的信念而相信别人的理论,因为只要坚持自己的信念,日子就不太好过;只要坚持自己的信念,处理一切事情就不利于追求轻浮享乐的兽性的我,而总会同它抵触。相信别人的理论,就根本无需处理什么,一切问题都迎刃而解,而且总是同精神的我抵触而有利于兽性的“我”。此外,他要是坚持自己的信念,总会遭到人家的谴责;他要是相信别人的理论,就会获得周围人们的赞扬。

譬如,聂赫留朵夫思索上帝、真理、财富、贫穷等问题,阅读有关书籍并同人家讨论这些事,人家就会觉得不合时宜,简直有点可笑,他的母亲和姑妈就会好意地取笑他,戏称他是我们亲爱的哲学家。但他看爱情小说,讲淫秽笑话,到法国剧院看轻松喜剧,并且津津乐道,大家就称赞他鼓励他。他省吃俭用,穿旧大衣,不喝酒,大家就觉得他脾气古怪,有意标新立异。他在打猎上挥金如土,在布置书放上穷奢极侈,大家就吹捧他风雅脱俗,还送给他贵重礼品。他原来童真无瑕,并且想保持到结婚,但他的亲人都为他担忧,以为他有病,后来他母亲知道他从同事手里夺了一个法国女人,成了真正的男子汉,不仅不难过,反而感到高兴。

聂赫留朵夫期初做过反抗,但十分困难,因为凡是他凭自己的信念认为是好的,别人却认为是坏的;反之,他凭自己的信念认为是坏的,别人却认为是好的。最后聂赫留朵夫屈服了,不再坚持自己的信念而相信别人的话。开头这样的自我否定是很不愉快的,但这种不愉快的感觉并没有持续多久。就在这时聂赫留朵夫开始吸烟喝酒,他不再感到不愉快,甚至觉得轻松自在了。

聂赫留朵夫像所有人那样,身上同时存在着两个人。一个是精神的人,他所追求的那种对人、对己统一的幸福;一个是兽性的人,他一味追求个人幸福,并且为了个人幸福不惜牺牲全人类的幸福。

这个小伙子分明不是什么坏蛋,而是一个极其普通的人。这一点大家都很清楚。他所以落到如此,无非因为他处在会产生这种人的环境里。因此,事情很清楚,要小伙子不至于变成这种人,必须努力消灭产生这种不幸的人的环境。
可我们是怎么办的呢?我们抓住这样一个偶然落到我们手里的小伙子,明明知道还有成千上万这样的人逍遥在社会上,却把他关进监牢,使他终日无所事事,或者做些有害的无聊劳动,结交一批像他一样的生活上软弱无能因而迷途的人,然后由国库出钱把他夹在一批腐化堕落分子中间。
我们不但没有采取任何措施,来消除产生这种人的环境,还一味鼓励产生这种人的机构,也就是工厂、工场、作坊、小饭馆、酒店、妓院。我们不仅不取消这类机构,还认为它们是必不可少的,对它们进行鼓励和调节。
我们用这种方式培养出来的人不止一个,而是千百万个。然后我们逮捕了一个,就自以为办了一件大事,保障了自己的安全,再也不用做什么事了,我们就把他从莫斯科省送到伊尔库茨克省。聂赫留朵夫坐在上校旁边,听着辩护人、检察官和庭长的不同音调,看着他们自以为是的姿态,情绪激动地思索着。“嘿,演这样的戏得耗费多少精力呀。”聂赫留朵夫环顾着这个大法庭,望望那些画像,灯盏、圆椅、军服以及厚墙和窗子,继续想。他想到这座宏伟的建筑物,还有那更加宏伟的整个机构,以及有全体官僚、文书、看守、差役等组成的宏大的队伍。这种队伍不仅这里有,而且俄国各地都有,他们领取薪金,就是为了表演这种无聊的闹剧。“要是我们用这种精力的百分之一来帮助那些被抛弃的人,那将会出现怎样的局面呢?可现在我们只把他们看作可以为我们的安宁和舒适服务的劳动力。其实,当他由于家境贫穷从乡下来到城里时,只要有一个人怜悯他,周济他就好了。”聂赫留朵夫望着小伙子受惊的病容,暗自想着:“或者,当他进了城,在厂里做完十二个小时工作后,被年纪大些的伙伴拉到小酒店里去时,要是有人对他说,‘别去,凡尼亚,到那里去不好,’小伙子也就不会去,不会堕落,不会做什么坏事了”。
“但自从他在城里过着牛马般的学徒生活,为了防止生虱子而剃光头发,终日替师傅们东门西跑买东西以来,从来没有一个人怜悯过他。正好相反,自从他住到城里以来,从师傅和伙伴嘴里听到的,无外乎‘谁会喝酒,谁会骂人,谁会打架,谁会放荡,谁就是好汉’这样的话”

“后来,有碍健康的繁重劳动,酗酒、放荡残害了他的身心,他就变得头脑愚钝,举动轻狂,丧魂落魄,漫无目的地在城里乱闯。而我们这些丰衣足食、生活富裕、受过教育的人,非但不去设法消除促使这个小伙子堕落的原因,还要惩罚他,想以此来纠正这类事情”

“太可怕了,这种情形主要是由于残酷还是荒谬,谁也说不上来。不过,是残酷还是荒谬都已经达到了登峰造极的地步。”

人人活着都为了自己,为了自己的欢乐,一切有关上帝和善的话都是骗人的。如果她心里发生疑问:为什么人间安排的如此糟糕,为什么人们互相欺凌,受苦受难,那么最好就是不要去想他。如果她感到苦闷,那就抽抽烟,喝喝酒,同男人谈谈爱情,这样也就会把苦闷忘掉。

玛丝洛娃的世界观就是:凡是男人,不论年老年轻,不论是中学生还是将军,受过教育的还是没受过教育的,无一例外,个个认为同富有魅力的女人性交就是人生最大的乐事。因此,凡是男人,表面上都装作在为别的事忙碌,其实都一味渴望着这件事。她是一个富有魅力的女人,可以满足,也可以不满足他们的这种欲望,因此她是一个重要的不可或缺的人物。她过去的生活和现在的生活全都证实这种观点是正确的。

玛丝洛娃就是这样看待人生的。从这样的人身观出发,她不仅不是一个卑贱的人,而且是一个很重要的人。玛丝洛娃把这样的人生观看得高于一切。她不能不珍重它,因为一旦抛弃这样的人生观,她就会丧失生活在人间的意义。为了不丧失自己的生活的意义,她本能的依附于同样人生观的人。她发觉聂赫留朵夫要把她拉到另一个世界去,就加以抵制,因为预见到在那个世界里她将丧失这样的生活地位,从而也丧失自信心和自尊心。也就因为这样的缘故,她竭力避免回忆年轻时的事和她同聂赫留朵夫的关系。那些往事的回忆同她现在的世界格格不入,因此已从她的记忆里抹掉,或者说原封不动地深埋在记忆里,而且封存的那么严密。

有一种迷信流传很广,认为每一个人都有固定的天性,有的善良,有的凶恶,有的聪明,有的愚笨,有的热情,有的冷漠,等等。其实人并不是这样的。我们可以说,有些人善良的时候多余凶恶的时候,聪明的时候多与愚笨的时候,热情的时候多于冷漠的时候,或者正好相反。但要是我们说一个人善良或者聪明,说另一个人凶恶或愚笨,那就不对了。可我们往往是这样区分人的。这是不符合实际情况的。人好像河流,河水都一样,到处相同。但每一条河都是有的地方河身狭窄,水流湍急,有的地方河身宽阔,水流缓慢,有的地方河水清澈,有的地方河水浑浊,有的地方河水冰凉,有的地方河水温暖。人也是这样。每一个人都具有各种人性的胚胎,有时表现着一种人性,有时表现那一种人性,他常常变得面目全非,但其实还是他本人。有些人身上的变化特别厉害。

总的来说,久别的彼得堡照例对他起了刺激肉体和麻痹精神的作用:一切都是那么清洁、方便、舒适,主要是人们在道德上无所追求,过日子就特别轻松。

聂赫留朵夫左思右想,得出明确的结论:所有这些人被捕、被关或者被流放,绝对不是因为他们有什么不义行为,或者有犯法行为,而只是因为他们妨碍官僚和富人据有他们从人们头上搜刮来的财富。

梭罗在美国还存在奴隶制的时候说过,在一个奴隶制合法化和得到庇护的国家里,正直公民的唯一出路就是监狱。

玛丝洛娃仍热认为并竭力要自己相信,正像第二次见面时她对他说的那样,她没有原谅他,她恨他。其实她早已重新爱着他了,而且爱的那么深,凡是他要她做的,她都不由自主地去做。她戒了烟酒,不再卖弄风情,还到医院里做杂物工。她所以这样做,就是因为这是他的愿望。每次他提出要同她结婚,她总是断然拒绝,不肯接受这样的牺牲。这固然是由于她有一次高傲地对她说过这话,不愿再改口,但主要却是由于她知道,同她结婚,他会遭遇不幸。她下定决心不愿接受他的牺牲,但一想到他瞧不起她,认为她还是原来那样的人,而没有看到她精神上的变化,她觉得十分委屈。他现在可能认为她在医院里做了什么丑事。这个念头比她听到最后判决服苦役的消息还要使她伤心。

社会对他们所犯的罪要比他们对社会所犯的罪重的多

聂赫留朵夫想从书本上找到问题的答案,他就把凡是同这问题有关的书都买来了。他买了龙勃卢梭,嘉罗法洛、费利、李斯特、摩德斯莱、塔尔得的著作,用心阅读,但阅读越失望,有些人研究学问,目的不是在学术方面做点事,例如协作、辩论、教书等等,而是在寻找一些简单的生活问题的答案,但结果往往失望。聂赫留朵夫现在碰到的就是这种情况:学术给他解答了成千个同刑法有关的深奥问题,可就是没有解答他的问题。他提出的问题很简单。他问:为什么有些人可以把另一些人关起来,加以虐待,鞭挞,流放、杀害,而他们自己其实跟被虐待、鞭挞、杀害的人毫无区别?他们凭什么可以这样胡作非为?回答他的却是各种各样的讨论:人有没有表达自己意志的自由?能不能用头盖骨测定法来判断一个人是不是属于“犯罪型”?遗传在犯罪中起什么作用?有没有天生道德败坏的人?究竟什么是道德?什么是疯狂?什么是退化?什么是气质?气候、事物、愚昧、模仿、催眠、情欲对犯罪有什么影响?什么是社会?社会有哪些责任?等等

(p367)最最可怕的是他被害死了,却没有人知道到底是谁把他害死的。但他确实被害死了。他也同别的犯人一样,是遵照马斯连尼科夫的命令被押解出来的。至于马斯连尼科夫呢,公事公办,在印好的公文纸上用他难看的花体字签上名,他当然不会认为自己该负责人。那个专门检查犯人身体的监狱医生更不会认为自己该负责任。他认真执行自己的职责,把体弱的犯人剔出,绝没有料到天气会这么热,犯人被押解出来又那么迟,而且被迫那么紧紧地挤在一起。那么典狱长呢?典狱长只不过执行命令,在某一天把多少男女苦役犯和流放犯送上路罢了。押解官同样没有责任,因为他的职责只是根据名册点收若干犯人,然后到某地再把他们点交出去。他照例根据规定把那批犯人押解上路,可怎么也没有料到,像聂赫留朵夫看到的那两个身强力壮的人,竟会支持不住而死去。谁也没有责任,可是人却给活活害死,而且归根结底是被那些对这些人的死毫无责任的人害死的。

“所以会有这样的事。”聂赫留朵夫想,“就因为所有这些人--省长,典狱长,警官,警察--都认为世界上有这样一种制度,根据这种制度,人与人之间无须维持正常的关系。说实话,所有这些人,马斯连尼科夫也好,典狱长也好,押解官也好,要是他们不做省长,典狱长和军官,就会反复思考二十次:这样炎热的天气叫人挤在一起上路,行吗?即使上路,中途也会休息二十次。要是看见有人体力不支,呼吸急促,也会把他从队伍里带出来,让他到阴凉的地方喝点水,休息一下。如果出了不幸的事,也会对人表示同情。他们所以没有这样做,并且不让别人这样做,无非因为他们没有把这些人当做人看待,也没有看到他们对这些人应付的责任。他们总是把官职和规章制度看得高于人与人之间的关系和人对人的义务。问题的症结就在这里。”聂赫留朵夫想,“只要承认天下还有比爱人之心更重要的东西,哪怕承认一小时,或者只在某一特殊场合承认,那就没有一种损人的罪行干不出来,而在干的时候还不认为自己是在犯罪。”

所有那些人,典狱长也好,押解官也好,其他官员也好,原来都是温和善良的,他们之所以变得凶恶,就因为他们做了官。

这些人各个都是铁石心肠,对别人的苦难漠不关心,无非是因为他们做了官。他们一旦做了官,心里就渗不进爱人的感情,就像石砌的地面渗不进雨水一样。聂赫留朵夫瞧着山沟两旁杂色石头砌成的斜坡想。他看见雨水没有渗进地里面,却汇成一道道水流淌下来。也许山沟两旁的斜坡非用石头砌不可,但这些土地本来可以像坡顶上土地那样,生长庄家,青草、灌木、树木,现在却寸草不生。这景象看着让人心痛。人也是这样,典狱长,警察也许都非有不可,但看到有人丧失人的主要本性,也就是人与人之间的友爱和怜悯,那真是可怕。

如果有人提出一个心理学问题:怎样才能使我们这个时代的人,基督徒,讲人道的人,一般善良的人,干出罪孽深重的事而又不觉得自己在犯罪?那么,答案只有一个:就是必须维持现有秩序,必须让那些人当省长、典狱长、军官和警察。也就是说,第一,要让他们相信世界上有一种工作,叫做国家公职,从事这种工作可以把人当做物品看待,不需要人与人之间的手足情谊;第二,要那些国家公职人员结成一帮,这样不论他们对待人的后果怎样,都无须又某一个人单独承担责任。没有这些条件。就不会干出像我今天所看到的那种可怕的事情来。问题的症结在于,人们认为世界上有一种规矩,根据这种规矩人对待人不需要有爱心,砍树也罢,造砖也罢,打铁也罢,都不需要爱心,但人对待人却不能没有爱心,就像对待蜜蜂不能不多加小心一样。这是由蜜蜂的本性决定的。如果你对待蜜蜂不多加小心,那你就会既伤害蜜蜂也伤害自己。对待人也是这样,而且不能不这样,因为人与人之间的友爱是人类生活的基本准则。的确,人不能像强迫自己工作那样强迫自己去爱,但也不能因此得出结论说,对待人可以没有爱心,特别是对人有多求的时候。

要克服使人们饱受苦难的骇人听闻的罪恶,唯一可靠的办法,就是在上帝面前承认自己总是有罪的,因此即不该惩罚别人,也无法纠正别人。现在他才明白,他在各地监狱里亲眼看见的一切骇人听闻的罪恶,以及制造这种罪恶的人所表现的泰然自若的态度,都是由于他们想做一件做不到的事:他们自己有罪,却想去纠正罪恶。腐化堕落的人想去纠正腐化堕落的人,并想用生硬的方法达到目的,结果是缺钱而贪财的人就以这种无理惩罚人和纠正人作为职业,自己却极度腐化堕落,同时又不断腐蚀受尽折磨的人。现在他才明白,他亲眼看见的一切惨事是怎么产生的,怎样才能加以消灭。他找不到答案,原来就是基督对彼得说的那段话:要永远饶恕一切人,要无数次地饶恕人,因为世界上没有一个无罪的人,可以惩罚或纠正别人。

聂赫留朵夫希望在这同一本《福音书》里找到能证实这种**的文字,就把它从头读起。他读着一向使他感动的《登山训众》,今天才第一次看出这段,训诫并非抽象的美好**,提出的大部分要求也并不过分而难以实现,而是简单明了切实可行的戒律。一旦实行这些戒律(而这是完全办得到的),人类社会就能确立崭新的秩序,到那时不仅使聂赫留朵夫极其愤慨的种种暴行都会自然消灭,而且人类至高无上的幸福--在地上建立天国--也能实现。

那些戒律总共有5条。

第一条戒律(《马太福音》第五章第二十一节到第二十六节)就是人不仅不可杀人,而且不可对弟兄动怒,不可轻视别人,骂别人是“废物”。倘若同人家发生争吵,就应该在向上帝奉献礼物之前,也就是祈祷以前同他和好。

第二条戒律(《马太福音》第五章第二十七节到第三十二节)就是人不仅不可奸淫,而且不可贪恋女色。一旦同一个妇女结成夫妇,就要对她永不变心。

第三条戒律(《马太福音》第五章第三十三节到第三十七节)就是人在允诺什么的时候不可起誓。

第四条戒律(《马太福音》第五章第三十八节到第四十二节)就是人不仅不可以以眼还眼,而且当有人打你的右脸时,连左脸也转过来由他打。要宽恕别人对你的欺侮,温顺地加以忍受。无论人家求你什么,都不可拒绝。

第五条戒律(《马太福音》第五章第四十三节到第四十八节)就是人不仅不可恨仇敌,打仇敌,而且要爱仇敌,帮助仇敌,为仇敌效劳

他不仅领悟和相信,人们履行这些戒律就能得到至高无上的幸福,只要人人履行这些戒律,不必做其他的,人生唯一合理的意义就在于此。
我们活在世界上抱有一种荒谬的信念,以为我们自己就是生活的主人,人生在世就是为了享乐。这显然是荒谬的。要知道,既然我们被派到世界上来,那是出于某人的意志,为了达到某种目的。可是我们断定我们活着只是为了自己的快乐。显然,我们不会有好下场。主人的意志就表现在那些戒律里。只要人们执行那些戒律,人间就会建立起天堂,人们就能获得至高无上的幸福。

《公正》读书笔记(第1章:做正当之事)

本书为迈克尔·桑德尔所著的《公正》,ISBN: 9787508636238

书的简介

当今社会充斥着关于对错、公正与不公正的争论。有些人认为烟草业发展能促进经济繁荣,而另一些人认为公共健康比财政收入重要的多。有些人认为对恐怖分子严刑逼供是保护公众安全的必要手段,另一些人认为这违反了现代社会的伦理,是一种道德上的恶。
桑德尔将这些对公正持有的不用的观念总结为三种:

  1. 追求福利最大化的功利主义
  2. 尊重个体权利的自由至上主义
  3. 提倡公民德性和共同善的政治观

三种观念都有优势和潜在的问题。但目标不是用什么理论说服别人,而是把他们锻炼成有头脑的公民。阅读本书最大的收获就是锻炼对自己的固定思维深入反思的能力,在内心的解放之路上大步前行。

做正当之事

事件:佛罗里达发生飓风,失去22条生命并造成110亿美元的经济损失。并引发了一场关于价格的争论。
停电不能使用冰箱,因此2美元的冰袋卖到10美元。从屋顶清理两颗树要2.3万美元。250美元的发电机变成了2000美元。40美元住宿价格变成了160美元。

反价格欺诈法:为维护市场秩序,禁止价格欺诈行为,促进公平竞争,保护消费者和经营者的合法权益。

观点
经济学家认为:价格由供需关系决定。所以价格高是正当的,这有以下2点好处:

  1. 有利于限制消费者使用这些物品
  2. 有利于刺激别处的供应商给飓风受灾地区提供最急需的物品和服务

价格暴涨是购买者和销售者在他们交换的物品上所同意的价值。也即物品和服务在自由社会中所获得的分配方式。并且公众的愤怒不能成为你干涉自由市场的正当理由。

看起来过分的价格能够刺激供应商生产更多的必需品,所带来的好处远远超过它的危害。把商贩看成魔鬼并不能加快佛罗里达重建的脚本,而让他们自由的开展业务缺可以。

总结以上形成如图表格:

观点 反支持反价格欺诈法方(希望物价暴涨) 支持反价格欺诈法(希望物价平稳)
自由市场的价格由供需关系决定(关于自由) 所以价格高是正当的 正常的自由市场是根据供需关系决定,但紧急状况中被迫购买者是没有自由的,只能被迫购买必需品,这不是一种真正的自由
社会整体福利(关于福利) 刺激人们努力工作供应他人所需的物品,促进了社会整体福利 社会整体福利不是由困难时期索要高价格而真正地达到的,即使高价能促进商品供应,但这一益处会被高价给那些无法支付得起的人们所带来的的负担抵消,比如穷人支付不起住宿会滞留在危险的地方。整体福利的估量必须考虑紧急情况下可能由于价格高买不起生活必需品的人们所遭受的痛苦和磨难
关于德性 关于对价格高的愤怒情绪不能干涉公共政策和法律 贪婪是一种不道德的方式,是一种恶,与公民的德性相冲突。良好的社会应当反对

关于德性涉及一个问题,谁来判断什么是善什么是恶,多元社会公民本身对这些事物存在分歧。所以德性引入到法律会带来一些问题,使人担忧。因此大多数人认为政府在善恶之争中持有中立态度,不应培养良好心态或修正不良品性。

针对这一困境,引出了古代和现代的两种政治思考:

  1. 古代:亚里士多德认为,如果不能决定哪些德性值得尊敬和奖赏,就不能弄明白什么是公正的宪法。很显然,古代的公正理论始于德性
  2. 现代:伊曼纽斯·康德和约翰·罗尔斯认为,界定各种权利的公正原则不依赖特殊的德性和最佳生活方式,一个公正的社会应当尊重每个人选择他自己的关于良善生活观念的自由

观察我们当代政治中关于公正的争论,的确会发现大多数争论都与促进繁荣和尊重个人自由有关。但这些争论的背后经常能看到另一套信念,他们涉及什么样的德性值得尊重和奖赏,以及什么样的生活方式是一个良好社会应当推进的。尽管我们致力于推进繁荣和自由,但不能全然摆脱关于公正的道德评判。

**要看一个社会是否公正,就要看它如何分配我们所看重的物品--收入与财富,义务与权利,权力与机会,公共职务与荣誉等等。**一个公正的社会以正当的方式分配这些物品。它给予每个人应得的东西。当我们追问什么样的人应得什么样的东西以及为何如此时,就需要三种分配方式;福利,自由和德行。

如何针对关于公正的争论进行独立思考呢?

  1. 首先对一件事怀有自己的观点或信念
  2. 开始思考那些支持自己信念的理由,并找出他们所依据的原则
  3. 遇到一种能证明这种原则是不对的情形,并思考为什么不对

当遇到这种张力时,我们可能调整我们对何谓正当之为的判断,或者重新思考我们最开始拥护的那个原则。当遇到新的情形时,我们在自己的各种判断和原则之间左思右想,用一个来修正另一个。在这种从行动领域向理性王国来回思考的过程中发生的**上的转变,就是道德反思。

道德反思不是个体的追求,是公共的努力。需要一个朋友,邻居,公民同胞。因为不能通过自省得出公正的意义和最佳的生活方式。

柏拉图曾指导我们:要想抓住公正的含义和良善生活的本质,就必须超越偏见和日常生活的惯例。

本书并非是一本观念史,而是进行道德和政治反思的旅程,其目的并非在于向人们展示在政治**史中谁形象了谁,而在于促进读者将自己关于公正的观念付诸批判性的检验,了解自己的真实想法,以及这些想法来自何处。

Rust 入门

Rust 是什么?

Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月。一门通用系统级编程语言。特点是高性能(系统级底层),高可靠性(内存安全)
Rust 可用于开发

  1. 命令行程序
  2. web 应用
  3. 网络服务器
  4. 嵌入式设备
  5. 机器人,区块链

https://www.rust-lang.org/zh-CN/

2021 Rust 行业报告
https://mp.weixin.qq.com/s/9rjeVgVzmrC0wWhV4wA9FA

Why Rust

  1. 大型前端项目的编译和构建,用 js 写的工具链等基础设施不能满足要求。
    swc(Rust)、esbuild(go)的出现,越来越多的框架倾向于选择非 JavaScript 的编译工具来实现提速,Babel 不再是此方向的唯一选择。未来前端相关的基础设施都可能被 Rust 重写。
    https://github.com/evanw/esbuild

  2. 安全性 https://new.qq.com/omn/20200723/20200723A06ATL00.html

  3. WebAssembly

安装

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装 rustup 工具链

判断是否正确的安装:

rustc --version

Hello World

  1. 新建一个 hello.rs
  2. 输入以下:
fn main() {
  println!("hello world!");
}
  1. rustc hello.rs
  2. 执行:./hello

使用 Cargo

Cargo 是 Rust 工具链中内置的构建系统和包管理工具

  1. cargo new hello2
  2. 进入目录,执行:cargo build(构建项目)
  3. cargo build
  4. 直接执行 debug 的二进制文件

cargo run(构建+运行)

常用命令

版本更新
rustup update

查看版本
cargo --version

构建项目
cargo build

运行项目
cargo run

测试项目
cargo test

为项目构建文档
cargo doc

将库发布到 crates.io
cargo publish

说明

  1. TOML 一种配置文件格式,类似 json,yaml https://github.com/toml-lang/toml
  2. dependencies 项目依赖
    需要用的包去 https://crates.io/ 找。类似 https://www.npmjs.com/ 。可自己发包。
    cargo new --lib

核心概念

所有权系统

内存

管理内存

C/C++:这样的语言主要通过手动方式管理内存,开发者需要手动的申请和释放内存资源。如果没有正确的释放内存,容易产生 bug。(malloc申请内存)

Java:JVM 具备自动回收内存资源的功能。但这种方式常常会降低运行时效率,所以 JVM 会尽可能少的回收资源,这样也会使程序占用较大的内存资源。(通过垃圾回收完成内存的自动管理)

使用了包含特定规则的所有权系统来管理内存,这套规则允许编译器在编译过程中执行检查工作,来识别内存安全的问题。

设计了一套语法机制,使用这种语法在编译阶段就能更有效地分析内存资源的有用性以实现内存管理

编程语言的世界观

一门编程语言的诞生,一定有它想解决的问题。而围绕着这个问题。

所有权规则

  1. Rust 中的每个值都有一个变量,作为它的所有者。
  2. 同一时间内,值有且仅有一个所有者
  3. 当所有者离开自己的作用域时,它持有的值就会被释放掉

例子:

{                   // 由于变量 s 还未被声明,所以它在这里是不可用的(如果访问,编译的时候就报错)
  let s = "hello";  // 从这里开始变量 s 变得可用 
                    // 执行与 s 相关的操作
}                   // 作用域到这里结束,变量 s 再次不可用(如果访问,编译的时候就报错)
  1. s 从进入作用域变得有效,
  2. 它会保持自己的有效性直到自己离开作用域为止

变量与数据交互的方式(数据传递)

js中值传递(基本数据类型)和引用传递(对象)

  1. 克隆(值传递)
  2. 移动

发生克隆的情况

  1. 栈上的数据
  2. 实现了 copy 的这种 trait 的数据类型(系统默认,u32,bool,char等类型实现了copy 的 trait)

trait 可以理解为接口。java 中的 interface。

发生移动的情况

  1. 堆上的数据
let x = 5;
let y = x;
println!("x = {}, y = {}",x, y); // 有效的

let x = String::from("hello");
let y = x
println!("x = {}", x); // 无效的
println!("y = {}", y); // 有效的

所有权与函数

fn main() {
    let s = String::from("hello");
    // s 被声明有效

    takes_ownership(s);
    // s 的值被当作参数传入函数
    // 所以可以当作 s 已经被移动,从这里开始已经无效(和js表现不一样)

    let x = 5;
    // x 被声明有效

    makes_copy(x);
    // x 的值被当作参数传入函数
    // 但 x 是基本类型,依然有效
    // 在这里依然可以使用 x 却不能使用 s

} // 函数结束, x 无效, 然后是 s. 但 s 已被移动, 所以不用被释放


fn takes_ownership(some_string: String) {
    // 一个 String 参数 some_string 传入,有效
    println!("{}", some_string);
} // 函数结束, 参数 some_string 在这里释放

fn makes_copy(some_integer: i32) {
    // 一个 i32 参数 some_integer 传入,有效
    println!("{}", some_integer);
} // 函数结束, 参数 some_integer 是基本类型, 无需释放

有返回值的情况

fn main() {
    let s1 = gives_ownership();
    // gives_ownership 移动它的返回值到 s1

    let s2 = String::from("hello");
    // s2 被声明有效

    let s3 = takes_and_gives_back(s2);
    // s2 被当作参数移动, s3 获得返回值所有权
} // s3 无效被释放, s2 被移动, s1 无效被释放.

fn gives_ownership() -> String {
    let some_string = String::from("hello");
    // some_string 被声明有效

    return some_string;
    // some_string 被当作返回值移动出函数
}

fn takes_and_gives_back(a_string: String) -> String { 
    // a_string 被声明有效

    a_string  // a_string 被当作返回值移出函数
}

有返回值的函数,会将返回值的所有权移动到调用函数的地方。(s3获得所有权)

引用与借用

如果想调用一个函数,还能继续使用 String 呢?

fn main() {
    let s1 = String::from("hello");

    let len = calculate_length(&s1);

    println!("The length of '{}' is {}.", s1, len); // 此时 s1 是有效的。如果上面一行不加「引用符号」&。那么 s1 就是无效的
}

fn calculate_length(s: &String) -> usize {
    s.len()
}

「引用符号 &」
通过引用传递参数给函数的方法也被称为借用

默认是不可变引用。比如想要在 calculate_length 改变字符串的内容,是不会被允许的。需要

fn main() {
    let mut s = String::from("hello");
    // s 是可变的

    change(&mut s);
}
fn change(some_string: &mut String) {
  some_string.push_str("world");
}

引用规则:

  1. 在任何一段给定时间内,要么只能拥有一个可变引用,要么拥有任意数量的不可变引用。(原因:两个指针同时向同一空间写入数据会发生数据竞争,导致出错)
  2. 引用总是有效的

软件中缺陷

不同阶段和解决时间

  1. 不引入任何缺陷(理想情况) -- 无需解决时间
  2. 当敲下代码的那一刻,有缺陷的地方就能够被捕获到(language server,eslint,pritter) -- 秒级
  3. 编译期 or UT (Unit testing) 单元测试 -- 秒级到分钟级
  4. CI or code review 期间 -- 分钟 or 小时 or 天级(根据复杂度不同)
  5. 部署后研发或用户发现。 -- 天 or 月

早发现,早隔离,早诊断,早治疗

WebAssembly

概念

WebAssembly是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,可以接近原生的性能运行,并为诸如C / C ++等语言提供一个编译目标,以便它们可以在Web上运行。它也被设计为可以与JavaScript共存,允许两者一起工作。

诞生
C++ 经过 Emscripten 编译成字节码,字节码编译成 js
游戏改成 js 性能低,有了 asm.js
浏览器原生支持 WebAssembly

Rust-Proportion

http://webassembly.org.cn/
https://developer.mozilla.org/zh-CN/docs/WebAssembly

现状
https://blog.scottlogic.com/2021/06/21/state-of-wasm.html

Rust 和 WebAssembly

有两大主要使用场景
https://developer.mozilla.org/zh-CN/docs/WebAssembly/Rust_to_wasm

  1. 构建完整应用 —— 整个 Web 应用都基于 Rust 开发!(例子 https://github.com/sheshbabu/rustmart-yew-example)
  2. 构建应用的组成部分 —— 在现存的 JavaScript 前端中使用 Rust

更好用的脚手架
https://github.com/lencx/vite-plugin-rsw

参考:
https://software-lab.org/publications/www2021.pdf

透过 Rust 探索系统的本原:编程语言
https://mp.weixin.qq.com/s?__biz=MzA3NDM0ODQwMw==&mid=2649828932&idx=1&sn=4a580c729ec39823d9d53ec65734ed3d

透过 Rust 探索系统的本原:内存管理
https://mp.weixin.qq.com/s/1juaadR3AqHa8H19sHWHmQ

十年磨一剑,WebAssembly 是如何诞生的?
https://mp.weixin.qq.com/s/rmvdVLeV049zcZs9dpTQ_A

遇到的问题
rustwasm/wasm-pack#705 (comment)

rustwasm/create-wasm-app#146

常用快捷键汇总

Chrome

浏览器地址栏删除 自动补齐 提示
shift + fn + delete

开发者工具 console
option + command + j

开发者工具 network
option + command + i

VSCode

在多个文件夹中搜索,按住 command,鼠标点击多个文件夹。右键 Find in Folder

shift + option + F 格式化 markdown 文档会自动给英文和数字前后加空格

esc 关闭文件搜索框

快速搜索当前文件夹里某个文件 command+P

快速定位到某一行 command+P + :

command + F 当前文件查找

command + shift + F 全局查找

目录中点击文件高亮,回车编辑文件名称

Shift 选择大量文本

Ctrl + Shift + P 打开控制面板

命令行

control + a 快速移动到最左边

control + e 快速移动到最右边

item2 打开 finder open .

删除node modules rm -r node_modules

Mac

Finder 查找某个路径下的文件
command+shift+G

鼠标当前位置 + control + command + d 划词翻译

command + click 新标签页中打开链接

command + w 关闭当前页签

command + q 关闭应用

空格预览图片

《公正》读书笔记(第4章:雇佣帮助-市场与道德)

问题

很多关于公正的话题的争论都与市场有关,那么就会有个问题:自由市场是公平的吗?有没有一些东西我们不能或不应当用金钱来购买的?如果有的话这些东西是什么?买卖他有什么错呢?

关于自由市场的理由一般基于两种主张:

  1. 和自由有关:自由至上主义者支持市场自由的理由是让人们参与自由交换就是尊重他们的自由,干涉这种自由市场的法律,就是侵犯了个人的自由。
  2. 和功利有关:功利主义者认为自由市场促进了公共福利,当两个人做交易时,双方都获利。只要他们的交易使双方都获益,而又不伤害任何其他人,那么它肯定会增加总体的功利

何为公正--征召士兵还是雇佣士兵?

美国内战时期,联邦政府的征兵法:任何被征召而又不想被服兵役的人,可以雇佣一个人代替他。后来这个法律被吐槽:“人的战争,穷人的战斗”。因为富人有足够的钱去雇佣一个人去代替他而服兵役,穷人只能被迫服兵役。后来:新的征兵法规定:任何被征召而又不想被服兵役的人可以向政府交纳300美元费用而免除兵役。被吐槽为似乎给人的生命定价为300美元,后来这一法律被取消。现在的法律是志愿兵役制,由部队招募士兵参与伊拉克或阿富汗战争,由纳税人集体付钱给他们。志愿兵役制的概念是指:通过运用劳动力市场,就像饭店,银行,零售店和其他生意一样--来扩充士兵队伍。

所以有以下三种兵役制度:

  1. 征兵制
  2. 允许有偿替代者的征兵制(内战制度)
  3. 市场体制(志愿兵役制度)

支持志愿兵役制度的理由

自由主义者认为征兵制是强迫的,是一种奴役制度。暗示政府拥有其公民,并任意对待他们。功利主义者认为限制了人们的选择,减少了总体的幸福。两个人都同意做一笔交易(有偿替代者)增加了两者的功利并不损害任何一方的利益。

反驳志愿兵役制的理由

反驳一:公平与自由

自由市场并不总是自由的,对于有些人没有选择(因为贫穷和经济困难等),只能当兵。因此志愿兵可能并不是看上去那么自愿,并且有数据表明美国社会最有特权的年轻人都没有选择当兵。这难道是一种公正吗?

考虑到美国社会中机会的不平等,通过市场来分配军事服务,对于那些只有最少选择余地的人来说是不公正的:

绝大多数为了这个国家在伊拉克服役的人都来自内陆城市内部或乡村地区的贫困社区;
在这里,高达4万美元的入伍奖金和几千美元的教育津贴有着很大的吸引力。
对于那些有条件上大学的人而言,这些奖励与冒生命危险相比简直一文不值。

因此志愿兵役制是与不公平和强迫有关--阶级歧视的不公平,以及发生以下情况的强迫:经济困难迫使年轻人甘愿冒生命危险来换取大学教育和其他奖励。

反驳二:公民德性和共同善

第二种对运用市场来分配军事服务的反驳是以公民德性共同善的名义。

这种观点认为:军事服务不仅仅是一种工作,而是一种公民责任。所有的公民都有义务为国家服务。如果军事服务是一种公民义务,那么在市场上出售是不对的。
比如出任陪审团的责任。不允许雇佣其他人代替他们担任陪审员。不允许运用劳动力市场来形成有报酬的,专业的“自愿者”陪审团。不能雇佣陪审员的原因是需要其他人就相关证据和法律进行商讨,是一种公民教育形式,同时是一种公民身份的体现。使得法庭和人民之间保持一种联系。那么军事服务也是一样,雇佣他人当兵就侵蚀了那应当支配它的公民理想。

志愿兵役制免除了大多数美国人为了国家而战斗,捐躯的责任。虽然有些人认为这是一个有利因素,但这种从共同牺牲中的豁免却是以政治责任被腐蚀为代价的。

让-雅克·卢梭在《社会契约论》中提到:将一项公民义务转变成一种可在市场上出售的商品,并没有增加自由,而是暗中破坏了自由:

当公共服务不再是公民的主要事务,并且人们宁愿掏钱而不愿本人亲自服务时,那么,这个国家离垮台就不远了,当必须奔赴战场时,他们可以出钱雇兵,而自己待在家中···在一个真正自由的国度,
公民们亲自去做每一件事,而不用花钱来做任何事,他们非但不付钱免除自己的义务,反而花钱来购买那亲身履行自己义务的特权。我无法认同通常的观念,我相信强制劳役要比征税更不违反自由。

所以就提出了新的问题:
军事服务(或一般的国家服务)是一种所有公民都有义务履行的公民责任呢?还是一种被劳动力市场所恰当管理的像其他职业一样的工作呢?

为了回答上面这个问题。
需要提出一个新的更宽泛的问题:
在一个**社会,公民之间负有什么样的义务,这些义务是如何产生的?不同的公正理论对这一问题提出了不同的解答。在后面几章中明确了公民责任的基础和范围才能决定是招募士兵还是雇佣他们。

《你当像鸟飞往你的山》读后感

我是 4 月 5 日晚上去环球港买的这本书,最近听说瑞幸快不行了,就赶紧买了两杯咖啡,给舍友带了一杯。当天晚上读了一点,然后第二天花了一天时间读完了。

首先来个总体评价:很经典,我觉得这本书能够写出来并且出版已经很不容易了,想知道为什么的可以去买一本读读。

本文核心

本读后感的核心是通过一个问题和细节来阐述我理解的本书想表达的内涵。
(为什么要说「本文核心」,乔布斯演讲哲学中强调了「核心」这一概念,一篇大而全的文章或演讲往往没有核心,只有明确核心才能更有效的进行沟通,明白是在做什么)

为什么读

当然是比尔·盖茨年度推荐 No.1 了,并且看到朋友圈的一个比较尊敬的大 V 也在读,就等不了网购了,直接去实体店购买。这种让我有立刻读完的冲动的书不多,上一本还是《小时代》,我记得是在高中的时候,夏天 30 度的高温我骑着自行车去高中旁边的书店买第二本还是第三本忘了,反正我记得我读完上一本的结尾,貌似是南湘和她男朋友坐火车去另外一个城市了,太想知道后面发生什么了!

为什么写读后感:

  • 对记忆力不自信
  • 整理沉淀

TIPS

  1. 书皮上的一些简要或文字(甚至一些书中章节的过渡页上的文字)看看就行了,这些东西带给你的唯一好处也许是可以带着疑问去阅读。不要一直思索它到底是什么意思,因为很多都是断章取义或者博人眼球的,没有那个语境根本不懂一些话什么意思。有的甚至和书中的意思完全相反。
  2. 本文包含剧透慎入。
  3. 本书是作者亲身经历,算是一本回忆录。作者出生在美国一个山区,17 岁之前从来没有上过学,后来自考大学,先后获得剑桥大学哲学硕士和历史学博士学位。家里一共七个孩子。三个博士四个没读过书。
  4. 我提醒自己多写点思考,少写点书的内容,这不是读书笔记,而是读后感。
  5. 全书没有任何冗余的华丽的辞藻,每一句话都值得认真体会(第一遍我也没有认真体会),这也许就是经典的表现吧。

献给泰勒

本书作者是献给泰勒的,泰勒是作者的哥哥。
为什么是泰勒呢,因为没有泰勒也许就没有作者后来的蜕变,亦或者「Educated」,中文翻译为「教育」。
在人生的关键时刻是泰勒给了作者勇气和新的感悟,简单理解就是人们所说的贵人吧。告诉她应该做什么。比如第一次告诉作者应该去读大学而不是在废料场工作。在对家人绝望,遭遇背叛,想要放弃这一切的时候又是泰勒让她重新振作起来。

十年间,改变的不只是年龄和空间的距离,更是自己内心深层次的东西。

我深刻的意识到有两点:

  1. 深刻意识到为什么弗洛伊德心理学是主流心理学了。弗洛伊德:人是过去和童年的产物,这些经历变成潜意识,决定着我们的人生。
  2. 家庭对于一个人是多么的重要,无关乎他取得了多少荣耀和成功,心里总有某个地方是留给家人的。

这本书想表达什么?

为什么要先说「不是什么」,一点原因是来源于俞军的产品军规中的一条:**「决定不做什么,往往比决定做什么更重要」;**明确了「不做什么」或者「不是什么」,是给事物一个边界,更能突出想要表达的核心。

不是什么

  1. 首先肯定不是「美国梦」,作者已经强调过了。不想被人们理解成美国梦,完全没有任何意义。
  2. 没读过书的时候,看有的人说是每个人都应该找他「合适的山」,然后飞向它,我不认同这种观点。我理解的山更像是一种人的信仰,所以这不是「合适不合适」的问题。
  3. 更不是简单的说明「努力造就成功」的励志故事。不是否认这一观点,而是本书想探讨的是更深层次的东西。

是什么

  1. 面对暴力,恐惧,背叛,绝望的一个她的真实故事。
  2. 信仰问题。
  3. 决定你是谁完全取决于你的内心,而不取决于你穿什么样的衣服,读哈佛还是野鸡大学,亦或者你来自废料场还是英国王室。
  4. 一个人对家庭的责任和对自己和社会的责任冲突时该怎么做的问题。
  5. 在人生的灰暗时刻,如何做决策的问题。
  6. 关于中文书名·你当像鸟飞往你的山·,我理解的是更是一个自由的问题,人本应该追求一种信仰,而不是被绝对或者专制所禁锢。
  7. 「人不应该被强制信仰什么」,这恰恰是人应该信仰的。就如作者所说:教育应该是**的拓展,同理心的深化,视野的开阔,而不是更加顽固。
  8. 第 6 条也许才是教育的本质。
  9. 极度偏执的人依然无私的热爱自己的孩子,父母的爱如此伟大和神圣。

以上是我理解的是什么。但有时我还认为超出了教育的层面,更像是一场内心的洗礼,信仰有很多,但你就是你,你就是那只鸟,你就应该去飞往一个山头,不在乎是哪座山。虽然内心的洗礼恰恰也是教育本身,但我觉得更应该是心理层次。虽然从书中可以看出来家乡的山不应该是她飞向的,外面世界的那座山才是她应该飞向的。

我认为「飞向山」这个动作本身就是一种信仰,我更倾向于书中所说的 educated 是「飞向山」这个动作过程。所以我觉得心理层面的信仰是一种更好的理解方式。「educated」被抽象到心理层面,更像是成长,被升级,改变。

一个细节

当作者的一个家人受伤,父母让作者送家人回家救治,而不是去医院。因为父母认为医院是一个不好的地方。但作者最终违背了父母的信仰而送去了医院。从这一件小事,作者就开始了逐渐醒悟,她说道「不后悔,但惭愧」。我一开始想,作者怎么这么善良,明明做了正确的事情为什么要惭愧和自责呢。后来想想,也许还是同理心不够,一个人的**和信念是从小培养的,并且是最至亲的家人,他们怎么能害你呢,作为精神没有问题的人也许是应该惭愧吧。父母那么爱你,你还想指责什么呢。

「在过去的十年里,我穿越的距离--物理上的和精神上的--几乎让我无法呼吸,让我思考其自己是否已经改变太多。我所有的学习,阅读,思考和旅行,是否已将我变成一个不再属于任何地方的人?......然而她却拥有我所没有的珍贵的东西。尽管我现在拥有很多机会,或许正因为这些机会,我才失去了那个珍贵之物。《救赎之赌》

读到这段,内心五味杂陈,一是同理心不足让我觉得作者太善良,甚至觉得事情发展的有点魔幻。另一方面也感觉很可惜,说可惜的时候,总感觉有一种指责的味道,因为这好像在表达「本应该可以,但是没有」。
也许我自己的内心五味杂陈才能让我反思自己的种种行为和想法,思考自己对某件事的看法是否带有偏见,是否意味着某种绝对或顽固。
当我开始反思自己时,突然想到这也许就是比尔·盖茨说的「阅读她极端的童年故事时,开始反思自己的生活」。也许这恰恰是书的价值所在。

到后面作者精神出了问题,不得不去找心理医生。但在这之前,她还是一个普通人啊,我突然忘了她是一个凡人不是神仙或者上帝。她也会交男朋友并且不把家人的事情告诉男友,也会在颓废时想要放弃博士学位连续看很多天的电视剧觉得人生无所谓了。但关乎自己人生的重要问题总要去面对,即使去找心理医生吐露心扉,即使会有歇斯底里的疯狂说些肮脏的话语。

一个问题

背景:作者正是违背了父亲的信仰B才有了硕士和博士学位,才有了另一番人生。作者的信仰A(接纳不同)和父亲的信仰B(绝对,专制)完全背道而驰。
有一个问题困扰了我很久:为什么作者不能和父亲「和解」呢,或者说「说服」父亲改变他的信仰。
可以有几个维度来理解:

  1. 如作者所说,在经历过童年那件事之后发现他们有了无法修补的裂痕。
  2. 再去「说服」已经没有意义了,已经发生的无法改变。
  3. 作者已经明白,不是这些不幸的经历影响了自己,而是自己对不幸经历的恐惧影响了自己。归根结底是自己的情感在操控自己,与他人或者经历无关。这就是我前面所说的心理学层面。
  4. 最后不再是怨恨自己的父亲,「接纳不同的信仰」是她爱父亲的唯一方式,这种接纳的态度正是通过「educated」获得的。
  5. 正是由于作者领悟到「educated」的真正内涵,所以才不去「说服」的。因为如果去「说服」是对信仰B的的完全否定,但信仰B一定有其存在的原因。「否定信仰B」这一行为本身就违背了信仰A(教育的本质是接纳不同的人,接纳不同的视角和信仰)的内涵。换句话说「否定信仰B」这一行为本质上就是信仰B。作者不可能去做信仰B的事情,这也因此将上文说的「教育的本质」不是一句空话,而是知行合一的事情。(这一点困扰了很久,洗澡的时候想出来的,不知道对不对,我的理解)

其他的一些感悟

历史的重要性

  • 很多个夜晚你真正渴求的东西,被某种思绪所困扰,而同样的历史上的伟大的人们也经历过类似的经历,然而他们的解决办法和感悟就藏在历史里。
  • 在不同时期的老百姓对人生的感受与想法构成了世界观,而这些世界观才是历史的价值所在。
  • 历史把人们放在一个比较长的格局里,历史不单单是科技的演进,更是**的演进。
  • 了解前人的生存状态,我们就会明白为什么我们会用目前这种方式看待世界,而我们对文明的进展又会有什么贡献。(这点可以思考作者父亲的信仰来源)

圣经和宗教

  • 慢慢有点理解《圣经》为什么是人类历史上销量最高的一本书了。简单说还是「信仰」问题。它可以让人无比疯狂,也可以让人无比冷静,即使是在地狱也能给你希望。能让人们超出人类本身这个局限去承受更多的不可思议的事情。
  • 我的理解宗教在历史上大行其道的原因和上面说的类似。但我体感也许宗教慢慢会淡出人类历史舞台,即使时间很长。当世界从物质主义转向后物质主义的过程中,**文化也在不断演变,当秩序与和平变成人类的主题,也许人们的**有了质的飞越,宗教引领信仰的时代也许就会过去,也许会有一个更加理性的词或者东西,但我现在还不知道是什么。

也许知乎上的朋友有更专业的视角来解读这本书,我仅仅说我自己的理解,我是一千个哈姆雷特其中的一员,共勉。

《公正》读书笔记(第9-10章:我们彼此负有什么义务-忠诚之难)

道歉与补偿

许多为道歉感到忧虑的政治观点,都涉及在第二次世界大战中所犯下的那些历史错误。德国以向个体幸存者赔款和向以色列赔款的形式,为大屠杀做出了价值数十亿美元的补偿。这些年来,德国的政治领导人都表达了歉意,并不同程度地承担了过去纳粹的责任。

国家应当为历史上的过错道歉吗?为了回答一这问题,我们需要考虑一些关于集体责任和共同体的主张的棘手问题。
对公众道歉所进行的主要辩护是--为了尊重一些人们的记忆,他们曾遭受过那种来自于政治共同体(或以政治共同体的名义所作)的不公正。为了认识到不公正对受害者及其后代的持续性影响;还为了偿还那些行不义之事、或没有阻止不义之事的人们所犯下的过错。官方道歉作为一种政治姿态,能够有助于愈合过往伤口,并为道德上和政治上的和解提供一个基础。补偿或其他形式的经济赔偿,可以基于同样的理由而得到辩护,它们也能有助于缓解那些不义行为对受害者及其后代的影响。

这些考虑是否足够强烈的证明一个道歉是正当的,这取决于具体情境。在某些情况中,促成公开道歉或补偿有可能弊大于利--煽动过往的仇恨,强化历史的恩怨,巩固一种受害感或产生一种憎恨。反对公开道歉的人经常表达类似的担忧。如果考虑全面的话,一种道歉或补偿行为时更可能治愈一个政治共同体,还是更可能毁坏一个政治共同体呢?这是一个很复杂的政治判断。而对这一问题的答案也因具体情形而异。

有一种原则性的论点:当代人们不应当--实际上也不能--为前辈们所犯的过错道歉。毕竟,为一种不公正道歉,就是为其承担相应的责任。你不能为那些你没做过的事情道歉,因此,你如何能够为那些在你出生之前就已经发生的事情道歉呢?
这种论调之所以有影响力,是因为它援引了一种强有力的,有吸引力的道德观念。我们称之为“道德个人主义”。这种道德个人主义的学说,并不假设人们是自私的;相反,它是一个关于“什么意味着自由”的主张。对于道德自由主义者而言,自由就意味着仅仅从属于那些我所自愿承担的责任;我所亏欠别人的任何东西,都是出于某种同意的行为--我所做出的一个选择、一个承诺,或我所签订的某个协议(无论它是心照不宣的还是明确表达的)--而亏欠。

“我的责任仅局限于那些我自己所承担的”这一观念,是一个具有解放性意味的假设。它假设:作为道德主体的我们,是自由而独立的自我,不受任何先在的道德纽带的约束,能够自主地为自己选择各种目的;那唯一的约束我们道德责任的来源,并不是习俗,传统或继承状态,而是每一个个体的自由选择。

如果持有这种观点,那就意味着我对祖辈们做出承诺说会偿还他的债务,或为他的罪行道歉,那将是一回事。我完成了偿还的义务,将是一种建立在同意基础上的义务,而并不是从那种跨越几代人的集体身份所产生的的义务。没有那些承诺,道德个人主义者就不能明白那种为祖先的罪恶赎罪的义务。毕竟,这些罪恶是他们的,不是我的。

将人们看做自由的,独立的自我,不仅使代与代之间的集体责任问题有所不同,它还有一个影响深远的含义:以这种方式来思考道德主体,会给我们更为一般性地思考公正问题的方式带来影响。“我们是自由选择的,独立的自我”的这一观念,支持了这样一种观念--那些界定我们各种权利的公正原则,不应当建立在任何一种特殊的道德和宗教的观念之上;相反,它们应当中立于各种不同的良善生活观。

政府应当在道德上保持中立吗?

“政府应当试图中立于良善生活的意义”这一观念,体现出一种对古代政治观念的背离。对亚里士多德而言,政治的目的并不仅仅是为了疏通经济贸易,提供共同防御,它还培养良好品质和塑造好公民。因此,关于公正的争论就不可避免的是关于良善生活的争论。如今,“政治就是培养德性”这一观念作为一种奇怪的,甚至是危险的观念,使很多人感到震惊。由谁来决定要包括什么样的德性呢?如果人们不同意怎么办?如果法律试图推进某种道德和宗教理想,这不是不宽容和强迫吗?

亚里士多德认为:公正是人们和适合于他们本性的各种目的和善之间的适合。可是,康德和罗尔斯认为公正是一种选择,而非适合。

康德和罗尔斯认为:权利优先于善。一个有道德的人,就是一个拥有他选择的各种目的的主体。作为道德主体,我们并非由自己的目的所界定,而是由自己的选择能力所界定。主要揭示我们本性的,并非是我们的各种目标,而是那种如果我们能够抽离于自己的各种目的就会选择的权利框架。由于自我优先于那些由它来认定的目的,因此即使是一种主导性的目的,也必须从多种可能性中被选择出来...因此,我们应当将目的论学说所提出的权利与善的关系反转过来,而将权利看做先在的。

在作者看来,试图找到中立性的公正原则的尝试,是具有误导性的。我们不可能总是不涉及重大的道德问题,而界定我们的各种权利和义务;即使这是可能的,它也不是值得欲求的。后面将慢慢解释原因。

共同体的主张

如果我们将自己看做是自由的,独立的自我,不受任何未经我们选择的道德纽带的束缚,那么我们就不能理解很多我们通常认可甚至奖励的道德和政治义务。这包括团结和忠诚的义务、历史性的记忆和宗教信仰--也就是一些产生于塑造我们身份的、共同体的和传统的道德主张。除非我们将自己看做受约束的自我,对一些我们并不想要的道德主张开放,否则我们就很难理解我们的道德和政治经验中的这些方面。

阿拉斯戴尔·麦金泰尔在其著作《追寻美德》中,他说明了作为道德主体的我们达到自身意图和目的的方式。作为意志论的人格观念的一种替代物,麦金泰尔提出了一种叙述性的观念。人类是讲故事的存在,我们作为叙述性的探求者而生活着。“如果我能回答一个先在的问题--‘我自己处于什么样的故事之中?’那么,我才能回答这个问题--‘我要做什么’”

所有作为叙述者而存在的人,都有某种目的论特征。这并不意味着他们拥有一个外在权威所设定的、固有的意图或目的。目的论与不可预测性同时共存。“像那些在叙述性的小说中的人物一样,我们不知道接下来会发生什么,可是,我们的生活依然具有一种特定的形式,这种形式自身朝着我们的将来而做出谋划”

正如麦金泰尔所言:我永远也不能仅仅通过个人来寻求善和运用各种德性。我只有通过进入我自身所处的那些故事,才能理解那种对我的生活的叙述。

我们都是作为某种特殊的社会身份的承担者而进入自己的各种环境。我是某人的儿子或女儿,表兄妹或叔叔;我是这个或那个城市的公民,是这个行业或那个职员的成员;我属于这个家族、那个部落或这个民族。因此,那些对我有益的,也得对担任这些角色的人同样有益。同样的,我从我的家庭、城市、部落和国家的历史中,继承了各种各样的债务、遗产、正当的期望和义务。这些构成了我生活中的特定成分和我的道德起点。这部分的给予了我自己的生活以道德独特性。

麦金泰尔还提出一个更进一步的例子:“一些年轻的德国人相信,在1945年后出生意味着,纳粹对犹太人所做的一切与他和同辈犹太人的关系,没有任何道德关联”。麦金泰尔在这种观点中看到了一种道德上的肤浅,它错误的假设:“自我脱离于其社会的和历史的角色和状态”。

它与叙述性的自我观之间的对比非常明显。因为我的生活故事总是内嵌于那些共同体的故事之中--从这些共同体中,我获得了我的身份。我生而带有一种历史;个人主义模式中的那种试图割裂我自己与这种历史的尝试,就是破坏我现存的关系。

这里有三种道德责任:

  1. 自然的义务:普遍的;不需要同意
  2. 自愿的义务:特殊的;需要同意
  3. 团结的义务:特殊的;不需要同意

由于公共生活和共同分享的历史,我们对同胞公民们的幸福肩负着一种特殊的责任。而这也依赖于我们接受那种叙述性的人格观念,根据这种人格观念,我们作为道德主体的身份与我们所居住的共同体紧密相关。正如沃尔泽所写的:“只有当爱国情感具有道德基础时,只有当集体的凝聚力促进了责任和共享的意义时,只有当即有成员又有陌生人时,政府官员才有理由特别担心自己人们的幸福··以及自己的文化和政治的成就”

骄傲与羞愧这类道德情感预设了一种共享的身份。当那些在外国旅游的美国人见到美国旅客的粗鲁行为时,他们会感到尴尬,即使他们本人并不认识他们。非美国人可能认为这一行为是不体面的,但是他们并不会为它而感到尴尬。
那种对家庭成员和同胞的行为而感到骄傲和羞愧的能力,与集体责任的能力密切相关。这两种能力都要求我们将自己看做情境的自我--受制于那些我们并没有选择的道德纽带,并暗含于那些塑造我们作为道德主体的身份的各种叙述当中。

公正与良善生活

目前讨论了一些事例,意图挑战契约论的这种观点:我们是那唯一约束我们的道德义务的创立者。这些事例有:公共道歉与补偿,为历史上不义行为所负的集体责任,家庭成员与公民同胞之间的特殊责任,对同志的忠诚,对自己村庄,社区和子女般的忠诚。在这些例子中,所看到的团结的主张,是我们道德和政治经验中为人们所熟知的特征。如果没有它们,我们将难以生活,或难以理解我们的生活。但是,我们同样难以用道德个人主义的语言去说明它们。它们不能被同意的伦理加以表达。这在某种程度上就是那给予这些主张以道德力量的东西。它们吸收我们的各种负担,并反映出我们作为讲故事的存在,作为情境的自我的本性。

所以,我们所有的义务和责任,是不是能够追溯到一种意志或选择的行为。答案是:不能。团结或成员的义务可能会出于与选择无关的理由--那些与我们借以阐释自己的生活,以及所居住的共同体的叙述密切相关的理由--而要求我们。

现在回顾一下两种思考公正的方式:
对于康德和罗尔斯而言,权利优先于善。那些界定我们的各种义务和权利的公正原则,应当中立于各种关于良善生活的观念。康德认为,为了达到这一道德法则,我们必须抽离于自己各种偶然的利益和目的。罗尔斯坚持认为,为了慎议公正,我们应当搁置我们的各种特殊的目的、情感以及各种善观念,这是在无知之幕背后思考公正的关键。
这种思考公正的方式与亚里士多德思考公正的方式相冲突。亚里士多德认为,公正原则不能够或不应当中立于良善生活。与之相反,他坚持认为,公正宪制的目的之一就在于养成好公民,培育好品质。他认为,如果我们不慎议所分配的物品--如职务、荣誉、权利和机会--的意义,我们就不可能慎议公正。

公正与共同善

那些坚持认为道德和宗教信念在政治和法律中不起作用的想法,是一种谬误。

世俗主义者要求有信仰的人在进入政治领域时,将自己的宗教置之度外;在这一点上,他们是错误的。事实上,美国历史上大多数伟大的改革家们--弗雷德里克·道格拉斯、亚伯拉罕·林肯、威廉·詹宁斯·布赖恩、马丁·路德·金--都不仅受到信念的激发,同时也反复运用宗教的语言来为自己的理由作辩护。因此,那种认为人们不应当将自己的“个人道德”注入公共政策争论之中的想法,是一种现实的荒谬。我们的法律在定义上就是一种道德的汇编,它的很多成分都是基于犹太教与基督教共有的传统。

在作者看来,我们不可能仅仅通过使功利最大化,或保障选择的自由,就形成一个公正的社会。为了形成一个公正的社会,我们不得不共同推理良善生活的意义,不得不创造一种公共文化以容纳那些不可避免地要产生的各种分歧。

罗伯特·肯尼迪在角逐**党总统候选人时发表了言论,对他而言,公正不仅仅包括国内生产总值的数量和分配,它还包括更高的道德目的。言论如下:

目前我们一年的国民生产总值超过8000亿美元,然而它包括空气污染和香烟广告,包括清理高速公路车祸的救护费用。它包括我们用来锁门窗和那些关押撬锁罪犯的监狱的专用锁,它包括对红木的毁坏和在动乱中损失的那些自然奇迹,它包括凝固汽油弹和核弹头、警用装甲车以镇压城市暴乱,它还包括...那些为了向我们的孩子销售玩具而美化暴力的电视节目。我们的国民生产总值并没有考虑到孩子们的健康,以及他们的教育质量或他们玩耍的乐趣;它也不包含诗歌之美和我们婚姻的力量、公共争论的智慧以及公共官员的正直。它既不衡量我们的敏锐,也不衡量我们的勇气;既不衡量我们的智慧,也不衡量我们的学识;既不衡量我们的怜悯之心,也不衡量我们对国家的忠诚。简言之,除了那些使得生活负有意义的事物之外,它衡量一切。此外,它能告诉我们有关美国的一切,却不能告诉我们,为什么我们因为自己是美国人而感到骄傲。

这段话对当时的自满情绪以及对物质迷恋所进行的道德批判。在激发美国人的国家自豪感的同时,也诉诸一种共同体感。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.