如何学习编程 我的编程学习之路
学习编程语言的语法
第一次接触到编程的感觉似乎是一种过电的畅爽感。对于编程有种美好的畅想感,似乎是打开了新的世界。但是却并不知道学习些什么。如果此时幸运的话能够找到一本学习编程语言基本语法的书籍,开始第一次的“hello world”之旅。但其中安装开发环境也是一大坑。
而后要是编程书籍选的不好便会陷入迷茫的状态,四处寻找着自己的方向,只学习了编程语法却并不知道如何运用。我在这个阶段耽搁了很久,每天看视频炫技似的开发各种功能,可是看完并没有太多的体会。编程的方法和过程一点也没有学到。
开始自己做一些小项目。说实话这走出舒适区的第一步就举步维艰。本来想自己独立开发一个五子棋小游戏,当时学习的是C语言,但是在开始就卡壳。于是转而开始找了一个教程,照抄了他的代码。做完以后稍微有点感觉了,自己又加了记录步数,悔棋,美化界面等边角料的与主功能不怎么相关的功能。当然这是一个命令行版本的。在最开始的几天兴奋过后,又觉得稍感无聊了。
学习编程的具体过程
五子棋游戏只有一个命令行窗口输入坐标,总感觉这样的程序不够酷。此时知乎开始兴起,逛了知乎之后,只感觉思路开阔不少。后来么,被洗脑开始学习python。用过c以后只感觉python是真的好,特别是比C语言的数列好用太多了。C语言开始时候并没有太多的数据结构的知识。只能用数列和结构体什么的对新手真是太不友好了,当时看链表根本搞不懂。于是搞懂了python用法,我又开始寻找可以开发的小程序了。
当时在知乎上搜索这个问题,找到一个看起来很酷的东西--一个老师写的自动填写网页上学生成绩的应用。开始接触到爬虫的概念,一直翻网页,查找到,浏览器的客户端与服务器交互的过程,以及requests库的用法。那么开始,以前喜欢看网络小说,并且没有什么好用的软件看小说。于是想把全部章节内容爬取下来做成一个txt文档。发现不行,又看了美味的汤这个分析网页。然后发现lxml库有问题,自己安装了这个库。不得不说自己解决问题对于编程还是挺重要的。
编写这个小说爬虫花费了很多时间,包括查看网页信息,分析网页。等等细节的问题。但基本思路还是很简单的,一路顺着来,首先爬搜索,然后找出第一本搜索到的书,然后爬目录,把每个章节的链接存一个列表。然后顺着章节爬。发现爬取太慢,然后去学习多线程,初学多线程不咋会用,直接拆分章节的列表,每个线程爬一部分。效率高多了。幸运的是网站并没有反爬虫的机制,不然也许要用ip代理的话也许这个项目在当时根本完不成吧。当然后来发现爬虫用不了,也许是被发现了吧。应该对爬虫的频率限制下的。
后面也是不断的学习各种杂七杂八的东西的过程,想要编写界面程序然后搜索到wxpython,后面看到知乎有人用pyQt写的精美的软解界面,又跑去学习了一下,不过虽然学会用了,但精美的界面还是没有做出来。
读取Excel汇总信息,爬取动漫壁纸,做了几个这样的小程序后感觉到对于编程技能有所了解,但是每次编程都以相同的结构,总感觉那里还有需要改进的地方
学习的迷茫和倦怠期
打开pycharm,开了很多坑,但每次编程的感觉都像是重复已经玩过一遍的游戏关卡,没有太多的激情了,四处寻找资料,说是要学习面对对象,数据结构与算法,设计模式,网络,系统等等庞杂而又巨大的知识
翻开设计模式与算法的书,读了几章节就难以继续了,并不知道有什么用。四处寻找知识。
此时正好萧大(萧井陌)在b站直播编程,跟着学习了一下,用python和pygame重写了萧大的fly bird 。感觉对于面对对象又有了一些新的理解。于是翻出以前的粗糙勉强可用的程序又修改与重构了一番。接下来又去看了下链表,二叉树,平衡的二叉树什么的,但实际上并没有用到。
接下来依然是长时间的不知道学习什么,应该做什么,怎么做。很长时间没有打代码了。直到看到这样一本书《像程序员一样的思考》基本讲的是如何把实际问题转换成编程可以实现的代码,以及编程语言各个组件的作用,类与接口的良好设计。这时候才明白,应该怎样的去学习。
此时再次看到萧大的编程指南才明白为什么这样安排学习的路径。
此时明白了需要学习的东西。一方面是把具体问题转化为代码的能力,另一方面是学习能够构建程序积木的零件。最后要把程度搭建好还要学习建筑结构的知识,这样程序的积木才能构建的稳固而美观。
学习的下一步
此时想做一个具体的看得见的同时还有些炫酷的东西。我选择了学习flask来搭建自己的blog。
初期要学习的知识很多不免有些气馁css html以及js。跟着狗书走了一遍,不得不说从单文件到拆分程序结构那里跨度是在太大了 ,跟着代码敲了许多遍才基本了解了作者这样组织代码的想法。后来很长时间没有时间写blog,因此部署在阿里云之后便没有在进行界面的美化了。
看了几本书,总感觉效果还是不如想象的大。根据学习转化的金字塔来看,只是read的效果只有20%。而教授他人却可以使效果大大提升。因此未来几天打算重写blog网站。同时把每天所学习的内容思考后写入博客记录下来。一方面也许会帮助他人,另一方面更好的促进自己学习吧。
人的惰性总是那样子,一闲下来就什么也不想做,因此写博客也是一种督促方式吧。还要赶紧把我的blog后端代码打出来~~