为什么我们要学一门复杂的程序设计语言?

来源:百度文库 编辑:神马文学网 时间:2024/10/02 16:35:06
发信人: dp2 (卡列宁的微笑), 信区: CPlusPlus
标  题: 为什么我们要学一门复杂的程序设计语言?标题要长
发信站: 水木社区 (Tue Jul 27 13:05:10 2010), 站内

认知失调不是一种病症,而是描述一种现象,即“认识”和“感知”之间的矛盾

认知失调理论解释在这种情况下人类的反应。特别说明一下:D

I)认知失调理论通俗简介

认知失调理论,是指当一个人的认识和对外界的感知产生矛盾时,人倾向于产生对外界感知的扭曲的解释,以调和认识和感知之间的矛盾。

实际上解决矛盾的问题还有接受现实,但是因为接受现实往往意味着付出较为高昂的代价,所以人们倾向于用短期看来成本较小的方式,即找借口,找理由来“解决”问题。

应该注意到,在这个成本的估计中,人类往往是不理性的,主要体现在对沉没成本太过在意,又对机会成本估计不足。

举例来说,
i)邪教经常预言世界末日,但是末日预言破灭之后,却很少出现邪教大崩溃的景象,信徒们往往会找各种理由,比如说因为他们的虔诚世界得到了宽恕,来解释末日没有到来的现象,在这里,成本是他们对邪教全身心的奉献vs丢掉信仰,认识是该教宣扬的末日预言,现实是末日没有到来。

ii)Linus经常恶毒地攻击C++,但是C++从来没有因为他的攻击掉一根毛。Linus用C创造了Linux,但是更好的语言C++出现了。为了说服自己之前做的并不是无用功,所以Linus找出了种种极其荒唐的理由来说服自己。

II)为什么我们应该学习C++,或者一门更加难懂的语言

在认知失调理论的研究中,心理学家发现了一种模式,即“奖励不足”

如果让同样的人,在教室中重复做一件无意义的事情,比如反复擦已经擦干净的黑板,反复弯曲铁丝,等等,这个人一定会感到枯燥无味。

但是当这些无聊的工作结束时,实验者给他们其中一些人100美元,而给另一些人10美元。

在之后的随访中,得到100美元的人纷纷表示这些事情很无聊,潜在的,没有表达出的意思是,但是他们得到了一张富兰克林头像画,所以这些无聊是值得的。

而那些只得到10美元的人,却开始纷纷为他们所做的事情找各种奇怪的理由,不一而足,否则,他们就没有办法解释为什么自己去做这些无聊的事情,因为在这里,奖励是不充分的。

映射到程序员这一边,当两个程序员,一个学了极难懂的语言,而另一个学了极傻瓜的语言,都在做无聊的码农工作,傻瓜语言程序员会觉得他的工作索然无味(因为奖励对于他的付出已然足够),而学了难懂语言的程序员(比如诸位C++程序员),会觉得工作很有意义,是为了解放全人类而斗争之类的,因为对于他在之前学习和之后工作中的付出而言,工资的奖励是不足的。

再说得离题点,版面上经常出现语言之争,我们仔细观察就知道,在语言坑里,主贴往往攻击目标语言的一些缺点,而使用该语言的程序员则纷纷出来表示对生活影响不大,或者这是一个feature,或者该缺点可以绕过,或者别的语言也有缺点,等等。实际上这就是认知失调的一种表现,因为我们面对语言的缺陷时基本无能为力(除非教唆sun总拿着mp5去袭击标准委员会),而我们又一直使用这种语言,对这种语言有着宗教般的信仰(C++是一种高尚的语言,没错,而且华丽、完美、无暇,好像林志玲一样0),所以当这些认知产生冲突的时候,我们就倾向于找出各种各样荒谬可笑的理由来绕过它。

III)避免认知失调,敞开心胸

有的时候,认知失调是对我们有帮助的,比如说在对一件事情的坚持上,我们付出越多,我们就越会坚持下去。

或者,认知失调可以帮助我们知足,尤其是在面对比计算机语言缺陷更加不可改变的事情上面,比如说房子被拆,面试失败,丢掉工作之类的。

但我们必须意识到,之前做过的傻事,无论它看起来有多糟糕,也只是沉没成本,是不可挽回的,我们没必要牺牲其他的机会,而找一些理由来自欺欺人。鲁迅说,真正的勇士敢于直面惨淡的人生。

真正的死程敢于直面语言的缺陷,平台的不足,库的稀烂和工资……