全能选手 看看Python应乎潮流的72变-程序员宅基地

技术标签: java  php  数据库  

全能选手 看看Python应乎潮流的72变
2010年10月21日
  在软件的浪潮里,程序员太渺小了。我们害怕自己,会同过气的语言一样昙花一现,成为过眼烟云。直至Python出现,故事开始转折。 起源于上世纪80年代末的Python语言,是一种开放源代码的解释型高级动态类型语言,语法简练、类库丰富,以开发效率高著称。
  20多年的发展时间,Python是愈久弥香,经历住了时间的考验。Python是Goolge的三大语言之一;全球最大的视频网站 YouTube,以及国内的豆瓣网也是采用Python开发;最新最热的行当中,python是往往web game的首选开发语言之一,谷歌和国内的易度云计算开发平台也都选择了Python语言。
  这就是神奇的Python,在交错的语言大战中,Python却成为一颗长青树,不断焕发新的光彩。而Python也成为本人最近8年的编程生涯的主体,或许这将是作为程序员的归属,一直走下去。让我们一起分享下这不一样的Python。
  [b]简单是硬道理[/b]
  PHP被很多严肃的开发人员诟病,太简单、太脏了。然而PHP却被企业所喜欢,连Yahoo和Facebook都选择了PHP, PHP不断在发展,生命力异常旺盛。为什么?因为简单。程序语言,从机器语言到汇编,到高级语言,不就是简单在驱动吗?程序员也是人,需要更容易使用的语言。时髦点的话,就是语言也要多为咱程序员服务了,人机接口、用户体验要好。
  因为简单,所以开发效率高;因为简单,所以容易阅读和维护;因为简单,所以不怕没人接手;因为简单,重构下也无妨;因为简单,项目经理就不必写伪代码了,直接Coding出框架代码吧。简单带来的优势,是成指数级别增长。简单省了钱,加快的进度,减少的项目风险,首先老板会喜欢。简单是硬道理。.net同样是靠简单占领了不小的市场份额。
  python语言最早设计指导思想之一,就是想提高代码的可读性。Python语言采用缩进来标识代码块,而Java采用的是配对的大括号来标识。不仅仅是排版更漂亮,Python的数据结构非常简单和统一,Python自带非常庞大的类库,很多东西拿来即可。这样,相同的逻辑,使用python可能只需要java五分之一的代码量。
  很多软件爱拿自己“数百万行代码”出来说事,表明自己很强大。而在Python的世界里,人们在炫耀相同的功能后,喜欢说我只有几千行代码(比如 Python上的对象数据库系统ZODB就只有不到5千行代码)。背后的意思是,放心用吧,有问题你也很容易维护这个系统;或者如果有时间,你自己也可以接管这个代码。
  [b]Pythonic之美 [/b]
  PHP靠一个“简单”占领了市场,PHP的哲学是quick and dirty;Python同样简单,但Python的哲学是Pythonic。Pythonic是什么?Pythonic是quick and not dirty,也就是quick and beautiful.
  这个Pythonic之美,代表了程序员的素养和品味。什么是好的代码?什么是漂亮的代码?有一本书,叫做《unix编程艺术》,实际上一本对编程审美进行洗脑的经典书籍。而Python语言的设计理念,正符合了这种编程审美。因此,Python深受高端开发人员的喜欢,Python和他们有相同的文化。这如同,很多人将拥有Mac机作为自己审美品味的象征一样。
  [b]Python宝库 [/b]
  Python号称自带电池(Battery Included),也就是有强大的类库。Python内建的类库就已经非常全面了。从web抓取,到xml解析,到嵌入式数据库,到压缩包的处理,到邮件协议,到json解析,而且不断在增长。
  如果你还觉得不够,可到http://pypi.python.org上去找,这里有1万多种第三方的类库。从图片处理、到加密算法,到excel文件解析生成,到pdf文件转换,可谓应有尽有,无所不能。探访这里的乐趣,就如同海边拾贝,如同山间采菌,那种惊喜,那种“大国大民”的优越感,让你在心底涌现出投身Python的幸福,进而归属感倍增。
  更重要的是,所有的这些宝贝,全部开源,而且大都是类 BSD协议的开源,您直接用于商业。有了这些,我会经常为自己选择了Python而庆幸,这使得我们像易度这样庞大的应用快速构建起来。Python自带强大的包管理机制,简简单单一个easy_install命令,您就可以在线安装升级、卸载这些包。这类似debian/ubuntu的apt包管理机制一般方便。
  [b]全能选手 [/b]
  可能是因为Python语言练就了动态语言的以柔克刚、借力打力的太极推手功夫,加上Python简单导致的生产力指数级增长效应,Python应该是应用最全面的一种语言了。
  从脚本、到web开发、到嵌入使用、到客户端、到云计算,python都干得不错。你只需要学会Python这一门语言,老板给你什么任务你几乎都能完成。让我们随着时间的年轮滚进,看看Python应乎潮流的72变。
  [b]操作系统脚本[/b]
  几乎所有的Linux发行版本和Mac都自带了Python解释环境,还有Nokia的S60手机平台,可直接运行python脚本。简洁的 Python语法,即便是不大懂开发的系统管理员或者企业IT人员,也可以快速掌握。事实上Ubuntu和Red Hat的安装程序,以及Gentoo的包管理系统也是用python开发的。
  [b]最佳伴侣[/b]
  很多软件往往选择会选择将整个Python接上去内嵌到软件中,作为一个操控软件的脚本语言。最典型的是各种3D动画软件,大都使用Python来做特效。比如Maya、Blender等;一些2D的图像处理软件,比如GIMP等也可Python来更灵活的处理图片。
  其他的,OpenOffice可以内嵌Python编写宏;知名的地理信息系统ArcGIS采用Python作为脚本语言;一些游戏引擎,也通常选择Python作为游戏逻辑的编写工具;还有一些有限元分析软件和数据统计分析和挖掘的软件,也采用Python作为使用接口。
  [b]客户端程序[/b]
  现在的桌面,已经不是Windows一统天下了,Linux和Mac的用户在逐渐增多。谁都想自己写的程序,能够在多个平台上运行。Python就是这为数不多的选择之一。国内limodou编写的UliPad文本编辑器就是用Python编写的;而最早的BT下载客户端,也是采用Python。
  [b]Web应用[/b]
  Web应用是Python大放光彩的领域。豆瓣网站很pythonic,网站风格完全符合python简洁、漂亮、优美的审美。而豆瓣也是采用了python上的一个叫做quixote的web框架开发完成。更大的YouTue.com案例我就不多说了。
  Python上的web轻量级框架,其实可能有数十种之多(这可能需要归功于Python的生产效率)。最流行的是Django,其他的包括 TurboGears、Pylons、BFG等。随着Python上的web服务网关接口(WSGI)的逐渐普及,各个web框架直接的公共部分 (WSGI中间件)也越来越多,有很多框架也产生相互合并的意图。分久必合,我相信统一是web框架之间竞争的最后结果。在今天webgame“肆虐”的风潮里,Python同样高调登场。5分钟版的开心农场就是采用Python开发的。Python是众多webgame工作室的首选游戏逻辑语言。
  [b]企业应用 [/b]
  Python上的企业应用代表,著名的包括开源的ERP软件OpenERP。OpenERP从后台到客户端,到web端,全部是采用Python开发完成。
  另外一个就是Plone。Plone是一个世界级的开源内容管理软件,被包括美国中情局在内的全世界众多政府大机构、军方和大企业使用。Plone基于Python上的一个重量级web应用框架Zope开发。
  [b]云时代的新生 [/b]
  在如今云计算风生水起的时代,Python被谷歌云开发平台Goolge App Engine奉为首选的云计算语言。而国内的易度云办公平台,从内部实现到第三方的PaaS开发,都采用了Python语言。当前在云存储方面的新星 DropBox,更是从后台到客户端,全面采用了Python语言。如果云代表了软件业未来之一,那Python这一次真正开始走在最前面。
  [b]说说缺点[/b]
  没有哪个人是完美的,Python也一样。Python的一个大问题是,对多处理器支持不好。也就是一个Python进程,目前只能在一个处理器上运行。这对于日益普及的多处理器架构,不能说是一个缺憾。当然对于web应用,采用多进程负载均衡便能解决这一问题。目前Python也正在提供一个支持多处理器的版本,但是还没有达到稳定的版本,相应不久的未来这个问题可以得到解决。
  另外一个问题是解释型语言的通病,就是性能问题。这个问题,Python社区有个pypy项目,将Python的解释型执行,转换为编译执行,大大提升效率。只是这个pypy还没有到正式版本。谷歌内部也启动了一个项目,号称目标是将Python的执行效率提升5倍,让我们拭目以待。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iteye_20092/article/details/82267885

