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 codeblock的使用(四):创建自己的静态函数库
从我之前的博文当中,大家应该大概了解了linux下的函数库究竟是一个什么样的东西.linux下的函数库其实就像windows中的dll文件,里面包含了程序运行所需要的函数. 其实无论是我们使用linu ...
- Freeswitch 各版本一键安装脚本 Freeswitch 快速安装 G729编解码库
最近有时间整理,写了freeswitch的一键安装包分享一下,里面带有 mysql=0 是否选择安装mysql. 其他提示:脚本里面集成了安装g729脚本,支持录音.转码的bcg729脚本. 1.下载 ...
- 《程序设计入门——C语言》翁恺老师 第五周编程练习记录
1 素数和(5分) 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个 ...
- redis持久化数据的机制——转发
转载:https://www.cnblogs.com/xingzc/p/5988080.html Redis提供的持久化机制(RDB和AOF) Redis提供的持久化机制 Redis是一种面向“k ...
- 关于$(function(){})的问题
在开发过程中遇到了一个问题 , 页面需要一个列表展示 , 为了方便数据的获取和渲染 ,就选择了easy UI的网格来做 , 这个时候问题就出现了 , 那就是网格需要触发的函数不写在$(function ...
- 【转载】 [unreal4入门系列之七] UE4中的Actor类和Pawn类
原文地址: http://www.52vr.com/article-558-1.html 现在我们开始进入UE4的代码开发工作.首先,UE4的类框架是非常庞大的,看起来有点让人措手不及.不过正因为UE ...
- aspectj编程简介
现在java生态中spring大行其道,一般使用aspectj进行切面编程使用注解方式实现,比较少使用原生的aspectj编程,网上的资料也比较少.最近工作中需要封装redisson客户端提供统一的r ...
- ctype.h
isalpha:int isalpha(char ch);检查ch是否是字母.是字母返回非0,否则返回0. iscntrl: int iscntrl(int ch); 检查ch是否控制字符(其ASCI ...
- GridControl 主从模式(Master-detail)子表格获取行数据
今天遇到一个问题,gridcontrol使用主从表的时候,在子表中获取子表的行数据时居然获取不到,郁闷了很久.然后在网上找到方法(出处在这里:https://q.cnblogs.com/q/83412 ...
- 获取百度地图POI数据一(详解百度返回的POI数据)
POI是一切可以抽象为空间点的现实世界的实体,比如餐馆,酒店,车站,停车场等.POI数据具有空间坐标和各种属性,是各种地图查询软件的基础数据之一.百度地图作为国内顶尖的地图企业,其上具有丰富的POI数 ...