可能太宽泛了,如何算熟练掌握一门语言?

先说明一下,我不是计算机专业出身,本来对程序设计这一块也就学过点C(你知道,大学基本上工科都得学的),再学了点JAVA,工作近一年,慢慢看了点RUBY什么的,现在主要做rails的开发,老实讲,对这个东西,我觉得除了刚开始觉得写着有点别扭,现在基本上已经适应了这种风格,但随着现在在项目中慢慢看公司一个架构师的代码,越来越觉得能够熟练掌握这门语言,真挺难的,公司这个做了十年开发,前两年转RUBY,我觉得他已经是很牛了,公司项目的好几个插件都是他开发的,(当然他在系统架构上也挺牛逼的),他有些插件很多都用到所谓元编程了,就是meta programing。一个model include某个类之后,可以动态生成很多方法,内部也有很多回调方法啊,什么的,可供我们使用时做部分配置,除出他的架构设计能力这部分不谈,他对语言的驾驭,确实已经可以说是精通了,我想请教下有过多种语言经验的牛人们,给点建议,如何能达到精通或者熟悉一门编程语言?我知道要看源代码,看别人写得好的源代码,再就是多写了,可是以我这半年东看西瞧多种语言的小小经验上来看,只要不是一门变态的语言,要入门,语法是太简单了(python我看了一下午,英文片的dive into python,除了觉得代码形式有点怪异,有空格缩进这种方式来划分代码块之外,没什么不能适应的,ruby,刚开始也是利用下班晚上的时间边看边敲了点那种入门级代码,也就一个星期),就语法本身来说,现在能在那个语言排行榜上排得上号的,都不会对我有太大的障碍,可是任何一门语言,要想完全驾驭,或者熟练驾驭,随着慢慢接触的东西越来越多,反而越来越觉得难了,我想这背后应该还有些东西是我本身没有掌握的,做为非计算机专业出身的我,计算机系统,编译原理,等等这些东西对我来讲都是非常欠缺的,我需要看看这方面的东西吗(仅就从根本上理解一门语言而言)? 另外,也看到很多人热捧MIT的那个SICP,函数式编程我也只是了解,就有这种能力的haskell,ruby,scala来讲,这些概念都不难理解(就像所谓OO,理解这个概念有什么用呢,除了面试时用用,做开发时还是不能很好地使用),可是当我看到别人写的那么牛的代码,连续几个方法的调用就如同顺口溜一样,我真的觉得挺不可思议(虽然我知道一般来讲,不会有那种专属于某种语言的可以完成的功能),而且,我发现,貌似现在任何一门语言,比如ruby,比如erlang,prolog,这些语言的实现也都是用C实现的(不要鄙视,真的是几个月前才知道的),那为什么利用这些语言结构(C语言的)就可以实现这么些功能?我基本上只能算听说过图灵机,但如果要再向里面深究,我估计得拿出离散数学等等数学的家伙了。说了这么多,感觉已经有点混乱了,简单点吧,要从根本上能熟练驾驭一门语言,除了代码的读写,还需要在哪些方面做补充?希望有经验的程序员们指点一下,先谢谢了.