智能推荐

RK3568 重新封装V4l2为一个C++ Camera管理类 (基于RK编译环境)_mpp_buffer_type_ext_dma-程序员宅基地

文章浏览阅读1.3k次。RK3568 重新Camera_source.c封装为一个C++ Camera管理类 _mpp_buffer_type_ext_dma

python-字符串作为代码执行(exec、eval、locals、compile)_python将字符串作为代码执行-程序员宅基地

文章浏览阅读1.8w次,点赞16次,收藏43次。字符串作为代码执行的方法:1、eval()构造器:eval(source, globals=None, locals=None, /)说明:输入一个【python表达式或code对象】参与计算。用于恶意攻击,窥视:再看下eval的参数globals和locals参数的用法,看栗子:一幕了然,局部变量空间和全局变量空间的优先级的先后顺序~2、e..._python将字符串作为代码执行

杨辉三角的Python实现_python编写函数实现杨辉三角形,左对齐-程序员宅基地

文章浏览阅读6.2k次。#杨辉三角定义如下:# 1# 1 1# 1 2 1# 1 3 3 1# 1 4 6 4 1# 1 5 10 10 5 1#把每一行看做一个list,试写一个generator,不断输出下一行的list:#!/usr/bin/env python_python编写函数实现杨辉三角形,左对齐

