【转载+总结】Python 干货

来源:互联网 发布:卖衣服的淘宝店 编辑:程序博客网 时间:2024/06/09 10:47
1. 知乎【使用 Python会降低程序员的编程能力吗?】
首先楼主不知道知乎就是Python做支撑的么?
以前我是一个Linux/C程序员,后来我自学了Python,工作中利用Python做了一个支撑4000万日活跃用户,每天40亿条数据的系统。其中需要高性能的模块是用C的。
来点干货,Python中包含了许多从软件工程和实际应用都会遇到的问题。
面向对象?没问题,Python虽然不象Ruby万物皆对象,但是动态语言一些本身特性如鸭子类型,让你忘记还有多态,继承?太简单了,甚至还可以多重继承。封装?每一个文件都可以看作一个类,还有比这个更赞的么,你甚至可以不用关心什么是命名空间。 
如何管理依赖?pip和virtualenv加wheelhouse打离线包,代码可以直接发布,妈妈再也不用担心我管理依赖了。
如何发布代码?fabric,一条命令,所有机器都执行,还要再简单点么?
异步系统?tornado是工业级的异步web服务器。
Web系统搭建?如果你是做java或者PHP什么的,基于类CGI的发布太简单了,paste.deploy可以让你轻松构建uwsgi的web,中间健?写个认证模块太简单了,在web接口层外部就隔离非法数据。
单元测试?webtest模块让你轻松离线测试web接口,根本不需要把代码部署到服务器,通过HTTP返回了,是的,离线的web测试。
Mock测试?stub模块,让你在Python的依赖层面注入stub。

以上这些,早已经脱离语言本身的范畴了,可是我都是通过Python学来的,任何地方都可以借鉴?



虽说不能绝对化,但是不同语言的社区训练出的程序员的能力侧重点还是不一样的:

1. C程序员对于内存管理,计算机体系的理解能力;
2. C++程序员对元编程的理解能力;
3.Java程序员对于OO和设计模式的理解,对规模项目掌控的能力, 对虚拟机实现理解的能力;
4.Ruby程序员创造Web应用的能力;


不会,软件工程师至少要包括程序设计和程序开发这两项能力。程序的设计与开发实现更重要。

1.Python有大量的开源库值得我们去学习,你会学习很多很灵巧的设计方法和设计模式;
2.编程能力主要体现在将复杂问题简单化,简单问题模式化的能力。
3.关注Python,因为她非常干净优雅,并鼓励清晰易读的代码,易学易用。
4.与C结合紧密,但需要你对软件的模块划分更加合理、科学,将C的效率和Python的优雅有机地结合起来。
5.最后,每种语言都有优势,C,Java,Python/Ruby,一个好的软件工程师应该兼收并蓄,不应厚此薄彼,这样才能你的能力才能提高!



我主要使用的编程语言有c/c++/python/java,除了python都参与写过万行以上的项目(python没有是因为解决问题根本用不着1w行:)。个人还是很喜欢python编程的感觉,可以将注意力集中在逻辑实现而不是细节实现上。




遍布各地的python黑客发来贺电,一般只有不会编程的人才去纠结编程语言的优劣,大牛都在用js写编译器,写代码做基站。
原谅我言重了lz。
加一句,lisp可以加重程序员的强迫症。


2.【说说这篇「我为什么从python转向go」】
django的网络是同步阻塞的,也就是说,如果我们需要访问外部的一个服务,在等待结果返回这段时间,django不能处理任何其他的逻辑(当然,多线程的除外)。如果访问外部服务需要很长时间,那就意味着我们的整个服务几乎在很长一段时间完全不可用。

为了解决这个问题,我们只能不断的多开django进程,同时需要保证所有服务都能快速的处理响应,但想想这其实是一件很不靠谱的事情。

tornado是异步的,但是python的mysql库都不支持异步,这也就意味着如果我们在tornado里面访问数据库,我们仍然可能面临因为数据库问题造成的整个服务不可用。



python的GIL导致导致无法真正的多线程,大家可能会说我用多进程不就完了。但如果一些计算需要涉及到多进程交互,进程之间的通讯开销也是不得不考虑的。


部署python服务的时候,我们需要在服务器上面安装一堆的包,光是这一点就让人很麻烦,虽然可以通过puppet,salt这些自动化工具解决部署问题,但相比而言,静态编译语言只用扔一个二进制文件,可就方便太多了。

Python 是有 virtualenv 这个工具的,事实上对比包管理和包隔离,Python 比 Go高得不知道哪里去了。Python 跟 Git 谈笑风生的时候, Go 的 dev 们还得考虑我怎样才能使得 import的包稳定在一个版本上(当然现在有很多第三方方案)。Virtualenv + Pip 完全可以实现 Python部署自动化。


0 0
原创粉丝点击