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开发人员的工资那么诱人,让很多小白也跃跃欲试想学一下.那 ...
随机推荐
- 小白的python之路10/31&11/1文件操作系统
文件操作系统的介绍 ext4的superblock块是超级快,innode 块是专门存放文件信息的, block count将硬盘做成block块,对操作系统而言写在block块上就可了,eg:文件1 ...
- Nginx实现404页面的几种方法
一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有以下集中配置方式,一起来看看. 第一种:Nginx自己的错误页面 Nginx访问一个静态的html 页面,当这个页面没 ...
- inout口在modelsim仿真的方法
//主要是// 和**********部分是关键 1 `timescale 1ns/1ns module tb(); reg main_clk; :] addr; reg FPGA_CS0;//FPG ...
- 展示金额的方法(1元-->1.00元)
public static String showMoneyByTwoDecimal(String account) { DecimalFormat doubleFormatter = new Dec ...
- There/Here be句型
(1)There/Here + (be)根据上下文, 有多种翻译方法,可以翻译成"有", "是". be动词根据后面的名词有单复数变化. There is a ...
- image-to-image translation with conditional adversarial networks文献笔记
Image-to-Image Translation with Conditional Adversarial Networks (基于条件gan的图像转图像) 作者:Phillip Isola, J ...
- Alpha阶段敏捷冲刺总结
项目感言 张艺琳 在这次冲刺中,我主要担任着PM的角色.不仅要梳理流程给小组每个成员进行分工,并且还要及时监督他们在要求时间内提交代码.同时我也参与到开发中去,与小组成员一起讨论数据库,最后一起设计出 ...
- elasticsearch(2) 数据操作——查询
一 文档 ES面向文档,并且使用JSON作为文档序列化格式,对于ES来说,文档特指根对象序列化成的JSON数据,以唯一ID标识并存储于ES中. 文档元数据 三个必须的元数据节点 1._index ...
- styled-components的基本使用
一.官网地址 https://www.styled-components.com/ 二.styled-components 1.styled-components 样式化组件,主要作用是它可以编写实际 ...
- linux修改默认语言
echo $PATH #查看当前语言LANG=en_US.UTF-8 #临时修改当前语言,修改为英文echo 'LANG=en_US.UTF-8' > /etc/sysconfig/i18n # ...