云计算:资源集中管理与调度
在2006年8月9日,Google首席执行官埃里克·施密特在搜索引擎大会首次提出“云计算”的概念。其实,云计算在计算机领域不算什么新鲜概念,之前已有集群、分布式、并行处理、网格计算等架构。开源框架Hadoop算是当时很流行的架构,包括HDFS(分布式文件系统)、HBase(分布式NoSQL数据库)和Hive(数据仓库)等构件。云计算采用了MapReduce设计方法,当有任务需要处理时,首先将任务分解为一个个很小的部分,分发到各个节点进行处理,处理结束最后汇总输出结果。云计算的一大优点是安全、可靠,数据中心由大厂商维护,开发者不需要购买服务器、租赁机房,只需要按需向云厂商付费购买计算、存储、网络份额,开发的应用软件自由配置,便可对外提供服务。微软公司将业务中心转向Azure云计算,取得巨大成功。
编译器和解释器
编译器就像现实百度和谷歌的翻译软件,你将一段英文材料粘贴在百度翻译或谷歌翻译,点击翻译按钮,即得出对应的中文。而解释器就类似于电视里的同声翻译员,有人说一句英语,翻译员就翻译成中文。计算机里的编译器将源代码首先转换成一种中间语言,如汇编语言,根据不同的体系结构最后生成不同的目标代码,链接器将所有的目标代码综合形成可执行程序。而解释器的工作原理是将脚本语言一行一行的转换成目标代码执行,有输出则即时输出。java的编译机制有点特殊,java编译器首先将java源代码转换为字节码class文件,虚拟机jvm再根据体系结构的不同生成不同的目标代码。所以java能做到“一次编译,到处运行”,其实就是jvm隐藏了体系结构的不同。像php、Python这类脚本语言均由解释器解释执行。
汇编语言:高级语言与机器语言的桥梁
人类最早用机器语言编写代码,而且只有专业人员才能使用“计算机”,他们在卡片上打孔表示0或1,计算机用传送带输入卡片、进行处理、输出结果,那时的计算机运行速度极慢,后来发明了汇编语言,汇编语言是由阿拉伯数字、拉丁字母和特殊字符组成的,相对于0和1的代码来说友好了很多。汇编语言和机器语言是一一对应的,通过汇编器直接转换成二进制代码。但是汇编语言的门槛还是很高,需要非常专业的人员才能使用,于是人们就希望用更友好的高级语言来编程。汇编程序里面是一条条指令,x86有x86的指令集,PowerPC有PowerPC的指令集,ARM有ARM的指令集等等。因此汇编语言的形式也就多种多样,必须对应特定CPU架构。经过编译器的处理,高级语言程序会转变为汇编代码,汇编代码再转变为机器代码。所以,汇编语言既是程序语言发展的一个阶段,在高级语言出现后依然发挥着桥梁作用。
互联网:一次新的信息革命
互联网流行于上世纪90年代初,由加州大学洛杉矶分校发明。1957年10月4日,苏联发射了人类第一颗人造卫星,美国军方立即启动了“曼哈顿计划”,旨在连接美国多个节点,即使某个节点遭受核打击,这个阿帕网依然能正常运行。阿帕网退出历史舞台后,摇身一变成为了民用的互联网。90年代伯纳斯·李制定了互联网的URIs、HTTP、HTML等技术规范,当时很流行的浏览器有网景公司的浏览器和微软的IE和火狐浏览器等。互联网蓬勃发展,各种应用如电子邮件、FTP、电子商务、即时通讯、搜索、社交网络等如雨后春笋般出现。如今互联网有40亿个节点,100多亿个网页,这是一个规模庞大的网络,很难想象你在电脑上输入谷歌的域名、按下回车键,在这么庞大的网络中你能在1秒以内抓取到谷歌服务器的网页。互联网中充满了乐趣和无限可能,与人类朝夕与共。
注:凡属于本公众号内容,未经允许不得私自转载,否则将依法追究侵权责任。