tensorflow gcc版本高_算法岗对程序员的 C++ 能力要求有多高?

点击上方蓝字设为星标73836bc27d0f22142051e35e556ed7d3.png

每周一、三、五上午 8:30 准时推送

下面开始今天的学习~

bccec54f2ad8b4357097acc1df8e4bd9.png

997ad16d7b0238db47a92138758f0686.png

2018 年,根据 TIOBE index 的程序语言排名,C++ 超过 Python 成为语言排行榜的第三,前两位是 Java 和 C。到了 2019 年,C++ 又被 Python 赶超 ,排名第四。

5c8e980b852dc6cfd540b9f1e0b22eca.png

TIOBE 主要根据搜索引擎出来的结果,通过流行度给编程语言进行排名。它认为 Python 超过 C++ 并不是此消彼长的现象,Python 的使用量仍然在增长,但 C++ 更受欢迎。它将 C++ 的复兴归功于 2011 年发布的 C++11,认为这个版本让 C++ 更简单、更安全,更具表现力。

现在有许多的 ”算法“ 岗位,都使用的是 Python 作为主要开发语言,可能会给大家一个 "现在算法岗位已经不需要 C++,只需要 Python 就好了" 的错觉,然而这个说法并不准确,我们以 Tensorflow 为例,对于它可能我们大多数人的印象是:

import tensorflow as tf

但是我们只需要看一下 Tensorflow 在 GitHub 上的仓库就可以发现——它其实主要是用 C++ 编写的。

a8a5d33a4aa98e19ddad1091b10d9dad.png

我们可以得出一个绪论——如果仅仅是调参使用(模型训练)的话,可能会 Python 就已经可以看到算法的效果了,但是如果是算法的岗位的话,C/C++ 还是一个必须要掌握的语言。

目前很多算法是跑在芯片上的,大多还是用 C++ 的。包括公司的仿真代码,Python 更多是用来模型验证的工具。

从市场的角度来看,算法工程师对于 C++ 的需求大吗?我们看一个典型的算法工程师的招聘需求:

  1. 机器学习

  2. 大数据处理:熟悉至少一个分布式计算框架 Hadoop/Spark/Storm/ map-reduce/MPI

  3. 数据挖掘

  4. 扎实的数学功底

  5. 至少熟悉 C/C++ 或者 Java,熟悉至少一门编程语言例如 Java/Rython/R

尤其是从第 5 条可以看出,算法工程师对于 C/C++ 的要求是一个硬指标(毕竟很多地方需要手写算法,还要要求效率),Python 反倒排在了后面。

只追求算法效果那 Python 完全够用,而且由于众多数学运算库的支持实现起来还要比 c++ 方便一些,而且 caffe,tf,py 这些都有 Python 接口,做研究完全没问题,或者 MATLAB 也可以。但是公司是要应用于实际项目的,就必须考虑算法效率和资源占用,那 Python 和 C++ 性能就差了很多

很多深度学习模型都很重,计算量非常大,Python 实在太慢,C++ 则必不可少

那么对效率要求较高的算法岗位,相关人员的 C++(或者是 C)的功底需求是怎么样的呢?

可以说对 C++(或者是 C)的功底需求是比较高的。对于 Python 来说,可能利用一两个星期的空闲时间就可以快速入门了。而对于 C++ 来说,没有两年经验大概没有人敢说自己算是精通的吧?可谓是一入 C++ 深似海,在现在 C++ 不断升级的情况下,各种新特性都需要去学习和掌握,还需要不断地在实际项目中使用,才能不断提升对 C++ 的认识。

算法岗位对于 C++ 的要求相比较普通的开发岗位而言会更加高一些。对于传统的开发而言可能绝大多数情况下都是按照要求写程序,而算法岗在许多时候会需要自己设计一些与实际相关的算法(比如推荐算法),然后再自己动手将其实现,从任务需求上就有了一个很大的提升,在实际的实现中的需求也更是如此,对于 C++ 的要求来说,一言以蔽之,就是:精通。

怎么样才算是精通 C++ 呢?可能很难仔细描述,这里给大家看一个非常有意思的例子:

  • 至少一次遇到 "Sorry, feature not implemented"

  • 至少一次遇到 template 报错长到你找不到头,因为 terminal 的 buffer 不够

  • 能看懂 gcc 想表达什么,而不再看 gcc 字面上写了什么(clang 不算)-代码里面看不到 new/delete,再敢于用起 new/delete

  • 各种 design pattern 的好处坏处都能理解

  • 跟人在论坛上面大干一架

  • 理解“精通 c++”这件事情连 committe 都没几个人能做到,每个公司还对这个语言的未来有不同的理解

  • 放弃“精通 c++”这个伟大而艰巨的任务

目标岗位是算法工程师的同学们,从现在开始加油吧!

92e363c712cf52ad5ec54b1bd6595310.png

本文作者:Nova Kwok

编辑&版式:霍霍

声明:本文归 “力扣” 版权所有,如需转载请联系。

103e01d810dafeab0199ca81590ecd72.png

a8941b09817aa93c3782150c1ceada60.png

00cd3c7b59478ed7a36d2d32037f425b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值