最近学习的一点思考

我发现,我现在所学的东西分三类:

  1. 准备考试时看的,我称之为刷题。其实为了准备考试这是最好的方式,而且真正在做题的时候其实并不枯燥反而觉得挺有成就感(两本习题集,一本看一本做)。可是它的作用也就仅限于准备考试,考完试之后所做的这些工作全都失去了意义。对于我这种毕业后准备直接去工作的人来说,没什么卵用。
  2. 前两天新接触的,我称之为技术。学校并不开设相关的课程,主要是自学,例如Android,html,css,jsp等等,一般都是培训学校开设相关的课程。我最近学了一点网络编程的东西,写了简单的TCP的客户端服务端,UDP的接受发送端。给我的感受是学起来很有趣,能够迅速的变成使用的代码。可是仔细想想不过是调用了几个人家封装好的API,具体的细节怎么实现的并不知道。
  3. 主要是学校开设的专业课的相关领域,主要是各种技术的底层原理,例如算法,操作系统,计算机网络等等。这些东西上课一般听不下去,自己看书效率也很低(至少没有前两者高),一上午可能就学了一两个算法代码还不全是自己写的,而且学起来极其耗费精力。我想这就是某些人所谓的“内功”。

简单谈一下自己的想法:

一开始看一些文章和知乎上介绍怎么成为合格程序员的回答,很多人都瞧不起那些仅仅学技术的人。我现在大概能够体会到为什么了,我想就像我所说的,不过是调用已经实现的API,底层代码不需要自己实现甚至都不需要去了解就能够写出实用的代码。(暂且不去考虑代码的结构和可维护性等等)这种东西找一个智商正常的人稍加培训都可以学会。我想,如果要成为一个合格的程序员,仅仅学习那些技术而不去了解底层的原理是没有什么竞争力的。

可是,我看到的大多是另一个极端,那就是技术没必要现在学,现在就学各种数学(高等数学,线性代数,离散数学,概率论等等)学各种底层(汇编硬件操作系统编译原理)而不屑于去学习那些技术(我想这应该是学术界混的一般的人对工业界混的比自己好的人的一种酸葡萄心态)。我认为,如果你不想献身学术界,那这样的方式是很有问题的。甚至我在知乎上面看有人问“为什么计算机网络学不懂?”有人的回答竟然是“离散数学没学好”,我认为这就有点扯了。这学期我也在学习“计算机网络”这门课,一开始我也不知道老师在说什么,前面还有一篇文章在喷我们老师讲的不够好。后来想了想并不全是老师的问题,底层的东西本身就很抽象,没有具体的应用很难理解。问题来了?什么是具体的应用呢?我认为这就是技术重要性的体现了。一开始我下学习各种协议时也不知道说的是什么东西,后来自己学了点网络编程的东西,对套接字,各种应用层传输层协议有了更深入的了解,再去看书自然就明白的多而且效率高了不少。再举一个例子就是我大二的时候学习操作系统这门课,老师讲线程进程的时候也听得云里雾里的,后来学习了多线程编程后再去看自然容易的多。

所以我认为合理的学习顺序是先去学习技术,这样可以写些实用的代码并且养成良好的代码规范。对这些技术有了一定的了解之后再去学习底层的原理,这样可以达到很不错的效果。像现在学校开设的课程如果仅仅按部就班的学下去,那么结果就是没有一门能够找工作的技术,代码写的少的可怜,最要命的就是所有的专业课考完之后全部还给老师,可能对着门课的记忆就仅限于书前面的目录了吧,这样的课不听也罢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值