当前位置: 首页 > news >正文

我的阅读编程书籍的好方法

读书

我是学电子工程毕业的,在这个专业里我必须要用的编程语言只有C/C++,汇编和Matlab。在参加了一个创业周末的活动后,我开始对软件开发、计算机编程感兴趣,我决定要试一试,要进入这个领域。我发现,要想做一些编程项目,你需要去学一些完全不同的编程语言。

在过去的一年半里,我学会了Java(用于开发Android),Python和Javascript(& HTML/CSS)(用于web开发),我慢慢认识到,这最好的从书本和教材上学习编程的方法是把它们读3遍!!用这种方式学习新的内容能更好的帮你理解新语言/新概念。我相信这种方式能帮助你最大限度的从书本中汲取知识——不论你看的是什么书。

读第一遍

我的第一遍对编程书的阅读只做到粗浅的理解。在第一遍中,我努力跟随作者的思路,让他通过例子指导我前进。我学会编程语言的语法,但不完全,我努力理解程序是如何工作的。在第一遍阅读中我不动手敲代码。我想,我之前有编程经验,在读任何编程书籍时都可以跟得上作者的思路。我并不期望在第一遍阅读后就能用这种语言编程,就能把这些新知识运用到项目中。我得到的是对这本书里的内容有了很好的感觉。(顺便说一句,我通常一次只读一章或一节,不是一次一本书读完)。

读第二遍

在第二遍里,我开始写代码。我通常会把各节里的例子敲打出来。为什么要先读一遍书然后回来再敲代码?因为这样我就知道了这节里都讲的是什么,我能先知道这代码能干什么或不能干什么。我有了全局的感觉,而不是盲目的敲代码,等着下一章被告知谜底,这样又需要回来重读这一节。在理解的情况下敲代码能帮助我记忆语法

读第三遍

在第三遍阅读中,我试图在不参考书中的代码的情况下写出书中的例子和做出章节里的练习,我会直接跳到相应的章节或习题部分。在这个阶段,我能很好的记住这些章节里涉及到的语法,我能完全可以解决这些章节里给出的习题或问题。

就是这样…

这就是让我学会了Java,Python,JavaScript的方法。另外一个学习新语言或新概念的好方法是做一些个人项目。如果你想更多的了解Java里GUI和图像方面的知识,那就试着开发一个象棋游戏,这样会督促你阅读一些图形、动画、界面,甚至驱动方面的书籍。

如果你在做一些个人项目时不读这个语言的相关资料,那你就不能在实现这个项目的过程中运用最佳的实践方案,你只是在试着完成这个工作。你同样无法知道如何真正的用这种语言编程,尤其是当你以前不是用的这种语言的时候。你也许会用Java写出C语言风格的代码,因为你还没有学会用Java实现这种任务的方式,你熟悉C语言,你只是用Java的语法实现了这个功能。

我认为作为一名初学者应该先从书本学起,而不是先找培训班或其他。你能从书本中获得基本的概念。但当通读了一本书后,不要把自己局限在书上提供的一些练习上,试着做一些自己的软件项目。一定要亲手打出书上的那些代码,不要以为对这些代码看懂了、理解了就足够了!

我并不是一个编程高手,但通过这种方式学习编程开发,我确实学到了很多。让我知道你对我的这种方法有什么不同的见解,请写在留言里


from:http://www.aqee.net/how-i-read-programming-books/

相关文章:

  • 使用WampServer在本地玩转WordPress
  • 苹果不允许 iOS 应用内置购买(IAP)使用第三方支付方式,那么跨平台的支付怎么解决这个问题?
  • 判断NSString中是否包含空格
  • Unity3D中文视频教程【超清+精选】
  • cocos2d-x跨平台之路(观点比较清晰)
  • Unity、Cocos2d-2x、UDK 等手机游戏开发引擎分别有什么特性,适合开放哪些类型的游戏?
  • Unity 这个 3D 引擎很厉害吗?听说可以完成各种终端的游戏研发?
  • Mac系统下MonoDevelop界面乱码及不能显示中文
  • 《编程回忆录》之 Unity3D 视频教程
  • 技术人员如何去面试?
  • 不要在init和dealloc函数中使用accessor
  • 使用Xcode和Instruments调试解决iOS内存泄露
  • iOS应用程序生命周期(前后台切换,应用的各种状态)详解
  • iOS多线程编程之NSThread的使用
  • Objective-C语法之KVC的使用
  • Google 是如何开发 Web 框架的
  • [译]如何构建服务器端web组件,为何要构建?
  • create-react-app做的留言板
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Java 多线程编程之:notify 和 wait 用法
  • Java反射-动态类加载和重新加载
  • JS笔记四:作用域、变量(函数)提升
  • Laravel 菜鸟晋级之路
  • Laravel核心解读--Facades
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Next.js之基础概念(二)
  • Phpstorm怎样批量删除空行?
  • Vue 重置组件到初始状态
  • WePY 在小程序性能调优上做出的探究
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 规范化安全开发 KOA 手脚架
  • 猴子数据域名防封接口降低小说被封的风险
  • 来,膜拜下android roadmap,强大的执行力
  • 前端攻城师
  • 如何胜任知名企业的商业数据分析师?
  • 学习JavaScript数据结构与算法 — 树
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 责任链模式的两种实现
  • Hibernate主键生成策略及选择
  • 带你开发类似Pokemon Go的AR游戏
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ###C语言程序设计-----C语言学习(3)#
  • $.proxy和$.extend
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (第61天)多租户架构(CDB/PDB)
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (一)基于IDEA的JAVA基础1
  • (转)3D模板阴影原理
  • .Net - 类的介绍