admin管理员组

文章数量:1566643

前言

一分钟之内会发生什么事情?

Netflix 观看时间增长 70,000 小时;

Snapchat 上有三百万视频被观看;

Google 新增两百四十万次搜索;

一个 JS 新框架被发明(这条不是真的 🤓)......

2021年度信息图记录了全球主流互联网平台 1 分钟内正在进行的活动量,以及用户生成的数据量。Qmee制作了一张信息图,向我们展示一分钟之内互联网的变化,比如,发了多少微博、看了多少照片、打了多少分钟的Skype电话、注册了多少域名。

计算机科学里有一本奇书,它的作者是人工智能领域里不可忽视的人物;这本书的名字叫《哥德尔、埃舍尔、巴赫:集异璧之大成》,道格拉斯·理查·郝夫斯台特(Douglas Richard Hofstadter),中文名侯世达,美国学者、作家。主要研究领域包括意识、类比、艺术创造、文学翻译以及数学和物理学探索。因其著作《哥德尔、埃舍尔、巴赫》获得普立兹奖(非小说类别)和美国国家图书奖(科学类别)。

作者为中文版所写的前言
译校者的话
概览
插图目示
鸣谢
上篇:集异璧 GEB
导言 一首音乐--逻辑的奉献:三部创意曲
第一章 wu谜题:二部创意曲
第二章 数学中的意义与形式:无伴奏阿基里斯奏鸣曲
第三章 图形与衬底:对位藏头诗
第四章 一致性、完全性与几何学:和声小迷宫
第五章 递归结构和递归过程:音程增值的卡农
第六章 意义位于何处:半音阶幻想曲,及互格
第七章 命题演算:螃蟹卡农
第八章 印符数论:一首无的奉献
第九章 无门与歌德尔
下篇:异集璧 EGB
前奏曲
第十章 描述的层次和计算机系统:蚂蚁赋格
第十一章 大脑和思维:英、法、德、中组曲
第十二章 心智和思维:咏叹调及其种种变奏
第十三章 bloop和floop和gloop:g弦上的咏叹调
第十四章 论tnt及有关系统中形式上不可判定的命题:生日大合唱哇哇哇乌阿乌阿乌阿
第十五章 跳出系统:一位烟民富于启发性的思想
第十六章 自指和自复制:的确该赞美螃蟹
第十七章 丘奇、图灵、塔斯基及别的人:施德鲁,人设计的玩具
第十八章 人工智能:回顾:对实
第十九章 人工智能:展望:树懒卡农
第二十章 怪圈,或缠结的层次结构:六部无插入赋格
注释
文献目录
索引

九百多页的《哥德尔、埃舍尔、巴赫:集异璧之大成》,从哥德尔不完全性定理引申到对人脑结构和心智本质的探讨再深入到计算机程序和人工智能,介绍了一个同时存在于数理逻辑,分子生物学缠结层次系统,这些内容在巴赫和埃舍尔的作品里有类似的对应物。

