首页 > 软件开发 > 其他综合 > 正文
1.2 Python与其他语言
2015-12-09 15:29:40     我来说两句      
收藏    我要投稿
Python 和其他语言相比如何呢?什么时候该选择什么语言呢?本节会展示一些其他语言的代码片段,这样更直观一些。如果有些语言你从未使用过,也不必担心,你并不需要看懂所有代码(当你看到最后的Python 示例时,会发现没学过其他语言也不是什么坏事)。如果你只对Python 感兴趣,完全可以跳过这一节。
 
下面的每段程序都会打印出一个数字和一条描述语言的信息。
 
如果你使用的是命令行或者终端窗口,那你使用的就是shell 程序,它会读入你的命令、运行并显示结果。Windows 的shell 叫作cmd,它会运行后缀为.bat 的batch 文件。Linux 和其他类Unix 系统(包括 Mac OS X)有许多shell 程序,最流行的称为bash 或者sh。shell有许多简单的功能,比如执行简单的逻辑操作以及把类似* 的通配符扩展成文件名。你可以把命令保存到名为“shell 脚本”的文件中稍后运行。shell 可能是程序员接触到的第一个程序。它的问题在于程序超过百行之后扩展性很差,并且比其他语言的运行速度慢很多。下面就是一段shell 程序:
 
#!/bin/sh
 
language=0
 
echo "Language $language: I am the shell. So there."
 
如果你把这段代码保存为meh.sh 并通过sh meh.sh 命令来运行它,就会看到下面的输出:
 
Language 0: I am the shell. So there.
 
老牌语言C 和C++ 是底层语言,只有极其重视性能时才会使用。它们很难学习,并且有许多细节需要你自己处理,处理不当就可能导致程序崩溃和其他很难解决的问题。下面是一段C 程序:
 
#include <stdio.h>
 
int main(int argc, char *argv[]) {
 
int language = 1;
 
printf("Language %d: I am C! Behold me and tremble!\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 that C behind the curtain!" << \
 
endl;
 
return(0);
 
}
 
Java 和C# 是C 和C++ 的接班人,解决了后者的许多缺点,但是相比之下代码更加冗长,写起来也有许多限制。下面是Java 代码:
 
public class Overlord {
 
public static void main (String[] args) {
 
int language = 3;
 
System.out.format("Language %d: I am Java! Scarier than C!\n", language);
 
}
 
}
 
如果你没写过这些语言的程序,可能会觉得很奇怪:这都是什么东西?有些语言有很大的语法包袱。它们有时被称为静态语言,因为你必须告诉计算机许多底层细节,下面我来解释一下。
 
语言有变量——你想在程序中使用的值的名字。静态语言要求你必须声明每个变量的类型:它会使用多少内存以及允许的使用方法。计算机利用这些信息把程序编译成非常底层的机器语言(专门给计算机硬件使用的语言,硬件很容易理解,但是人类很难理解)。计算机语言的设计者通常必须进行权衡,到底是让语言更容易被人使用还是更容易被计算机使用。声明变量类型可以帮助计算机发现更多潜在的错误并提高运行速度,但是却需要使用者进行更多的思考和编程。C、C++ 和Java 代码中经常需要声明类型。举例来说,在上面的例子中必须使用int 将language 变量声明为一个整数。(其他类型的存储方式和整数不同,比如浮点数3.14159、字符以及文本数据。)
 
那么为什么它们被称为静态语言呢?因为这些语言中的变量不能改变类型。它们是静态的。整数就是整数,永远无法改变。
 
相比之下,动态语言(也被称为脚本语言)并不需要在使用变量前进行声明。假设你输入x = 5,动态语言知道5 是一个整数,因此变量x 也是整数。这些语言允许你用更少的代码做更多的事情。动态语言的代码不会被编译,而是由解释器程序来解释执行。动态语言通常比编译后的静态语言更慢,但是随着解释器的不断优化,动态语言的速度也在不断提升。长期以来,动态语言的主要应用场景都是很短的程序(脚本),比如给静态语言编写的程序进行数据预处理。这样的程序通常称为胶水代码。虽然动态语言很擅长做这些事,但是如今它们也已经具备了处理大型任务的能力。
 
许多年来,Perl(http://www.perl.org/)一直是一门万能的动态语言。Perl 非常强大并且有许多扩展库。然而,它的语法非常难用,并且似乎无法阻挡Python 和Ruby 的崛起。下面是一段Perl 代码:
 
my $language = 4;
 
print "Language $language: I am Perl, the camel of languages.\n";
 
Ruby(http://www.ruby-lang.org/)是一门新语言。它借鉴了一些Perl 的特点,并且因为Web 开发框架Ruby on Rails 红遍大江南北。Ruby 和Python 的许多应用场景相同,选择哪一个通常看个人喜好或者是否有你需要的库。下面是一段Ruby 代码:
 
language = 5
 
puts "Language #{language}: I am Ruby, ready and aglow."
 
PHP(http://www.php.net/)在Web 开发领域非常流行,因为它可以轻松结合HTML 和代码,就像例子中展示的那样。然而,PHP 语言本身有许多缺陷,并且很少被应用在Web以外的领域。
 
<?PHP
 
$language = 6;
 
echo "Language $language: I am PHP. The web is <i>mine<i>, I say.\n";
 
?>
 
最后是我们的主角,Python:
 
language = 7
 
print("Language %s: I am Python. What's for supper?" % language)

 

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.1 真实世界中的Python
下一篇:1.3 为什么选择Python
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站