引言
编程,是一门实践科学,意味着你学习编程的最好方式就是上手敲代码,但这意味着我们能因此轻视理论的学习吗?
入门编程
上各大交流社区,提问该如何入门编程,五花八门的答案蜂拥而来。
但是总结一下,莫不就是一下几种:
学院派:
推荐入门学习C语言,辅之修以数据结构、操作系统等科班课程,唯有这样才能得到编程的真谛。
自由派:
推荐入门学习python,认为人生苦短,唯有python才是真正地解放双手。
现实派:
推荐入门直接JAVA,毕竟JAVA常年盘踞TIOBE排行榜之首,是一个很火的就业语言。
那么,身为编程小白,该如何选择?
在这里我们探讨下各个派系。
学院派:
首先,操作系统、数据结构等课程都是需要C语言的基础,所以这也就是很多学校把C语言排在第一个学期的原因。
学习C语言,是为了更好地理解计算机内部原理,我认为,现在的计算机科学这个专业分类其实还不够明确,
应该分为计算机理论科学与计算机应用科学,一个研究计算的内部工作原理,一个则是去研究计算机能干什么事。
所以,如果你对计算机本身有兴趣,就从C语言入手吧。
自由派:
python作为一门胶水语言,它很适合用来解决一些小问题,就像经常在各大资讯平台上会刷到《10行代码实现一个微信机器人》
、《看我如何用python黑舍友U盘》等等文章,瞧,python最擅长做的是这些。
python是你提升工作效率的一个不错选择。
如果你将来并不打算这个行业,python会是你最好的选择。
现实派:
可以说,是互联网成就了JAVA,现在JAVA应用最多的,就是在企业应用方向,为什么这个派别叫现实派,因为学了JAVA可以很容易找到工作啊!
但是这是因为这样,很多外行看着这行业的高薪资,不顾一切转行JAVA,于是这时,培训机构应运而生了。
这些培训机构向市场输出了大量的初级JAVA程序员,那导致的后果是什么?
初级人才供过于需,高级人才供不应求。
但即使是这样,如果是身为在校生的你,把JAVA作为你的就业选择,你仍有优势,你的优势就是学校教授的那些计算机基础知识,掌握好这些,
你就能在百万大军中稳步向前。
如果你想依靠以编程为生,就学JAVA吧。
当然这里的C、python、java只是各个领域编程语言的代表,主流编程语言可不止这些。
实践OR理论?
正如之前所说,编程是一门实践科学,这意味着你需要上手敲代码才能获得最好的学习效果。
但,在学习的过程中,请记住:千万不能舍本逐末。
在这里谈谈我,我的第一语言是JAVA,跟很多新手一样,都是从SE学到jsp、servlet再到三大框架,以及最近两年流行起来的spring boot到spring cloud微服务、
随着一个个项目的完成,我产生了一种自己很厉害的错觉,殊不知,我所取得的这些成就,只是建立在别人造好的轮子之上,往下深挖,我的理论基础几乎为0.
拿spring举例,其核心内容就是AOP以及IOC,那么它们是怎么实现的?学习java的你,肯定会知道,反射嘛。
反射是怎么实现的?基于JVM?
那JVM又是怎么一回事?
JVM的具体实现又和操作系统有何联系?
随着这样的一层层深入,我发现所谓自己先前建立起来所谓的知识体现,实在是少的可怜。
当然如果你说,我只要会用就行了,原理什么的不重要。知其然而不知其所以然,编程这条路注定走不远。
这说明:理论与实践二者之间相辅相成,互不可割。
软件开发与编程
乍一看,这两个词说的好像都是一回事,就是写软件敲代码嘛?
这只是外行的片面理解。
伴随着计算机的诞生,就已有为计算机开发程序的人了,那个时候,程序还是一种硬件,
并且是只有天才个人才能玩的东西,这也就导致那个时候很多的软件项目都失败了。
上世纪的软件危机,让人们意识到只有工程化,才能取得更好的效益。
于是软件工程诞生了。
70~80年代,流行着这样一个东西:程序=算法+数据结构,这足以说明两者是程序设计的核心内容。
但到了90年代以后,工程化思维对软件开发的重要性超过了两者。
但,为什么各种企业招人都是喜欢考各种算法和数据结构?而不考工程化思维?
这被称为白板测试,工程化的思维无法在面试内的短时间内考察出来,这就跟很多企业喜欢985 211的学生一样,
只是为了快速地筛选人才罢了。
当然,以上只是我的一些个人看法,如有错误,恳请指出,反正我也不会改的。
共同学习,写下你的评论
评论加载中...
作者其他优质文章