zoukankan      html  css  js  c++  java
  • Python shell对比

    Pythonshell的一些思考

    如果使用python去写脚本来处理日常事务的话,相对于shell是一件比较麻烦的事情,因为我可以使用shell在花费更少的时间内,比较熟练地使用awk、sed和grep这些常用的命令在非常简短的脚本语句内,完成python一大段代码所能够完成的功能。

    前两天,读到了一篇文章“又拍网架构-又一个用到Python的网站”,网址:http://www.fovweb.com/web/youpai-python.html。上面写到:又拍网的服务器端开发语言主要是PHP和Python,其中php用于编写Web逻辑,而Python则主要用于开发内部服务和后台任务。一般情况下,网站架构的开发语言可以用下图所描述:

    百度百科上对于Python的介绍是:一种面向对象、直译式程序设计语言,也是一种功能强大而且完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。这种语言具有非常清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。目前,基于这种语言的相关技术正在飞速发展,用户数量急剧扩大,相关的资源非常多。

           综合网络及书籍对于Python的各种评价来看,Python应用是非常的广泛,而且在未来也是非常被看好的语言。但这并不代表Python是适用于任何场合的,如对于一个SA(系统分析员)而言,平时管理系统用shell脚本肯定是最简单的,如果纯粹的系统管理,应该很少有问题是shell解决不了的,使用shell来处理也会显得更加地方便和快捷,举个例子:把所有开头是#的行都找出来,用shell只需要一个grep命令,而对于Python则需要open(文件).readlines(),然后还需要读入正则表达式模块,一行一行地读入文本,再分析该行是否满足条件,需要一大堆的逻辑代码才能完成shell一个命令的功能。

    当然,任何一种语言必定有它的适用范围,虽然在开发效率方面Python要低于shell要高于shell,但Python相对于shell的优点,依照我最近的学习,感觉可以概括为如下方面:

    (1)Python不需要记忆太多的命令,语法简单,有C基础的人学起来非常容易上手,易于使用。而shell要学的命令太多了,但常用的命令不是太多。

    (2)Python可移植性好,它的标准是统一的,不会出现因为平台的不同运行结果不同,但shell的命令在各个平台上还有些不一样。

    (3)Python要更加强大,shell是一种命令语言,同时也可以看成是一个命令解释器,用于接收诸如awk、sed的命令调用等完成相关的功能。而Python则是一种编程语言,Python提供给程序员更大的自由度和灵活性,以完成shell所不能完成或者难于完成的编码任务,如实现面向对象的模块化设计、操作服务器数据库等等。

    (4)Python支持面向对象、支持可扩展性和可嵌入性,同时提供了功能丰富的库

    (5)性能方面:很明显地,Python的执行效率要高于shell,有一个很充分的理由就是shell本身的各种进程间IPC通信要造成相当大的开销。而Python底层是用C实现的,其性能可以接近于C,但具体相同功能的Python代码量却要比C短上很多倍!因此,按照性能排序:C > Python > shell,按照开发效率排序:shell > Python > C。

    其实对于各种编程语言的发展,如果纯以语言的执行效率而言,最快的肯定是汇编了,为什么有了汇编之后还会有C?而有了C之后还会有Perl、Python呢?这应该是许许多多天才般的程序语言设计者们,从开始都现在一直在不断地追求的,试图在语言的执行性能与易用性上寻找一个平衡点。而语言本身只是工具而已,而这项工具好不好用,除了很大程度上取决于语言本身的设计之外,另一方面则是与语言使用者本身的熟练度、能力和水平密切相关。

    程序设计语言其诞生的意义在于解决问题,验证想法,属于对问题求解的实践过程,如研究数据挖掘的,主要关注的是数据的分布、概率模型等数学算法问题,用哪种语言来验证方案的可行性并不非常重要,对于语言本身的唯一的要求可能就是要好用,最好不需要有太多复杂的语法,通过简单地学习就可以上手并能轻松地写出程序,二是要执行效率可以接受,不需要最快,但也不能太慢。

    而在执行效率与易用性上,脚本语言给了用户一个很好的平衡点,而这一点,恰恰是脚本语言的最重要的意义。我们可以通过脚本方便快捷地编写代码,甚至在某些情况下,这此脚本代码执行的效率跟C是相差无几的。

    春节过年,走亲访友是常事,就没有用实验去验证比较一下shell、Python和C性能的差异。不过我找到一个非常有意思的网站:http://shootout.alioth.debian.org/

    这个站点对比了所有主流语言的执行的性能包括[时间、内存、代码量],如下图所示的是:在运行多个有代表性的测试用例情况下,Python的性能除以C语言的性能得到的数据图,可以看出C在[时间、内存]上的开销要低于Python,但在[代码量]上Python要少于C。

    哇~语言组织的好好,后面学python 跨平台可用嘛~
    4楼 luoyanghero 2014-03-24 22:16发表 [回复]
    之前还在徘徊学shell还是python,现在决定学python了,thanks
    3楼 nerissa 2014-02-08 23:24发表 [回复]
    看你干嘛吧。若是纯粹写个什么服务器脚本的,300行以内的。个人觉得SHELL就够了。但若要写一个大逻辑什么的1000行,看情况。
    2楼 liuchunyan007 2013-10-10 13:50发表 [回复]
    shell太多的指令,常用的没有几个,
    1楼 地球类人猿党主席 2011-12-20 22:22发表 [回复] [引用] [举报]
    仅会使用C,正考虑是学习下shell还是python呢,
  • 相关阅读:
    Ftp、Ftps与Sftp之间的区别
    Previous Workflow Versions in Nintex Workflow
    Span<T>
    .NET Core 2.0及.NET Standard 2.0 Description
    Announcing Windows Template Studio in UWP
    安装.Net Standard 2.0, Impressive
    SQL 给视图赋权限
    Visual Studio for Mac中的ASP.NET Core
    How the Microsoft Bot Framework Changed Where My Friends and I Eat: Part 1
    用于Azure功能的Visual Studio 2017工具
  • 原文地址:https://www.cnblogs.com/iOS-mt/p/7080699.html
Copyright © 2011-2022 走看看