0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么我只用shell而不用perl、Python和PHP?

如意 来源:CSDN 作者:finethere 2020-06-20 09:42 次阅读

先不用说“无论什么语言都是一种工具”。工具是我们身体的一部分,解放军解放台湾靠“小米加步枪”? “工具无所谓”论可以休矣。对于实际的软件工程工具和平台的选择是很重要的,有时候是致命的

1. perl是强大的, perl=shell+awk+sed+一堆命令行工具。

但是反过来也一样shell+awk+sed+一堆命令行工具可以替代perl.

2. shell的简约,可读性比perl好,工具之间通过命令行stdio管道通信,任何一个小部分都可以拿出来测试和试验,程序维护/修改很容易。学习曲线和积累方式比perl更优。

3. perl是跨平台的呀!java,sysv标准, posix是跨平台工具和标准。oracle还跨平台呢! 但是实际软件部署是需要选择平台的,一旦选择好了就希望这个平台稳定。虽然unix/linux的命令行工具在不同的平台特性稍有不同,但是你一旦选定了平台,那么这个平台上的shell/命令行工具就是非常稳定的可依赖集合,不但可靠而且基本不会有变化。软件开发商的投资也因此受到了保护。perl和python则处于不断的变化当中,新的数据库DBI模块/某种功能的版本来临,需要perl/python升级到新的版本。那么新的版本是否可靠,是否影响原有系统的运行参数? 那么需要很多的回滚测试。perl可以写文件到某个路径,win下面用盘符开头,*nix下面用/路经开头---软件开发和部署的成本并没有因为perl跨平台而减少。

如果perl只是用来作为“胶水”粘合其他的程序,那么跨平台也就无从谈起了。效率也比不上shell

4. python是面向对象的呀!不错,只是没有了shell使用管道拼接程序,难以单独拿出某一块来跑跑看看有什么效果。你必须读完整个程序才能发现出了什么问题。开发成本不比shell低。

5. Unix的Kiss原则,perl和python都违反了。我刚学习shell,用的很爽。脚本里面有一部分是sed和awk,我不懂不要紧,我留给以后学习“sed和awk”。尽管如此我可以看到sed和awk的输入输出是什么,不影响我理解程序。我有用了,可以学学awk,学学find的高级用法。这些都不会使得原先的shell程序过时。perl呢? 就像java, swing出来了awt就过时了,一个新框架出来了老框架就得推导。作为一个语言,问题域太大。而shell恰恰做到了kiss,它只做好自己的事情。

6. 作为弱类型语言的perl,虽然避免了类型的繁琐开销,同时也使得程序的调试更加困难,反而不如shell的文本IO来的直观。

7. DBI很强大吗? 我们的系统如果选定了oracle那我就在shell脚本里面sqlplus然后直接sql语句,用dbi岂不累死(5倍以上的代码),难里理解,难以调试,可读性也级差!为了dbi屏蔽了db的不同,提供统一的接口? 如果db要改变,那么定义文件,存储过程,函数什么的全都要重写!脚本调用只是一小部分。python也存在同样的问题。如果完全不用存储过程呢? 那么j2se+hibernate+spring好了,真正的跨平台。perl/python的思想是大而全,和win+vs如出一辙。

8. python的很多用户来自win,因为上面默认没有shell,哈哈

9. python的运行取决于变量,像perl一样,无法如同shell一样提取IO的结果来直观的调试和修改。

10.是的, linux的anaconda安装界面,yum都是基于python的,gnome/kde也大量依赖perl。那是为了有一个“像脚本一样运行的c/c++”。

但是问题是操作系统,虚拟机,桌面管理器都是严肃的东西,那些系统级别的perl/python的代码有牛人和牛组织来保证。如果是普通的应用软件开发呢(卖钱的那种),用perl/python的人会因为各种目的,有的是为了程序今后的扩展性(其实他离开以后这个版本就完结了),有的是为了移植性(其实大部分的系统都被绑定在一个特定的平台),有的是为了赶时髦(很多python用户都是这么来的),还有的是为了显示自己的编程多么厉害使用一堆perl/python的高级特性:总之,这个豪华的工具就是双刃剑,对于普通的项目普通的软件开发者来说,会给我们展示一个虚拟的天国(其实团队达不到那样的把握水准),然后会把事情弄得一团糟。

所以我选择古老的shell,古老而且稳定,保守而久经考验,足够而且简洁。M16会被更好的M4取代,但是AK47却是永恒的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
  • Shell
    +关注

    关注

    1

    文章

    358

    浏览量

    22902
  • PERL
    +关注

    关注

    0

    文章

    12

    浏览量

    10307
