跟对人,选对书!我是码农阿勇,一个致力于分享编程知识的平台!
先要了解编程是要干什么。编程,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
对于计算机来说,一切不过都是数字。那我们编写代码的目的其实就是告诉计算机两件事,一是有哪些数,二是该怎么算!因此程序的组成也就是两个部分:数和数的组织方式,即数据结构,和运算的逻辑,即算法。而所有的编程语言就是要把这两个部分的内容表达好。
一个完整的编程语言,一般会包含如下内容:数据的声明与类型、运算符与关键词、3大语句(赋值、选择、循环)、数据结构、方法、类等。其中数据的声明与类型、数据结构是用于表达数和数的组织方式;剩余的除了类以外则是表达运算的逻辑;而类是最特殊的,它既包含数据结构又包含运算逻辑。
有了以上对编程语言的整体了解了以后,就是逐个理解掌握相关的知识点。而这些知识点往往是一个拉一个,理解了一个后面那个也就好理解:
一切根源是数。数要分类型->类型,数要存储->变量、常量,数之间有关系->数据结构,数要计算->运算符,数要按照规则计算->3大语句,计算规则要整理出来重复使用->方法,数与方法关系紧密要在一起->类、封装,类与类之间有相似性->继承,继承的各子类有差异->多态,封装、继承、多态搞到一起->面向对象编程……
我们要把握这些语言知识点之间的这种脉络,知道他们因何而来,又会往哪里去发展,最重要的是知道它们的出现是为了解决什么问题。
在掌握语言的基础上,还要学习如何运用计算机的资源。计算机资源是由各种平台进行封装,以SDK的形式提供的。编程语言是一种表达的能力,而JDK、Android SDK等SDK则是资源的使用,也就是表达的内容。我们要分清语言与资源的区别,才能最终运用自如。学习其实就是一个学会分类的过程,知道哪是哪,知道分门别类,找起来才不会找错。
在学习编程时往往会遇到一个难题:计算机专业相关的知识点非常多,看起来又高深莫测的样子。要能够掌握而且快速掌握大量的编程知识,我们要有一个干净利落的切入角度。
我们首先要弄清楚一个问题:什么是知识?知识就是解决问题办法的总结。我们接触到的所有知识都是为了解决某个问题才出现的,你知道了那个问题,明白了别人解决问题的思路,这个解决办法也就掌握了。很多同学陷入知识的海洋弄得云里雾里辨不清方向,就是因为不知道这些个知识是干嘛用的,不知道它们是为解决什么问题而出现的。而计算机技术里的很多知识更是这样,为了解决问题而出现,出现就是一大串。你不知道它要解决什么问题,就等着被绕晕吧。所以我们先要把编程中遇到的问题找出来,再理解这个问题是怎么解决的,而这个解决的办法就是所谓的“知识点”。因此要经常发出“灵魂三问”
这种学习的方法叫做“面向问题的学习方法”。用这种学习方法,在学习中接触到新知识的时候,马上意识到这是某种问题的解决办法,并且从问题切入,相信很快就能把新知识理解并加以运用。
最后,也最根本的一条,编程的学习是拿来用的,也只有会用才能真正掌握语言,理解编程相关知识。想学编程的话,可以来看看我发布的零基础学编程课程,学起来既简单又很好玩喔。
我建议你可以选择一门简单的容易入门的语言python。头条上一搜一大把入门视频。可以帮你快速找到编程的乐趣和感觉。最重要的是建立你的自信心。
有了兴趣和自信以后,如果还想深入和提高。就可以尝试学习数据结构和算法。头条里也有很多视频教程。这样可以帮你步入专业。
之后你可以尝试学习Java或者go。多学一门语言可以让你有不同的体验和认识。
之后你可以尝试学习架构知识,阅读DDIA。我正在分享阅读这本书,挑战的是英文版。你可以到我的主页里看看。
传统的教室培训有许多好处,但它不适合持续学习的模式或当今IT人员繁忙的日程安排教室学习有时需要提前几个月安排,具体取决于课程可用性和员工的工作重点而且,固定时间的小组培训课程也不太可能是最适合你学习速度的理想之选课程的许多部分甚至可能与你在企业中的特定职业角色无关随着业务和IT需求的快速变化,你是否能够确保在教室培训结束后马上就能用到课堂上学到的知识?你是否需要在不久的将来刷新一些知识,例如在实施和升级之前或是在解决新出现的业务问题时?一次性教室学习的局限性使其非常不适合今天的许多IT专业人士数字化培训正在迅速普及,因为它非常适合时间紧迫的IT人员,能够满足其持续学习的需求它可以让您只在您需要的时候学习您需要的东西,无需参加整个课程或花时间前往异地按照您自己的节奏,根据需要随时暂停和重复分段按照您自己的时间表,根据您的工作日历将培训分成几天或几周数字化学习的越来越显著的优势在于其地点上的灵活性你可以在自己的书桌前、员工培训室或家庭办公室中舒适地学习也许你经常外出,往返于业务地点或客户项目现场?或者在日常通勤中学习?无论在哪里学习,自考总是不建议的,谁试谁哭
编程的话,是一种技能,理论上,和其它技能学习的方式都差不多,以练习为主,但注意的是,编程有个编程思维的东西,你得用这个思维去理解,否则,是入不了门的。
练习编程思维
这种感觉,就像是武侠小说里面的任督二脉,编程思维会了之后,你就开始真正入门了,它就像你的地基,至于其它语言,都是在上面建房子而以。我记得大一刚入门编程时,全班半期考就一个人及格,就是因为编程思维,大家大脑转不过弯。对了,如果你数学基础好,这里是有加分的,如果基础不好也没关系,慢慢的,一边编程,一边也会提高你的数学能力。
现在网络比较发达,资料很多,你可以找几篇编程思维的文章看下,语言不限。
选择一门语言
我是二十年前上的大学,所以当初的入门语言是C语言,如果你不是科班出身,我觉得就不要选C了,科班会教很多语言,我数了下,当年学了有不下七、八种语言,其实用的不多,有些也淘汰了。你可以选择当下最热的语言进行,个人建议Python,学习Python的话,即使你不是做编程工作,它也可以成为你的助手。
当然,如果你对Web开发比较感兴趣,你也可以学习JavaScript。
学习的话,可以看书和上网查资料,但对于新手来说,直接看视频是比较好的,基础视频基本是不用钱的,可以上慕课网,搜索些基础视频,一边看视频一边写代码,记住,编程是个工程活,一定要写代码,不写的话,看完就忘。
开始一个项目
语言学会后,不代表你会编程,你可能会写几行代码,或者一些小工具,但要做项目,是需要掌握一个语言生态体系的,而生态体系,又需要找一个方向。
我这边举个Web方向的例子,你想做Web前端开发,你得知道
- 什么是HTML、CSS、JavaScript
- 什么是ES6、7等
- 什么是NPM、Node.js
- 什么是模块化、什么是组件化、什么是函数式编程
- 什么是React、什么是Vue等等
当然,这些可以是你做完项目后知道的,也可以是你买本成体系的专业书籍知道的,是的,开始项目后,才开始你的成长之路,这时候,你得开始读书了。如果你不喜欢读书,那真的不适合编程了,编程真正上体现了什么叫做终身学习。
如果你没有比较好的项目,我建议,你如果学习JavsScript的Web方向编程,建议你做个Web版本的ToDO试下,一个比较简单,但是可以涉及很多方面的项目,网上也有很多例子,你可以一边做一边学习。
如果是Python,我建议你先做爬虫类的项目,自己做个电影站之类的工具,爬取一些数据,试验下。
不断的坚持
最后就是不断的坚持了,你会碰到很多问题,这些问题,你一定得去Google和StackOverflow,然后经常翻一翻Github上别人的一些代码,基本上就开始成长之路。