Be my SecrE.T - Home

《影响力》笔记

有人说读这种书容易变成“人精”,我觉得太夸张了。了解骗术的主要目的不是行骗,而是让自己具备识破骗术的能力。

书中所列举的认知捷径都具有两面性。在正常情况下,这些认知工具可以帮助我们快速地做出(相对合理的)决定;在某些场合,这种走捷径的想法会被人利用来为他们自己牟利。

以下是我的摘录:

  1. 认知对比:对比会影响人们对事物属性的判断。
  2. 互惠
    • 先说较高的要求,再假装让步提出真正的(相对较低的)要求(同时运用了认知对比 (高低)和互惠原理(让步))。
    • 若别人是真诚地给予自己恩惠,就大方地接受;若是另有目的(那么这些好处就不是真 正的恩惠),就要提高警觉。
  3. 承诺和一致
    • 让人在不知不觉中做出承诺——使他们的内心产生变化,即使最初的外部条件消失也仍旧 心甘情愿地去做当初承诺要做的事情。
    • 若(根据直觉的判断)已陷入被骗的局面,在承认保持一致的重要性的同时,要指出盲 目保持一致的荒谬。
    • 自问:“如果事先知道这一切,我还会做出同样的选择吗?”
  4. 社会认同
    • 人群在不确定的状态下会陷入多元无知。
    • 高相似性会导致更高的模仿率。
    • 当且仅当大众的行为靠谱时才可以选择随大流。
  5. 喜好
    • 人们更容易接受自己喜欢的人的意见。
    • 讨人喜欢的因素:外表,相似性,称赞,接触,合作,关联。
    • 愉快的接触(合作)会导致正面的印象,反之(竞争,冲突)会导致负面印象。
    • 做决定时,把“提要求的人”跟“要求”分开。
  6. 权威
    • 权威容易导致盲从。权威往往外化为衣着、头衔、外部标志(比如车)。
    • 判断是否相信权威的依据:这个人究竟是不是这方面的专家?
    • 警惕那些看起来像是站在你这边的权威。
  7. 短缺
    • 短缺的东西(看起来)更具有吸引力。
    • 个人自由被削弱的话会产生心理抗拒。
    • 信息审查制度会诱使更多人去了解被查禁的信息。
    • 突然产生的短缺比一直存在的短缺更具吸引力。
    • 将因短缺而引起的冲动作为停下来仔细思考的信号。
    • 物品的短缺并不能使它的功能发生变化。

关于学什么(程序设计)语言有前途的问题

P.S: 这篇东西源自对贾捷阳同学昨天的留言的思考,无针对任何人之意,请理性阅读。再者,我说的也不一定是对的,欢迎批评。很少写那么严肃的文章,见谅见谅。

什 么叫”有前途“呢,是可以赚很多钱,又或者是可以对IT界做出很大贡献?这里姑且现实一点,将它定义为”有钱途“,甚至更具体一点,定义为”能找到一份好 工作“,并且承认学好一种程序设计语言是找到一份好工作的必要条件,也不能就此认定”学C#或JSP有前途“,因为你学的这种语言必须是一种好的语言,而 判定一种语言是好是坏,要从三方面考虑:语言特性是否强大、 library 支持是否丰富、是否足够流行

语言特性这个角度看,你很难将 C# 和 JAVA 称为强大的语言,因为它们的冗余度太高,表达能力差,用它们写程序很容易就制造出数千行代码的怪物,不信你不妨试试写这个程序:输入2个数及一个操作符。根据输入的情况得出相应的结果。等到 C# 和 JAVA 程序员也能给出像

(define (Foo op x y)
    (op x y))

一样优雅的答案时,你才能称他们为强大的语言(需要 first-class function,现在 Python 和 Ruby 以及许多新生代的动态语言都支持)。

library 支持这 个角度看,C# 和 JAVA 都有很丰富的 library,但由于它们都运行在一个语言无关的虚拟机之上(.NET CLR 和 JVM),所以这跟语言本身没有太大关系——在 .NET 平台上我可以用 IronPython,在 JVM 平台上我可以用 JRuby, Clojure (LISP 的 JVM 实现),Jython, Groovy, Scala, Rhino (Javascript 的 JVM 实现)——完全没有必要理睬 C# 或 JAVA。

流行度这个角度看,C# 和 JAVA 依赖的是商业流行度,不是社区流行度,这与现今的大部分流行歌手类似,即它们的流行是因商业需要。把自己的技术生涯寄托在两家公司的商业利益上,显然不是 明智之举,因为商业产品是需要不断地更新换代的,当这些被捧红的语言(歌手)不再能为商人们带来利润时,今日的宠儿就会成为明日的弃儿。昔日的 FoxPro, Visual Basic, Delphi 就是前车之鉴。另一方面,依赖社区流行度发展起来的语言就没有这种忧虑。它们通常因个人需要而被创造出来,之后得到社区的支持而不断完善成熟,若将 C#, JAVA 之流称为大教堂式的产品,那么 Python, Ruby, Perl 和 PHP 这类语言就是集市型的产物

注意:以上观点仅仅是从语言本身的 好坏出发,并没有考虑应用环境。在实际开发过程中,不同语言之间往往不存在好坏之分,只有适用与不适用的区别。要性能,首选当然是 C/C++;要快速原型,就应当考虑 Python 和 Ruby 这类动态语言;要大规模并行运算,Erlang 会是最靠谱的选择;要做文本处理,也许学学 Perl 也不错(虽然它很丑)。

再次注意:仅仅学好程序设计语言是远远不够的。程 序设计语言是用来控制计算机和模拟现实问题的——要控制好计算机,对计算机本身的了解是必不可少的,必须学习操作系统、编译原理、网络、数据 库、数据结构与算法、编程范式等等一系列的原理和技术;要准确地模拟现实问题,则要具备一定的数学功底和 problem solving 的技能——这些东西是与特定的程序设计语言无关的(而且大部分都是大学计算机专业的必修课程)。除此之外,对于日常开发所涉及的工具 (正则表达式,命令行工具……),也要能够熟练地使用,否则当你面对”从一堆文件中找出所有特定格式的电话号码“这样的问题时,就会不由自主地写出2500行的C++程序来解决它。

最后给出一点点建议。如果你刚刚开始学习程序设计,请仔细阅读以下这几篇文章:

Notes on How to Read A Book

如果一本书三番四次地在你眼前出现,也许你就应该考虑读一读它,如果已经读过了,重读吧。
比如这本《如何阅读一本书》,先是在梁文道的《开卷八分钟》里得知它,接着学校图书馆里就鬼使神差地冒出了这本书,欣喜若狂却又匆匆忙忙(高三啊)地读完并做笔记后,我差不多就要把它忘了,谁知余晟的这篇你的香蕉怎样剥?又唤起了我对它的记忆,是以今天又翻出了几个月前的笔记,重新整理。
由于豆瓣上已经有很多对此书的评价,我就不再赘言了,以下是我从书中整理出来的阅读方法。
-------------------------------------------------
Notes on How To Read A Book

略读
随意翻阅,了解全书架构,决定是否细读
  • 标题
  • 封面文案
  • 目录
  • 索引
    • 关键字
    • 高频字
粗读
通读全书,暂时跳过不懂的部分
Ask the right questions
  • what's the topic
  • what is discussed in detail and how
  • is it completely or partly reasonable
  • what does this book mean to you
know what type of book are u reading (practical or theorical)
summarize a book in one or several sentences
列举书中的重要篇章,说明它们如何按顺序组成一个整体架构(列大纲,多级递归)
找出作者要问的问题(想要解决的问题)& 找出作者的答案,确定未解决的问题 (其中哪些作者无法解决)
找出关键词汇,了解其意义
找出重要的句子并了解其主旨
从相关句子中架构出一本书的基本论述
理性地表达反对意见
  1. 评论前确认自己了解全书
  2. 评判前找到理论基础,分清知识与个人观点的不同
  3. 避免情绪化争论
  4. 清楚自己的前提/假设/偏见
  5. 试着从对方的立场来着想
  6. 评判作者的角度
    1. 知识不足
    2. 知识有误
    3. 不合逻辑
    4. 分析不完整
