如何学习一门编程语言(转载)

关于学习编程这个主题,有各类读者屡次要求写一写,并且要求文艺的写、抒情的写、充满社会主义特点的写,要作到:问题看起来巨复杂,读起来巨简单,学起来巨容易!看把大家惯成什么样子了,Mac 君你继续去面壁吧。html

好吧无论他,咱们接着聊。前端

若是你准备将来投身到 IT 江湖从事编码这份有前途的职业,学习一门语言显然是远远不够滴,就像你初入江湖,告诉别人,python

「兄弟只会太祖长拳!」
问,「Level 可及乔峰?」
答曰,「不及万一」git

人家一看你就是P2的命,PK 时一个大招直接秒掉。写到这我想起了一个叫作冰河的兄弟,也是奇葩一朵,在程序语言方面一辈子只爱 Lisp(Lisp号称编程语言的祖宗),在人类语言方面则除了中英文,还在同时学习意、法、西、德四门语言,并且不是随便学学,并且神志没有错乱,这一点让我简直佩服到逆天,一门英语已经从初中折磨我到如今了,在人类语言层面,我经常是被秒杀的。程序员

因此,若是编程有可能成为你的职业,那么5-10年的学习和实践时间是须要的,由于你可能要学习编程语言、操做系统、算法、数据库(Sql 的 NoSql 的)、Web 开发等等,还有各类数不清的引擎和架构,特别使人发指的是当你熟练的掌握了一门技术以后,就会有位赤脚大仙走过来告诉你,孩纸,你学的技术已经不是方向袅,而后在你绝望的眼神里飘然离去……写 Java 的兄弟感觉一下……github

若是你的职业发展与编程无关,只是想学习一门语言磨练人生意志,那么这事就比较容易了,好比 Python、Shell、AppleScript、Ruby 等,根据本身经常使用的操做系统选一个就好,若是你用 Mac,这些语言能够任选,并且环境都是现成的,若是你用其余操做系统……,对不起,MacTalk 只说 Mac。这些语言除了可以帮助你锻炼意志和提升逻辑思惟能力的同时,还能够在某些关键时刻帮助你处理各类繁琐复杂的工做,好比大量文本、定时任务、自动化任务、编写经常使用小工具等等,还能够引起跨界编程的轰动效应,不信的话去百度搜索「Python 女神」便知。算法

好的,写到这若是尚未打消你学习编程的热情,那就能够继续往下读,下面才是正文:shell

要有光


不管学习什么,必定要有明确的目的和目标,若是是抱着玩票的心态,最多可以「知道」而不是「学以至用」,因此搞清楚本身为何要学习编程,准备学习哪门语言,要达到什么程度,想用多长时间等等,这些问题在你的头脑里有个大概的思路和计划,就基本解决了 Why 和 What 的问题,下面咱们来找 How。数据库

多说一句,其实学什么都有用的,大部分时间你只是不知道会在何时什么地方用。编程

经典教程


选定了语言不要着急去网上搜索各类秘籍、评价和下载各种盗版电子书,每一个技术领域都会有一些经典的圣经级别的图书,找到它们,购买一本纸质书或电子书,最好是带练习题的,能够边学边作。

如何找到这些图书,豆瓣读书网应该是个不错的选择,虽然豆瓣的电影评价过于小清新口味,但图书评价仍是值得信赖的,另外找乐于分享的老鸟推荐一下也是个不错的选择。

掌握基础,持续练习


每一门编程语言的学习内容都会涉及:基础运行环境、数据类型(数字、字符串、数组、集合、字典等)、表达式、函数、流程控制、类、方法等等,不一样的语言还有一些不一样的特性,这些内容并不复杂,尽快经过大量的练习击倒它们,而后再去深刻了解面向对象、并发、异常、文件与目录、网络、标准库等内容,并辅以持续的练习,这些内容才可以让你真正进入编程领域并作出实际的软件。

初学者天天花1-2个小时是须要的,尽可能保证阅读和练习的持续性和时间长度。其实1-2个小时根本不算什么,想一想大家花费在看电视和刷微博上的时间吧,若是还说没时间,那就是不抽不舒服斯基了。

记住那句话:一边憎恶虚荣,一边找各类机会虚荣,在应该为了虚荣而努力的时候,丫拖延症犯了。

外事不决问 Google


现代人的生活和学习是如此的方便,由于咱们有 Google!俗话说内事不决问百度,外事不决问 Google,技术绝对属于外事,你要是去问度娘技术问题,被人家的回旋踢踢飞可别怪我没告诉过你。