SparkSQL之Join原理_spark sql join原理-程序员宅基地

文章浏览阅读4.5k次,点赞5次,收藏26次。文章目录前言:Join背景介绍Join常见分类以及基本实现机制Hash JoinBroadcast Hash JoinShuffle Hash JoinSort-Merge Join总结前言:写SQL的时候很多时候都有用到join语句,但是我们真的有仔细想过数据在join的过程到底是怎么样的吗?今天借这位大神的文章来交接下sql中join的原理。同样,如有冒犯,请联系。Join背景介绍Jo..._spark sql join原理

Python到底有多强?双十一的时候带你领略它的强大之处!_python球鞋怎么样-程序员宅基地

文章浏览阅读558次。双十一第一波付尾款已经开始啦,怎么样不过很烦的事情就是:手速不够快,抢不过人家总是错过优惠券看到好东西,稍微犹豫了下,然后也没了,哭唧唧成天忙得晕头转向,忘记付尾款,不仅东西没抢到,定金也没了······还有啊,双十一的优惠攻略真的是看得人头秃,主会场红包雨、聚划算百亿补贴、淘宝双十一红包、天猫超市会场、双十一购物津贴、跨店减、满额减、买30ml送60ml······哪个更便宜?感觉回到了上学时被数学支配的恐惧。所以不管是双十一,还是618、818、七夕购物节等活_python球鞋怎么样

r包安装固定版本r包 安装某个版本r包 安装特定版本的R包_怎么安装不同版本的r-程序员宅基地

文章浏览阅读6.3k次,点赞5次,收藏19次。r安装固定版本 安装某个版本 安装特定版本的R包1采用大家普遍使用的指定R包版本的方法安装 require(devtools) install_version("ggplot2", version = "3.2.1", repos = "http://cran.us.r-project.org")继续采用第二种指导R包版本的方法,就是在官网下载对应版本的R包原始代码文件install.packages(("E:/ggplot2_3.2.1.tar.gz"))3.如何查找旧版本的R包并且_怎么安装不同版本的r

随便推点

Spring Boot深入理解SpringApplication.run()方法启动_springapplication.run(registerserverapplication.cl-程序员宅基地

文章浏览阅读1.2w次。我们知道spring boot项目启动,只需要启动@SpringBootApplication.calss中的含有SpringApplication.run()方法的main方法就可以@SpringBootApplicationpublic class Application { public static void main(String[] args) { Sp..._springapplication.run(registerserverapplication.class, args)

【seafile】之 预览电子发票PDF显示不全问题_unigb-ucs2-h.bcmap-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏6次。文章目录一、问题来源二、解决三、题外话近期在处理网盘和在线文件相关问题,面对的事比较多且杂,记录下。问题:seafile自身预览PDF文件,部分不显示图片显示如下:一、问题来源seafile版本:7.0.5原因:原文件pdf,字体没有嵌入,所以需要本系统的字体渲染seafile 使用 pdf.min.js,而把对应map集成了。解决这个问题,关键点在 seafi..._unigb-ucs2-h.bcmap

Python OpenCV实例:Gabor滤波器参数可视化-程序员宅基地

文章浏览阅读205次。为什么80%的码农都做不了架构师?>>> ..._gabor核可视化

bat代码如何处理中文目录_bat 中文目录-程序员宅基地

文章浏览阅读1.7k次。bat代码如何处理中文目录注意事项注意事项txt编辑代码,另存为,选择保存路径——选择保存类型为所有文件——文件名添加.bat后缀——中文路径:编码方式选择ANSI_bat 中文目录

正在CPU上运行的进程_浅谈cpu.idle和cpu.load-程序员宅基地

文章浏览阅读197次。最近在配合运维进行系统压测,进行系统评估的时候cpu.idle和cpu.load是两个主要参考指标。在Linux系统中,通过top命令可以查看cpu.idle和cpu.load。在说明这两个指标之前,必须对系统运转有一个整体的认识。在Linux内核中,每个进程都会被分配一个固定的时间片(默认为10ms)。在这10ms中,该进程享有cpu的所有权。如果该进程用完了10ms,或者有其他优先级高的进程发..._cpu上正在运行的应用程序怎么关闭

考试系统需要浏览器全屏并摄像的处理过程记录_111.1.139.87:5858/uhome-程序员宅基地

文章浏览阅读1.3k次。一、全屏打开网址方法1、360浏览器解决方案:"F:\Documents and Settings\lenovo\Application Data\360se6\Application\360se.exe" --kiosk --disable-infobars http://*.*.*.88:5858/uhome2、google浏览器:"F:\Program Files\Googl..._111.1.139.87:5858/uhome

推荐文章

热门文章

相关标签