别去找想象文学的主旨
新闻阅读
  1. 作者想要证明什么
  2. 作者想说服谁
  3. 新闻中的特殊语言/知识
  4. 作者知道自己在说什么吗

书评:Programming Collective Intelligence

我十分喜欢豆瓣的推荐系统,因为它经常能帮助我发现一些我感兴趣的新东西。然而在读这本书之前我却从未尝试去了解这是如何实现的,只是胡乱地猜测大概和一堆复杂的数学公式有关,是以在很长的一段时间里我把推荐系统看作是“超自然”的事物。

Programming Collective Intelligence 作为一本机器学习的入门书,很优雅地摘去了那些看似神奇的推荐系统、垃圾邮件过滤系统或是游戏AI头上的光环,将它们还原为一行行实在的代码,并相对浅显易懂地介绍了当中涉及的数学原理,仿佛是在带领读者去揭穿一个个魔术背后的障眼把戏,让读者在“哦”的醒悟之余大呼“妙绝”。

虽说这是一本讲原理的书,却一点都不枯燥,而且还很实用。全书十二章中,除去头尾两章,其余的每一章分别介绍了一类算法,从简单的相似度计算到有点玄乎的 genetic programming,都先以作者杜撰的简易数据开场,再拿现实数据(从提供API的 web 2.0 网站上抓取)开刀,既讲清楚了道理,又能启发读者利用这些算法去做实际的应用。

但这本书并不是完美无缺的,主要问题出现在代码中:

  1. 作者可能不太熟悉 Python,所以经常会看到 for i in range(len(xx)) 这种十分不 Pythonic 的遍历方式;
  2. 代码可读性不高——变量名太简短,滥用列表解析;
  3. 不知是排版错误还是作者根本没测试,部分代码与文本对不上号。
不过,瑕不掩瑜,这本书还是很不错的。如果你想跳出传统的“框架+数据库”模式、为你的网站增添一些智能而人性化的元素,如果你想以人工智能为研究方向而正在寻找入门书,可以考虑它。

书评:The Ruby Way

虽说在 Python 的影响下,我有些先入为主的不喜欢 Ruby,但 Ruby 作为近几年来的业界宠儿,必然有它出众的地方,值得关注,所以我前几天去图书馆的时候就打算找本 Ruby 的书看看——在没有计划要用它做开发的情况下,我不想太“严肃”地去学习 Ruby,却又不想看 Learn Ruby in 20 minutes 之类的东西,因此最终选择了 The Ruby Way 这本书。
在粗略的翻阅之后,我认为这本书的名字起错了。
The Ruby Way 这个名字很容易让人以为它是一本讲设计理念或是方法论的书,而很可惜它不是当中的任何一种。如果让我把名字改一改的话,鉴于它的内容编排十分类似于 Python 的 Library Reference —— 只是多了一点对语法的介绍——我提议用 Ruby Cookbook II (因为已经有一本 Ruby Cookbook 了) 或 Ruby Reference。拿它当参考书是挺不错的。
所以呢,如果你也只是想走马观花地了解一下 Ruby 的话,这本书会适合你的。而如果你想“严肃”地学习 Ruby, Programming Ruby 也许才是正确的选择。

Brand new world

Oh, 正如之前所说,大洪水来了,冲走了一切。
“我又看見了一個新天新地.因爲先前的天地已經過去了.海也不再有了”——《启示录》
新版的 tublog 正式投入使用了,虽然升级的时候遇到一点很囧的问题(我在上传到时候把application id 弄错了,忙活了半天@#¥@#¥@#)……
一贯不擅长页面设计的我,这次又偷懒,弄来了 wordpress 的 k2 主题,不过新版的 tublog 换主题要简单多了~~
Ah,start and try something new...