“工欲善其事,必先利其器”想要更好的学习软件编程不管是哪一种语言的编程,我们都应该去了解这些语言的历史发展过程以及它的运行原理,做到心中有数。不是说这个发展过程多么的有趣,运行的原理怎么怎么的吸引人(实际上这个很让人苦恼,看这些东西很枯燥乏味:如果你是对这个感兴趣的话),而是这样子有利于我们学习这门语言。本文就来聊聊关于软件运行原理的那些事!
我们都知道的是计算机是二进制的,但是编程却早就已经不是这样子的了。诚然刚刚开始的时候编程是这样子的。我们把计算机也比作一个“人”我们现在要和他沟通,我们希望他按照我们的意愿做事情,所以我们不得不学习计算机语言。由于计算机语言既简单又复杂的原因,只能是少数人才能和他沟通并且中间沟通的时候还会经常出错,所以就有了一些人写了一些计算机的翻译官提供和人沟通的媒介,这就让我们可以更好地与计算机沟通了。
那么我们现在来分析一下这个关于人机之间是怎么被实现简单一点沟通的(虽然还是有点复杂)。
比如现在我们写了一段代码:while(books0){books--;}这么一段简单的代码表达的是:我手里还有书,我就一本一本地扔掉,直到我我手里没有书了就不扔了;
现在我们以java为例子来分析一下执行原理首先我们写了这段代码就表示我们向计算机发起命令了吗?当然不是了我们写了这一段代码这个计算机是听不懂的,我们写了这个代码之后我们要到一个叫做编译器的东西上面把我们的语言编译一下这个过程叫做编译,编译成了什么呢,编译成了一种叫做中间语言的东西这个是java的“writeoncerunanywhere”决定的,正是因为有了这种中间语言,才让我们的java编程变得不是那么的繁琐了!言归正传,编译成功之后是不是意味着就是计算机机器就能读懂这些东西了呢?孩子你还是太天真了,还不可以哦!中间语言只是一个交流的过度,就像我们在80年代打电话一样要有一个叫做呼叫台的东西存在一样的,这个就是起到了呼叫台的作用。
这个之后还要在java虚拟机的帮助下执行的时候把中间语言翻译成机器语言执行,这样就成功的和计算机交流了一次,计算机这个不要工资的员工就为你工作了。
那么现在我们就可以总结一下,编程到计算机执行的一个过程:编程语言下达命令,由虚拟机翻译一下解释一下交出一份中间文件保留等待发令,然后虚拟机在转发命令给计算机,计算机得到指令开始执行,这样子就完成了一次编程到执行的过程,实现了人利用计算机给我们做事。
如果想深入了解软件执行的详细过程可以去看看关于java虚拟机的书籍相信会有颇多的收获
深入理解JVM底层实现与优化实战视频教程类加载器字节码GC集淘宝¥35¥50购买已下架