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
    +关注

    关注

    59

    文章

    4892

    浏览量

    90417
  • Shell
    +关注

    关注

    1

    文章

    376

    浏览量

    25536
  • PERL
    +关注

    关注

    0

    文章

    14

    浏览量

    10726
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用PYTHON进行的跨平台仿真

    快速物理光学软件VirtualLab Fusion以其“连接场求解器”方法自豪,该方法将应用于不同组件上的专用电磁场求解器结合在一起,以实现整个系统的物理光学模拟。这种方法的逻辑扩展不仅是连接软件
    发表于 04-02 08:21

    [VirtualLab] 使用Python运行VirtualLab Fusion光学仿真

    摘要 VirtualLab Fusion允许Python外部访问其建模技术、求解器和结果。这个用例介绍了一种使用路径变量和Visual Studio代码将Python连接到VirtualLab
    发表于 03-31 09:39

    安装 Python VisionFive_GPIO失败是哪里出了问题?

    尽管按照最新的文档,在安装 VisionFive.gpio 包时仍然收到错误 sudo apt 安装 libxml2-dev libxslt-dev python3 -m pip 安装请求
    发表于 02-11 06:13

    请问,不用的型号,读写速率是5ms或者4ms,时钟都是1MHZ,是因为什么原因决定的?

    请问,不用的型号,读写速率是5ms或者4ms,时钟都是1MHZ,是因为什么原因决定的?
    发表于 01-16 06:19

    没有专利的opencv-python 版本

    专利风险,仅需避开 opencv-contrib-python 的 nonfree 模块(或直接用无头版)。 如果你的场景需要特定功能(如特征提取、目标跟踪),可以告诉具体需求,帮你推荐对应的无专利 API 和代码示例~
    发表于 12-13 12:37

    【瑞萨RA6E2】1.使用串口shell点亮LED灯

    啥技术含量,所以想来就打算实现一个小型的串口shell,用串口助手发指令来进行点灯,这样将串口和点灯融为一体,不至于单调乏味。 1,打开原理图 发现led1和led2分别如上图,打开rasmart软件
    发表于 11-09 17:26

    shell基本介绍及常用命令之shell基本介绍

    Shell是什么?我们在刚开始接触Linux的时候,经常会听到工程师提到Shell这个词,刚开始不知道这是个干什么的,简单的说,它是一个应用,接收用户命令,调用相应的内核接口函数或应用程序,并输出
    发表于 09-28 09:05

    从 0 到 1:用 PHP 爬虫优雅地拿下京东商品详情

    PHP 语言 实现一个 可运行的京东商品爬虫 ,不仅能抓取商品标题、价格、图片、评价数,还能应对常见的反爬策略。全文附完整代码, 复制粘贴即可运行 。 一、为什么选择 PHP 做爬虫? 虽然 Python 是爬虫界的“老大哥”
    的头像 发表于 09-23 16:42 1143次阅读
    从 0 到 1:用 <b class='flag-5'>PHP</b> 爬虫优雅地拿下京东商品详情

    请问一下想用ESP8685直接替换ESP8266不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗

    请问一下想用ESP8685直接替换ESP8266不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
    发表于 09-17 12:06

    termux如何搭建python游戏

    termux如何搭建python游戏 Termux搭建Python游戏开发环境的完整指南 一、Termux基础环境准备 Termux是一款无需root即可在安卓设备上运行的Linux终端
    发表于 08-29 07:06

    Python脚本实现运维工作自动化案例

    还在为重复性运维工作烦恼?每天被各种告警、监控、部署搞得焦头烂额?作为一名有10年经验的运维老司机,今天分享5个超实用的Python自动化脚本,让你的运维工作效率提升300%!这些都是在生产环境中实际使用的案例,代码简洁高效
    的头像 发表于 08-27 14:46 1458次阅读

    python app不能运行怎么解决?

    使用helloword的模板,上传了IG502,但不能运行,请大神帮忙。系统日志如下:sntpc[1226]: ntp request error: 113, No route to host
    发表于 08-06 06:27

    【RA-Eco-RA6M4开发板评测】移植shell实现命令交互

    代码见 一. 前言前面我们实现了标准输入输出,为了进一步方便交互调试,我们继续来实现一个精简的shellShell的实现参考https://mp.weixin.qq.com/s
    发表于 07-19 22:47

    【正点原子STM32MP257开发板试用】3.响起蜂鸣器

    GPIO的方法。 毕竟主要使用PythonLED灯被内核限制住了,只能用shell点灯,要用Python要改估计,不想再改了,只能自己
    发表于 06-15 15:13

    Shell脚本入门指南

    Shell 是一块包裹着系统核心的壳,处于操作系统的最外层,与用户直接对话,把用户的输入, 解释给操作系统,然后处理操作系统的输出结果,输出到屏幕给与用户看到结果。
    的头像 发表于 06-03 10:47 1489次阅读
    <b class='flag-5'>Shell</b>脚本入门指南