1. 计算机思维 (大一新生,到)

                                                                                            《目录》


您好呀,本篇博客翻译的是《Computation Thinking》第一章 --- 什么是计算机思维 ? 。

《Computation Thinking》:今年 4 月份出版的新书,中文名为《计算机思维》,作者是两位计算机科学家,美国的 彼得·丹宁 和 芬兰的 马蒂·泰德 。

 

如果直接写英文的句子,就是我看不懂的;第一章有一句话,我的确没懂。

第一章基本没啥干货,就是科普一下 “计算”;因此我加了许多个人的理解作为补充。

最后一段,是原文的提炼总结。因为直白翻译表达不出对 “计算机系” 的理解,要是觉得【译者补充】会打断思路可以直接跳过,但内容就很少很少了。

 


前言

什么是计算机 ?

大多数人会回答这是一个电子黑箱,ta 通过收集、存储、检索和转换数据来完成惊人的工作。

译者补充:

       黑箱,这个词不仅可以从字面上理解,意思是“内部是黑黢黢的箱子”。

       ta 还是一个理论,指的是既不能打开,又不能从外部直接了解内部情况的系统。

       这种系统在我们日常生活中很常见,如我们的家电,无论是电视机、电脑还是手机,对于绝大部分人来说,都属于“黑箱系统”,因为我们并不知道 ta 们内部的运作方式,但是也不影响我们使用 ta 们。

几乎所有的设备与计算机相关:电话、平板电脑、台式机、网页、手表、导航器、温度计、医疗设备、时钟、电视、DVD播放器、wifi网络。

像无人超市、银行、滴滴、酒店预定、社交软件、在线课程这样的服务,都在 Google搜索里---一个看不见的云世界。

译者补充:

  • 云计算未来会像水和电一样,作为基础设施;看得见的如 百度网盘、微云、云盘,而未来电子设备的计算和存储都将在云端,因此硬件设备的配置不那么重要了,也有计算机科学家认为,未来整个世界只需要 5 台计算机。

 

  • Google所有的业务,尤其是由用户产生数据的业务,比如邮件、博客、Orkut等都搬到了云计算上面。在Google内部,产品团队的工程师开发产品时,已经不关心实际用了多少物理上的服务器,这些服务器在哪里,互相是如何连接的。他们只要提出自己需要多少计算资源,包括CPU资源和存储资源就好,填好配置文件,剩下就是云计算的事了。
    对于用户来讲也是如此,他们不知道自己的内容放在了哪里,这些数据就像一个存储在看不见的世界里。

 

  • 提出云计算是为了提供服务,可以让网民们在互联网云中任何时间、任何地点都能快速和安全地访问、处理、存储和共享信息。后来发现云计算的力量超自己的想象,云计算的产业链一旦形成对信息产业的影响极大,就是让越来越多的服务从 PC 客户端转移到网上,完成这些只需要 5 G 部署完成。

 

  • 云计算最早由 Google 提出,当Google创始人佩奇和布林还在斯坦福读书时,就提出并实现了一种叫 “Big File” 的新型文件系统,TA 是后来的 Google 云计算技术中的 GFS 文件系统的雏形,有了 GFS 和 迪恩以分治思想开发的并行处理工具 MapReduce,能把很多廉价的服务器集成起来完成超级计算机的计算和存储功能,前者的成本不到后者的五分之一,便完成了云服务。

计算机创造了大量的工作机会,促进通信、经济发展、国防、提高生活水平,等等。

与此同时,也淘汰了许多工作机会、隐私泄露、被人监测,等等。

随处可见的东西,都被数字化了。计算机革命正发生在我们的身边。

 


计算的能力和价值

     计算机思维提供了一些这些问题的答案。

     很多计算机思维都是专门针对如何让计算机为我们做一件事,如何控制一个复杂的电子设备,在不造成损害或伤害的情况下,可靠地完成一项工作。

