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开发人员的工资那么诱人,让很多小白也跃跃欲试想学一下.那 ...
随机推荐
- Linux c使用gumbo库解析页面表单信息(三)
前面说了那么多,终于说到如何解析html表单信息了. 什么是表单信息呢,这里我们先要有一些概念: 如上图,这是一个QQ注册页面,注册页面当中需要我们填的空其实就是一个表单信息. 具体到html代码当中 ...
- 利用Delphi编写Socket通信程序
一.Delphi与Socket 计算机网络是由一系列网络通信协议组成的,其中的核心协议是传输层的TCP/IP和UDP协议.TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登 ...
- Exception: 'dlib.mmod_rectangle' object has no attribute 'right' - 例外:'dlib.mmod_rectangle'对象没有属性'right'
I'm using dlib for face detection and getting this error Exception: 'dlib.mmod_rectangle' object has ...
- 网页Title加LOGO图标
<link rel="icon" href="XXX.ico" type="image/x-icon"/> 只能放格式为.ico ...
- javascript--返回顶部效果
window.onload = function(){ var obtn = document.getElementById('btn'); //客户端页面可视区高度 var clientHeight ...
- MyBatis工具类
package cn.word.util; import java.io.IOException;import java.io.InputStream;import java.util.Enumera ...
- HDFS优缺点
HDFS解决大数据存储的问题 HDFS优点 高容错性 数据自动保存多个副本 副本丢失后自动恢复 适合批处理 移动计算而非数据 数据位置暴露给计算框架 适合大数据处理 GB.TB.甚至PB级数据 百万规 ...
- Server Tomcat v7.0 Server at localhost failed to start.解决办法
今天,导入maven项目时,报的错,因为之前没遇到过这个错,一时抓不到头绪,最后请技术大神帮忙解决.他首先看的eclipse的配置,是否与项目对应,在看看.seting 文件中的名称是否与项目名对应, ...
- 算数运算符& 关系运算符
java中的算数运算符 + - * / % ++ -- + +: 加法运算符 - : 减法运算符 *: 乘法运算符 / : 除法运算符 注意: 除数不能为0,除数为0会报出异常 整数运算默认得到整数, ...
- 安装mavlink遇到的问题(future找不到)
从官网下载mavlink(git clone https://github.com/mavlink/mavlink.git) 然后进入mavlink 目录执行 git submodule update ...