世界是数字的
最新书摘:
-
明生2014-12-20如果我选择“文件>退出”或单击窗口右上角的“x”按钮退出应用程序,系统会通知应用程序它马上要“死”了,以便它赶紧“安排后事”(比如,弹出对话框询问用户“您想保存这个文件吗?”)。
-
明生2014-12-17技术变革并不是单个孤立事件,而是一直在进行中的过程:迅速、持续不断而且越来越快。幸好数字系统的基本思想还是不变的,所以如果理解了本书讲解的内容,就能理解未来的系统,这样你就可以更好地面对未来系统所带来的问题和机遇了。
-
明生2014-12-17这种进步,看上去毫无疑问很棒的样子,事实上在大多数情况下也的确很棒,但有时候也会在人们的心中投下不安的阴影。就个体而言,技术对个人隐私的影响就是其中最显著也是最令人担心的一方面。…… 其次,对于我们在网上所作所为和往来踪迹的记录看起来会永存不灭。…… 另外,保护我们隐私和财产的社会机制还没跟上技术的高速发展。
-
明生2014-12-17至于我写这本书的目标,是希望读者能对计算机和通信技术有一个深入地了解,真正明白它们的工作原理,他们的起源,还有未来的发展趋势。然后,能够从对自己有益的角度重新看待这个世界。果能如此,吾愿足矣。
-
明生2014-12-17曾在贝尔实验室工作30多年,与Unix 系统的创造者Ken Thompson 和Dennis Ritchie (C语言发明人)是同事,对Unix 系统也做出了突出贡献。他与Dennis Ritchie 合著的The C Programming Language 是世界上第一本被广泛认可的C语言教程,被称为”K&R C“。他还发明了AWK 和 AMPL 编程语言。
-
猪头2014-10-16每个网页都包含指向其他页面的链接(这正是“超链接”的本义) 。我们都知道链接必须由我们主动点击,然后浏览器才会打开或转向新页面。但图片不需要任何人点击,它会随着页面加载而自动下载。网页中引用的图片可以来自任何域。于是,浏览器在取得图片时,提供该图片的域(根据请求中的来源页信息)就知道我访问过哪个页面了。而且这个域也可以在我的计算机上存放 cookie,并且收到之前访问该域时生成的 cookie。 以上就是实现跟踪的秘密所在,下面我们再通过例子来解释一下。假设我想买一辆新车,因此访问了 toyota.com。我的浏览器因此会下载 60 KB的 HTML文件,还有一些JavaScript,以及 40张图片。其中一张图片的源代码如下: <img src="http://ad.doubleclick.net/ad/ N2724.deduped_spotlight/B1009212; sz=1x1;tag=total_traffic;ord=1?" width=1 height=1 border=0> 这个<img>标签会让浏览器从 ad.doubleclick.net 下载一张图片。这张图片的宽和高都只有 1个像素,没有边框,而且很可能是透明的,总之页面上看不见它。当然,这张图片根本就没想让人看到。 当我的浏览器请求它时, DoubleClick会知道我正在浏览丰田汽车公司网站的某个页面, 而且 (如果我允许) 还会在我的计算机中保存一个 cookie文件。要是我随后又访问了一个内置 DoubleClick 图片的网站,DoubleClick 就可以绘制一张我的“足迹图” 。如果我的“足迹”大都留在汽车网站上,DoubleClick 会把这个信息透露给自己的广告客户。于是乎,我就...
-
猪头2014-10-16编程这件事儿可能会让人纠结郁闷,也能给人带来极大乐趣。你甚至可以靠写代码过日子,而且还能过得不错。任何人都可以成为程序员,但如果你可以做到大处着眼小处着手那就难得了。更难得的是注重细节、一丝不苟,因为只要你稍有疏忽,写出的程序就可能出错,甚至根本无法运行。
-
猪头2014-10-16正如美国语言学家本杰明·沃尔夫(Benjamin Whorf)所说: “语言塑造我们的思维方式,决定我们可以思考什么。 ”这个论断是否适用于自然语言还有争议,但对于我们发明的告诉计算机去做什么的人造语言来说,好像还是挺靠谱的。
-
猪头2014-10-16针对某个特定的任务,总会有多种写程序的方式。从这个意义上说,编程就像是文学创作。没错,风格以及恰如其分地运用语言对写作至关重要,对写程序同样至关重要,而且还是区分真正伟大的程序员与普通程序员的标志。程序员对特定的计算任务可以有如此丰富的表达方式,也意味着不难识别从他人程序中复制的非原创代码。我每次上编程课的时候都会着重强调这个观点, 但还是有学生认为改改名字或者挪挪代码, 就可以掩盖剽窃的事实。 很抱歉,这是行不通的。
-
猪头2014-10-15什么情况下会用到指数级算法呢?那就是除了一个一个地尝试所有可能性,没有更好的办法的情况。谢天谢地,指数级算法总算是有点用武之地的。有些算法,特别是密码学中的算法,都是让特定计算任务具有指数级难度的。对于这样的算法,只要选择了足够大的 N,其他人在不知道某个秘密捷径的情况下,是不可能通过计算直接解决问题的。 现在你只要知道有些问题容易解决,而有些问题则要难得多就可以了。实际上,关于解决问题的难易程度,也可以表达得更加精确一些。所谓“容易”的问题,都具有“多项式”级复杂性。换句话说,解决这些问题的时间可以用 N 2这样的多项式来表示, 其中指数可以大于 2, 但都是可能被解决的。 (忘了什么是多项式啦?不要紧,多项式在这里就是指一个变量的整数次幂, 比如 N 2或 N 3。 ) 计算机科学家称这类问题为“P” (即“Polynomial” ,多项式) ,因为它们可在多项式时间内解决。 现实中大量的问题或者说很多实际的问题似乎都需要指数级算法来解决,也就是说,我们还不知道对这类问题有没有多项式算法。这类问题被称为“NP”问题。NP 问题的特点是,它可以快速验证某个解决方案是否正确,但要想迅速找到一个解决方案却很难。NP的意思是“非确定性多项式” (nondeterministic polynomial) ,这个术语大概的意思是:这些问题可以用一个算法在多项式时间内靠猜测来解决,而且该算法必须每次都能猜中。在现实生活中,没有什么能幸运到始终都做出正确的选择,所以这只是理论上的一种设想而已。
-
猪头2014-10-15计算机是一种通用的机器。 它从存储器中读取指令, 而人把不同的指令放到存储器中,可以改变它要执行的计算。指令和数据要通过使用场景区分,一个人的指令可以是另一个人的数据。
-
猪头2014-10-15除了发现性能提升之外,用户是感受不到这种缓存的。但缓存的思想却无处不在,只要你现在用到的东西不久还会用到,或者可能会用到与之邻近的东西,那运用缓存思维就没错。CPU中的多个累加器本质上也是一种缓存,只不过是高速缓存而已。RAM也可以作为磁盘的缓存,而 RAM 和磁盘又都可以作为网络数据的缓存。计算机网络经常会利用缓存加速访问远程服务器,而服务器本身也有缓存。 在使用浏览器上网的时候,你可能见过“清空缓存”的字眼。对网页中的图片和其他体积较大的资源,浏览器会在本地保存一份副本,因为再次访问同一网页时,使用本地副本比重新下载速度快。缓存不能无限地增长,因此浏览器会悄悄地删除旧项目,以腾出空间给新的,它还给你提供了删除所有缓存内容的命令。 你自己随时可以检验缓存的效果。 比如可以做下面两个实验, 一是打开 Word或 Firefox等大程序,看看从启动到加载完成并可以使用要花多长时间。然后退出程序,立即重新启动它。正常情况下,第二次启动的速度会明显加快,因为程序的指令还在 RAM里,而 RAM正在充当磁盘的缓存。使用其他程序一段时间后,RAM里会填满该程序的指令和数据,原先的程序就会从缓存中被删除。 二是在谷歌里搜索几个不太常见的单词或短语,注意谷歌查询结果要花多长时间。接着再搜索同样的关键词。返回搜索结果的时间会明显缩短,因为谷歌已经在其服务器上缓存了搜索结果。这个缓存对其他搜索相同关键词的人也有好处,因为缓存在谷歌的服务器上,不在你的机器里。要验证缓存在谷歌服务器上,可以在你搜索完之后,让别人在他们自己的计算机上搜索同样的关键词。虽然不能完全保证,但一般来说第二次搜索速度会快很多。
-
猪头2014-10-15CPU反复执行简单的循环:从存储器中取得下一条指令,该指令正常情况下保存在存储器的下一个位置, 但也可以是使用 GOTO 或 IFZERO 指定的位置; 对指令进行译码,也就是搞清楚这条指令要干什么,然后为执行该指令做好准备;执行指令,从存储器中取得信息,完成算术或逻辑运算,保存结果,总之是执行与指令匹配的组合操作;然后再从头取得指令,开始下一次循环。真正的处理器也执行同样的“取指令—译码—执行”循环,只不过为了加快处理速度,还会配备精心设计的各种机制。但核心只有循环
-
與點狂生2014-04-11巴贝奇清楚地意识到,计算设备可以把操作指令和数据保存为同样的形式,但ENIAC并没有把指令像数据那样保存在存储器中,而是通过扳动开关和重新连线来实现编程。第一台真正实现了存储程序的计算机于1949年在英国面世,称为EDSAC(延迟存储电子自动计算机的英文首字母缩写)。内存里不仅保存了CPU正在处理的数据,还保存了让CPU如何处理数据所需运行的指令。这一点至关重要:通过把不同的指令加载进内存,就可以让计算机做不同的计算。这样,存储程序型计算机就成为通用的设备:同一台计算机,只要在内存里放上适当的指令,就可以运行文字处理程序、制作数据表格、上网浏览、收发电子邮件、计算纳税款,还可以播放电影。存储程序这个理念的重要性怎么强调都不为过。
-
與點狂生2014-04-11缓存的思想却无处不在,只要你现在用到的东西不久还会用到,或者可能会用到与之邻近的东西,那运用缓存思维就没错。CPU中的多个累加器本质上也是一种缓存,只不过是高速缓存而已。RAM也可以作为磁盘的缓存,而RAM和磁盘又都可以作为网络数据的缓存。计算机网络经常会利用缓存加速访问远程服务器,而服务器本身也有缓存。
-
與點狂生2014-04-11缩写词CAPTCHA中包含图灵的名字,这个缩写词代表“Completely Automated Public Turing test to tell Computers and Humans Apart”(用以区分计算机和人的完全自动化的公共图灵测试)。CAPTCHA(可以理解为“验证码”)就是一些扭曲变形的字母,广泛用于验证网站的用户是人而非程序:CAPTCHA是一个反向图灵测试,因为它利用了人比计算机更擅长识别文字这一特点,来达到区分人和计算机的目的。
-
wit2013-11-26现在的编程语言多达几千种甚至上万种,但真正广泛使用的恐怕连100种都到不了。
-
wit2013-09-24就以《傲慢与偏见》英文原文为例吧,该书大约有97000个单词,占550000字节。
-
wit2013-09-24机器翻译也差不多是同样的情况,虽然尚未达到完美,但已经很实用:它可以把将近60种语言中的任意一种翻译成其他语种。
-
KyleFeng2013-02-192011年1月,发生在突尼斯和埃及的民众革命推翻了执政多年的独裁者,为这些饱受压迫之苦的国家带来了一丝自由的气息。在这两次事件中,无数普通民众通过Twitter传播最新动向和集会地点,拿起手机拍摄民众抗议和警察施暴的照片、视频,传到Facebook和YouTube来激励同胞并告知全世界。在突尼斯,在最紧张的那些日子里,民众发帖量几乎达到了每小时2万条,然后被转发到Facebook和博客上,又被再次推送。在埃及事件期间,Google马上开发了一个叫speak2tweet的应用程序,这样任何人都可以拨通电话,口述想要发帖的内容,然后由后台系统转换成文本发送出来。人们可以看到这些原始的消息(一般是法语或阿拉伯语),或者让系统朗读出来,或者用Google的翻译服务译成别的语言。在这两个国家,尽管革命能否带来长远变化仍然扑朔迷离,但显而易见的是,面对突发事件,政府想控制言论的努力已经是竹篮打水一场空。