译者补充:

    所谓的计算机思维,其实是一些通用的方法,人在设计程序时,总结出的经验,如:

    递归:计算机遇到的问题的处理的数据可能是数量级,不好直接解决;这时便可以把原问题变成一个很TA相似但问题规模比TA小的问题来解决,分解为一级一级,直到变成了不可分解的个体时,问题就好解决了。

    分治:将一个大问题拆解为俩个或俩个以上的小问题;企业为什么喜欢招新人,不招牛人,因为老板可以把一个大项目拆解为数十个小项目,找有相关技术的新人即可完成这个大项目,新人组合起来就比得上一个牛人了。

    对立统一:计算机的 “智能” 是通过收集到的大量数据给 “喂” 出来的,得到的结果往往具有网络效应;而人的思维常常只能局限在自己的角度,不能站在对方面或者多纬度的思考,若能做到就取得很好的效果。

    全局与局部:写程序时,我们都会先定义好整个程序的模块,模块下的内容我们只会有一个模糊的想法,等模块被定义清楚后,我们再一级一级的地细化。

     算法是专门说明计算机应该如何工作的过程。

     虽然人类可以执行算法,但他们不能像机器那样快;现代计算机可以在人类完成一步所需的时间内完成一万亿步。

译者补充:

      我电脑的处理器是 1.6 GHz,每秒可以运算 1.6 * 10 亿次。 1 GHz  = 每秒运算 10 亿次,1.6 GHz 是CPU时钟的频率。

     魔法不过是一台机器,ta 可以快速执行大量非常简单的计算。

     程序是自动化的桥梁:用编程语言编码的算法,会被翻译成控制计算机的机器指令。

译者补充:

        大多数计算机科学家的工作是把现实问题转换为数学问题,判断这个数学问题是否可计算,如果是,就把数学问题描述成可计算问题;“可计算”,就是不但可以算,还能算出结果来,对于计算机科学家来说:给定输入,经过计算机的有限次计算,能得到一个确定的输出就是 “可计算”。

        工程师的工作是把可计算问题用编程语言实现出来,但因为工程师动手能力太强,往往问题都是被工程师提前解决(工程师也不知道为什么可以解决),而后过了很多年才被计算机科学家把理论补上,为什么这样可以完成!

        此外,计算机科学家有一个笑话。请问什么是计算机科学家 ?答:只会用数学归纳法的,就是计算机科学家。

        其实计算机科学家证明问题是否是 “可计算” 问题时,一般都是归纳法证明的。

      但计算思维远不止于自动化。  信息和计算过程已经成为理解自然现象和社会现象的一种方式。

      今天的许多计算机思维都是分析学习世界是如何运作的。

      越来越多的生物学家、物理学家、化学家和其他科学家正在通过计算的角度来观察他们的主题;艺术、人文和社会科学的专业人士也加入进来。

      计算机模拟使以前不可能的虚拟实验成为可能。

      世界的 “信息解释” 提供了其他任何方法都无法做到的概念性和经验性工具。

译者补充:

       以前的科学研究只有两种模式,一个是实验,一个是理论。

       实验科学家要搭建一个真实的科学场景,或是前往一个真实的科学场景去做观测,得尝试各种不同的条件,收集数据,看看能不能验证某个模型或者想法。

       理论科学家则是对实验观测的现象和数据提出解释。有时候要发明一个自己的模型,甚至提出一条定律,要不但能解释现有的实验,还能预测新的结果。

       而现在出现了模拟,也许正如《黑客帝国》的故事情节,因为模拟太真实了,我们都不确定我们是否是真实的,还是只是被模拟了呢,对这方面的讨论参见博客《集合论 的 计算机与数学的区别》 ?

       模拟不能让您得到什么一句话解释,但是计算能让您更接近真实情况;实验费钱,理论费脑,而计算……最多也就费点电,计算机的确改变了某些科学家的工作方式,调整几个参数就是一场新的实验!

      计算也给我们提供了计算机在任何合理的时间内都不能做的工作。对计算机来说,这些工作根本不可能完成。

译者补充:计算的渐进复杂度如果能控制在 O(n^{k}) 或以下,那这个时间是合理的,渐进复杂度参见博客《渐进记号》。      

       许多社会、政治和经济问题都是计算机无法解决的。

       通过了解计算的局限性,我们可以避免用计算来解决这些问题的坑。

       显然,在这么短的时间内设计一台程序或一台机器,这是一项艰巨的设计任务,要让机器在没有错误的情况下完成工作,就需要有自己的思维方式。       

       事实上,站在用户的角度上理解用户,并为他们专门设计系统,是现代计算的一大挑战。

       设计是计算机思维的核心问题之一。

 


