Killoser

  • 350 主题
  • 369 帖子
  • 3546 积分
  • 身份:版主
  • E币:1309

Python这么火,要学吗?听听华为的工程师怎么说

2018-12-4 11:25:16 显示全部楼层
编程语言发展得非常之快,后起之秀中Python显然最为耀眼。简明优雅、易于开发,“人生苦短,我用Python”并非一句戏言,Python成为许多工程师们心中“最美的语言”是有道理的。但是,有人就有江湖,编程的江湖亦是如此。迅速崛起的Python,免不了要被拿来和其他语言比较,而“Python如此火爆,我需要学吗?”也成为了很多人的困惑...
6456.JPG
最近在心声社区也有关于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多一点。

(以上整理自心声社区。)

补充:

在出现一些争议的同时,Python已经取代Java,成为全球大学校园中最受欢迎的机器学习编程语言,外媒整理了2018年学习Python的10大理由,这里供大家参考。

学习Python的10大理由:

1.数据科学研究

这是许多程序员在2018年学习Python的最大的原因。我知道很多朋友对投资银行的Java编程工作感到厌倦,很多人正在转而学习Python。

但是,是什么让Python成为数据科学和机器学习的首选语言?不久之前的首选不是R语言吗?我觉得一个原因就是Python提供库和框架。比如:

面向AI、数据科学和机器学习的PyBrain、NumPy、PyMySQL是Python取代R成为机器学习首选的原因之一。

另一个原因是多样性,使用Python可以比用R做更多的事情,比如可以创建脚本来实现任务的自动化、进入Web开发领域等。

2. 机器学习

机器学习是学习Python的另一个原因。机器学习在过去几年里实现了惊人的发展,正在迅速改变着我们周围的一切。

现在的算法一天比一天复杂,如果你对机器学习感兴趣,不管是想要做一个项目还是只是想做着玩,Python都是唯一能让这个过程变得更简单的主要编程语言。

尽管Java中也提供了机器学习库,但Python提供的内容更多、更丰富,因为开发人员社区更喜欢Python而不是其他关于数据科学和机器学习的内容。

3. Web开发


老式开发需求是开发者学习Python的另一个原因。Python提供了许多优质库和框架,比如Django和Flask,让Web开发变得非常简单。

PHP中需要花费数小时的任务,使用Python可以在几分钟内完成。Python也被用于网络爬虫。像Reddit一些流行网站就是使用Python构建的。

4. 学习简单、易上手

这是初学者学习Python的最大原因。当你第一次开始编程写代码是,一般不希望从语法严苛、规则奇怪的编程语言开始上手。

Python可读性高、结构简单,也更容易设置。你不需要处理任何类路径问题,比如Java或C ++的编译器问题。你只需安装Python,只需要在路径中添加Python即可,你可以从计算机上的任何位置运行Python。

5.资源丰富的开发者社区


你需要一个资源丰富的社区来学习新技术,在学习编程语言时,朋友是您最重要的资源。你会经常遇到这样那样的问题,这时你经常会需要帮忙。

使用Google,可以在几分钟内方便找到任何相关问题的解决方案。像StackOverflow这样的大型社区,将许多Python专家聚集在一起,帮助新手。

6.功能强大的库和框架

Python和Java之间的一个相似之处是可以执行任何操作的开源库、框架和模块,使应用程序的开发非常容易。

想象一下,创建一个没有Spring in Java或Django和Flask的Web应用程序,可以使你的工作变得更简单,因为只需要关注业务逻辑即可。

Python有许多库,可满足不同需求。 Django和Flask是Web开发中最受欢迎的两种,而NumPy和SciPy是则是面向数据科学的。

Python拥有最好的机器学习和数据科学库的集合,如TensorFlow,Scikit-Learn,Keras,Pandas等等。

7.流程自动化

我第一次接触Python是因为要写脚本。当时我正在使用一款通过UDP接收消息的应用,应用出了问题,在日志中查看不到消息。

我想检查一下端口上是不是接收到UDP流量,但没有方便好用的UNIX命令来实现。

我旁边的一个朋友正在学习Python,他在短短5分钟内就写出了一个实用工具,使用一个Python模块拦截到了UDP消息。

这件事给我的印象深刻,Python写脚本、工具和推进自动化流程上功能强大。

8.用途多样化优势明显

我喜欢Python的一个原因是它可用于多种用途。R语言在数据科学和机器学习上表现很好,但在Web开发方面无所作为。学习Python意味着你可以做很多事情。

比如可以使用Django和Flask创建Web应用程序,使用NumPy、Scipy、Scikit-Learn和NLTK进行数据分析。还可以使用Python编写脚本,来自动完成许多日常任务。

9.职业前景与个人成长

Python的发展速度非常快,而且时间很长,如果你刚刚开始编程生涯,那么学习一门不断开发中的编程语言会很有意义。

这不仅可以有助于快速找到工作,而且还可以加速职业发展。对于初学者来说,这应该是他们学习Python的第二重要的原因,仅次于“简单易上手”。

10.挣钱多!

Python开发人员一般是目前收入最高的开发人员,特别是在数据科学、机器学习和Web开发方面。

这些开发人员的平均年薪可达7万-15万美元不等,具体水平取决于开发经验、职位和工作领域。

参考链接:  http s://hackernoon.com/10-reasons-to-learn-python-in-2018-f473dc35e2ee
文章由新智元翻译。

最新评论

楼层直达:

ihb_sina

  • 8 主题
  • 51 帖子
  • 192 积分
  • 身份:LV1 技术小白
  • E币:129
ihb_sina 2018-12-6 11:40:10 显示全部楼层
机器学习里面Julia现在也有抬头了。关注

keendawn_745908

  • 0 主题
  • 17 帖子
  • 179 积分
  • 身份:LV1 技术小白
  • E币:138

978461154_qq

  • 6 主题
  • 61 帖子
  • 389 积分
  • 身份:LV2 初级技术员
  • E币:273
978461154_qq 2018-12-9 15:39:44 显示全部楼层

看了楼上的所有回帖,感觉是个大神,膜拜啊
我要评论
3
19
广告
快速回复 返回列表