考研期间有必要学python吗-研究⽣:深度学习⼀年来的感受对于深度学习的基础,⼤体分为三个部分:
理论知识基础(数学知识的掌握程度)
编程基础(C/C++/python)
实践基础(配置环境,debug,遇到问题寻答案)
因为之前⼤部分的⼯作是在电赛,主要使⽤的语⾔是C。也参加过ACM,使⽤C++来编写算法。得益于这些实践,⾃⼰的C/C++编程功底是有⼀些的,因此上⼿python很快,也了解了些python的底层知识(推荐⼀本)。
Python语⾔很华丽很美妙很⾼级。C语⾔100⾏做的事情Python可能2⾏就做到了,但是啊,你不知道Python的2⾏代码中其实也执⾏了C语⾔,如果你使⽤的是C实现的Python,在Python内核中,实际调⽤的还是C语⾔,只是你看不到摸不着罢了。
深度学习的⼊门门槛虽然,但是稍微努努⼒,过了这扇门,以后的路就好⾛多了:⼀篇⽂章解决机器学习,深度学习⼊门疑惑。
⼤部分编程语⾔都是共通的,熟练掌握其中⼀门,其他语⾔也就好⼊⼿了。
编程语⾔接触的越多就会越明⽩这个道理,不论是动态语⾔、静态语⾔还是解释型语⾔、编译型语⾔,⼤体都是互通的。都有近似统⼀的数据类型,都有近似统⼀的流程结构,很多关键字也是⼀样的,
本科的时候我们第⼀个学习的编程语⾔应该是C语⾔。当时⼀⼈⼀本红⽪谭浩强,且不说对这本书的评价,也是起码引领我们步⼊了编程的⼤门。实话实话学好C语⾔受益⽆穷。到如今,C语⾔的C99标准还是⼀如既往地稳定,C语⾔仍然⽆处不在。
每种编程语⾔都有归宿
⾃从升⼊研究⽣以来,写C语⾔的机会变少了,⼤部分时间只是在看。⾯对着⾃⼰曾经很熟悉很熟悉的语⾔,像是陌⽣了很多,担⼼⾃⼰这样会"忘掉”它,于是想着去⽤⽤啊,去随便写点东西啊,强⾏去操作啊。
但还是发现,C语⾔不适合我当时的项⽬,强⾏往上凑是不⾏的。就和我曾盲⽬相信python是世界上最好⽤的语⾔⼀样(2333,不是php)。曾⼀度以为python什么也可以做,但是忽略了重要的⼀点,编程语⾔设计的初衷。
翻了翻C语⾔的历史。C语⾔的设计⽬标是提供⼀种能以简易的⽅式编译、处理低级存储器、产⽣少量
的机器码以及不需要任何运⾏环境⽀持便能运⾏的编程语⾔。主要是⽤于底层开发的。⽽Python呢,Python的设计者Guido van Rossum是根据ABC语⾔开发出来的,⽽这门语⾔的初衷是为了服务那些⾮程序员们。怪不得Python语⾔长得那么像伪代码。
所以啊,⾯对不同的项⽬,挑⼀门不同的编程语⾔吧,⽐如我来说:
Python:主要⽤来编写深度学习代码,利⽤Tensorflow和Pytorch库来实现⾃⼰的想法,当然Python还可以做别的,也⽤Python搭建过⽹站的后台(Django)。
C/C++:⾃⼰对C语⾔更熟悉⼀些吧,因为C语⾔很纯粹很⼲净,没有直接的类功能的⽀持虽然是硬伤,但是其底层性的特点还是⽆与伦⽐的,C语⾔更多的是在写瓶颈算法代码。⽽C++对我来说稍微臃肿⼀些,标准更新太快,不过毕竟和C有亲戚关系,⼀视同仁了。
Java:⼜是⼀门脚本语⾔,但是在我看来JS也开始⾯向⼤⼯程来发展了,各种标准也是层出不穷,每年⼀个草案,模块与模块间的互相调⽤也越来越严谨了。这门我⼀般拿来在浏览器上玩耍,制作⼀些⾃⼰的⼩⼯具之类的。
还有⼀些语⾔,还接触过lua和php,亦或是C#,lua是为了快速⼊门torch,php是为了搭建这个wordpress做后端的博客。C#是为了使⽤VS做⼀个WPF上位机。lua⼩巧强⼤和C语⾔很亲近,PHP⾃
⼰并不是很喜欢,看了纯粹为了WordPress,C#看了有⼩半年,各⽅⾯也挺好⽤,不过需要充分理解⼀切皆对象的概念。
⼈的精⼒有限,掌握⼀门编程语⾔还是很难的。所以很羡慕那些会多国语⾔的⼈,既然⼈家都能学那么好,那么我们怎么就不能掌握多门编程语⾔呢?
还是多学⼀些语⾔吧
很多⼈说精通⼀门语⾔⽐学会多种语⾔有⽤,这句话说得在理,但是我在实际的项⽬中更多的是多种编程语⾔齐驱并驾的,⼀种语⾔吃到死的项⽬还是⽐较少的。
为什么,其实⼯作中更多遇到的是交叉编译,但凡涉及到项⽬,光使⽤⼀门语⾔⼀般是⾏不通的。⼤多数都需要结合不同语⾔的特长来进⾏。把⾃⼰的技能树点满,遇到不同的怪物也就游刃有余了。
在利⽤Pytorch这个深度学习框架在搭建⼀些深度学习算法的时候,我们利⽤python来写核⼼程序,但是如果遇到瓶颈,⼀些算法速度要求只⽤python写满⾜不了这时候就需要C/C++了。另外学习学习cuda也是必要的。
但有⼀门语⾔是必学的。
今天,IEEE Spectrum 发布了第五届顶级编程语⾔交互排⾏榜:Python 卫冕成功,C++ 异军突起,雄踞第⼆,C 语⾔和 Java 则「退位让贤」,分据第三和第四。编程先学c语言还是python
可以这么说,Python不管在求职、开源项⽬、⾃定义项⽬都占据第⼀的位置可以说很强势了,Python的优势不必多说,学好Python好好搞事才是硬道理。
总结下,建议学习的的语⾔:C/C++、Python以及JS。
好习惯
我这⾥要说的好习惯不是指早睡早起,这个睡觉的习惯,我不做过多的评价,每个⼈有每个⼈的习惯。⽽且⾃⼰也是反例,平时都是⼀点多睡,早上8点左右起,这样着实不好,⼤家别学我。
我要说的,是编写代码过程中,能做的检查尽量都做了,别嫌⿇烦,该使⽤assert就别嫌影响代码美观,注释最好都写上,该有的log就log 了,该git就git,要不然到时候调试起来真的很影响效率。
本⼈深深受了这个的苦啊。
应不应该上博
这个应该是⽼⽣常谈的问题了,曾有⼀⽼友专门过来劝我读博,彻夜畅谈,当时差点就被打动了…读博这个真的需要考虑清楚,我⾝边有很多转博的⼈,⽆⾮就是两种:
⽼师劝直博,答应肯定能毕业,因为专业偏理论,然后⾃⼰感觉研究⽣出来也不知道做什么,索性再读⼏年。
⾃⼰有想法,想搞研究,感觉研究⽣三年时间不够⽤,需要博⼠的时间继续搞。
确实,如果⾃⼰想要研究的东西发现⼀两年根本出不来结果,何不尝试⼀下博⼠呢?
因为⼀旦你⼯作了,你想要做的,其实和⽼板让你做的,差距还是挺⼤的。
上不上博不是⾃⼰⼀个⼈的事⼉,问问家⼈,问问⼥朋友,看看他们是否⽀持你,然后最终当然看⾃⼰的选择了。
项⽬?⼯作?
如果⼀直以研究的⼼态去⼯作,去做项⽬,那么我想说:你想的和⼈家要的,那可以天壤之差。
之前有⼀个项⽬,我想要⽤Python来写,⽤GPU来跑,想多了啊,⼈家要求⽤C++来写,⽤CPU来跑,你以为谁都有GPU呢,项⽬谈的更是实际,实际落位才是硬道理,因为使⽤你产品的⼈,不⼀定都有GPU。
如果⼀⼼科研,那么项⽬将会是⼀个完全不同的天地,两者差别还是很⼤的,各有各有长处短处,有⼈说理论很难,也有⼈说实际项⽬很难,这个真的不好说,只有理论和实际相结合,才是最好的吧。
⼯作来说,算法领域,C++/C语⾔仍然是万⾦油,不能忽视哇。
后记
简单谈谈⾃⼰的感受,希望对⼤家有帮助。
好⼏天没写博客,发现⼀个道理:
对于⼤多数有需求的程序员来说,阅读博客是⼀件很爽的体验。
尤其是在看满满知识⼲货的时候,那新鲜的代码和公式啊,⾚裸裸地铺满在博主整齐有条理的页⾯上,那⼀张张配图是多么地诱⼈。虽然恨不得赶紧把这些内容扫荡下来,⿏标滚轮上的中指就要按奈不住往下滑——等等!先收藏了。
但是写博客就稍稍⿇烦了,想吐槽的知识太多,奈何时间⼜不够,只能慢慢来啊…总得需要酝酿是吧?
贵在坚持吧~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论