我国著名数学家、计算机科学家、我国人工智能奠基人之一马希文教授,马教授甘为人梯做了很多相当基础但具有启发性的工作。最典型的莫过于对数学的科普,在马希文编写的《数学花园漫游记》一书中包含了他撰写的关于考试的问题、地图上的数学、四色问题、侦察员的策略、模糊数学等近三十篇文章。马希文回国后便于北大的另一位数理逻辑与计算机科学的大家吴允增先生一道组织科普著作《哥德尔、埃舍尔、巴赫:集异璧之大成》(简称《集异璧》的翻译。吴允增一生的最后十年也是改革开放之初的十年,他为促进我国与国际计算机界的学术交流和国际合作做出了重大贡献,在1979年的“中国的达特茅斯会议”、第一次将人工智能作为重要内容的学术会议——吉林大学计算机科学暑期讨论会上,吴允增是四位大会报告嘉宾之一,他就数理逻辑方面的内容进行了演讲,算起来他也是中国人工智能的早期探索者之一。为体现中英文两种语言在构成形式上的根本差异《集异璧》一书的翻译耗费了很大精力,原作者侯世达(Douglas R. Hofstadter)还让其友人莫大伟(David Moser)来到中国加入翻译小组,几经周折和修改甚至重新翻译,才有了今天这本中译文依然能很好表达原著思想的神书《集异璧》。

“人工智能”可谓是一个讨论的门槛足够低、但研究起来门槛又相当高的一个领域。这也造成了大众眼中的人工智能与研究者眼中的人工智能的差异,而很多人所讨论的人工智能,不是AI,而是科幻(Science Fiction)。而作为中国第一批人工智能的研究者和开拓者,马希文眼中的人工智能更接近于用计算机按照一定的形式化方式、替代人类思考的过程,在《逻辑·语言·计算 马希文文选》中,他曾用类似“黑白帽子”(注:黑白帽子是经典的逻辑推理问题,限于篇幅不再展开)的推理过程来描述人工智能所起的作用,在他组织翻译的另一本书《计算机不能做什么——人工智能的极限》(注:该书的作者Hubert Dreyfus在1965年就发表了一篇《人工智能与炼金术》的文章,这也是最早关于人工智能是不是炼金术的讨论)一书的中文序言中,马希文提出了如下观点:

计算机不应是也不会是最终的智能机器。人工智能要向前迈进,就不应把自己局限于计算机的应用。这里指的是以图灵机和可计算理论为背影的现代通用数字计算机。应该开创一门新的学科,研究思维活动的更深入的具体规律,提出新的概念、新的方法和新的机制,比信息处理更为广泛、更为深入地描述思维的某些功能,并把这些与某种机器模型相联系以其最终得到工程实现。

对思维的认识是一个不断前进的无穷过程。每推进一步,就更加接近于思维的本来面目。盲目的乐观固然不对,盲目的悲观也没有根据。因为两者都使我们停止不前,而我们不能总停留在一个水平上。

马希文进行人工智能研究的时代正是数理逻辑大行其道的时代。但马希文从哲学的角度,进一步论述了未来人工智能发展的可能方向:人工智能的突破口一定会转到人机交互的领域,包括图像、声音以及其他方面的人机交互,将使计算机系统得以演化,最后能够达到智能的水平。不得不承认,在1980年代中国人工智能还是很模糊的概念的时候,是他天才般的想法真的“看”见了今天;而在人工智能第三波浪潮达到拐点之时,再去看马希文当年的相关论述,对于今日的人工智能研究,或许会有着启示性的灵感。

通往博学的道路充斥着各种令人沮丧的挫折和高强度的劳动,以及时常会出现的强烈的自我怀疑,但偶尔也会出现令人振奋的成功时刻。

如果你愿意理解科学的挑战、愿意感受文笔的美妙、愿意捕捉文字的技巧,我强烈建议你读这本书——原著和中译本。有许多真正有趣的东西,都在原著和中译本里,你都应该看看。分开着看也好,结合着看也好,肯定都会有收获的。

如今网络产生这么多数据,当然离不开人类社会生活的方方面面,还有存储式程序的自动运行,让我们一起看看设计程序的程序员的好习惯ABC。

一、双屏分屏

如果经济条件负担得起的话,我真的建议搞一个双屏幕。

但是如果实在负担不起的话,分屏也是可以的,当然屏幕不能太小。

在大多数情况下,学习编程时最好把有两个并排的面板可以使用——一个给你的 Jupyter notebook 或者 vscode;而另一个则是 Google Chrome 浏览器。IDE用来编程编译运行查看代码结果,浏览器用来查看文档、CSDN、知乎或者 Stack Overflow 和一些教程博客等等。等你渐渐熟悉了这一切之后,越来越熟练时,你就会无法逃离这种专注于工作的感觉了,而且非常之方便(爽)。

PS:如果想用快捷键来切换分屏和全屏。

二、手机静音

这么多年摸爬滚打,经过九年义务教育和考研的洗礼,我觉得成功一个决定性的因素就是【专注】。让你的手机静音,尤其是你的微信。如果可以的话,把手机拿开,放到另一个屋子去;如果不可以的话,就把手机设置成静音而不是震动;如果在嘈杂的环境,就播放安静的纯音乐(钢琴曲之类的)或者使用降噪耳机;如果你不能容忍太过干净的环境的话,就可以放一些白噪声或者雨林等等。

你越能专注集中注意力,你就越能学得快,越能学的好。

三、只学一个

虽然越来越多的信息出现在互联网上,越来越多的付费课程,越来越多的博客,越来越多的专业,其中最为明显的就是【人工智能】。

你需要【英语】,【python】,【框架】,【理论】,【第三方库】,【显卡】,还得搞【竞赛】,【项目】,【论文】。

不要试图同时开多个科目,比如学习两个或者三个,这样时间就不只是变成1/2或者1/3,而是变成1/5甚至1/10,同时效率也会受到影响,因为人的大脑会存留记忆。同理, 不要分心于闪闪发光的诱人的但和你正在学习的东西不相关的东西,如果真的很感兴趣,就找个地方,保存一下 url,比如Chrome 的书签,或者是插件 One Tab 都很好用。

四、学会沟通

在你学习编程的过程中,会试图封闭自己,什么都自己完成,你猜怎么着?

效率不高。

要学会使用社变相区和伙伴,比如,如果有一个朋友和你一起合作,你会学习得更快(同辈压力和更多沟通)。当和他人合作时,个人程序的缺点就会暴露出来,所以你学会编写更有效的代码,因为有人在变相地监视你。可能最开始你会极度不适应,但是作为一个程序员,总有人在审查校验你的代码,所以习惯这些。

五、精力管理

其实如果你有过一阵子的经历,就应该知道程序员绝对是一个体力活,所以睡觉,保持体力是一件多么重要的事就不言而喻了。

大多数人在下午时间的效率都低,而上午时间大脑则处于最好的状态,之前看一个Facebook工程师说他们培训的时候也是这么教的,就是学会给今日的 to do list 做一个优先级序列,在上午先去做优先级高的任务,可见精力管理是多么重要。

另一个小故事,Dinesh教授有一个,保持了几十年的习惯,就是(平均)每天只睡4个多小时,可以说是智力超群、体力超群、习惯超群。恐怖如斯,体力的竞争上老外明显要更强,中国人重视程度还是差一些,反正我自己是深有体会,加强中,每天跳跳绳也是好的。

六、示例代码

现在资源泛滥的时代,代码一抓一大把,GitHub或者博客,再或者书籍源代码,琳琅满目的。

现在摆在你面前的是一些代码,你能看得懂,是的,是能看得懂,但是你能写出来嘛?

答案自然是。不能的,【光看不练假把式】,古人诚不欺我也~

亲手去把那些示例代码敲一遍吧,须知【好记性不如烂笔头】。

七、温故知新

相信大家第一想到应该是大名鼎鼎的艾宾浩斯记忆曲线。

7.1、宾浩斯遗忘曲线主要说了一件什么事?

  艾宾浩斯遗忘曲线说的是:当我们学了一个知识并记住之后(暂时记住),很快就会开始遗忘,而且在记住后的两天内就会遗忘一大部分;要想减少遗忘,就要在“特定”的时间内重复温习。如下图所示:

  1.学习/记忆之后,遗忘的速度是先快后慢。随着时间的推移,遗忘的“量”大致是:刚学刚记住后遗忘率是0,20分钟后会遗忘42%,1小时后遗忘56%,8小时后遗忘64%,1天后遗忘66%,2天后遗忘72%,6天后遗忘75%,31天后遗忘79%。

  2.所以,在学习或记忆之后,要在24小时内及时复习,最晚不要超过2天,在这个区段内稍加复习即可恢复记忆。过了这个区段因已遗忘了材料的七成以上,复习起来就很容易“事倍功半”。

  3.按照曲线来讲,就是:在学习和记住之后,要在20分钟后、1小时后、8小时后、1天后、2天后、6天后、31天后等这些时间段再重复一遍,这样就可以把知识记得很牢(实现长久记忆)。

  以上就是遗忘曲线/规律的大致意思。

7.2、艾宾浩斯遗忘曲线(规律)的实际用法在于:间隔重复学习和记忆。

  也就是在学习或记住(暂时)之后,要在遗忘速度较快的区段及时重复,巩固记忆。间隔的时间按照艾宾浩斯遗忘曲线就是在学习或暂时记住之后的:20分钟后、1小时后、8小时后、1天后、2天后、6天后、31天后等这些时间段再重复学习、记忆。

  当然,实际的间隔时间不需要如此频繁,通常以一天、一周和一月的时间来间隔记忆即可。具体可以根据你想记多久,也就是考试时间来设定。如果你一星期后要考试,那么你应该今天复习完后,隔一至两天进行再次复习;如果你一个月后要考试,那么今天复习完后,应该隔一个星期进行一次复习;如果你三个月后才考试,那么你今天复习完,可以过半个月再进行复习,然后再按照前面说的间隔时间“倒推”复习。如果觉得次数不够,那么就按照时间间隔再增加几次。

7.3、间隔重复学习和记忆的方法不是简单重复,而是在“间隔复习和记忆的时间段”提取记忆(或者叫检索记忆)。

  这涉及到了大脑中的“必要难度法则”:我们提取一项记忆时越费劲,在想起来后,这项记忆的提取能力和储存能力都会得到提高。

  提取记忆的具体方法很多,比如:

  1.卡片法,比如背单词的时候,在卡片的正反两面分别写下中、英文,看中文想英文、看英文想中文。

  2.回想法,比如读完书或上完一节课之后,在一张白纸上写下记得的所有内容。

  3.提问法,比如读完书或学习完某章节后,自己设计一些问题,通过回答问题来检测自己对知识的掌握情况。

  4.思维导图法,比如阅读一本书之后,把主要内容梳理成思维导图,然后在“间隔复习和记忆的时间段”通过思维导图中的“关键词索引”来回忆书本内容。

7.4、除了遗忘规律,记忆(学习)还有如下4条重要规律

  1.越是有趣、奇特的东西,大脑越是容易记住。要想让记忆变得简单,就要学会运用“想象和联想”的能力,让记忆变得有趣,如我们常用的谐音法、图像法、联想法、结构法等等。比如我练习过的 精英特速读记忆软件 中的“编码定位记忆”就用到了谐音转化记忆、意义转化记忆、形象转化记忆、位置记忆、联想记忆,而其中的思维导图就是一种结构式的记忆。这些方法在特定内容的记忆上有很好的帮助。

  2.记忆要有浓厚的兴趣。兴趣是增强记忆力的催化剂。一个人对他所感兴趣的信息和对象,会产生高度集中的注意力与观察力,精神上更加亢奋。如何培养兴趣呢?

①首先就是“尝试”,兴趣都是在“做”的过程中培养出来的;而且浅尝辄止是不行的,没有兴趣的一个关键因素就是那个“度”不够,没有发现那个兴趣点。

②其次是“让它变得有趣”,比如记忆比较枯燥的内容时,你可以通过一些奇特想象使得你要背的内容变得容易和有意思。

  3.记忆时要集中注意力,有明确的目的。只有专心致志,聚精会神,信息和对象才会在大脑皮层中烙上深深的印记。有明确的记忆目的/任务,会产生出一定要记住的紧迫感,这种记忆的强烈动机往往可以大大提高记忆效果。例如,老师上课时宣布明天上课的头10分钟考一下今天讲的主要内容。结果,第二天考试成绩明显提高。

  4.越是理解透彻的内容,越是能清楚地记住。努力地理解内容,看起来像是在绕远路,事实上却是通往记忆的“捷径”。如何才能更好地进行理解记忆呢,其核心也就是“费曼技巧”:先明确目标;然后找出不能理解或卡住的节点,逐个击破;再透过请教别人和教别人,强化理解;最后整合内容,用简单的话语、用举例子的方式输出内容。

其实新背的单词或者刚学的知识概念,从你学完的那一刻起就开始遗忘了,这就是所谓的【打开书马冬梅,合上书孙红雷】。

研究表明,如果不抓紧复习,最后就只能记得剩下的21%,所以要每隔一段时间,就重复一次,这是比死记硬背有效得多的。

学校里的学习,可以参照这张图。

家长想加额外作业时,思考一下。

小学低年级阶段,女生普遍优于男生,不用着急,他们会在小学毕业时会师的。

难的项目,例如音乐,原版阅读,围棋等,需要耐心,坚持下去,才会有所成就。

对于新的技能,学科,学习曲线符合这样的规律。

其实学习曲线会分很多段,和曲折,只有锲而不舍者,才能最终学有所成。

八、用快捷键

常用快捷键的人效率确实要比别人高,比如PPT、IDE、CAD。网上一搜索一大堆,关键是学会熟练使用。

九、语言基础

在使用官方或者个人编写的程序库之前,要充分理解一门编程语言,比如python或者C++。

当你接触底层书写的时候,你会发现真的很无聊同时又很难,而直接调用属性和方法的类似乎又高级又容易。但是如果你不能很好地理解了编程语言,那么你就会陷入抽象泄露的情况之中,你无法搞清楚库在干什么,只是单纯地会调用,也就是江湖人称的调包侠。

十、代码错误

在绝大多数时候,作为一个程序员,你都是在寻找项目中的 Bug,否则你无法继续前进。

过程如下,首先读读错误信息,看看能不能看得懂:

  • 比如是不是代码打错了
  • 是不是旧版本资源

如果都不是,那么可以直接复制错误信息,去使用百度或者谷歌,再或者博客论坛、ChatGPT之类的去查询你的错误,对网络资源进行筛选,以分清哪些是有效的。

再不行,可以 debug 查看输出结果,确定错误为止,一遍解决问题。

当然一些低级错误除外,主要是不熟悉导致的,比如C++的分号,Python的缩进。

参见:

Gödel, Escher, Bach: An Eternal Golden Braid Paperback – February 5, 1999 by Douglas R Hofstadter (Author) Amazon

本文标签: 程序员习惯网络NETGEB