- Python語言及其應用(第2版)
- (美)比爾·盧巴諾維奇
- 716字
- 2022-04-15 17:15:40
1.5 Python和其他語言
與其他語言相比,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?")
- 深入核心的敏捷開發:ThoughtWorks五大關鍵實踐
- Java多線程編程實戰指南:設計模式篇(第2版)
- Web前端開發技術:HTML、CSS、JavaScript(第3版)
- Android開發精要
- CentOS 7 Server Deployment Cookbook
- Python自動化運維快速入門
- PowerCLI Cookbook
- 新手學Visual C# 2008程序設計
- Python Tools for Visual Studio
- OpenShift在企業中的實踐:PaaS DevOps微服務(第2版)
- Getting Started with Greenplum for Big Data Analytics
- Qt5 C++ GUI Programming Cookbook
- IBM Cognos TM1 Developer's Certification guide
- Java 9 Programming By Example
- Vue.js 3應用開發與核心源碼解析