要说什么是编程语言?
我们先来说一下什么是自然语言。
自然语言是我们人类交流的语言,包括汉语、方言、日语、英文、韩语等。
自然语言能够承载的信息非常丰富,越是高级的编程语言越接近于自然语言。
不同的自然语言,有其独特的语法规则。
这些年,计算机科学家们一直研究如何能够让计算机更好的识别、理解、模拟自然语言,这是人工智能的一个研究方向领域。
汉语的基本组成单位是偏旁部首,英语的基本组成单位是26个字母。
一个道理。
为了让大家能容易理解,我们把计算机拟人化一下。
假设要让计算机把11和22进行相加,编程人员需要对计算机“说”:“001001001110001111001。”
计算机就明白啦,原来是让我把11和22进行相加。
后来大家觉的这样太麻烦了,人类就是这样,因为嫌上楼麻烦,发明了电梯。
因为嫌走路麻烦,发明了汽车,火车,飞机。
对计算机讲机器语言太麻烦了,还容易出错,万一多输入了一个0或者少输入了一个1,那意思可能完全变了。
研究计算机的前辈大牛们觉的机器语言太不好用了,也不知道折腾了多久,捣鼓出了汇编语言。
如果用汇编语言对计算机说,把11和22进行相加,那就容易多了。
ax是计算机内部一个存数字的“小盒子”,它有一个专业的名词叫做“寄存器”,有没有想到超市里面临时存东西的柜子,一个道理。
但计算机理解不了汇编语言,因为计算机只懂机器语言。
所以,大牛们又设计了一种程序,叫做“汇编器”。
汇编器相当于一个翻译,把人类写好的汇编代码翻译成机器语言,这样子计算机就听懂了。
汇编语言的每一行语句都和机器语言相对应,所以汇编语言,我们可以理解成人类能够直接看懂的“机器语言”。
这个过程听起来简单,但其实非常不简单。
但人类还是嫌麻烦,能不能更简单一点。
于是又设计了一些编程语言,我们就拿其中的C语言做代表吧。
那计算机自然就更听不懂了,于是前辈们又设计了一种程序,叫做“编译器”。
编译器负责把高级语言翻译成汇编语言。
汇编器再把汇编语言翻译成机器语言。
有的朋友开始忍不住提问了:高级语言不能直接转换为机器语言吗?为什么要先用编译器,再用汇编器?
这个问题提的非常有水平,从技术上是可以实现的,但不是最优的解决方案,为什么?将来学完编译原理就知道了。
机器语言是被设计出来的,只能使用0和1.
但不同的公司设计的机器语言标准不一样。
让计算机把两个数相加:
那么一个程序如果使用A公司的汇编器生成的机器指令,就无法在B公司的机器上运行。
自然而然就诞生了一些协会,或者有权威的机构企业为了避免让这种事情发生,会制定一些行业设计标准。
让大家设计机器语言的是参考某个标准去设计,不要乱定义,和谐是人类一直追求的事情,但有时候为了赚钱,总有人会破坏和谐。
x86架构和Arm架构就是两种标准指令集(机器语言)的编号缩写。
想象一下你买的是联想电脑笔记本,你朋友买的是戴尔笔记本。
但是两台电脑的USB口大小不一样,你的U盘只能插到指定的笔记本上,那是一件多么糟糕的事情。
(不过USB马上也要淘汰了,大家插USB口的时候,有没有一种感觉?第一次插,总是插不进去)
第一图是现在的USB口,第二张图是这几年开始流行的USB-type-C接口,正反插都可以插入。
手机充电器也会慢慢全部改成第二种接口。
在圣经中记载了一段历史,起初上帝创造人类,语言是相通的,但由于人类太过于骄傲,要合力造巴别塔,上帝让人类说不同的语言,使人类无法沟通,计划因此失败,从此各散东西。
此事件,为世上出现不同语言和种族提供解释。
直到今天,我相信全球统一化编程语言,是很多人曾经心中的梦想或者现在正在怀揣的梦想。
以上只是为了帮助大家理解编程语言,用拟人化的思维极其简单的给大家说了一下原理。
慢慢的,计算机不仅仅局限于计算了,当可以处理简单的文字,图片信息的时候。
人类开始考虑,能不能让计算机联网,信息共享传输,有了这个脑洞之后,也不知道过了多久,大牛们就把互联网就捣鼓出来了。
随着科技进步,手机、嵌入式等各种电子设备诞生包括网站这个名词概念的诞生,为了应付不同的行业需求,也诞生了许多相关产业。
在这个过程中,发明了各种各样的编程语言解决这些需求,当然也有各种各样的硬件厂商,CPU,显卡,鼠标,显示器,键盘,打印机,扫描仪,音响,路由器……
编程语言那也是被发明出来一个接一个的。
Python、Php、Html、Css、Javascript、.Net、Delphi……截止今天,人类历史上有过几百种编程语言,今天能够活下来没有被淘汰的说明的确有市场还需要它。
有了操作系统、数据库……
随着代码量越来越多,开发软件难度越来越大,有了软件工程,代码管理,多人协同开发,设计模式,框架、类库等概念,目的都是一个,为了简化开发难度,保证开发质量,管理开发进度而诞生的相关技术。
但这个过程是非常艰难,不容易的,花费了很多智商顶尖科学家的脑力才有了我们今天的计算机技术。
上述任何一个专业名词,都可以写几千页的书去详细描述,学无止境,浩瀚如烟,博大精深等这些词语,大家以后随着接触计算机知识越来越多,越觉的人是多么渺小卑微。
有些行业,年轻的时候学习的知识,老了还能用得上,只要坚持下去,就会厚积薄发,经验丰富,越老越吃香。
但计算机行业,有些技术淘汰的很快,你可能还没学透彻,才使用了没几年,某个技术就被淘汰了,如果追求这些皮毛的技术,经验就不会持续叠加,随着年老,经验和记忆力衰退,拼不过年轻人了,中年危机……
这个行业,有深度有深度,要广度有广度。
大家千万不要东学学,西学学,最后都是半桶水,先挑一个领域深入,到了一定的程度,再考虑相关领域的拓展,也就是广度的发展。
说到这里,其实不光是计算机行业,医学行业,生物行业,天文学,物理学,机械学都是如此。
有的人就觉的,学的东西也太多了,有一种非常绝望的感觉!
不要怕,活在当下,怕什么真理无穷,进一寸有一寸的欢喜。
不要跟别人比较,跟自己比,今天的自己是不是比昨天的自己优秀了一点点。
每天进步一点点,这也是我为什么一开始就强调,必须把心安静下来,否则走不远,即使呆在这个行业,想要走纯技术路线也是不现实的。
而且单纯的走技术路线,要获得比较高的成就还是比较难的,我们具体点说,要赚很多钱,有点难。
在这个讲究人际关系,情绪管理、为人处世的时代,职业的发展路线也是多元化的,结合自己的性格,找到适合自己的路,才是王者之道。
摘选自《极客编程》之《从零学编程》系列教程之《计算机原理》之《简谈计算机》
联系客服