计算机思维的定义    

        计算机思维已成为一个具有多种定义的流行词。

        我们总结出许多的思想为这本书中使用这个定义:计算思维是智力技能和实践

  •          设计使计算机为我们工作的算法(计算方法),还有
  •          解释和解释世界是一个复杂的信息过程。

          设计的总结反映了计算的工程传统,在这种传统中人们创造方法和机器来帮助他人。

          把现实的问题翻译为数学问题,一直是计算的科学传统,人们试图理解计算是如何工作的,以及 ta 如何在世界上出现。

          Design features immersion in the community being helped, explanation features being a dispassionate external observer.

          理论上,设计计算而不解释计算,或者解释计算而不设计计算是可能的。

          在实践中,这两个方面是会同时进行的。

          计算是一系列复杂的数值计算和符号处理。

  •                   数值计算如,基本的算术运算(加、减、乘、除)和基本的三角函数(正弦、余弦和正切)。
  •                   符号处理如,数字或符号的逻辑比较、决定下一步要做什么指令,或用一个字母串替换另一个字母和数字串。

           以适当的顺序安排数万亿次这样的简单操作时,可以解决现实生活中的许多问题如:预测明天的天气、决定在哪里钻探石油、设计具有足够升力的飞机机翼、找出最有可能在哪个物理位置飞行等,导航,叫出租车,或者弄清楚哪两个人会成为一对好夫妻......

           而计算机是执行计算操作的代理。

           被算法化后,所有计算都遵循执行算术和逻辑运算的指令程序。

           算法当然也可以被人类按照流程计算出来,不过,除了一些天才,大部分人的计算速度远不及机器快,或无错误。

 

           我们用 “工作” 一词,来指任何人认为有价值的任务。

           而今天,许多人依靠计算机(实际上是由计算机执行的计算)来完成工作,因为自动化的工作,而没有机器的帮助是做不到的。

           计算机在一些日常工作上已经足够好了,因此,由于自动化而失去就业机会已经成为一个重要的社会问题。  

译者补充:

        自动化是我们的工作(程序员),现在我们的工作可能会让别人失业;当我们工作到巅峰时,也是我们自己失业的时候。  

        这件事情,我们也没办法;被自动化的工作都是人的工作效率远低于机器的(以及成本方面),一个企业家出于长远考虑,一定会使用机器的,如果 TA 不使用机器,TA 的对手使用了就可以打价格战......

           我们不要把 “工作” 一词等同于自动化哦,而计算思维可以帮助不能自动化的工作,在设计章节中,我们将讨论能这样做的计算思维。

           显然,要成功地设计能够进行大量计算的程序和机器,并通过计算了解自然信息过程,就必须具备一种特殊的思维技能。

           这种计算思维,或计算思维的技能,并不是编程的一套概念。    

           计算机思维是一套非常丰富的技能:                     

           在本书末尾,我们将概述本书中您将遇到的计算思维的六个维度:机器、方法、计算训练、软件工程、设计和计算机科学。

译者补充:计算机思维是在学习和应用计算机学科理论和技能的过程中,所体验和获得的思想方法和做事方法。

 


一厢情愿的想法

           在我们对计算思维的热情中,我们需要小心避免一厢情愿的想法。

           也许第一个,也是最常见的愿望是我们能让计算机做任何我们能想到的工作,这一愿望无法实现,因为有许多工作对计算机来说是不可能的

           译者补充:

             截自博客,《集合论》计算机与数学的区别。

           例如,没有任何算法可以检查另一个算法并告诉我们 ta 是永久终止还是永久循环。

           人们都渴望有这样的算法来帮助调试;从逻辑上讲,这在1936年是不可能的,当时的图灵证明了这一点,而今天仍然是不可能的。

