python为什么叫胶水语言?python为什么是系统脚本?
python为什么叫胶水语言?python为什么是系统脚本?
特点是什么?
python现在最广为闻名的形容大概有这些:
- 他是很好的胶水语言。什么是胶水语言?反正当时的我不知道。
- 他是新一代的系统脚本。系统脚本是什么?
- 其次就是代码可读性。不过,这个其实还是争议挺大的,我也不准备在这多说了。
反正我发现大家其实都没解释清楚。
大概是因为,那些大牛们都已经把很多东西习以为常了,却不知道新人其实都一头雾水。其实事情也没那么复杂。
胶水语言
先从Hello world开始。所有学python的童鞋都会从这句话开始:
print "Hello World!"
。
问题来了:为什么所有语言第一件做的事情,就是Hello World?
其实,他代表了UNIX统一的文本处理模型及接口。这些个玩意,Windows的编程领域是很难接触到的也很难理解的。
下面写个范例。比如我这么干了:
# file: say.py
import sys
txt = sys.argv[1]
print "Hello %s!"%(txt)
那么我就可以在Linux或Mac的终端上直接输入:
python say.py World
输出结果就会是:
Hello World!
这样就确保了,在终端调用上的直观与可编程性。
这样,我就不用必须在别的python语言里面调用python了,而能够直接在shell上跟其它处理程序直接连接。
BTW,这其实也是Hello world,呵呵。
再玩复杂点的:
file: say2.py
import sys
for line in sys.stdin.readlines():
print "Hello %s!"%(line.strip())
那么我就可以在终端这么干:echo -e 'water\nmaomaol\nkenbing\nlonger\nchuang'|python say3.py
输出就会是:
Hello water!
Hello maomaol!
Hello kenbing!
Hello longer!
Hello chuang!
再进一步,我可以把前面的内容写成文件,比如写成一个这样的文件:
names.txt
water
maomaol
kenbing
longer
chuang
就可以直接更便捷地做处理:
cat names.txt | python say2.py
这样,我就用cat
命令把文本打印出来,然后输出到say2.py
上去了。
输出一样的结果。
但是,我输入到终端又有什么用呢???没错,到终端的确没啥用,我们把他输出到文件吧!
cat names.txt | python say2.py > result.txt
就这样,结果就保存到了result.txt
这个文件里了。
这样做的意义是什么?
意义就是,在终端上我可以随意地组合他和其它程序,作为一个中间处理模块。
而且,他可以如此地简单便捷,一些简单的脚本只需要cat一下马上就能明白是什么意思。
一个表达式一行代码,代码块有一致的标准的缩进,标准的命名方式,简练的语言,支持注释……
- 别的程序要访问或调用,很简单,一个命令把指定数据输入到这里就好,然后要怎么拼接怎么拼接;
- 周期性地处理也没问题,输出到文件,等待别的程序调用。
比起windows各种诡异的processer,各种诡异的二进制存储的文件,这样一致的接口简直能让人想哭了。
系统脚本上:
- 他比SHELL多了很多数学及字符串处理能力,还多了很多很好用的迭代方法,还多了很多的原生的数据结构;
- 他比PERL多了很要命的代码可读性。
- 比起ruby和nodejs,他基本所有机器都预装,而且已经经历了时间的考验。虽然,将来的确会有被这俩货代替的可能性。
- 比起C/C++,他多了一个终端、甚至像ipython这样的加强版神器终端,可以边调试代码边把没问题的代码写进文件。而且,源码即可执行。
在我看来,这些就是python的优势。让他当之无愧是系统脚本的王者。
只可惜,现在就连大多数的程序员,都已经被图形化界面给宠坏了,也习惯了各种大厂商、IDE提供的诸多工具包与功能,却把很多很基础的东西都给忽略了,却在不断地、重复地造轮子。这就叫码农。
所以,大概也就敢于拥抱变化的系统管理员、运维工程师或数据分析工程师,才会长久地持续地喜欢python。
这个用户群,小众而又庞大,而且整个业界对这这方面的专家有着很大的缺口。
纯以前端兼设计师的身份,向这部分人群表示高山仰止。
然后,我再继续折腾别的东西去。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用以致学,学以致用
python为什么叫胶水语言?python为什么是系统脚本?的更多相关文章
- 1. Python中如何使用其他语言?(python的胶水作用,python又叫胶水语言)
1. python中如何插入C语言运行? (1)编写C语言代码: #include<stdio.h> void CFun() { printf("---------我是c语言:- ...
- 为什么说Python是一门动态语言--Python的魅力
动态语言的定义:动态编程语言是高级程序设计语言的一个类别.在计算机科学领域已被广泛应用.它是一类在执行时能够改变其结构的语言:比如新的函数.对象.甚至代码能够被引进.已有的函数能够被删除或是其它结构上 ...
- Python的JAVA胶水——jpype
Python的JAVA胶水--jpype python可以作为一门胶水语言使用,可以用其它语言的优势来弥补自身如性能方面的不足,jpype就是在Python中使用jvm的第三方库 文档在这里 安装 s ...
- Python基础学习笔记(一)python发展史与优缺点,岗位与薪资
相信有好多朋友们都是第一次了解python吧,可能大家也听过或接触过这个编程语言.那么到底什么是python呢?它在什么机缘巧合下诞生的呢?又为什么在短短十几年时间内就流行开来呢?就请大家带着疑问,让 ...
- Python中高层次的数据结构,动态类型和动态绑定,使得它非常适合于快速应用开发,也适合于作为胶水语言连接已有的软件部件。
https://github.com/jhao104/proxy_pool/blob/master/doc/introduce.md 3.代码模块 Python中高层次的数据结构,动态类型和动态绑定, ...
- 在大型项目上,Python 是个烂语言吗
Robert Love, Google Software Engineer and Manager on Web Search. Upvoted by Kah Seng Tay, I was the ...
- 在python中使用c语言编写的库
本文使用的 cffi 官网网址:https://cffi.readthedocs.io/en/latest/overview.html cffi 自己本身使用了pycparser 这个库,是用pyth ...
- 关于Python你不得不知道的Python语言特点
首先什么是语言?什么是编程? 准确来说是:定义计算机程序的语言,用来向计算机发送指令 个人理解: 语言:是一种交流的工具或者方式.比如我们的汉语普通话.各地的方言.外语中的英语.俄语.日语等.我们 ...
- [转]大数据时代,python竟是最好的语言?
随着大数据疯狂的浪潮,新生代的工具Python得到了前所未有的爆发.简洁.开源是这款工具吸引了众多粉丝的原因.目前Python最热的领域,非数据分析和挖掘莫属了.从以Pandas为代表的数据分析领 ...
随机推荐
- Airbnb JavaScript Style Guide
Airbnb JavaScript Style Guide() { 用更合理的方式写 JavaScript ES5 的编码规范请查看版本一,版本二. 翻译自 Airbnb JavaScrip ...
- koa 中,中间件异步与同步的相关问题
同步中间件很容易理解,如以下代码: const Router = require('koa-router') , koa = new Router({ prefix: '/koa' }) , fs = ...
- Asp.net MVC 移除不用的视图引擎
Asp.net MVC 默认提供两个视图引擎,分别为: WebFormViewEngine 和 RazorViewEngine.MVC在查找视图时,会按照指定的顺序进行查找.当我们的MVC程序未找到相 ...
- JS实现填报时对修改过的单元格进行标识
1. 描述 在填报预览时,对单元格编辑后,其左上角有个红色标记,但非常不明显,用户很难注意到.有没有什么好的办法,对单元格操作后,将其做较明显的特殊标记处理,方便用户识别呢? 如图所示:对单元格进行操 ...
- Android Studio插件之MVPHelper,一键生成MVP代码
MVP盛行,听到的最多的抱怨就是咋要写这么多接口,那么本文作者提供了一个插件,自动生成这些接口的声明.感兴趣的还可以学习该插件的写法,按照自己平时的需求修改,提供开发效率. MVPHelper 一款I ...
- c# 从一个服务器 访问另外一个服务器上的文件
页面调用 function fnOpen(path) { window.open("~/FileHelp.ashx? url="); //window.open(url); } 后 ...
- linux 安装 zookeeper 集群
关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.servicesystemctl status firewalld ...
- 关于Redo Log的基本操作
1.创建新的日志组 alter database add logfile group 4 ('/u01/oracle/product/10.0.2/oradata/ORCL/redo41.log') ...
- docker实战 (1) 关于docker的安装
docker定义: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...
- 团队项目——软件需求分析(NABCD)
一.团队项目简介 团队名称:SmartCoder 项目名称:<一起> 二.针对 " 地图可视化查看发布的内容 " 这一特点进行 NABCD 分析 N(Need需求) 往 ...