Python这么火,要不要学?作为一家超有实力的科技公司,华为工程师对Python编程的看法是什么呢?他们认为我们要追求Python编程火热的步伐吗?
编程语言发展得非常之快,后起之秀中Python显然最为耀眼。简明优雅、易于开发,“人生苦短,我用Python”并非一句戏言,Python成为许多工程师们心中“最美的语言”是有道理的。但是,有人就有江湖,编程的江湖亦是如此。迅速崛起的Python,免不了要被拿来和其他语言比较,而“Python如此火爆,我需要学吗?”也成为了很多人的困惑...
最近在心声社区也有关于Python的讨论:“为什么要用Python”?大家谈到了,动态语言的灵活性是把双刃剑,Python的三方库,效率问题等。
工程师A:
最近用Python这种动态类型变量语言越用越烦躁,每次点完顿号都想摔电脑,太不方便了,啥方法提示都没有。这种明显降低编写效率,无有效提示的竟然说适合新手。当然周边支持类库确实多,随便拉一个都能写个自动图像识别点确认实现游戏挂机。如果说动态类型是趋势,GOOGLE新出的(09年发布)go语言宣城综合所有优点,不还是采用静态类型么。计划放弃用Python了但是公司里面天天吹Python。
工程师B:
Python和java的比较,其实金庸的天龙八部里面说得很清楚,Python类似鸠摩智的小无相功,靠着小无相功内力催动,能够轻松搞定少林寺72绝技,但是当实现复杂的大的项目的时候,如果没有搞懂底层的东西,会被反噬。java类似北冥神功,威力无穷,和小无相功同出一门,但是适用范围没有小无相功那么大,只针对天山派的武功才能发挥出威力。从这里可以看出,在以效率优先的华为派,当然是鼓励大家学习Python,这样即便无法拿下72绝技,也能各自学个一招半式闯江湖。
工程师C:
Python合写些小工具轻巧便捷,运维工具之类的,提示关联找个好的IDE就行了和语言没关系。go交叉编译易,部署简单,适合搞服务器做些高并发之类的场景。Java适合搞业务或者大型项目,主要是生态好,工具多,会的人多维护方便,像go依赖管理非常不便,Python的性能还是不行。当然只要你给力其实用啥高级编程语言都可以把项目完成出来,只是熟练度,语言成熟度,开发是否便捷的差异。就像前端的人玩js,搞一个nodejs把后端也玩出来了。
工程师D:
对Python真的是很无语。三方库虽然多,然而难用之极,API返回的究竟是变量函数句柄还是类?完全不知道。除非在固定领域经常使用Python,能过对领域专用API烂熟于心,否则没有help没有文档,只能翻源码猜啊我去!根本不适合新手好吗? 根本不是信手拈来的语言好吗?一引用三方库就各种依赖各种版本不匹配,2.x和3.x都叫Python长得完全不一样啊!如果你需要花1天时间写核心代码,那么之前需要2天做准备好啊有么有!
工程师E:
Python开发工作两年,来华为后写C/C++,最喜欢Golang和Ruby,也会shell、JavaScript。还是那句话,语言只是一种工具!python能做的Java也能做,执行效率高,Java能做的python也能做,编码效率高,知道在什么时候该用什么语言就好了。
工程师F:
作为Python和Go都略懂的人,简单表达一下观点:
1. 语言选择主要看场景,抛开这个一切都是空谈;
2. Python适合什么场景:单人或者小项目开发,因为生态的加持,快速(比如AI、数据处理),如果不用库,这个优点就体现不出来;
3. Go适合什么场景:大项目开发,因为静态编译的问题,静态编译解决的问题,一个是性能,另外就是编译时发现问题,再加上强类型,比较适合多人合作;然后Go加了大量的工程化的优化和工具,都是对着软件工程的常年痛点去的,这个是学院派语言不具备的;
4. Go是不是那么好?不是的,如果对于高手来说,写Go特别别扭(我自己感觉有一点点,但优点居多,所以我也不是高手),因为有别于Python的写什么代码都要写到足够好,Go是写什么代码基本只有一种写法(别瞎写),而且比较boring;
5. 一句话:Python写的开心,Go写得放心,个人更喜欢Python多一点。