译者补充:

        这就是著名的图灵停机问题,不死心的话看看推导过程,在博客《算法!司南》。

        出现死循环的程序对于人们来说,真的很不爽;有时候也不知道程序哪里没设计好就变成了死循环,因此人们都十分渴望这样的算法,但这个就是一个梦,因为图灵停机问题是不可计算的问题,算法只能处理可计算问题。

         即使我们坚持逻辑上可能的工作,也有许多工作不能在合理的时间内完成 --- 还没有发明出高效的算法。

        一个著名的例子是旅行推销员问题,即在一个国家的地图上找到最短的旅行路线,每个城市只访问一次。

译者补充:

       这里涉及了计算机科学中一个最著名的难题:P = NP 或 P \neq NP,记录在博客《算法!司南》。

       旅行推销员问题就是我博客里写的 :旅行商问题。

       没事的时候,我会挑战一下,现在研究 “可满足性问题” 中ing,这、这真的是一夜暴富、一夜成名的机会,成为数学、计算机科学界的名人,还有 700 万 RMB 的奖金等着您,说不定还可以拿一个世界级的 “小奖”。         

         计算这一点的算法在包裹递送行业将具有巨大的价值。

         找到最短路径的最简单的方法是枚举所有可能的旅游并选择最短的,但复杂读远大于 O(n^{k})

         (枚举)100个城市以内,这需要 10^{130} 年世界上最快的超级计算机,相比之下,宇宙的年龄大约是 10^{10} 年。

         即使是 “最简单的方法” 也不可能!

         而算法分析人员已经识别出数千个以这种方式难以解决的常见问题。

         大多数情况,我们可以快速的找一个近似解;他们被称为启发式算法。

         例如,在瑞典旅游连接所有的 2, 4978 个城市找到最短路径/最少花费。

         枚举算法需要的 10^{100, 000} 年 !  

         但是在 2004 年滑铁卢大学的一个团队使用 启发式算法 优化找到了一个最短的旅行路线,并证明了 ta 是正确的。

         他们使用的 启发式算法 花了 85 年的处理时间,是通过许多台计算机组合计算花了几个月,换成单台计算机就是 85 年左右。

         计算机科学家需要发展足够的经验和技能,以知道什么时候的工作是不可能的或棘手的,并寻找好的启发式来解决这些问题。

译者补充:

       启发式算法 得不到最优解,除了 启发式算法 之外,还有贪心、动态规划,我也只能想到这些

       以美国快递公司 UPS 为例,他们完全不满足 最近邻居法(启发式算法之一) ,因为他们有 5 万个快递司机,哪怕只是让每个快递员每天少走一英里,UPS 每年就能省下 2 亿人民币 ;如果您开发了更高效的算法就只卖给世界上所有快递公司,哈哈,每天的收入会十分可观。

 

         第二个,一厢情愿的想法是,相信学习如何在计算机科学课程或编码密集型研讨会中编程将使您能够解决任何使用计算的领域中的问题。

         不,您也需要了解另一个领域。

         例如,即使您在编程课程中学习过搜索算法,在学习了基因组生物学和生物学数据的重要性之前,您也不可能对基因组学项目有用。

          

         第三个,一厢情愿的想法是相信计算机对计算思维不是必要的。

         我们可以考虑如何用算法解决问题,而不关心运行算法的计算机。

         但事实并非如此。当一台计算机没有足够的内存存储所有数据时,我们将寻找方法在 ta 们之间划分计算。

         当计算机的内存很小时,您就想办法找到空间占比小的算法,算法也得向硬件妥协,选择最适合情景的。

