读者问:吴师兄好,我是刚上大一的计算机专业的学生,想请教下计算机专业的学生怎样练习编程才能把编程学精通

以下是我的回答:


程序员的简历,大多会有一个部分,叫“专业技能”(计算机专业的学生吃饭的家伙),其中一二三四列出来自己的技术所长,这就涉及一些用词,如常见的“精通”、“掌握”、“熟悉”、“了解”等等。

事实上,精通、掌握、熟悉其实都是很主观的词,每个人的理解都不一样。

你可能觉得会写个 Hello World 就是精通 c++,面试官需要你深入研究过编译器。

你可能觉得研究过某第三方框架源码就是精通 Spring Boot,面试官需要你自己造轮子。

这种理解的误差往往会导致一场不友好的面试。

初出茅庐的程序员写简历时恨不得把所有技能点都写上精通,面试是面试官逮着你写精通的知识点一顿猛问深挖,多经历几次之后很多人都默默的把精通改成了掌握:(

之所以先聊这些,是不想要计算机专业的学生觉得看过几本书、写过几个 Demo,就觉得编程不过如此。

好了,回到这个问题,计算机专业的学生怎样练习编程才能把编程学精通啊?

这里先说结论:无它,学习、学习、再学习,动手、动手、再动手。

要学习很多知识点,要动手敲很多代码。

先看看学习的知识点,一般来说,计算机专业的学生都应该接触过以下几门课程。

1、计算机组成原理

2、计算机操作系统

3、计算机编译原理

4、数据结构与算法

5、计算机网络

一、计算机组成原理

计算机组成原理这门课很好地向我们阐述了计算机是如何工作的,妹子咨询你电脑问题的时候,答案就藏在这门课程里面(大雾)。

推荐书籍:《深入理解计算机系统》

这本书是从程序员的角度来看待整个计算机系统的,所以是非常适合程序员的。但是这本书不仅仅包含了计算机硬件的相关知识,同时还包含了包括操作系统、计算机网络等相关知识。

二、计算机操作系统

无论你学习什么编程语言,和都避免不了和操作系统打交道,比如你学习 Java,用到多线程技术,实际上操作系统才是负责管理进程和线程的;比如你学习到内存分配的知识,c++里可以直接分配一段内存,此时实际上是调用操作系统提供的API进行内存分配。

如果不懂操作系统,你在未来学习编程语言的高级特效,涉及到线程进程调度,内存分配,或者是学习Linux相关的知识时,都会一头雾水,所以,只有学会了操作系统,我么才能够更好地学习其他语言和技术。

基于此,计算机操作系统的知识点频繁出现在笔试环节。

三、计算机编译原理

首先正式一个问题:编译原理并非随随便便就能入门的

换言之,需要准备一些基础知识在学习。

编译原理的学习和实践通常基于对计算机编译过程、计算机基本工作原理、甚至一定的数学知识有一定积累,这些知识分别分布并应用在了编译原理的不同阶段。没有这些基本知识的积累,很快就会在某个阶段由于功底不够而无法再继续后面的学习。

所以,先认认真真的积累上述的一和二在入门学习吧。

四、数据结构与算法

相信无论是已经毕业的同学还是正在学校学习的同学,都或多或少地被数据结构与算法这门课给折磨过。数据结构与算法这门课开篇就讲了一个非常重要的概念:程序 = 数据结构 + 算法,对于初学者可能还不能完全地理解这句话,不过对于已经工作两三年的同学相信对这句话是深信不疑的。

对于数据结构与算法的学习,我个人认为应该分层三个步骤:首先先大致了解什么是算法,可以通过一些科普读物来入门,这个过程我称之为入门阶段;接着可以尝试实现一些比较容易的数据结构和算法,这样可以更加深对数据结构和算法的了解,这个过程我称之为实践阶段;最后去了解数据结构与算法背后的相关数学原理等,这个过程我称之为原理阶段。

不管你认为数据结构与算法重要与否,你都必须有所了解,因为在面试环节肯定会问的!

五、计算机网络

计算机网络的相关知识在工作时使用的频率还是挺多的,毕竟,所谓的CURD工程师总是在处理 API 相关的业务。


看到这里,即使你是一名非计算机专业的学生,也知道当一名合格的程序员要学习的东西真多,并且,事实也是真的多,哪怕一名已经工作了好几的程序员也需要不断持续的学习,不管是主动还是被迫。

这些学习的知识点不仅需要你记笔记,还需要你自己动手研究思考。

  1. 为什么 HTTP 是三次握手四次挥手,加一次少一次行不行?

  2. 为什么很多缓存算法都是使用 LRU,而 FIFO、LFU 适合什么情形?

  3. 。。。

这还不够!

在 GitHub 上找优秀的源码研究学习,研究为什么是这样设计的;找找开源的项目,亲自动手敲一遍或者多敲几遍,思考项目是如何优化到现在这个样子的。

然后补充一些视频资料,自学计算机的小伙伴可以在 Mooc 上看免费的课程,推荐以下几门课程。

1、国防科大的《大学计算机基础CAP》,这门课是为非理工科专业的学生准备的一些计算机的基础知识。

https://www.icourse163.org/course/NUDT-1001614002

2、电子科大的《离散数学》

https://www.icourse163.org/course/UESTC-1002268006

3、浙大的《程序设计入门——C语言》

https://www.icourse163.org/course/0809ZJU007A-199001

4、浙大的《数据结构》

https://www.icourse163.org/course/ZJU-93001

5、华中科大的《计算机组成原理》

https://www.icourse163.org/course/HUST-1003159001

6、哈工大的《操作系统》

https://www.icourse163.org/course/HIT-1002531008

7、哈工大的《计算机网络》

https://www.icourse163.org/course/HIT-154005

最后,来一句我很认同的鸡汤话:加油吧,计算机专业的学生,当程序员,依然是寒门子弟晋级中产的一条不错的路径。

我是程序员吴师兄 ,希望和你一起成为一名厉害的程序员。

计算机专业的学生怎样练习编程才能把编程学精通?相关推荐

  1. 知乎热榜:计算机专业的学生要怎样做才能避免成为低级的码农?

    点击上方"五分钟学算法",选择"星标"公众号 重磅干货,第一时间送达 原文来自知乎问题:计算机科学与技术专业的学生要怎样做才能避免成为低级的码农?虽然是搬运的文 ...

  2. 计算机专业的学生应该怎样提高自己的编程能力?

    本人国内某重点大学渣渣专业大一在读,专业对编程要求较高. 大一刚学编程(C/C++),感觉有点吃力,求指点.我们平时练习都是做的OJ(老师负责选一些题让我们做,也可以自己随便刷),一些题还好,可是有些 ...

  3. 计算机专业的学生怎样练习编程才能把编程学精通啊?

    课程 TLDR:编程就是靠练,无他 如果用一个10的尺度来衡量的话,编程最难的在于0-1的突破,入门之后,从1-5就会比较顺畅,然后需要花一些功夫才能从5-8.从8-10的话,估计少说需要三五年,还是 ...

  4. 你们计算机专业的学生应该看看这篇文章

    你们计算机专业的学生应该看看这篇文章 现在计算机专业学生怎么这样 - 谈计算机毕业生的浮夸 来源: 站长信息网 评论 11 条 字体:[大 中 小] 收藏 投稿 前几天和一位做人力资源的朋友在饭店里面 ...

  5. 看看一位清华计算机专业的学生怎么看LINUX与WINDOWS的!

    http://linux.chinaunix.net/techdoc/install/2009/12/27/1151271.shtml 看看一位清华计算机专业的学生怎么看LINUX与WINDOWS的! ...

  6. 写给计算机专业的学生!!!

    首先说一说进入计算机专业的目的,我个人是因为十分喜欢IT业,很喜欢折腾电脑,所以在填报志愿是毫不犹豫的在报了的所有的学校都填写的计算机专业,梦想着进入计算机专业后能遇见很多高手,能交到几个知己,谁之进 ...

  7. 计算机学院的学生该怎样提高自己的编程能力?

    链接:https://www.zhihu.com/question/423764018 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 感觉国内的大学计算机专业本科教授的都是基础概念类的知识,实 ...

  8. 看看一位清华计算机专业的学生怎么看LINUX与WINDOWS的! (转载)

    看看一位清华计算机专业的学生怎么看LINUX与WINDOWS的! (转载) 本文是一位清华退学学生所写!他的名字叫王垠,人很出名,不信GOOGLE一下就知道! 我已经半年没有使用 Windows 的方 ...

  9. 计算机申报专业怎么写,给申请计算机专业的学生的建议

    随着计算机的普及以及在不同领域的广泛使用,高科技尖端人才会大受追捧.美国的计算机专业,可以让你学习到最先进的高科技技能.能够让你根据个人的喜好选择偏理论或应用的课程作为学习的重点.当然,美国的计算机专 ...

  10. 作为一个计算机专业的学生,除了教材,这些书籍你读过多少?

    随着越来越多的人开始接触编程.学习编程,各种各样的编程书籍也开始大卖,不少同学反映很多的书籍对学习的帮助不大,那么哪些书籍对于学习编程的人来说是比较好的呢? 国外知名网站stackoverflow上曾 ...

最新文章

  1. TOJ--3456--数学题
  2. TensorFlow机器学习实战指南之第一章
  3. x265发起者陈敏:别人看我是专注,其实我只是感兴趣而已
  4. jquery 获取鼠标和元素的坐标点
  5. mysql 时间段在不在另外的时间段中_你知道自来水一天中哪个时间段最脏、最具毒性吗?记住这几点避开致命自来水...
  6. 华为云PB级数据库GaussDB(for Redis)揭秘第六期:Feed流场景中的应用
  7. cleanmymac 4.2_市委刚刚批准:11月1号立即执行! 农业银行存款利率4.2%,1万元存1年,有多少利息?...
  8. 是谁开发出手机曲面屏这种“反人类设计”?
  9. 【PL/SQL】学习笔记 (10)例外之 too_many_rows
  10. 我写的背包整理插件JPack,比大脚的背包整理效果好
  11. 基于auto.js的安卓抢购软件---可实现毫秒级
  12. Buct oj 1016
  13. 游戏运营技术之----运用箱线图分析PCU和DAU(一)
  14. PlSQL和OracleClient
  15. c语言debug执行错误,C语言调试出错 0xC0000005: Access Violation.
  16. 位置度最大实体计算方式
  17. DPDK flow_classify 源码阅读
  18. 零基础如何去入门学习UI设计?学习步骤是什么?
  19. c#下BLE蓝牙通信
  20. anybackup mysql_AnyBackup-Linux MySQL 云容灾失败,执行输出提示错误:Master 端未开启 MySQL BinLog,请开启 BinLog 后重新发起任务...

热门文章

  1. php ip 访问频繁,php刷新过于频繁自动加ip黑名单
  2. 用友U8来料检验单参照不到报检单
  3. Apache Ant安装与配置
  4. VC++2010学习版安装包下载,需要的百度网盘自取
  5. 《安富莱嵌入式周报》第231期:2021.09.20--2021.09.26
  6. inteli211网卡linux驱动,Windows Server 2019安装Intel I211网卡驱动
  7. 高数习题第七章总练习题(下)
  8. Android Studio查看MD5与SHA1
  9. Word插入高分辨率图片无法显示
  10. 日语输入法 android8.0,百度日文输入法