Teaching yourself programming -一个编程爱好者的碎碎念
多数时候,个人活动的展开都源于某个具体的动机。或许你是为了可以写点小工具,解决日常生活中的一些重复劳动;或许,你心怀梦想,梦想着某一天完成一款你心目中完美的游戏;又或许是,你内心憧憬电影里的hack,觉得动动手指就完成那些神乎其技的事很cool。然而你需要知道的是,程序的世界是一个复杂的世界。它构建在计算机的基础之上,往上又衍生出众多不同的领域,而每一个领域都有自己独特的知识体系。所以,在你开始学习编程之前,请清楚的认识自己学习编程的动机。它能让你确定自己学习的方向,使你尽可能少的误入歧途。
在你开始学习之前,事先了解你将要涉及的领域是十分必要的。你可以通过某些渠道,如:google、百度、论坛、专业社区等等,来获取相关信息;也可以咨询熟悉那个领域的人,从他们那里获得针对性的建议,以便于你能事先制定一个计划。在这个计划里,包括了你可能要学习的知识,以及不同的阶段的可能的目标。
如果说,你想成为一名专业的程序员,并以此为生。那么你需要知道的是,扎实的计算机科学基础知识作为你职业发展的根基,非常重要。你可能需要知道计算机是如何运行起来的;操作系统是如何管理底层硬件,如何在用户和底层硬件之间发挥一个桥梁的作用;你还需要一些网络的知识,毕竟这是一个网络的时代,如果没有网络,计算机也不过是一个大一号的存储设备和音视频播放器罢了。需要注意的是,这并不意味着在你学习编程之前,你就必须掌握这些知识,你大可以在学习的过程中慢慢补充它们。往往,在学习的编程的过程中理解这些知识,能让你对它们的印象更为深刻,理解也更透彻。
你需要选择一门在你钟意的领域独领风骚的编程语言,来开启你的编程之路。你需要理解它的程序结构,理解什么是变量,什么是控制流,以此来帮助你完成一些简单的程序。但这仅仅是一个开始,你还要掌握一些编程思想。记住,编程是一项方法论和实践并重技艺。你需要深入学习这门编程语言,理解它的某些高级特性。学会使用相关的库和开发框架来完成更复杂,同时也拥有更多功能的程序。在你经过大量的练习之后,你也应该对什么是程序设计有了自己的认知。
这时,如果你并不满足于单纯的功能实现。你想要完成可维护性更强,性能更优秀的程序。这时你可以开始学习数据结构和算法,它可以帮助锻炼你的程序设计思维,让你懂得思考并具备动手完成高性能程序的能力。你可能还需要学习一些软件工程方面的知识,来帮助你写出结构更合理,也更加优雅的代码。
当你经历了上面的阶段,某种意义上说,在那个领域里你已经是一个合格的开发者,你已经具备了完成自己当初的设想的能力。到这时,你可能会深刻的体会到编程语言终究只是一种工具,它们有着自己擅长的应用领域,但也有自己的短处。所以,放开眼界,多学习几种不同风格的编程语言。体会不同的编程风格的特点,理解它们的优势和思想,这有助于开拓你的程序设计理念。当然,基础知识依旧重要,也不要陷入不停学习新的编程语言的奇怪循环。深度和广度,要彼此兼顾。
关于学习方式的选择。每个人学习的点,都不尽相同。我只能结合自身经历提供一些建议。这是一个信息爆炸的时代,你可以很轻易的通过互联网获取到一些你想要的信息。但是这里存在一个陷阱,往往能轻易得到的东西,不一定真的正确且有用。所以,筛选你的学习资料也是一项富有挑战的工作。在学习语言方面,跟随一部经典的著作来了解这门语言,是必要的。一本著作可能已经发布了一些年头,而每本著作关注的点可能不同。所以阅读相关的数本书籍彼此补充,再参照相关的官方文档是一种相对稳妥的方式。视频和博客,更多的是锦上添花。至于开发框架之流,参照最新的官方文档学习即可。是否要研究源码,根据实际需求决定。不可否认,阅读优秀的源码,也是提升编程能力的重要途径。
如果你学习编程只是想要便利的获得一些工具,而不是成为专业的程序员。以上提及的种种,你无需全部付诸行动。选择你喜欢的方式,愉快的享用编程给你带来的便利即可。
编程是一门需要积累的技艺,学习它可能会花费你相当多的时间与精力。但到最后,你会发现一切都是值得的。无论出于何种动机,让你开始了自己学习编程的旅途,请坚持下去,然后尽情地享受编程带给你的乐趣。
Teaching yourself programming -一个编程爱好者的碎碎念的更多相关文章
- 如何为编程爱好者设计一款好玩的智能硬件(十)——无线2.4G通信模块研究·一篇说完
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(七)——LCD1602点阵字符型液晶显示模块驱动封装(上)
当前进展: 一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计 ...
- 如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢?
一.我的构想:如何为编程爱好者设计一款好玩的智能硬件(一)——即插即用.积木化.功能重组的智能硬件模块构想 二.别人家的孩子:如何为编程爱好者设计一款好玩的智能硬件(二)——别人是如何设计硬件积木的! ...
- 结对编程ending-我和洧洧的碎碎念
应该是第一次和队友分工合作去完成一个项目,其中也经历了跳进不少坑又被拉回来的过程,总体来说这对于我俩也的确是值得纪念的一次经历. 我的碎碎念时间…… 对比个人项目和结对编程项目二者需求,前者重在面对不 ...
- IOS开发入门教程-总结篇-写给狂热的编程爱好者们
程序发轻狂,代码阑珊,苹果开发安卓狂!--写给狂热的编程爱好者们 写在前面的话 学习iOS应用程序开发已有一段时间,最近稍微闲下来了,正好也想记录一下前阶段的整个学习过程.索性就从最基础的开始,一步一 ...
- Programming pearls 编程珠玑的题目
Programming pearls 编程珠玑的题目 这段时间有空都在看编程珠玑,很经典的一本书,一边看一边用 python 做上面的题目,我做的都放到 github 上了 https://githu ...
- 一个编程小白,如何入门APP软件开发领域?
近些年,互联网创业火得不得了!一时间,满世界都在招做App软件开发的专业人员.从大众角度来看,学编程,写代码,是一件非常困难的事情.但是,App开发人员的工资那么诱人,让很多小白也跃跃欲试想学一下.那 ...
随机推荐
- Sorting a Three-Valued Sequence(三值的排序)
Description 排序是一种很频繁的计算任务.现在考虑最多只有三值的排序问题.一个实际的例子是,当我们给某项竞赛的优胜者按金银铜牌序的时候. 在这个任务中可能的值只有三种1,2和3.我们用交换的 ...
- [NOIP2014D2]
T1 Problem 洛谷 Solution 枚举那个点的位置,再O(n)扫一遍求出覆盖的公共场合的数量... 所以时间复杂度为O(128 * 128 * n) Code #include<cm ...
- Forth 文本解释程序
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- 网络请求get和post的区别
网络请求get和post的区别 其实本文更应该放在HTTP相关的分类,但是目前我并没有开设这一个分类专栏,so临时储存在HTML分类吧 Get和post是HTTP请求的两种基本方式 get是从服务器上 ...
- python之路-bytes数据类型
一. python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.python 3不会以任意隐式的方式混用 ...
- Python正则表达式的re库一些用法(上)
1.查找文本中的模式 search()函数取模式和要扫描的文本作为输入,找到这个模式时就返回一个match对象.如果没有找到模式,search()就返回None. 每个match对象包含有关匹配性质的 ...
- SpringBoot 2.0 pom.xml 配置(热启动)
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...
- python识别图片中的代码。
在看并发编程网的时候,有些示例代码是以图片的形式出现的,要是此时自己想复制下来的话,只能对着图片敲了,很不爽,于是搜了一下识别图片的网站,有! 把图片上传上去解析,下来txt文本,打开一看,大部分能解 ...
- Git 转载
我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下 ...
- 数据库学习二三事儿(不打代码永远get不到的东西)
针对聚合函数: 1.在自己打的过程中,发现如果select里面有一个列名有被聚合函数用到,比如: 这里的count和Sum_salary均邮局和函数,照理来说branchNo是不能搞进去的,但是它被g ...