大家好,欢迎来到停止重构的频道。
最近有些朋友问我们如何学习编程、初学软件的问题,我们打算出几期内容聊聊我们的建议。
本期聊一下如何学习编程语言。
我们将压箱底的诀窍介绍给新手朋友,当然这仅仅是我们的一些经验,并不是绝对的好方法。
也欢迎有经验的朋友在评论区分享自己的学习经验,我们按这样的顺序讨论:
1、 怎么才算学懂了一门编程语言
2、 编程语言选择
3、 如何学习编程语言
怎么才算学懂了一门编程语言
是否真的要看完几百上千页的《C++Primer》、《Java编程思想》 又或者做过几个大项目才算学懂了呢?
我们认为不是,正如同我们不认识所有的汉字,也能正常地阅读写作一样。
编程语言的作用是表达我们的编程思想,也就是告诉计算机应该怎么做。
学懂一门编程语言其实门槛不高,能看懂基础语法,看不懂的语法知道怎么搜索,并能使用该语言完成习题性的程序编写就可以了。
更具体的:如果在没看任何参考答案的前提下,做出这样的题,通过程序算出诸如这样的数学综合式,就算是学懂了编程。
对于一些偏门功能、关键字、奇怪知识,如javascript 中0.1+0.2不等于0.3等问题。其实可以不用纠结。
当然,达到这样的程度,往往还是看不懂别人的代码,或者参加工作后看不懂项目代码。
这原因很复杂,可能是缺少软件框架、项目架构、算法、数据结构等等的认知。
但总的来说,仅仅是缺少知识和经验而已,只要保持学习心态,就不会有太大的问题。
编程语言选择
编程语言没有绝对的优劣,但每个编程语言都有擅长的领域。
所以编程语言的选择更多是依据想做什么软件而定的。
如果是嵌入式,那最好是c/c++ ;如果是网站系统的后端服务,可以是Java/node/php等。
当然,不用担心一开始选错了编程语言,因为这真的无所谓。
毕竟学会了一门编程语言且拥有一定编程思想后,再学其他编程语言是非常容易的。
如何学习编程语言
那么,如何学习编程语言呢?如果是完全新手,我们建议是先按照网上视频教学或学校课程学习基础语法,如if/else,函数,类/对象等等。
当然,这些基础课程顶多就是入门,你会有很多似懂非懂的问题,如c的指针、递归、类/对象等。
比如,你可能会听到,类是图纸、对象是建的具体房子… 好像理解了,但是没懂。
实际上,只要你有足够多的编程练习你就会得到一个更加浅显的理解,类只不过是一种自定义的数据类型,对象是属于这种数据类型的变量。
在学会了一些基础语法后,可以买一些经典的书,如《c++ primer》等,系统地深入学习并做做练习。
但比起啃这些几百页的书,我们更推荐这样做,就是重写基础库函数。
这就是我们开篇所说的诀窍,以c语言为例,可以重写printf、itoa、strcmp等库函数。用自己的代码实现这些库函数的功能,当你重写了几十个库函数后,相信很多问题都已解决。
库函数与书中的练习最大的区别是,书中的练习仅仅为了某个知识点设计的,而库函数是为某些实际场景设计的,且不局限于某个知识点。
重写库函数的练习,更具有现实意义。
重写库函数还有一个好处,就是学会按需学习,在这过程中,你会不断发现问题,并按需要寻找和学习一些语法或方法。
这是软件编程一个很重要的能力,毕竟未来的工作中,不可能没有知识盲点和技术难题。
总结
编程语言的学习只是冰山一角,以后会有很多诸如算法、框架、软件工具等等问题,但其实也没什么大不了的,按需要学习就解决, 如果没有现成工具,就设计和做一个出来。
顺便一提,做一个新的编程语言其实也不难,可以买一本书叫《自制编程语言》。