编程学习建议

学编程有哪些好处呢?

  • 帮助自动化完成一些冗长枯燥的手工劳动;
  • 学英语,编程的通用语言是英语,很多编程资料都是英文的;
  • 训练逻辑能力,把报错的程序调试到正确的过程也是认知提升的过程;
  • 训练产品思维,当你开始思考代码的易用性、健壮性等问题时,你就是在做一个虚拟产品,你也是一个产品经理;
  • 当然,这里还能列举更多的好处。

前期准备

确定自己学编程的目标

是为了把自己从冗长枯燥的手工劳动中解放出来?还是毕业论文没数据要去晚上爬取数据?还是编程就是饭碗?

总之,要任务导向,要学以致用,学习编程要能创造有效生产力

选择适合自己的学习材料

如何找教材?

  • 知乎、豆瓣、专业论坛(博客)推荐,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必备啊。

注:关于避免重复造轮子,更多请参考《工具思维的陷阱》

优雅地写代码

更多可以参考《编程代码规范》这篇文章。

一个好的程序应该具有如下特点:

  • 易使用、易读懂、易维护;
  • 运算准确、兼容性强、效率可观;
  • 注释清晰、命名规范、语句精炼、信息完备(版本、作者、修改记录)等

编程难学吗?

虽然编程有点抽象,但是远没有数学公式来得抽象,借用《为学》里的那句话——“天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣”——如果你想学,那就开始动手咯。

原文地址:https://www.cnblogs.com/dataxon/p/12544281.html

时间: 2024-08-30 08:26:48

编程学习建议的相关文章

50条大牛C++编程开发学习建议

每个从事C++开发的朋友相信都能给后来者一些建议,但是真正为此进行大致总结的很少.本文就给出了网上流传的对C++编程开发学习的50条建议,总结的还是相当不错的,编程学习者(不仅限于C++学习者)如果真的理解了这些建议,相信能够在学习时准确的抓住侧重点,少走弯路.下面列出这50条建议: 1.把C++当成一门新的语言学习(和C没啥关系!).2.看<Thinking In C++>,不要看<C++编程思想>.3.看<The C++ Programming Language>和

我给女朋友讲编程总结建议篇,怎么学习html和css

总共写了11篇博客了,7篇讲html的,4篇讲网络的.不敢说写的多么好吧,最起码的是我迈出了写作的第一步,写作的过程中了解了一些其他的知识,比如SEO.几种重定向等,由于个人能力和见识有限,写出来的东西并是不是太好. 像html的那些标签,说出来大家都知道,但是具体设计网页的时候,使用哪种标签是最好的?怎么和CSS搭配最完美?写网页的时候,有没有什么艺术性的指导?对我这个初级的程序员来说,确实太难了,没有见识过大牛的技术,没有经历过高山流水,怎么可能写出绝对的干货. 有个大师说,50岁之前不写东

(转)C++学习建议

原文:http://www.cnblogs.com/xilentz/archive/2010/05/01/1725460.html 博主传达了大量的去其糟粕的思想,所以,我只取了他对如何学习C++的建议,我还标记那些我觉得重要的话,方便以后提醒自己. C++是一门强大的语言,我们没有任何理由不学习他,领略其中的风采. 建议1:有辨别力地阅读(包括那些被广泛称为"经典"的)C++书籍. 如果书中介绍的某块内容你认为在日常编程中基本不会用到(属于20%场景),那么也许最好的做法是非常大概的

网络编程学习小结

几种网络编程方式: ISAPI.CGI.WinInet.Winsock 它们之间的差别: 1)  ISAPI主要是开发基于浏览器client与server端程序.效率比CGI方式高,并且也扩展了CGI没有的一些功能.(基于TCP/IP模型中的应用层) 2)  CGI主要是开发基于浏览器client与server端程序.(基于TCP/IP模型中的应用层) 3)  WinInet主要是开发client程序.(基于TCP/IP模型中的应用层) 4)  Winsock主要是基于socket来开发clie

Java并发编程学习笔记

Java编程思想,并发编程学习笔记. 一.基本的线程机制 1.定义任务:Runnable接口 线程可以驱动任务,因此需要一种描述任务的方式,这可以由Runnable接口来提供.要想定义任务,只需实现Runnable接口并编写run方法,使得该任务可以执行你的命令.   class MyTask implements Runnable {    private String mName;     public MyTask(String name) {    mName = name;   }  

一位资深程序员大牛给予Java初学者的学习建议(转)

一位资深程序员大牛给予Java初学者的学习建议 这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议? 今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍.这一部分的内容, 同样适用于一些希望转行到Java的同学. 在大家看之前,我要先声明两点. 1.由于我本人是Java后端开发出身,因此所推荐的学习内容是Java Web和Java后端开发的路线, 非Java Web和Java后

linux网络编程学习笔记之五 -----并发机制与线程?

进程线程分配方式 简述下常见的进程和线程分配方式:(好吧,我仅仅是举几个样例作为笔记...并发的水太深了,不敢妄谈...) 1.进程线程预分配 简言之,当I/O开销大于计算开销且并发量较大时,为了节省每次都要创建和销毁进程和线程的开销.能够在请求到达前预先进行分配. 2.进程线程延迟分配 预分配节省了处理时的负担,但操作系统管理这些进程线程也会带来一定的开销.由此,有个折中的方法是,当某个处理须要花费较长时间的时候,我们创建一个并发的进程或线程来处理该请求.实现也非常easy,在主线程中定时,定

Linux C编程学习2---GCC编译器

GCC简介 GCC(GNU Compiler Collection)是一套功能强大.性能优越的编程语言编译器,它是GNU计划的代表作品之一.GCC以GPL和LGPL许可证发行,它是类Unix和苹果电脑 Mac OS X操作系统的标准编译器 除了支持C,还支持C++.Java GCC常用选项 1. 基本选项 类型 说明 -E 预处理后即停止,不进行编译.汇编及连接 -S 编译后即停止,不进行汇编及连接 -c 编译或汇编源文件,但是不进行连接 -o file 指定输出文件为 file 例子: gcc

编程学习指南

我个人十分喜欢的编程学习指南,也将作为自己的编程学习和技能提升的重要参考. 本文作者是@萧井陌,基于个人收藏的缘故,在格式上略有改动. 前言 如今编程成为了一个越来越重要的技能:作为设计师,懂一些编程可能会帮你更好地理解自己工作内容:作为创业者,技术创始人的身份则会让你的很多工作显得更容易.而作为刚想入门的新手,面对眼前海量的信息,或许根本不知道从哪里开始:入门轻松度过初级材料的学习后,发现学习越来越困难,陡峭的学习曲线又让你望而却步:你知道如何在页面上打印输出一些文本行,但是你不知道何时该进行