python的优缺点分析一览

相对于其它编程语言来说,Python对于新手来说非常友善。原因我总结大概三点:「语法简单」、「工法完整」、「应用广泛」。当然,它也有缺点,那就是「执行缓慢」。接下来我来细讲一下,大家再来断定这门语言。
\

优点一:语法简单

一个程序语言要受到初学者欢迎,端看它能在多短的时间内,带给初学者「成就感」与「信心」。如果用「在屏幕上印出『Hello! World!』这串字」当成比赛题目,看使用 C、Java、Python 三种语言的程序员,可以率先达到目标。那么 Python 一定是从按下码表后,第一个达目标。

让我们先看 C 语言。C 语言得写出下面这段程序代码、存档、拿着这个原始码档去编译,才能在屏幕上印出「Hello! World!」:

\

接着来看 Java 语言。跟 C 语言很类似,得写出下面这段程序代码,历经「存档、编译、执行」三步骤后,在屏幕上印出「Hello! World!」字样:

\

最后是就是重头戏 Python。只要写下面这段原始码,直接按 Enter 键,不必存档、不必编译,就能直接执行,并印出「Hello! World!」字样:

\

 

你没看错,就一行!聪明如您,如果想在屏幕上印出一串字,您会选择 C?Java?还是 Python 呢?除此之外,Python 还有许多「别人写十行,我只写一行」这种「以一打十」的范例。这样,您分辨得出来哪种语言的语法比较简单了吗?

优点二:工法完整

先说明把「工法」这个名词用在这里,是我擅自认为这两个字比较能表达我想说的「意境」才用的,这个名词并非信息业界的流通用语。「工法」指的是撰写程序的原则与方法。在各类程序语言中,常见的「工法」有三种:程序导向、面向对象、函数导向。大家不要被「XX 导向」什么的吓到了,我说个比喻您就会懂。就像一盘青江菜,您可以炒成浙式、川式、广式三种。本质都是「炒青江菜」,但在作法与过程上,有些不同罢了。程序导向、面向对象、函数导向也是如此,都是能做出特定结果的程序写作方法而已。

但不是任何语言,都能任意使用上述三种工法,还得该语言有支持某工法的「语法」才行。就像用「潜盾工法」在地底挖隧道,并不适用于任何地质,太松软的地质只能用「明挖覆盖法」直接破坏表面了。以常见的语言来说,C 语言只支持「程序导向」;Java 支持「程序导向」与「面向对象」,直到 Java 8 之后,才补上支持「函数导向」的语法;而 Python 很早就支持「程序导向」、「面向对象」、「函数导向」三种工法,所以学会 Python 后,学习任何其它语言都会快!就像有「学会西班牙语后,学法语、意大利语都会快」此一说法一样。

正因 Python 支持的工法完整,学了 Python 之后学其它语言不会慢到哪里去,所以各大专院校才会鼓吹初学者,把 Python 作为第一个程序语言。这也成为 Python 受到初学者欢迎的原因之一。

优点三:应用广泛

Python 另一个受到初学者欢迎的原因,是它能以一种语言,用在网页设计、手机 App 撰写、游戏程序设计、硬件自动控制、生物医学、大数据…等领域。简单一句话,就是「万用语言」。这对还没决定、或还不知道该走哪个领域的初学者来说,非常重要!没有人想花大把时间学会一个语言后,发现自己喜欢的领域用的是另一种语言,又含着眼泪带着微笑重头去学的。

Python 能做到「万用语言」的原因,莫过于他有丰富的「函式库(Library)」。所谓「函式库」,就是把别人事先写好的一些好用 Python 程序打成一包,允许你直接取用,而不必学习这些程序背后的写作原理。拿通俗一点的比喻,就像游戏软件内的「外挂」,直接使用后,可以让你不必花力气去打怪练功,就能取得高分或强力的装备。

举例来说,如果您想用 Python 写个网站,那就加挂 Django 这个函式库。里面已经有「建立账号」、「使用者登入」…等等写好的功能让你直接叫用,不必什么都得自己重头写。想写游戏,就加挂 PyGame。什么打光、旋转、碰撞侦测…人家都帮你写好了,写个三行直接叫用就行了!还在头痛想怎么同时间学两种程序语言,并且在 Android、iOS 双平台写手机 App 吗?不必了!用 Python + Kivy 函式库写出来的手机 App,让你能直上两大平台!想做个自走车还是机械手臂来玩玩?没问题!花个台币一千多元买块 Raspberry Pi 开发板,让你用内建的 Python 函式库控制 LED 灯、马达…等各种硬件电路!其它如生医领域的 DNA 序列研究、经济领域的大数据,Python 都有对应的「外挂(函式库)」供人直接取用。让你吹着口哨、比别人提早抵达终点。

缺点:执行缓慢

前面讲了 Python 这么多好话,它并不是完全没有缺点。Python 虽然适用于各行各业,但它有个致命伤:慢!

其实这点并不难理解。假设您有把里面有螺丝起子的瑞士刀,虽然它能拿来转螺丝,但没办法像专业的螺丝起子做得长长的,发挥强大的力矩杠杆作用,让螺丝转起来轻松容易。更别提有人拿笨重、但迅速的专业电动螺丝起子了。

Python 也是如此!所谓「追二兔不得一兔」,为了能在各种场合都发挥作用,就得取各种场合的「平衡点」,没办法为单一情况做「优化」!正如那把瑞士刀,虽然它能做各种事情,但不可能如专业工具称手。Python 的架构工程师,最后就做出「为了功能,牺牲效能」的决定。

不过最近几年,也有 Python 同好开发出「Python 编译程序」,就是直接把 Python 原始码,翻译成 0 与 1 来表示的软件。不过「编译程序」也不是万灵丹!经过实际测试,编译成二进制代码的 Python 某些时候跑得比 Java 还快,但某些场合又吊车尾。所以这完全看「Python 编译程序」的好坏。编译得好,就跑得快;编译得不好的部分,自然效能就差了点。

但有一派人士的说法:CPU 效能年年加快,Python 本身效能缓慢问题,应该能被新的 CPU 速度稍稍解决。所以我的看法,还是鼓励初学者不用太在意「速度」这件事,先把你想写的东西用 Python 写出来比较要紧!毕竟「先求有,再求好」。如果将来「速度」真的成了致命伤,到时候再来想想如何加速就可以了!

结论:学 Python,应用广,转台易!

所以,如果您是对自己比较没信心,或是还没决定走哪个领域的朋友,那就先学Python!不但好学,而且将来想转台到其它语言也快!但若您已经确定自己有兴趣的领域,比如「游戏程序设计」,那我会建议您直接学该领域的专用语言比较好。以「游戏程序设计」来说就是 C++。

对此,至此,不知您是否对 Python 有了更进一步的了解了呢~ 如果你想入门Python的话,可以看看PS下其他的入门教程,希望会对您有所帮助。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.psxia.com/news/show-7-1185.html