之前学习技术只能经过技术图书和口口相传,如今遇到问题从Google 那里就能够找到答案,因此用好 Google 你就能如猛虎加之羽翼而翱翔四海。若是你还在认为 Google 就是个搜索框,那就图样图森破了,Mac 君今天为你推荐这两篇文章:

「Google,Google,再Google」 http://wordpress.lixiaolai.com/archives/7572.html
「如何用好 Google 搜索引擎」 http://www.zhihu.com/question/20161362

让你的搜索不同凡响。

用好工具


俗话说的好,欲练神功挥剑自宫,sorry 不是这句,工欲善其事必先利其器,想要学习编程必定要写代码,咱们不提倡咬破手指写bloody code,因此必定要找到趁手的武器。我我的把工具分为三种,第一种是部分程序语言自带的 shell,第二种是文本编辑器,第三种是集成开发环境(IDE)。

一、Shell,若是你在学习 Python,那么python shell,bpython 和 ipython 都是不错的选择;若是你在学习 Ruby,那么irb就是 ruby 的 shell;若是你在学习 Shell,打开终端(Terminal)就是 shell;若是你在学习 Java 或Objective-C,对不起,这些语言没有 shell。

Shell 可以单步执行你的编程语句并给出即时反馈,这种交互式编程方式很是适合初学者,所见即所得,因此凡是提供 shell 工具的语言,推荐你们优先使用shell学习。

二、文本编辑器,这个领域向来是「猿家必争之地」,溢美之词和吐槽之声交相辉映,从古至今绵延不绝,提及来都是眼泪,好比Emacs和Vim程序猿,你们沿着不一样的道路和目标前进,但老是会在某个点交叉相遇,见面就扔石头和臭鸡蛋,砸得对方鼻青脸肿,而后擦擦眼泪和口水继续前行。还有 IDEer 说 Vimer 装逼,Emacser 说 IDEer 垃圾balabala……种种血淋淋的事实足以拍一部惊悚科幻动做言情片。

我本身比较喜欢文本编辑器,可是也不排斥 IDE,这种人俗称两边不待见,但我仍是那句话,不为本身设限,不一样的环境应该选择最好的工具。下面给你们推荐几款文本编辑器:

(1)VIM:号称编辑器之神,全键盘操做,充满速度感,良好的插件体系,几乎知足一切程序语言的编写需求。
(2)Emacs:神的编辑器,捆绑了文本编辑器的操做系统。没了,你们感觉一下……
(3)TextMate:Mac 专有编辑器,号称 Ruby 程序员最爱,当年1.0版一份39欧元,总共卖了十几万份拷贝,如今2.0免费开源,原来的开发者已经消失无踪,听说挣足银子去太平洋的小岛晒太阳去袅。
(4)Sublime Text:文本编辑器的后起之秀,发展迅猛,媲美 TextMate,跨平台,比 Vim 和 Emacs 容易上手,号称性感编辑器。

以上四款自成体系,都有完善的插件生态环境,诸君可任意选择。

对于TextMate 开发者赚了钱就跑的恶劣行径,你们彻底能够批判,有时咱们不得不痛苦的认可,国外程序员的鸡贼是我泱泱大国之IT民工永远没法理解滴「泪」。

三、集成开发环境(IDE)

IDE 是图形化的集成开发工具,具有精准的词法分析、编程提示、调试等功能,功能之繁复用户自知,若是作工业级编程和团队协做的话,仍是推荐使用 IDE。

在这里推荐几个系列:
(1)Eclipse 系列,经过插件方式几乎支持全部的经常使用编程语言,免费。
(2)JetBrains 系列,产品线丰富,几乎都是精品,Java、Python、Ruby、Php、Objective-C、Web 等包罗万象,收费。
(3)Xcode,Mac 上优秀的集成开发工具,全部的 Mac App 和 iOS App 都出自此货之手,免费。

微软的技术不懂,就不推荐了,嘿嘿……

除了写代码的工具,你还须要记录、阅读和查询,因此再为你们推荐三款应用:Evernote(笔记)、Pocket(之后读)和Dash(代码检索)。具体介绍和用法就不说了,不要忘了上一篇提到的Google君。

找到你的 Master


小时候看西游记发现,师傅原来是用来人肉的;后来看天龙八部发现,牛人都不须要师傅,即便有也是要被别人一掌震飞的;再后来看射雕英雄传发现,愚钝的人首先得有师傅,其次得有不少师傅,再次每增长一个师傅功力都以指数级别增加,二、四、八、16……