译者补充:

           得到硬件加持的算法,可能是最适合当前环境下的算法,比如有人根据硬件优化和 GCD 的性质 发明了比欧几里得算法更快的 GCD 算法,GCD 算法是用来求最大公约数。

           从计算机思维的角度来说,您必须考虑硬件。因为计算机是一个机器,而机器除了数学和算法之外,也有自己的特点和脾气。

           今天我们用的一切计算机,包括手机、汽车、凡是通用计算机,就都是 冯·诺依曼 架构。

           当然冯·诺依曼架构不是唯一的可能性。

           现在人们正在研究新的架构,比如量子计算机、神经网络计算机、光子计算机、DNA 计算机 — 那些东西有自身的编程特点。

         即使您的计算机有足够的内存、足够的处理能力,并且没有瓶颈,其他方面也会限制您解决问题的进度,特别是 CPU 内部时钟的速度,ta 使机器以有序和可预测的方式执行计算步骤。

         但是一些新机器,像量子计算机,是没有时钟的:我们应该如何考虑对 TA 们进行编程 ?   

         

         第四个,一厢情愿的想法是相信计算机是智能的。    

         如果您不精确地将人类语言描述的算法转换为程序步骤,则您的计算将包含可能导致灾难的错误。

         计算机是很笨的。计算机会无意识的执行步骤,速度非常快,但他们不了解步骤的含义。

         TA 们唯一能改正的错误就是您所能预料的(语法错误,逻辑错误是不能的),并提供改正算法的提示信息。

         您是智慧的源泉;计算机放大了您的智慧,却没有 TA 自己的。

         但我们建议您以谦逊的态度对待计算机思维,这是一项学问。

         我们的大脑自然不会在计算上思考。

         保持您对计算机和算法做工作的能力的看法,您需要了解您想要涉及的应用领域,计算机对计算的依赖性,以及机器中极其缺乏智能。

         


计算机思维的发展

        计算机思维似乎是 20 世纪 40 年代开始的电子计算机时代的产物。

        好吧,其实不是。

        有一种经过数学训练的专家,他们以团队的形式进行复杂的计算,他们是 “计算师”。

        二战期间,计算师甚至还是美军一个专门的编制。

        当时美军发明了射程能达到好几英里的大炮,而这个大炮怎么瞄准,就涉及到很复杂的计算。

        要算一个瞄准角度,您至少必须考虑目标到您的距离,目标跟您的高度差,以及当时战场上的风速。

        如果您学过物理,应该知道怎么算。但是,在战场上找个懂物理的人现场拿三角函数解方程可就太慢了。

        计算跟 “会算” 是完全不同的要求。美军必须把整个计算给流程化,变成标准操作,而且还得能让好几个计算师一起算。这就要求这个计算方法满足三个条件 ——

  • 第一,计算过程必须被拆解成很多步骤,每一步干什么必须是简单而明确的。比如这一步就做个加法、下一步就查个三角函数表,在下一步是除法,等等。
  • 第二,所有这些步骤要能拆分开来,分给几个计算师,各自负责其中的一部分。而这就有个交流问题,各个计算师算出来的东西得汇总在一起,形成一个最终的结果。
  • 第三,还得有个纠错机制,让计算师们能觉察到自己哪里算错了。

        按今天的概念,这其实就是 “分布式并行计算”,这不但是计算机方法,而且还是超级计算机的方法。

        “分布式并行计算” 的本质就是现在常说的 “分治”,分治思想也就是计算机思想之一。

        所以您看,我们可不是先有了计算机之后才有的计算机思维。

        人们早就有了计算机思维,只不过当时没有机器可用、只能用人。

译者补充:

         今年我也是大一新生,在前一个月的军训中我想了一个问题:军训点名

         军训点名,因为我们只有一个助班却有很多人,因此点名花销超过 10 min,教官不太满意。

  • 如果采用 分治 的思想,分而治之:让每列自己解决,名单按列分给排头,最后由排头上报;花销是每列点名所需的最大时间(小于10min),复杂度 O(log n)。
  • 如果采用 时空互换 的思想,空间换时间:队伍排开,每个位置对应一个人,以固定的站位点名,花销为统计时间(少于10min),复杂度 O(1)。
  • 如果采用 递归 的思想,挑出基础情形和递归情形:以团队的方式管理,按照宿舍汇报,花销为统计 n 个宿舍的时间(少于 10min),复杂度 O(n)。
  • 如果采用 等价性交换 的思想,用瓶子代替人:强制要求每个人带水瓶,水瓶以每支队伍的形式逐次递上来排列,之后再根据每列的水瓶点名即可,耗时大约10min,复杂度 O(N),N为人数,这样不会耽误军训的时间。

          分治、递归、空间换时间、等价性交换,这些都是常用的计算机思维,遇到问题了就可以搬出来看看。

          陆游有句诗,“文章本天成,妙手偶得之”。

          真正的好想法,从来都不是按照什么配方,什么算法,什么固定套路(计算机思维)一点一点制造出来的;整个思维是一个非线性的跳跃过程,因此也不要特别依赖计算机思维;清空大脑保持一种 “呈接受礼物?的状态” ,我就懂这点了

 

                            


