我从我带学生的经验给一点个人建议吧。以下从问题的问法来假定了你还是个学生

首先,在问选什么之前,我们先问一个基本问题:【该不该学一门编程】。

这就要从你对你的本行专业,也就是机械的态度来看了,机械工程从事机器人相关领域,本身专业知识就足以让你能够立足了,无论是最直接的工业机器人系统集成(也就是一些中小型非标自动化企业),还是更为专业一些机械臂/机器人设计,机械本身都是重头戏,甚至服务机器人、AGV等等行业,一个优秀的地盘工程师都是极大程度决定产品成败的核心。如果进入特种机器人等领域,那更是机械的天下,看看国内的机器人实验室有多少是机械学院下属的你就知道了。

当然,这里有一个比较尴尬的逻辑:机械工程师在机器人技术团队里面往往是收入较少的岗位,尤其是当你拿自己已经工作多年的工资和那些刚毕业的AI工程师比的时候,你会有极大的失落感。这不是机器人领域的问题,而是互联网企业挖人的问题,那边的薪水太高了。

如果你希望自己今后还是以机械为核心竞争力进入机器人行业的话,那么大可以不必特别去学习一门语言,第一,没有必要,第二,如果是课余学学的话,你真的写不过那些专门干这个的。

第二个可能,就是你打算【成为一个具有机械基础的跨专业人才】,典型的角色基本上是围绕着机电一体化技术开展你的职业生涯,从目前我的经验看,这类出路的一个特点就是综合能力要求高,团队角色往往是方案制定者或者至少是共同决策者,基层的技术人员往往是没有地方给你生存的。这类技术人员通常是要求掌握:机械、嵌入式、传感器/基本信号处理等能力,可以在除了智能算法外提供一个产品的整套方案能力。大多数的中小型机器人公司的技术部门负责都是这种出身。如果超这个方向努力,那么你需要大量的扩展你的眼界,了解大量的不同技术方案。回到问题,在这类出路下,通用性强的语言一定是首选,嵌入式使用的C/C++无疑应该是首选,因为你的绝大部分技术积累应该都是以无linux的嵌入式为基础的。并且最好不要(最多是轻度)学习特定机器人环境,尤其是ROS,如果你早期就开始依赖ROS,你的出路会变得很尴尬,等你有充分的经验积累再去有取舍的学习更为合理一些。

第三个可能,就是【放弃机械设计】,也就是不再局限于原有专业,一心想去搞机器人,原有专业背景仅作为 我了解一些机械,对我的工作很有帮助 ,这样程度的来看待,优先学习机器人中更为“值钱”的技术,嗯,具体来说那就是AI喽,在这深度学习碾压一切的时代,学python去吧,投身机器学习的大潮,有精力适当补充个通用语言,比如c++,让你有个落地点。没有其实也没有很大的关系,因为实际情况是,我们培养的机器人专业的硕/博士生,只要在培养期间搞了AI,就没有人再干机器人行业了(嗯……貌似有极少数创业还是做了机器人,但反正没有应聘机器人行业的),全都去了互联网或金融领域,还是那个问题,会这些技能为啥不去那边挣钱啊……

最后,就是【反正有时间,就想学点东西】,如果是这样考虑的话,其实说实话,学哪个语言真的就不是太重要了,如果想偏传统一些,C++可能还是个不错的选择,毕竟给你以后有更多变数的可能。python也不错,甚至可以说是现在非专业码农的首选,更贴近流行应用。


我大学时也是学的机械,但当时我是不会编程的。

后来峰回路转,从读研开始,做了很多乱七八糟的工作。时至今日,用过的编程语言大概十几种吧。

编程语言排行榜

看了一下最近的编程语言排行榜,排名前十的除了Swift都用过了。

所以我觉得可以回答一下这个题。

现在看来,纠结学习哪种语言其实是没那么重要的。因为到了一定的程度,语言是不用学的,直接用就行了。虽然写出来的程序有点野路子,但解决一般的问题是可以的。

但是,学一门编程语言还是比较有必要的。甚至这和是不是机械工程专业没有关系。

比如日常处理word或Excel,那么会VBA编程可能会在某些时候,极大地提高工作效率(比如一些重复有规律的工作)。虽然大部分情况下也用不到VBA。

而只要你具备了编程的思维,学一门语言,那是非常快的。

所以我的建议是,找一个合适的小项目去做,尝试去解决一个实际的问题

如果找不到的话,下面一些答案你大概可以参考:

路人甲:有哪些适合新手练手的C/C++项目??

zhuanlan.zhihu.com图标路人甲:有哪些适合新手练手的Python项目??

zhuanlan.zhihu.com图标

总之,如果能找到项目,那就以项目需求为主,项目适合用什么语言就用什么语言。

对于机械工程专业,如果一定要推荐语言,那我首先推荐C语言,其次是C++,再次是Python/MATLAB。

君子不器,不要被某一门语言限制了想象力。


我也是机械专业,毕业后自学C++做过工业机器人软件开发。机械专业再加上C++其实有很多方向可以走,一般还是做工业领域的软件,比如机器人示教器、控制器。三维建模领域也有二次开发,二次开发就需要工程制图背景知识还有部分线性代数。工业软件和普通软件开发很大的区别在于它需要专业背景知识比较多,机械专业转型进来优势很明显。

题主想进入机器人领域,也可以先了解一下机器人是怎么工作,怎么操作,推荐一下海渡学院app,我做机器人的时候基本操作都是在这个软件上学的。从事机器人领域开发,机器人的基本操作、编程还是要懂一些的。

语言只有加上算法和数据结构才能开发出好的程序,建议学C++,同时刷题学算法和数据结构。像基本的单向链表、双向链表、环形链表、数组、字符串、二叉树、二叉搜索树、堆、图的深度优先遍历(DFS)和广度优先遍历(BFS)等常见数据结构都需要刷题,提升理解的深度。刷题网站一般leetcode和牛客网。自学C++可以去Google搜索GeeksForGeek网站,上面有很多免费的数据结构和算法教程,也有在线的IDE可以直接写程序,对于自学来讲很方便。学习过程中有什么小问题,比如const、static这些关键字怎么用,智能指针sharedptr、unique_ptr是怎么实现的,可以去StackOverflow上查一下,很多小问题上面都有很多很通俗易懂的回答。

刷算法题最大的好处是分析源码的能力强,一点棘手的算法问题自己能分析源码慢慢探索出解决方案。最近项目中就遇到浮点数计算hash值问题,直接用浮点数的hash函数计算hash值有一个很严重的问题,假如两个数误差1e-5,那这两个数的hash值如何保证相等呢。我的解决方案是,先把浮点数转化成字符串,根据指定的精度,保证小数点后的数字个数相同,也就是多的截取,少的补0。转化成字符串后用字符串的hash计算函数通过这种方法很好的解决了项目中棘手的问题。

C++入门建议看一下C++Primer plus,拔高的可以看一下Thinking In C++、Effective C++、More Effective C++等经典书籍。

我一直坚信每一步脚踏实地的努力,都会在未来某个时刻看到它留下的深刻印记。不管是读研还是工作,认真做事总会发现很多人帮你。


专业课程里没有c或者c++吗?

另外需要的可能就是matlab或者Python 了,而且只回语言没有用,还得会数学和算法,因为说实话,我学过c++,其他语言拿起来多少可以看一些,看到不懂的就查一下。但是真正要编出点什么,我觉得还是跟搞计算机软件的不能比,


人生苦短,你用python;注重效率,你用C++;语言只是工具,重要的是机器人学中的算法.
推薦閱讀:
相关文章