因此,若是有人告诉你三人行,一个老师都没有,你至少要质疑这一观点,同时考虑本身会不会筋斗云,是否天赋异禀以一当百等等。若是不成,那仍是去找师傅好了。

有老师的好处有这么几个:
(1)老师可以看到你本身看不到的地方,人这一生,不多人能给本身一个清晰的评价和认知,要么高估本身,要么低估本身,而旁观者,尤为是老师,每每可以看到你的弱点、长处、威胁、变化,并给你适时的提醒和指导,少走弯路。
(2)全部领域的知识都是成体系的,若是有这个领域的行家里手在你早期的学习阶段进行指导甚至设计练习技巧,与本身琢磨的效果是不可同日而语的。估计每一个人都会有这样的经历,一个问题本身,想到心碎想到梦醒也没有结果,别人过来抽丝剥茧条理清晰的一讲,不只你懂了,连你的小伙伴都懂了。这就是听君一席话胜读十年书的道理。
(3)好处多多,余不一一。

可是走出校门以后再想找传统意义的师傅就很难了,像绝地武士那样和 Master 出双入对同生共死更无可能,这时你就须要把身边的朋友、同事当作老师和资源,不耻下问,并且要问的有智慧,让人有回答欲望,那么如何提问呢,请参考我以前写的一篇「如何提问」。

参与社区和技术会议


本身学习和同事交流之余,能够参与一些网络社区的交流,推荐:

技术问答社区:http://stackoverflow.com ,在技术领域几乎包括万象,无所不知。 GitHub:https://github.com ,几乎全世界优秀的开源软件做品都在上面。

另外还能够参与一些群组,订阅一些优秀的我的博客,这个时代依然有人愿意贡献优质内容。

选择性参与一些技术会议,好比 QCon,不期望在会场能学到什么,但能够了解技术趋势,并看看别人在作什么。

刻意练习


以前写过两篇「刻意练习」的文章,自感对学习编程有必定帮助,你们能够去读一下。

逃离温馨区


这一部分适合已经有必定编程基础的童靴

什么是温馨区?若是你是个新手,你就没什么温馨区,什么都不懂嘛温馨个毛,在磕磕绊绊的学习中懵懂前行,期间可能还伴随着老鸟的嘲笑和进度的压力,终于有一天你武功精进,乾坤大挪移练到了第五重,工做中开始驾轻就熟游刃有余,不断有新人或老人来找你解决问题,你微笑着迎接挑战,淡淡的送走难题,你挥一挥手,不带走一片云彩,这是什么境界?这就是你的温馨区,这和靠在沙发上看电视的温馨不是一回事,一般进入温馨区须要花费你不少的时间和精力,须要你不断的练习,一旦进入,你会enjoy it!

这时候,若是有人胆敢让你脱离温馨区,可算要了亲命了,你会勃然大怒,轻则争吵,重则离职。这种事遇到太多了,一个写前端的你让他学习一些后端技术,一个写Java的你让他学习一下C,获得的答复可能会,Sorry, I feel very uncomfortable!

没有人学新东西的时候很是舒服,一旦经历过重新人到老鸟的过程,再让你进入陌生的领域,那种痛苦会让你自发的去抗拒。可是一我的不可能永远躲在温馨区里,逃离温馨区会有助于你从不一样的角度看问题,视野会更加开阔。人总要往前走的。

不少人在某个地方待久了就会很是懈怠,没退休就像在养老,这时候你就知道,他们在温馨区过久了,与在哪一个地方无关。

最后一招「见龙在田」


实战老是很重要,为你们推荐一个在线学习编程网站:

http://www.codecademy.com

假以时日,各位一定武功大成,那时横刀立马、拔剑四顾,说英雄谁是英雄!


文章内容来自微信公众帐号:MacTalk
· 微信号:sagacity-mac
· 回复 m 能够查阅全部历史文章和Mac Tips
· Web站点:macshuo.com

 


以上内容均属于转载。

原文地址:http://macshuo.com/?p=703

 P.S.

对在 用好工具 这一片断里推荐的三个工具作下说明:

一、Evernote(笔记)

  离线不可阅读和编辑。iPhone 上离线也不能用。离线功能须要花钱购买。

二、Pocket(之后读)

  好用。能够离线阅读。

三、Dash(代码检索)

   Mac 上才有。不是 Mac 的就不用找了。

相关文章
相关标签/搜索