背景
最近在刷题群中见到许多小伙伴苦恼于如何入门编程语言。与他们交谈的过程,也勾起了我最初学习C语言时的回忆。我曾经是一名计算机专业的学生,但是与你们相同的是,在大一之初我也是计算机小白,上大学之前完全没有接触过计算机方面的专业知识,所以对于初学语言时的迷茫和焦虑感可以做到感同身受。接下来,我先介绍一下我当时是如何摸索入门编程语言,然后总结一下学习中的方法论,最后再回答群里小伙伴提出的几个问题。
需要注意的是,今天我所分享的经验是一个纯小白如何入门一门编程语言,分享的是如何入门一门编程语言的能力。
##学习基本语法知识
学习本身是一个漫长的过程,切不可好高骛远,需要循序渐进。无论哪一门编程语言,它所囊括的知识和特性都有很多,都分为基础知识和高级特性。因此,我们的学习也是分阶段进行的,我们在入门的过程中,语言的高级特性可以说对我们没有一点帮助甚至可能会阻碍我们前进。举个例子,C和C++的指针非常难以理解和使用,即使专业的程序员在使用过程中,也非常容易出错,但是,在入门的过程中碰到的问题不使用指针也完全可以解决呀。所以,在入门过程中,我们需要学习的仅仅是最基本的语法知识。
最基本的语法知识包括学会一门语言的输入,输出,条件判断语句,循环控制语句和这门语言的基本类型(不包括结构体,类等复杂类型)与基本运算。学习到这里其实我们就可以做很多的事情了,比如排序,水仙花数,判断是否是素数。可能有的小伙伴看到这里会说,我学会了这些语法知识,但是我还是不会写排序和判断素数呀,那么我们接着来看你所缺少的知识。
学习最基础的逻辑思维能力和代码编写能力
编程是你告诉计算机它该如何去运行的,所以首先你需要知道碰到的问题该如何去解决,然后才是把你的解决办法转化为代码能力,这本身其实是两件事情,最初学习编程的人往往把这两个混为一谈。碰到一个问题,就直接说,我不会写呀,其实你还没有开始思考这个问题应该如何解决。不信,回想一下刚刚看到排序,水仙花数和素数的感受。
那我们以素数为例,题目是判断一个数是否是素数。
首先我们明确思路,要做的事情有以下几个:
输入一个数;
判断这个数是否是素数;
输出这个数是否是素数的信息。
输入和输出都很简单了,就不提了。如何判断呢?回想一下素数的概念,是除了1和自己不能被其他数整除的数。因为比自己大的数自己肯定不能整除,所以我们需要把从2到自己的数都整除一下,看是否能除尽;如果能则不是素数直接输出,2到自己的数中都不能被整除则是素数。
将问题拆解为各个小问题,确定原因
接着就需要把这段伪代码也就是自己的思路转变为代码。在这个过程中,就会碰到许多的问题,比如会问如何输入呀,如何跳出循环呀,如何判断是否能整除呀。那么这个时候就需要去查阅资料,请教他人。
所以总的看下来,如果我们说不会解决某个问题,那么自己一定要思考,我们的思路卡在了哪里。是真的不会解决这个问题,不使用编程都没有一点思路呢?还是说我们不会其中的某一点。这一点就非常关键了。
学习自我Debug能力
在编程中,我们经常会碰到这样的问题,程序的输出不是我们想要的输出,但是我们却不知道问题出在了哪里。这个时候我们需要自己去排查到底是哪个环节,哪一条代码出了问题。一般来说各个ide中都集成了Debug模式用来辅助大家排查问题,但如果不会用也没关系。我们可以将自己代码中每个过程中的关键信息(比如变量的值)打印出来,看看在这个过程中它是否符合预期,从而将问题逐渐缩小,最终定位到某条语句,往往这个时候我们就已经知道问题出在了哪里。
需要一定的小目标来满足自己的成就感。
学习就是一个枯燥的事情,学习编程更是一个枯燥的事情,因此我们需要设定一个小目标来满足自己的成就感。常见的有刷一些题目,逐步的打卡通关,每一次成功的解决问题都会获得巨大的心里满足。等我们真正入门后,我们可以跟着网上的教学demo做一些小应用。
合理利用身边的资源
如果自己的身边有技术很强的小伙伴或者有一起学习的小伙伴,那么碰到问题要多思考,多交流,注意是先思考后交流,只有这样我们才能真正的入门编程语言。
这些就是我最初学习的一些心得,不积跬步无以至千里,祝大家一步一个脚印,踏踏实实的买入编程的大门。
下面解答一下小伙伴们的问题
Q:python可以从事哪些方面的工作?
A:目前来看,主要使用python语言的就是AI,因为主流的AI框架都是基于python实现的,比如pytorch,tensorflow等,AI包括图形图像领域,自然语言处理领域等等。但是,这里提一句,编程语言只是工具,所以AI中的算法思想才是难点。然后,就是Web程序的开发,但是我并不看好这个。目前主流的Web程序开发是基于老牌Java,Php(大部分都转go了)等编程语言实现的。python还可以从事数据处理,爬虫等等岗位。
Q:go在未来是否会越来越火?
A:对于这个问题,我持乐观态度。就目前来看,各个大厂都有转golang开发的趋势,包括bilibili,头条,百度。据说腾讯的微信团队也在使用golang开发。因为,golang本身是编译型语言,运行速度并不会差,开发效率又比C++要高很多很多。所以在大厂中的C++模块和PHP模块都在使用golang重构。而且,微服务和云原生概念的火爆也会让golang占有一席之地。
我是店长莫瑜,来自一线互联网公司的程序员一枚,最近技术交流群,每日打卡群正在招收小伙伴,群里目前有不少小伙伴了,如果你希望和大家多多进行交流学习,或者希望通过打卡leetcode等自律,那么就赶快加入吧~私信或者评论wx号,我拉你。
本人公众号: