很多人开始学习编程的时候,都想速成,但事实就是,除非你是天才否则你还是得脚踏实地一步步慢慢学。回忆了下自己学习编程的过程,整理了一些我认为需要注意的几个方面,分享给大家。可能文章略长,但我真心希望初学编程的你能够认真看完,至少,对刚学编程的人是有一些帮助的。
科班出身和非科班出身最大的区别在于:科班出身的学生知道去学什么,知道每一门课程是干什么的;还有一些必须完成的作业、小项目,促使他们去做一些实际的编码练习,除此之外,真的全靠自学。
对于自学编程,首先应该谈的是如何去避免一些坑,这样就可能节约大把的时间。下面我就以问题的形式来分享一些我认为重要的方面。
1. 我应该选择什么编程语言
这大概是困扰编程新手的一个最大的问题,如果你有一个方向,想做算法、机器学习方向,那么python是最好的选择。如果你想做web开发,java、php等都可以。如果想做一些更底层的工作,那么就可以选c。非科班的没太接触过计算机专业,对他们来说,压根不清楚不同的编程的区别在哪,怎么选择呢?
若你是在校大学生,有大把空余时间,可以尝试先学C,虽然C很难、很复杂,看起来并不适合入门。但它能让你更好地理解计算机系统。学编程学的不止是编程语言,而是学习一个计算机生态,即一个庞大的知识体系。只会编程语言而不理解整个计算机的体系,就像只会写字而写不出好文章。学了一段时间C再学其他的也会容易很多。
若你是一个上班族,没有太多连续空余时间。利用零碎的时间学习一个【更容易见效】的编程语言python就再合适不过了!容易上手,能快速做出一些小应用,不容易觉得枯燥丢失兴趣,适用范围也很广,学python不一定要成为程序员,用来辅助本职工作能极大地提高工作效率!但是真的要入门编程,就得多看看与计算机系统相关的书籍,譬如【深入理解计算机系统】。
2.学习编程,需要学习哪些课程?
我认为我们学习一项技能的时候,应该采取的是项目驱动式学习
即:学习一段时间,做个小项目,将做项目遇到的问题记下来,针对性地学习相关知识,然后再实践,再学一段时间理论,让知识成网状发射状地变大。
当然,项目驱动式学习有一个弊端,就是每次学习的知识都是项目所需要的,很零碎、不成体系,所以需要改良,即在采取项目驱动学习法的时候每天抽一段时间去完整地读一本书,或者一个相关问题的完整介绍,这样就很容易把一些知识成体系地串起来。这样一段时间下来,慢慢的,你就知道我们为什么要学那么多科目,学这些科目能干什么。
3.学习编程是否需要制定计划?
我认为不只是学习编程需要制定计划,其他任何的学习和工作都需要制定计划。把需要学习的内容进行了编号,存入表格,这样才能让你过得有条不紊。当然,很难完全按照计划去执行,不过制定相应的计划能让你清楚地知道自己应该干什么。不会让你一空闲就只想着玩游戏。
4.有什么比较好的编程方法?
我认为在同一时间段不要学习太多类别的课程,比如你可以同时学习python和html/css,但是你不要同时学python、操作系统、编译原理、计算机组成、数据结构、网络,因为记忆知识是符合艾宾浩斯记忆曲线的。所以宁可每天学两门,然后每一门学长一点的时间,比如两小时。要避免贪多,一口吃不成个胖子。
5.需要刷oj么?
我认为刚开始编程的时候还是应该刷的,但要明确刷题的目的:是适应写代码的感觉,在这个过程中你会遇到编译错误,你会慢慢去记住一些语法、关键字,并理解一些概念,还可以自己去使用它,比如实现数据结构。慢慢的你就会变得有经验,知道一些错误产生的原因。
6.应该选择什么资料?
其实这个问题也是很多编程新手容易困惑的问题。
网络上拥有我们一辈子都看不完的教程和资料,但问题就是我们不知道看什么视频、看什么书。所以学习编程的过程中,我们遇到的最大的问题是:当我们遇到问题的时候,在大量资料面前,我们不知道选择什么资料去学习。即使我们使用项目驱动式学习的方法找到了我们的方向,但是同一个路径下,也有很多资料。前文列举的项目驱动式学习的图中,我们是自上而下的去发现问题,然后再解决问题。如果能有人帮我们组织好学习路径,然后自下而上地去学习,那么效率可能会提高很多。
不过不用担心,我已经尽我所能,整理出一套python的学习资料,从web开发、爬虫、数据分析、数据可视化、机器学习、到面试真题都包括在内,分享给大家。
如果想要,可以进群免费领取:688244617