计算机思维教育运动的兴起         

         以下的文字非原文翻译,而是原文的提炼总结。

         不知道您有木有过这样的想法,现在各个学科都要用到计算机,大学里专门搞一个 “计算机系” 真的合适么 ??

         当然是合适的,因为开设 “计算机系” 不是为了满足市场对程序员的需求,而是研究计算机的地方。

         这就要从世界上第一个 “计算机系” 说起了,第一个计算系就是 “计算机科学系”。   

         1962年,普渡大学建立了美国第一个计算机科学系,紧接着斯坦福大学也建立了一个。

         您可能会绝得这是皆大欢喜的事情,但是在当时,可是引发了很大的争议。其他系的教授们纷纷声讨,说 “计算机科学” 算什么学问,何德何能,居然要开山立派成立新系呢?

         当然这个灵魂诘问的背后还有一个利益的争夺。成立新系会把其他系的学生、经费和人员编制分流出去,等于是在削弱现有的系。

         电子工程系的教授完全可以说,我们也可以教计算机课啊?

         这就给早期的计算机科学造成了一个重大的选择压力。

         计算机科学系要竖旗,就不能仅仅是一个培训程序员的地方;否则,别人电子工程系的同学还懂电子工程,而“计算机科学系” 的同学就只会敲代码,这不是打我 “计算机科学系” 的脸么 !!!

         计算机科学家必须在企业研发之外,搞出一些有学术味道的东西,得有拿得出手的发现、能提高大学的声望才行。

         要是搞不好,可能就不会有 “计算机科学系” 了,也不用为他们担心。

  •          人们研究计算机是为了自动化,提高生产力;但自动化对于 “计算机科学” 来说,是计算机系最初级的内容。
  •          “计算机科学” 真正研究的是 “计算机” 这个东西 和 “计算” 这个行为本身,这才是 “计算机系” 的学生要做的事情,也是计算机系比较高端的内容。
  •           这些学生出来后,又把计算机思维应用到其他科学领域,如生物的DNA、物理的基本粒子、计算机模拟、脑机接口等等,计算机系就是被这样的学生提高的声望,从此,这个世界看待您的眼神都是崇拜的。         

           因此,看到 “计算机科学系” 原来这么高级,很多教授也渐渐承认了 “计算机系”。

           后来,计算机发展的越来越大,发展出来的派系,也越来越多......

 

           初级人们研究计算机是为了自动化,提高生产力;但自动化对于 “计算机科学” 来说,是最初级的内容。

           现在的培训班、按部就班教学的大学、网络上的课程,大多是 “计算机系” 最基础的内容 --- 技术。

           早期的编程语言就是机器语言只有 0 和 1,但因为机器指令的功能不强,对程序员要求极高,后来发明了便把常见的机器指令组合再一起完成常见的功能如基本运算,这时就从机器语言过渡到汇编语言了。

           但汇编语言还是比较抽象,人们有了一个自然的需求,能不能按照人容易理解的思维写程序后把写出来的程序自动翻译成机器语言呢 ?

            这就是所谓高级编程语言。

            1957 年,Fortran 语言被发明了,这是一个科学计算语言,特点是特别容易写公式。

            1958 年,LISP 语言出现,这是一个极其强大的符号处理和逻辑运算语言,甚至可以用于人工智能设计。

            1959 年,人们又发明了 COBOL 语言,用于商用数据库编程。   

             要方便人们在一台计算机上操作,您就得有账号管理,得安排不同的程序同时运行,那么就得有操作系统,程序员就得有系统思维。要想开发出来的软件好用、可靠、容易维护,程序员就得有工程思维。

             接下来还有了互联网,程序员就需要网络思维和安全思维。

             再进一步,编程思想也在演化。

             传统编程语言是线程式的,程序员思维模式是操控计算机。后来要把软件做得很大的时候,出现了 “面向对象” 的程序设计。

             这是不一样的思维模式,程序员想的不再是操控计算机这一台机器,而是 “类” 和 “对象” :每个类和对象就好像是一个小机器一样,是这些虚拟的小机器之间在互动。        

             随着编程语言的发展,同时计算机硬件也在变得越来越快、越来越普及,教育界就把编程技能,看得和阅读、写作和数学一样,被认为是人人必备的第四个技能,但这些还都是比较浅层的计算机科学,只会这些在现代只会被代替,具体原因参见博客《C 语言自学指南》。           

           

            中级:“计算机科学” 真正研究的是 “计算机” 这个东西 和 “计算” 这个行为本身,这才是 “计算机系” 的学生要做的事情。

            哪怕是计算机科学家,也只有很少很少的一部分在研究计算机本身(偏物理) 、具体的计算方法(偏数学) ---研究计算机本身就是如何让计算机运算速度更快,具体的计算方法,就是现在常说的算法。

           

            高级:计算机科学系的学生出来后,又把计算机思维应用到其他科学领域,如生物的DNA、物理的基本粒子、计算机模拟、脑机接口、等等。         

            可以说,计算机系最有前途的学生一定是跨学科的 ,利用计算机思维解决那个领域的问题,当然对那个领域的知识也是要懂的,因此计算机系实际上是一个非常忙的学科;您想选哪一种都取决于您自己的努力程度。

            最需要考虑的一个问题就是,如何把那个领域的问题转化为信息或者数学问题,这也正是大部分计算机科学家做的事情。

            具体的例子,请猛击:《2020发财纸大计》。        

            与计算机联系的领域,就像四面八方的窗户,我将在后面的章节一一道明。

 

 

            我个人的主业是 :

            副业是 :

  •           ROS机器人开发(C/C++),目前我还只能弄弄最简单的机器,比玩具汽车的功能要多点;代表博客:《机器人》。
  •           量化交易(Python),还在学金融的知识培养思维模式,提高对数据的敏感程度,主要是想自己设计程序管理投资、买卖股票,也没想着赚,不亏太多就好,和机器人一样这是一项增值的技能啊;代表博客:《科技金融 Call 量化交易》。

 

            也许,您会很奇怪,专精一个不好嘛 ?

            现代世界竞争非常激烈,想在任何一个领域达到前 1% 的水平都是很难的。

            但如果您有两三个技能,把每个技能都练到前 25% 的水平,那似乎更容易一些。

            如果您这几个技能之间能够互相配合,那您就是一个稀缺人才。

            特朗普也是这样,而且他的技能还不止三个;而且他的一些天赋我们无法复制,比如武器级的说服力。

 

            值得一提的是,现在的人工智能是: 机器学习 + loT(万物互联) + 区块链 + 大数据,如果可以投身于其中,也是不错的选择。

            讲个很简单真实的例子,最近,媒体说有一个教室,从房顶上放下一个摄像头,盯着每一个学生,看他们有没有好好听课。

            随着 IoT 的出现,我们就可以跟踪每个人的行为,比如要知道学生的学习效率,可以让学生通过与桌子、椅子、板凳联网来获得数据,就可以知道这个学生表现怎么样。

            用在药品监管上,就可以判断药品的真假,还可以找出是哪个环节出了问题;还可以实时监管像拼多多这样的平台卖的东西是不是假货或者有圈套。

            再比如,对健康的跟踪。今天任何一架商用的客机,上面有一千多个传感器,每天产生一个多G的数据,对里面的温度、湿度的运行监控情况是非常好的,但是我们人体内没有传感器,以至于当很多人得了癌症的时候已经是晚期了。

            哪怕您不能跨学科,投身于时代的浪潮也是能规划好自己的未来;但 IT 行业工作压力大,但心理很焦急、压抑时,我就建议您,要么及时抽身,要么提高抗压能力和处理压力的办法,否则会落下病根 (不稳定的心理)。

            

          第一章结语:

     We offer our stories of these dimensions to show you the power of computational thinking and the ways in which it might help you in your work with computers and computation.

          说起来,精彩的都在后面吧。

          此次翻译,用的自己实现的翻译器,可以参见博客:《爬虫自制翻译器》。

 

  • 9
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值