编程语言发展史
刚刚我们才讲到了c语言。并且说了游戏领域中比较重要的几种语言与c语言的关系。从这张图中我们应该能够更清晰看到这几种语言的发展脉络。每一种新的语言诞生,都摒弃了一些前者的弊病,加入了自己优秀的特性。但无论怎样,每一次编程语言的发展和进步都是在前人的基础之上进行改良和创造,很少有几个语言是凌空出世的。正因为这样,所以编程语言之间的差别,并不是天差地别。并不是我选择了学习java,就意味着放弃了c#;也并不是我如果不先学c语言,我就学不懂c++。编程语言之间都是触类旁通的,只要先掌握了其中一种,那么其他的语言就能很快掌握。
再看一眼上面的图,接下来我来讲讲c、c++和、pyt++
首先经过我们上面一顿瞎bb,已经知道了c语言是怎么来的,而且知道了c语言的语法比较接近我们的自然语言,语言写的代码,在被cpu运行之前,需要翻译成汇编代码,再翻译成机器码。我们对这个设计很满意,使用了好多年。后来在使用中,特别是开发一些大型项目,比如用c语言开发一个计算机操作系统时,发现有问题处理起来很麻烦,先辈就对c语言进行了改进。有一次改进后新增了一个叫“类(class)”的功能,这个功能很牛逼,导致那个版本的c语言直接脱胎换骨。这种与众不同的牛逼需要在名字上体现出来,所以他们学习iphone的起名策略,在名字后面加了个“plu+”。一个不够,那就两个“c plu#的起名策略:“c#”=“c plu++++”。)所以!c++是c的升级版,多了一个核心功能:类。语法没有变,本质的东西没有变,还需要被翻译成汇编,然后翻译成机器码,再交给cpu执行。所以学校里安排先学c语言,再学c++,其实这种说法是有点狗屎的,就好像是说:我们先学习“浮水”,再学习“游泳”。本来我们学习游泳的过程中就会学习浮水,但是就要把学习“浮水”先说一遍,让人误解为这是两个差别很大的东西。所以懂了吗?我再说明白一点:学习c++就是学习一个高级版本的c语言,学c++的过程中,就会先把c语言的那些东西学到。所以不存在:如果不学c语言打基础,就学不好c++。如果再有人问这个问题,就把这一章节贴到他脸上去。
另外补充:c++从c发展出来后,c语言也没有闲着,自己还是在不断发展,比如后来发展出了objective-c。严格意义上来说,“学习c语言”和“学习c++”确实是不一样的,因为要去研究它们不同的语言特性。但是!对于没有学过任何编程的初学者来说,最开始就是学习个语法认识几个关键字而已,根本到不了研究语言特性的程度,所以两者说法对他们来说几乎没啥差别。
c#(和其他高级语言)
我们知道现在两方对峙,操作系统是 os和android三足鼎立(我们不知道linux)。 可是你们知道上世纪八九时年代,计算机市场是繁花绽放,各种各样的硬件、操作系统充斥在硅谷整条小吃街。那个年代的码农,随手写一个程序,并不是写完就能到处用的啊。就算现在也不是啊。原因很多,可能cpu不一样,操作系统不一样....那怎么办?先辈们想到了一个胆大包天的方法:我写一个软件,这个软件去模拟cpu硬件,然后再写其他的程序,把这些程序编译成这个虚拟cpu能够执行的机器码,然后让虚拟cpu去执行程序。(请再读三遍)
这样,只要所有的电脑都提前装好我这个虚拟cpu软件,那么其他那些杂七杂八的软件统统都在我上面可以运行了!完美解决跨平台问题。
有了这个想法之后,先辈们就开始动手去写这个牛逼哄哄的虚拟cpu软件了。他们用c语言或c++来写这种后来被称作“虚拟机”的软件。这种事情都能干得出来,他们就顺便又为自己的“虚拟机”发明了专门的编写程序的语言(真实因果关系是先发明语言,从而开发对应虚拟机)。java语言对应 virtual framork(你们玩游戏的时候肯定装过这个),on virtual hine......
看到这里,聪明的你已经看破了真相,原来on编写的程序都不是直接交给真正的cpu运行的,而是交给了一个模拟cpu的软件运行的!把我们的程序交给了另一个程序来运行!把我们的程序交给了另一个程序运行!明白吗,为什么那些程序猿都说c#没有c++快。因为c#写的程序交给了c++写的一个程序来运行!java写的程序也交给了c++写的程序来运行!pyt++写的程序来运行!再重复一遍就疯了……
到现在为止,我们解开了一个新手十大困惑之一:为什么
手机阅读:http://m.00kshu.win/106310/
发表书评:http://www.00kshu.win/book/106310.html
为了方便下次阅读,你可以在顶部"加入书签"记录本次(第十九章 克苏鲁神话)的阅读记录,下次打开书架即可看到!请向你的朋友(QQ、博客、微信等方式)推荐本书,莫道梦魂遥谢谢您的支持!!