一只编程菜鸟对编程的思考

2018/10/31

一只编程菜鸟对编程的思考

引言

编程,是一门实践科学,意味着你学习编程的最好方式就是上手敲代码,但这意味着我们能因此轻视理论的学习吗?

入门编程

上各大交流社区,提问该如何入门编程,五花八门的答案蜂拥而来。

但是总结一下,莫不就是一下几种:

    学院派:

        推荐入门学习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的学生一样,

只是为了快速地筛选人才罢了。


当然,以上只是我的一些个人看法,如有错误,恳请指出。


Post Directory