Python语言及其应用(第2版)
上QQ阅读APP看书,第一时间看更新

与其他语言相比,Python如何呢?在何时何地你会优先选择某一种语言呢?本节会展示一些其他语言的样例代码,以便让你见识一下Python的竞争对象是什么样子。没有使用过这些语言也不必担心,因为你不需要看懂所有代码。(读完本书之后,你会发现也没必要非得使用某些语言。)

下面的每个程序都会打印出一个数字和一句自我介绍。

如果你使用的是终端或者终端窗口,则读取你输入的命令、运行并显示结果的程序称为shell程序。Windows的shell叫作cmd,它会运行后缀为.bat的批处理文件。Linux和其他类Unix系统(包括macOS)则拥有很多shell程序,其中最流行的是bash或者sh。shell提供了各种简单的功能,比如简单的逻辑判断以及把*等通配符扩展为文件名。你可以把命令保存到文件(shell脚本)中随后运行。shell可能是程序员接触到的第一个程序。不过shell脚本在规模超过数百行之后就难以很好地扩展了,而且运行速度远不如其他语言。下面就是一段shell程序:

#!/bin/sh
language=0
echo "Language $language: I am the shell. So there."

如果将其保存为文件test.sh并与sh test.sh一起运行,你会看到以下输出:

Language 0: I am the shell. So there.

老而弥坚的C和C++属于相当低层的语言,在速度至上时才会使用。你使用的操作系统以及很多相关程序(包括python程序)可能就是用C或C++编写的。

这两种语言不易学习和掌握。你需要跟踪内存管理等很多细节,稍有不慎,就会导致程序崩溃。在诊断问题时也是困难重重。下面是一个短小的C程序:

#include <stdio.h>
int main(int argc, char *argv[]) {
    int language = 1;
    printf("Language %d: I am C! See? Si!\n", language);
    return 0;
}

C++和C有相似之处,但演化出了一些独特的功能:

#include <iostream>
using namespace std;
int main() {
    int language = 2;
    cout << "Language " << language << \
        ": I am C++! Pay no attention to my little brother!" << \
        endl;
    return(0);
}

作为C和C++的“接班人”,Java和C#避免了“前辈们”的一些问题,尤其是内存管理,但多少变得有些烦琐。下面是一段Java代码:

public class Anecdote {
    public static void main (String[] args) {
        int language = 3;
        System.out.format("Language %d: I am Java! So there!\n", language);
    }
}

如果没有使用过这些语言,你可能会觉得奇怪:这都是什么东西?我们只想打印几行简单的文本啊。有些语言身背很重的语法“包袱”。第2章会介绍更多的细节。

C、C++和Java都属于静态语言,需要你指定数据类型等一些低层细节。附录A展示了像整数这样的数据类型在计算机中占据了多少位(bit),以及只能执行哪些整数操作。相比之下,动态语言(也称脚本语言)不会强迫你在使用变量之前声明其类型。

多年以来,通用动态语言一直都是Perl。Perl的功能极其强大并拥有丰富的库。不过,其语法实在让人不忍直视,而且在过去几年中,Perl的势头看起来已经被Python和Rudy盖过了。下面这个例子会输出一句Perl的俏皮话:

my $language = 4;
print "Language $language: I am Perl, the camel of languages.\n";

Ruby是一种比较新的语言。它些许借鉴了Perl,其流行主要归结于Web开发框架Ruby on Rails。Ruby的很多应用领域和Python一样,究竟选择哪个更多属于个人品位问题,或是取决于特定应用所需的库。下面是一段Ruby代码:

language = 5
puts "Language #{language}: I am Ruby, ready and aglow."

由于方便与HTML结合,PHP在Web开发领域非常流行。但是,PHP自身有不少陷阱,并不适合作为Web之外的通用语言。下面是一段PHP代码:

<?PHP
$language = 6;
echo "Language $language: I am PHP, a language and palindrome.\n";
?>

Go(或者Golang,如果你打算用谷歌搜索的话)是一种尝试兼顾效率和易用性的新生语言:

package main
import "fmt"
func main() {
  language := 7
  fmt.Printf("Language %d: Hey, ho, let's Go!\n", language)
}

时下C和C++的另一种替代语言是Rust:

fn main() {
    println!("Language {}: Rust here!", 8)

还有哪种语言没有提到?没错,Python。

language = 9
print(f"Language {language}: I am Python. What's for supper?")