我喜欢一个姑娘,她叫操作系统

我叫Java,生活在计算机世界的“编程语言”层。

什么?

你说我的名字有些怪?听起来像咖啡?

好吧,我承认,也许是因为我长得太像咖啡了吧……
我喜欢一个姑娘,她叫操作系统_第1张图片

其实你可能不知道,以前我叫Oak,我特别喜欢这个名字。可是后来我老爹高斯林发现,已经有人叫这个名字了,所以我被迫改名成Java。

但我一点也不喜欢咖啡,它太苦了,即便加了糖,也难以遮掩它原本的味道。

我喜欢的是糖水,因为它像爱情的味道。

……

那是在1994年,我喜欢上了她,那年我刚1岁。

她聪明睿智,美丽动人。人们称她为OS,Operating System,你看,多么优雅的名字。

我并非暗恋,我是个说做就做的人,所以,我曾坚定的与她告白。

我没有听到她拒绝我。

可世界上最悲催的事情莫过于,当你深情告白时,对方却听不懂你在说什么。

最最悲催的事情莫过于,对方说什么,你也听不懂。

当时我伤心欲绝,C语言老大哥听了我的遭遇,对我深表同情。

他告诉我,作为编程语言,想要和OS(操作系统)交流,必须带着同声传译——编译器。

我兴奋极了,恳求我老爹高斯林为我搞一部编译器。老爹也没推诿,作为“聪明绝顶”的高级工程师,造个编译器虽然麻烦,但并不困难。

过了些时日,老爹的编译器造好了,取名叫Javac。

老爹非常体贴,怕我搞不明白Javac编译器的用法,特地为我写了一张说明书,上面详细介绍了编译器的使用方法及工作过程。

原来,想要把一种语言翻译成另外一种语言,编译器Javac首先要读取我的话(源代码),交由它的词法分析部件处理。词法分析部件将我讲的话转变为Token(标记)集合。

这个所谓的标记集合属实让我感到费解,还好老爹做了说明。

词法分析部件,顾名思义,就是分析我话中都有哪些单词,单词可以包括话中的关键字、变量名、运算符等,不符合规范的单词会被词法分析部件发现并告诉我修改。词法分析部件分析出来的“单词”被称为Token,是整个翻译(编译)过程中的最基本单位。

随后,Javac中的语法分析部件开始工作,将Token集合组合成抽象语法树。

等等,抽象语法树又是个啥?

我仔细一看,说明书的注解2详细说明了抽象语法树。我不禁感慨,江湖人称高老大的老爹果然名不虚传。

抽象语法树,是句子的一种抽象表现形式,也是一种树形表示句子的形式,比如:“2+3*4”可大致表述为:

我喜欢一个姑娘,她叫操作系统_第2张图片

有了抽象语法树,Javac的翻译过程进入下一步——语义分析。这一步就好理解了,语义分析就是分析我说的话,到底是什么意思。同时,这一步还能判断我说的话是否符合逻辑。

语义分析结束,整个翻译的过程也接近尾声。

我定睛一看,最后一步被老爹称为“字节码生成”。根据老爹的描述,字节码是一种类似普通话的东西,简洁明了。
我喜欢一个姑娘,她叫操作系统_第3张图片

再也按捺不住激动的心情,还没来得及细看字节码的后续介绍,我就激动地冲出房间,找到了OS。

打开编译器Javac,我大声地对OS喊道:“我喜欢你!”

过了片刻,我只看到OS一脸茫然。

我急得满头大汗,又说了一句:“我喜欢你!”

OS更茫然了。

她说了一句:“&*%¥……¥#%#!@”

???

她说了什么?

C语言老大哥不是说有了同声传译我们就能互通彼此了吗?

我很不开心,想要问问C语言老大哥这到底是怎么回事。

C语言老大哥研究了一会我的编译器,哈哈大笑:“看来你老爹不希望你早恋。我们之所以拿着编译器就能和OS交流,是因为我们的编译器最后生成的结果是汇编语言,这种语言能够被操作系统中的汇编器处理。根据你说的,你的编译器最后产生的结果是字节码,肯定是不能被操作系统识别的。因此,你们俩根本就没法交流。“

我对C大哥道了声谢,郁闷的返回家中。

老爹见我闷闷不乐,便对我说,只将我的话翻译到字节码,是为了以后让我适应更广阔的天地,有更好的发展,现在即便我和她表白,也是没有结果的。

他还告诉我,这世界上不只有这一个操作系统,何必单恋她这OS呢?

我不解。

因为当时,我只想让那心心念念的姑娘明白我的心意。

过了许久,老爹交给了我许多名为JVM(Java虚拟机)的东西,他告诉我,当我把编译器Javac和JVM连接在一起的时候,就能生成最终机器码,将明确的意思传达给操作系统。

老爹还笑眯眯的对我说,当你使Javac和不同的JVM组合时,就能够和不同的OS交流。

听到这里,我没再理会老爹,飞奔而出。

见到了OS后,我将代表着她的JVM和Javac连接,终于说出了能让她明白的”我喜欢你!“。

可是……她还是没有任何反应。

最后我懂了,我爱她,她却胸怀天下。

“所爱隔山海,山海不可平”,大抵如此吧。

最后的最后,我凭着JVM,成为了新一代的海王……

(完)

我喜欢一个姑娘,她叫操作系统_第4张图片

你可能感兴趣的:(程序猿内功心法,JAVA基础)