收藏 人收藏

    评论

    相关推荐

    php是什么

    中,并在服务器端执行。PHP的设计灵感来源于C语言,同时也吸取了Java和Perl等其他语 言的特点,形成了独特的语法结构。这种语言特别适合于Web应用程序的开发,因为它允许开发者快速地构建动态网
    发表于 01-30 16:33

    phpy:PHPPython互调用库

    phpy 是识沃团队最新推出的开源项目,目标是为 PHP 引入 Python 生态,来弥补 PHP 生态的空缺和不足。phpy 使得 PHP 可以调用所有
    的头像 发表于 12-12 10:43 523次阅读
    phpy:<b class='flag-5'>PHP</b>与<b class='flag-5'>Python</b>互调用库

    php的源码是开放的吗

    PHP是一种开源的脚本语言,其源代码完全开放并可免费获取、使用和修改。这篇文章将详细介绍PHP的源码开放性。 一、PHP的源码开放性 PHP的源码是以
    的头像 发表于 12-04 15:57 541次阅读

    php的特点有哪些

    PHP是一种通用的脚本语言,特点丰富多样。 PHP是一种开源的服务器端脚本语言,主要用于开发Web应用程序。它可以嵌入HTML代码中,也可以作为命令行脚本执行。PHP语言的发展始于上世纪90年代
    的头像 发表于 12-04 15:50 576次阅读

    phppython一样吗

    PHPPython是两种不同的编程语言,尽管它们都用于开发Web应用程序,但它们有许多不同之处。从语法、用途、社区到性能和生态系统等方面来讲,PHPPython在许多方面都有不同之
    的头像 发表于 12-04 15:47 440次阅读

    perl进程管理

    1 调用外部命令 调用命令的perl程序为该命令的父进程,继承当前perl的标准输入标准输出
    的头像 发表于 12-01 14:23 173次阅读

    python shell怎么用

    Python Shell是一种交互式解释器,可以通过命令行直接运行Python代码。在Shell中,可以输入一行代码并立即得到结果,非常适合于测试、尝试新代码或进行简单的任务。本文将详
    的头像 发表于 11-29 14:36 370次阅读

    Shell脚本程序开发-数组(四)

    数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
    的头像 发表于 10-22 17:50 290次阅读
    <b class='flag-5'>Shell</b>脚本程序开发-数组(四)

    不用Nginx,只用Tomcat的Http请求流程

    只用Tomcat,不用Nginx搭建Web服务,行不行?我曾经提出的愚蠢问题,今天详细给自己解释下,为什么必须用Nginx!
    的头像 发表于 10-17 10:54 373次阅读

    为什么shell脚本中执行命令要加exec?这个exec有什么作用呢?

    正常情况下,如果我们想要在shell脚本中执行一个命令,我们只用将该命令原样写到这个shell脚本中就好了。
    的头像 发表于 08-21 09:10 1291次阅读
    为什么<b class='flag-5'>shell</b>脚本中执行命令要加exec?这个exec有什么作用呢?

    MySQL长期霸榜时代结束!

    JavaScript 连续 11 年成为最流行编程语言,Python 取代 SQL 成为第三大流行编程语言。其他编程语言比如 Bash/Shell, C, Ruby, Perl 和 Erlang,它们的排名均上升了一位。
    的头像 发表于 06-20 10:12 229次阅读
    MySQL长期霸榜时代结束!

    一个小而美的嵌入式shell - letter shell

    熟悉Linux的朋友的都知道,shell包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows CMD。 通过Shell将输入的命令与内核通讯,好让内核可以控制硬件开正确
    的头像 发表于 06-10 15:11 4452次阅读
    一个小而美的嵌入式<b class='flag-5'>shell</b> - letter <b class='flag-5'>shell</b>

    一文带你了解Python的使用

    各位ICer对面向对象的语言Python想必并不陌生,作为继Perl之后最知名,且一直持续保持着版本 更新的脚本语言
    的头像 发表于 05-23 17:16 708次阅读
    一文带你了解<b class='flag-5'>Python</b>的使用

    UltraEdit文本编辑功能介绍

    UltraEdit 是一个功能强大的基于磁盘的文本编辑器、程序员编辑器和十六进制编辑器,用于编辑HTML、PHP、JavaScript、Perl、C/C++、Python和几乎任何其他编码/编程语言。
    的头像 发表于 05-22 10:52 2940次阅读
    UltraEdit文本编辑功能介绍

    一文带你了解Python的使用

    各位ICer对面向对象的语言Python想必并不陌生,作为继Perl之后最知名,且一直持续保持着版本 更新的脚本语言,Python已经更新到了3.62版本
    的头像 发表于 05-04 09:58 570次阅读
    一文带你了解<b class='flag-5'>Python</b>的使用