计算机学院的学生该怎样提高自己的编程能力?
共 7529字,需浏览 16分钟
·
2024-05-01 10:05
重磅干货,第一时间送达
重磅干货,第一时间送达
链接:https://www.zhihu.com/question/423764018
编辑:深度学习与计算机视觉
https://www.zhihu.com/question/423764018/answer/1514275200
2. 绝大数企业,没有耐心,也没有财力去从头培养一个“眼高手低”的毕业生。从一开始,他们需要的就是一个“开箱即用”的求职者。
3. 计算机毕业生,直接能进入大厂的是少数,绝大多数人都得从中小厂家干起。
所以,对绝大多数计算机毕业生来说,如果想逃离“毕业即失业”的命运,在大学的时候就一定要千方百计的提高自己的动手(编程)能力,眼高手低是个致命的缺陷。
同时,还要清醒的认识一个现实,我们现在很多大学的计算机课程设计就是偏理论、偏基础。在学校,按部就班的学习,无论你的纸面成绩如何,都不能直接证明你的动手能力。
大学的老师,因为职业定位的不同,科研能力可能很出色,但软件工程能力就不一定了。
因此,学生想要提高自己的编程能力,自学是最主要的途径。
编程本身并不难,难在内容太庞杂,无论是市面的课程,还是图书,其中都混杂了太多“无用”的东西。因此,自学编程的成败就在于在有限的时间里,学到真正有用的东西。而关于什么是有用的东西,长期沉浸在一线的开发人员是最有发言权的。
所以,对计算机专业的学生来说,在自学编程技巧之前,首先要有获得一个明确的学习纲要,从而把有限的时间用在最关键的事情上。
如果是学习Java,可以参考我的一些回答:
如何快速打好Java基础?https://www.zhihu.com/question/50904128/answer/521519858
目前 Java 后端有哪些不是很有必要去学的?https://www.zhihu.com/question/305924723/answer/557800752
学习 Java ,知识点太多记不住怎么办?https://www.zhihu.com/question/270722275/answer/1488832343
1.基础知识学习
2.学习笔记 & Demo
3.实践
“虚拟”项目有两种,一种是自己想出来的,例如“学生管理系统”、“图书管理系统”等各种管理系统。这种项目的特点是规整全面,范围可控,缺点是需求和设计都是自己想出来的,不那么实际。
另一种是参照市面上已有的应用,“照葫芦画瓢”模仿一个。这种项目的优点是非常接地气,缺点是一个真正的商业项目,往往非常复杂,因此非常考研学生的时间和心性。
但无论如何,以我的经验,上面的做法确实可以解决编程实践的问题。
其实,上面的三点,不仅是对一个学生有用,作为一名职业程序员,一个需要终身学习的职业,上面的三点一直陪伴我从学生时代直到今天。
最后,我想说的是,编程并不难,也存在明确的学习路径,坚持一定能成功,真所谓:心有所执,必有所成。
https://www.zhihu.com/question/423764018/answer/1518288891
当前随着产业领域对于应用型人才的要求,越来越重视动手实践能力,所以大量普通本科高校正在不断提升实践课程的授课比例,这也是一个大的发展趋势,所以未来普通大学的本科生会有更多的实践课程,计算机相关专业的同学,也会有更多的机会来提升编程能力。
对于计算机专业的本科生来说,如果想提升自己的编程能力,可以重点考虑以下几种方式:
第一:积极参加专业比赛。以赛促学是比较好的学习方式,计算机专业的本科生可以重点关注一些程序设计类比赛,包括其他需要编程的专业类比赛,包括大数据比赛、机器人比赛等等,通过参加这些比赛都会促进自身编程能力的提升。
第二:参加老师的课题组。参加老师的课题组也是一个提升编程能力的好方式,而且在课题组当中还有更多机会与研究生学长交流学习,从而提升自身的编程实践能力。当前不少大学的计算机专业都会设立很多专业的实验室,这些实验室往往也有很多大型互联网(科技)公司的支持,参加这些实验室也是不错的选择。
第三:制定自主学习计划。提升编程能力除了可以参加专业比赛和课题组之外,还可以通过自主学习来提升,比如可以借助于互联网参与到一些科研实践活动中,或者是参与到一些开源项目中。
https://www.zhihu.com/question/423764018/answer/1518198537
而给你的工资高低,取决于稀缺程度,即这个岗位是否能招到足够的人,以及公司对其的需求程度。
这两年什么最热,毫不犹豫地说就是人工智能,前一段时间基于人工智能的智能客户推送技术,已经上了国家进出口限制目录。
那你有什么理由不选择,不学习这个领域呢。
那好,我建议你从人工智能领域突破,你还可以选择三个热门方向:
相对来说,前面两项较为难学,但是竞争对手少,基于智能推送的人工智能算法目前是大热门,很多公司用得上,但也意味着它们会很快饱和。
所以我还是建议你学习基于图像的深度学习。
如果你还找不到方向,建议你去阿里,或者全球最大的人工智能竞赛网站找几个课题,搜集一些样本。
然后你就可以开车了!
https://www.zhihu.com/question/423764018/answer/1516636587
“编程是门手艺活”。什么意思?得练。代码的世界很纯粹:你行就行,不行就不行。不像其他一些职业,说你行你就行不行也行,说不行就不行行也不行。要想爬的高,整日里就得琢磨怎么“混”,是没有什么效果的。这一行,就不怎么需要看简历,“行家一出手,就知有没有”,三言两语,就把你底子给摸清楚了。
开始学编程,选一个能够迅速给予你“正反馈”的语言,先把环境搭起来,“Hello World”打出来,这就是第一步。这极其简单的第一步,对于很多同学可能都觉得非常难,但是没有办法,你只有一步一个脚印地做出一个小网页小游戏,哪怕你还看不懂代码,都是一个字一个字照着书上敲的都可以,这样才能使实际操作中不知不觉地掌握编程能力。也许你还会在某一天突然发现自己的编程能力原来有了这么大的提升。
作者:青云若水
https://www.zhihu.com/question/423764018/answer/1509150977
当然,计算机科学家只是千里挑一,老老实实当码农赚钱才是我们大部分人的目标。所很多时候怎么学习怎么提升还是看你自己怎么想的,如果是想做出东西的话,一开始的话我建议你多动脑,尝试下能不能对现实世界建个模,比如看到查字典的时候自然就会想到二分搜索,看到红绿灯就想到线程锁啊等等。
接下来读一些产品方面的书,要学会换位思考,尤其要能通过问题想清目标用户,能够把技术和商业结合。接下来就是研究一下现实世界里面哪里有缺陷,就可以自己做一个产品出来了,也许机会合适就可以走上人生巅峰。
不过这条路和去大厂当螺丝钉是有区别的,如果目标是去bat拿高薪的话最好还是做一个典型的学生,就是刷爆acm和算法,然后网上用spring抄一个电商app,不需要idea只需要实现即可。
https://www.zhihu.com/question/423764018/answer/1509410433
想提升实战编程能力,如果你自学能力较强,可以找自己喜欢或与将来就业方向相关的主题,设计一个应用,然后不遗余力实现它;如果自学能力一般,可以找本书,书名例如《xxx软件实战》、《30天实现xxx》,基本上相当于跟着教程走,开发一个完整软件,也会有很大帮助。
建议专业课还是好好学,有些知识现在觉得没实战有趣,将来反而会在找工作时助力,比如算法数据结构,大公司笔试基本都要过这一关。
逢人便推《深入理解计算机系统》,名字有些误导,其实并不“深入”的难哈哈,英文是“Computer Systems: A Programmer's Perspective”,至今觉得它是我码农路上最珍视的书。
https://www.zhihu.com/question/423764018/answer/1519048689
你首先要清楚一点,你提高水平为了什么?考研然后做科研?还是找工作?
现在卷那么严重,说真的,框架api就是弟弟。
定好方向,先学好语法,其实这些东西,花一两个月,看视频或者看书,学学调api培养一下兴趣可以的。
之后呢?这个语言的语法,数据结构,编译过程,看下去,然后相应语言的汇编,去学,x86的,还是AT&T的,深下去,弄懂这个语言,这个编译器,这块内存,其实弄到这里计算机组成,操作系统,还有编译原理,你就可以融汇了。
再去刷算法,不管什么面向对象,面相协议,还是函数式,去用你学会的语言做好,知道套路,学会那些啥动态规划,啥二分法。
然后补上计网,一样,深下去,弄清楚他的过程和原理。
https://www.zhihu.com/question/423764018/answer/1514371340
多动手。
2.看基础教程的时候一般都会有示例代码,不能只限于看,看完后你把书合上,自己在ide里面看看能不能把它敲出来并且运行通过,平常多和人交流沟通。刚开始的时候可能会花一点时间,但时间久了你的编程熟练度会提升许多,再往后你可能就只敲核心的示例代码而不是全部代码了。
3.敲代码过程中难免会涉及到部分经典算法,这时候就要细品了,许多算法都是对经典算法的改造和完善。
4.待完成基础学习后,可以看看网上的开源代码,要看完整的工程代码,学习他们代码中的设计技巧等并且检测一下自己还有哪些方面有所欠缺。
5.自己动手做一个小项目,从0开始最能锻炼人,也很考验人。
https://www.zhihu.com/question/423764018/answer/1513235121
你可以按照“支乎”的菜单和功能,自己做个网页版、app版。
要求考虑页面交互体验设计、数据库、并发、缓存、队列、集群与负载均衡、弹性伸缩、微服务、容错等问题,多给自己安排一些难题。遇到某个问题时,去图书馆查书或上网自行解决。
“研究并解决问题”是自学编程的捷径。实际工作中,客户负责提出模糊的需求、紧张的工期,剩下都要你的team按时、保质保量的解决问题、完成项目。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~