学习语言的路线

http://www.yangzhiping.com/tech/learn-program-psychology.html

阳志平的个人网站::技术
文章存档

回到首页
如何学习一门新的编程语言?——在学习区刻意练习
如何学习一门新的编程语言?
答案是:在学习区刻意练习,每天500行。什么是学习区,就是那种,你刚刚够得着,但是还是需要付出一点努力的。
1. 如何寻找学习区
1.1 经典教程
一般某门新语言的图书,在豆瓣排名比较靠前,口碑都很不错的,挑一本带课后练习的就行了,放弃那种虽然写的很好,但是不带练习题目的,那种书作为备选就可以了。Ruby社区,我常常推荐日本Ruby学会会长写的这本:《Ruby Programming》课后习题。
1.2 笨方法系列
Ruby与Python双修的怪才Zed Shaw,推出了笨方法学习编程的系列教程。里面已经有了Ruby\Python\c系列。Zed Shaw开源了相应的方法论、资料,你也可以将它改为自己要学的版本,比如java、Arduino等。
网址:http://learncodethehardway.org/
Ruby中文版
Python中文版
1.3 社区英雄设计的练习题目
任何一个社区,都有一些英雄人物,乐意传承自身的知识体系,因此,设计了大量的练习题目。比如,Ruby社区的以下材料都很适合初学者。
http://rubykoans.com/
http://kidsruby.com/
http://rubymonk.com/
1.4 人气较旺的程序员问答社区
个人比较推荐:http://stackoverflow.com/
可以去这里回答别人的问题,如果时间有限、可以先下载stackoverflow的top问题电子书
别急着看最佳答案,自己尝试写下答案。然后再与最佳答案对照。
2. 在学习区刻意练习的辅助工具

初学编程,最应该记住的是在学习区刻意大量练习,千万少看书,要多练习。当年我从管理咨询行业继承的陋习,先看大量资料,才进入某个领域,并不适合学习编程。

jpuyy note: 先从问题下手,然后找资料,后一阶段是看书,看书才能有深入

刻意练习时,有以下重要的工具。
2.1 TextMate的Bundle
windows下的朋友暂时缺少,通过bundle可以快速掌握一门语言的核心语法,并自由扩充自身的知识库。
2.2 cheatsheets
cheatsheets类似于考试时的小抄,将某个需要学习的东西精华整理在一页或几页纸上。
http://cheat-sheets.org/,找到里面的Ruby cheatsheets或者你自己所用到语言的小抄,有多个版本,找一个最适合自己的版本 ,然后下载并打印出来。一张纸囊括核心内容。
cheatsheets,还有很多在这里:http://refcardz.dzone.com/
2.3 FlashCard
FlashCard是一种学习方法,先将题目呈现,然后心中默想答案,再翻看答案。
将与学习相关的FlashCards下载在手机或者打印出来,然后等车等无聊时间,予以默想。
比如:http://www.yoyobrain.com/cardboxes/103
以及一个特别针对Ruby on Rails的app
网上有大量的关于Flash Card的社区。可以特意去搜索自己所学习的语言的。
3. 如何提升行动力:人类行动心理学的有效Hack
人为什么会拖延、人为什么行动力很差。近些年心理学已经取得了突破性研究成果。普通人思考目标的时候,使用的是目标意图, 是:
我要做什么….
但是,有位天才心理学家Peter Gollwitzer发现目标意图这样的思考范式,反而很难达成目标,于是,他对自己的实验对象,使用了一种替代范式。强迫实验对象,使用一种称之为:执行意图的思考范式来思考。结果令人惊讶,人们更容易克服拖延症、达成目标。
什么是执行意图?就是使用if…then…的思考范式。比如, 不要再说,我要学Ruby。 而是说,如果我要学习Ruby,那么,今天晚上就装上环境。
当你关于行动与目标,长年累月这么思考,最终建立自动化机制,那么行动力慢慢就变强大了。如果…那么…成为生命中的一部分。我要…这种句式,就从自己的语言体系中死掉了。
4. 编程始终是个人行为
刚开始,不要:
忙于去社交
泡各种论坛、发无聊帖子
下载各种盗版电子书(自己花钱买来的你才会格外心疼)
争议哪种语言更好
每个人的世界都是如此不同,不争议,用它做点作品,或者是送给自己的女朋友,或者是赚点外快。慢慢地,就成长了:)

Model-View-Controller

Model-View-Controller

CodeIgniter is based on the Model-View-Controller development pattern. MVC is a software approach that separates application logic from presentation. In practice, it permits your web pages to contain minimal scripting since the presentation is separate from the PHP scripting.

The Model represents your data structures. Typically your model classes will contain functions that help you retrieve, insert, and update information in your database.
The View is the information that is being presented to a user. A View will normally be a web page, but in CodeIgniter, a view can also be a page fragment like a header or footer. It can also be an RSS page, or any other type of “page”.
The Controller serves as an intermediary between the Model, the View, and any other resources needed to process the HTTP request and generate a web page.

CodeIgniter has a fairly loose approach to MVC since Models are not required. If you don’t need the added separation, or find that maintaining models requires more complexity than you want, you can ignore them and build your application minimally using Controllers and Views. CodeIgniter also enables you to incorporate your own existing scripts, or even develop core libraries for the system, enabling you to work in a way that makes the most sense to you.
  • 模型 包含与您的数据库和其他数据结构相关的所有代码。如果您具有一个名为 pages 的表,则您具有一个模型,其中具有用于从表中选择、创建、更新和删除记录的函数。
  • 视图 包含所有显示和 UI 元素 — JavaScript 代码、Cascading Style Sheets (CSS)、HTML 甚至 PHP。
  • 控制器 将一切联系在一起。控制器中的每个函数表示一个目的地或路线。如果您具有一个名为 /about 的目的地,则控制器将具有一个名为 about() 的函数。

如何节约时间

大事有计划
不长时间无目的地阅读
多利用等待的时间
随时记录突发灵感
紧急且重要事情优先
巧妙地工作 而不仅仅是努力
尽可能裁掉无结果的任务
在早晨干有创造性的工作
一次只专注一件事
为事情设立最终期限
尽可能多地授权给他人
将小事集合起来一次解决