编程学习建议
Posted dataxon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程学习建议相关的知识,希望对你有一定的参考价值。
学编程有哪些好处呢?
-
帮助自动化完成一些冗长枯燥的手工劳动;
-
学英语,编程的通用语言是英语,很多编程资料都是英文的;
-
训练逻辑能力,把报错的程序调试到正确的过程也是认知提升的过程;
-
训练产品思维,当你开始思考代码的易用性、健壮性等问题时,你就是在做一个虚拟产品,你也是一个产品经理;
-
当然,这里还能列举更多的好处。
前期准备
确定自己学编程的目标
是为了把自己从冗长枯燥的手工劳动中解放出来?还是毕业论文没数据要去晚上爬取数据?还是编程就是饭碗?
总之,要任务导向,要学以致用,学习编程要能创造有效生产力。
选择适合自己的学习材料
如何找教材?
-
知乎、豆瓣、专业论坛(博客)推荐,e.g. 直接百度 "数据挖掘教材推荐 知乎";
-
请教前辈
如何选教材?
-
跟上时代,教材最好是结合最新版本的软件(以免一些旧操作已经失效),技术发展更新很快,太"古老"的资料不要看(经典除外);
-
结构系统,找一本系统性强的评分高的入门教材入手,先搭建知识框架,后面逐步学习难度和专业性更强的资料,为知识框架“添枝加叶”,博客、论坛碎片化知识不适合入门(更适合查找特定问题的解决方案)
结构化学习
制定适合自己的学习路径
不同的学习者目标不一样,有的是为了数据分析、有的是为了网页开发、有的可能是网络安全等。
把编程要实现的大目标,拆分成一个个的小目标,先做什么,后做什么,难度一点点增加,就像登楼梯一样,技能一步步提高。
e.g. 我想用python 学习数据挖掘,那么可以试试检索“python 数据挖掘 学习路径”或者“python data mining learning path”,搜到的文章可以用来作为决策参考。
编程学习通用框架
以下分享自己总结的通用框架(大部分的教材的基本框架也是如此),通过4个步骤的学习路径来逐步提升。
编程学习通用框架:
1. 环境部署,即如何安装编程需要的软件、工具包、插件,以及配置编程开发环境等;
2. 编程元素,主要有以下3类:
-
变量,分为基本变量(e.g. 数字、字符串、日期等)和复合变量(e.g. 数组、列表、结构体等);
-
语句,逻辑判断(e.g. 大小比较、是否判断、集合归属、或且非等)、循环语句(e.g. for、while)等;
-
函数,即一组处理变量的语句,e.g. 统计函数、日期函数、字符串函数等;
3. 数据操作
-
数据输入、输出操作;
-
数据变形,创建、增加、删除、修改,以及取数、拆分、合并等操作;
-
变量运算,e.g. 统计、排序等;
-
图形展示,e.g. 静态图、动态图、2维图、3维图等;
4. 高级操作
-
数据产品,e.g.自定义函数、工具包、软件等;
-
数据库操作,数据分析,界面设计等;
-
高效率编程,大批量数据处理;
-
多个数据产品交互,e.g. python、spark、Hive协同作业;
多练习多思考
和已有的编程知识联系
不同的编程语言,底层逻辑基本是一致的,基本学习框架也是一致的。
多实操,做点有趣的事情
把习得的技能应用于工作和生活,一方面可以检验学习效果,另一方面实战演练遇到的情况往往比教材复杂,更有利于综合能力提高。
兴趣是最好的老师,可以尝试用编程来做点有意思的事情,e.g. 做一些自动化的小工具,用来提高效率,用爬虫抓取美女图片等等。
在寻求他人帮助前尽量自己先多尝试,工具就在手中,探索得到的知识印象更深刻。
不断迭代改进
第一次写出来的代码总不是最完美的,后面会发现一些bug(漏洞),这些都是开始没有考虑完备的情况,所以要不断修改完善。
完善程序的主要目标有两个:
-
提升健壮性(兼容性),即适应数据的变化;
-
提升运行效率,单位时间内能处理更多的数据;
养成好的编程习惯
学会正确定义问题和提问
具体可以参考 Eric Steven Raymond 的文章《How To Ask Questions The Smart Way》
注: 什么?都是英文?学好英文很重要,技术领域的很多好资料都是英语写的
尽量避免重复造轮子
充分利用网络资源,合理使用他人分享的工具。
个人会常去github上找工具包,或者找cheat sheet(作弊手册),e.g. 搜索一下“python cheat sheet”,python常用知识点的总结就到手了,这些核心知识基本覆盖了80%的应用场景,尤其是初学者,cheat sheet必备啊。
注:关于避免重复造轮子,更多请参考《工具思维的陷阱》。
优雅地写代码
更多可以参考《编程代码规范》这篇文章。
一个好的程序应该具有如下特点:
-
易使用、易读懂、易维护;
-
运算准确、兼容性强、效率可观;
-
注释清晰、命名规范、语句精炼、信息完备(版本、作者、修改记录)等
编程难学吗?
虽然编程有点抽象,但是远没有数学公式来得抽象,借用《为学》里的那句话——“天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣”——如果你想学,那就开始动手咯。
以上是关于编程学习建议的主要内容,如果未能解决你的问题,请参考以下文章