您的位置:首页 > 编程语言

有一定基础,如何快速学习编程语言

2012-09-23 13:05 405 查看
对于有一定基础的程序员,比如已经掌握了一门程序语言,对算法有所了解了,怎么继续学习其他的编程语言?

我的方法很简单。加入你想学X语言,你先找个X语言能做的、你喜欢的目标项目,大可以是一个订票系统,小可以是一个简单demo页面。然后呢,看你现有的材料,如果没啥例子,你对目标语言也不了解,就找N本书来(N>=1),可以多找基本,不是太在意书的质量,以看的舒服为标准,然后用一两个小时把书翻一遍,明白语言的一些基本概念,大概框架等。如果你对语言有一定了解,或项目非常小(如写一个特定目标的爬虫),上来就直接用谷歌搜代码、tutorial,搜到了就照着写。

方法的亮点不在于你用几本书,更不在于你搜到了几个tutorial和example,重要的是通过一个特定的项目目标让你有兴趣去学、记得也特别牢,而方法的成败关键在于你是否能够把握由点及面的策略。就是说,虽然你是做一个特定的目标,用到的程序语言的功能也有限,但你要学会从这些功能点,扩展到一个功能面。有些抽象,举个例子。比如你学php看到了foreach语句,你就用了,但你要学这门语言而不是做完这个项目完事的话,你就可以借这个机会把php的所有主流的循环语句都学一遍,什么叫学呢?不是都写一遍,而是记一下(至少记个索引),用云笔记(evernote或有道云笔记)记下来。你可能大脑记不住,可能做完这个项目就不用php了,但你N个月后又用php时候,直接翻开自己的云笔记,就能迅速找到自己需要的知识了。为什么这种笔记重要而且有效?懂寄存器的童鞋应该知道一个针对最近使用的优化,用中文来说就是:你遇到的问题,你再次遇到的概率比你没遇到的问题初次遇到的概率要大。可能说的有些绝对,但实践表明是靠谱的。学语言中可能遇到的最痛苦的事莫过于你出现了个问题,但你记得你之前曾经花了大工夫把它解决了,但一时想不起来了又很难直接找到,又得重新再花大功夫解决一次。

项目引导、书本/tutorial/example参考、由点及面是这种学习方法的概括。这种方法有点是什么?快、高效、高兴!你能很快上手,很快出效果,基本概念知识也能迅速掌握。如果你有一定基础,学各门语言都特别快。但缺点是什么呢?个人把握能力要求很高。你不能指望一个没有基础的、思绪不振的人用这种方法。他们喜欢的是寄希望于经典,希望看完某本书就学会了一门语言,成为了专家,能够写高质量项目了。这是我最反对的方法,除了是学第一门语言。

结束之前,我想说的是深入问题。其实,上面方法一直是我学习新语言的方法,证明还是比较有效的,虽然我不是哪门语言的专家(目前不是走这条路线),但是至少还是通过这些方法用了很少时间学到了不少语言。但问题在哪?深入!我想稍微接触几门高级编程语言的人都知道C/C++是相对最高效的。但还是需要很多优化,算法的优化就不说了,你搞个冒泡来代替快排,这种程序就能出一些搞笑的效果,如排几万个数就卡半天;程序语言也是有不同的优化的,比如I/O、多线程、循环啥的,细节还是蛮多的,你如果单纯做一些小项目,不苛刻自己,写出来的卡卡卡但也能跑出结果你也不在意,或者PV没高到让你宕机的地步,这样的后果就是不够深入。那要怎么才能真正深入呢?一个更好的问题是:你怎么知道自己是错的!?这个问题有点别扭,但其实是个很好的问题,代码如果出错了一般能被测试或实际使用测出来,那个叫做bug,我说的错不是bug,是你没做到最优化:比如你自己写了个函数解决了一个功能,但后来你自己又发现了当初那个方法可以用另一种方法来写,效率更高,你就有开始想,你现在这个方法又有什么“错”呢?还有什么更优化的方法已经存在但我不知道呢?这个问题是开放的,没啥最好的解决方法吧,据我说知。可能的方法一方面是直接面对它的,但不一定有效,比如你做一个项目,把你的项目跟开源项目的相比,就能看到大牛怎么写,你怎么写,另一种好一点的或许是你直接参加开源项目(你或许会想你自己搞一个开源项目,但是你刚开始学一个项目,我估计你的影响力还不至于把大牛吸引进来跟你一起fork),参与开源项目,如果社区够活跃,你写了一个功能,但是大家发现你写不好,就会重写你的,这样你就知道原来自己错了;另一方面是间接解决这个问题,就是看一些“经典”的书或文章,当然,一般书是不会专门给你说某个具体的topic,有时候有,但比较少,可能只是某个章节有提到,或仔细讲,你也很难带着目的性去找他们,你就有空时候,翻一下那些书,增加一下自己对那些语言的理解,试想一下,如果你知道一门语言的循环语句是如何通过汇编实现的,你是不是更有可能写出更高效的循环来呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: