本节书摘来异步社区《像计算机科学家一样思考Java》一书中的第1章,第1.1节,作者:【美】Allen B. Downey,更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.1 什么是编程语言
像计算机科学家一样思考Java
你即将学习的语言是Java,这是一种相对较新的语言(Sun公司于1995年5月发布了Java的第一个版本)。Java是一种高级语言(high-level language),你可能听过的其他高级语言还有Python、C、C++和Perl。
有了“高级语言”,还有低级语言(low-level language),有时候也叫做机器语言或者汇编语言。粗略地说,计算机只能够执行由低级语言编写的程序。因此,由高级语言编写的程序必须先被翻译成低级语言才能够运行。这样的翻译过程是需要时间的,这也是高级语言的一个小缺点。
但是,高级语言的优点却太多了。首先,使用高级语言进行编程容易得多。花的时间更少,代码更短,更容易阅读和修改。其次,高级语言具有可移植性(portable),这意味着高级语言可以在几乎不修改的情况下运行于多种计算机平台。相比之下,低级语言只能在一种计算机上运行,如果要在另一种计算机上运行,则需要重新编码。
鉴于高级语言的这些优点,几乎所有的程序都是用高级语言编写的。低级语言只适用于少量特殊的情况。
对由高级语言编写的程序进行翻译有两种方式:解释(interpreting)和编译(compiling)。完成解释任务的程序叫做解释器,它读入由高级语言编写的程序,并且按照高级语言的指令执行程序。实际上,解释器按行对程序进行翻译,然后执行命令。
完成编译任务的程序叫做编译器,它在运行任何一条指令之前先读入由高级语言编写的程序并一次性对该程序进行编译。通常,编译过程是一个单独的步骤,程序的运行则在编译过程之后。在这种情况下,高级语言称为源代码(source code),经编译器生成的程序称为目标代码(object code)或者可执行程序(executable)。
Java语言编写的程序既可以被编译,也能够被解释。和其他语言不同的是,Java的编译过程并不生成机器语言,而是生成字节码(byte code)。字节码和机器语言一样,可以被容易(和快速)地解释,而它又像高级语言一样具有可移植性。因此,在一台机器上编译Java,在另一台机器上解释运行是可能的。这也是Java相比其他高级语言的一个优势,如图1-1所示。
虽然图1-1所示的这个过程看来很复杂,但在大多数程序开发环境下这个过程已经被自动化了。通常你只需要编写源代码,然后点击一个按钮或者键入一个命令便可以完成程序的编译和运行。而另一方面,知道背后在发生些什么事对程序开发者是有价值的,这样就可以方便地找到整个过程中出错的地方。