搞算法（图像识别，深度学习）必须要懂C/C++吗？
看到好多算法岗的要求除了python之外，很多都会要求C/C++开发，但是我没有学过C++会有影响吗？另外打算深入学习一下java，一是因为以前接触过java，另一个是因为java比c++简单，而且目前对java的需求量还是很大的，请问如果以后做算法，java会有帮助吗
python + c/c++ + shell +cuda，做cv的在编程语言上的四大金刚，相辅相成，都玩的溜，再配合不错的理论知识，以及一些基础开源库（pytorch opencv等等）的使用，那应对大部分的工作应该问题就不大了。

先说python，众所周知，目前cv方向，特别是深度学习，一些开源模型和算法的实现，很多都是基于python，而且python入门快，三方库多。后续工作基于python训练模型，验证算法以及做一些数据处理工作会比较得心应手。

接着说c/c++，模型训练好，算法验证好以后，需要将算法（模型）部署到生产环境，给客户使用，有可能是服务器，有可能是嵌入式设备，根据需要各不相同。考虑算法运行效率，大部分人的编程习惯，安全性等等原因。现在使用c/c++进行算法部署的比例还是比较高的，而且更接近底层，灵活性也比较高，当然想搞好的难度也更大一些。

再说shell脚本，一般做cv开发或者研究，大部分时间都是在跟数据打交道，大批量数据的操作是一个很耗时费力的事，可得想一个好方法。当然大家说shell能实现的工作，python申请c++也都能做，无非调几个三方库的事。但是也架不住shell方便啊，找个文件，批量改个名字，按规则拷贝文件什么的，shell真香。

最后说cuda，现在大家做cv，特别是深度学习模型，大多还是在nvidia框架下的，一些新的模型算子的支持，nvidia下各框架下的移植，前后处理的优化，有了cuda的支持，将事半功倍。

上面四个优先级是依次递减的，都能玩的溜，那工作起来应该会听到很多人喊你“大神”，“老师”了，那你也应该会经常穿插在各个工位间帮人解决问题，进而导致自己要加班处理自己的事了。