这个老师和题主说的都不太正确。
常有一种观点,即一门程序设计语言要学N年,这个观点的问题在于:
1,把涉及这门语言的编程实现过程中遇到的语言问题都归给了这门语言。这就像把获得雨果奖过程中遇到的科幻作品的写作上的问题归给了作者所使用的这门语言的语言学问题。
2,把这门语言在关联领域上使用而遇到的语言问题都归给了这门语言。语言在关联领域上的使用实际属于关联领域,而不属于语言身,语言只是被一个上层调用的模块,因上层的需求而产生的特殊实现不是语言的自有内容,就像模拟电路设计是电磁学结合工业需求产生,它并不属于电磁学。
3,程序设计语言在实现过程中,存在因为语法的自由组合而产生的约束和限制以及技巧,这里不包括了前面所提到的情况,因为自由组合数量十分庞大,因此这样的约束和限制以及技巧是通常作为隐性的知识而存在的,在教材和参考书中很难完全列举,因此需要语言使用者在实践中自己总结。如果没有下意识的积累,隐性知识因为其频率会导致积累速率很慢,这可以通过刻意训练理论得以解释。一个业余学习英语,但是很注重英语实践的高中生,能在高中时以第一次无准备的状态参加托福得到118分的成绩,一个业余学习英语但是专门准备GRE的本科生,能够在一个月左右背完6k左右的GRE单词,一个业余学习英语但是专门准备GRE若干月的本科生,能够在verbal部分拿到很高的分数,而读了四年英语专业的本科毕业生,大多很难直接取得这样的成绩,这就是刻意训练和非刻意训练的差别。参加中学数学竞赛,主要的时间都花费在积累分析和解决问题的模式识别算法上,也就是主要在学习隐性知识,我们假定中学数学竞赛对应着隐性知识占比的上确界,我们假设准备中学数学竞赛在知识上需要300小时,在解题训练上需要4800小时,需要花费学习知识12倍的时间,学习C程序设计语言需要3个月,假设每天花费的时间一样,学会其中隐性知识至多花费36个月,也就是3年,如果采取刻意训练方法,4800小时还可以大幅度地压缩,也就是远不到10年,因此至少需要10年是不成立的。
看一遍三十六计。只需要五分钟。
在战争中成长为可以领导百万雄师的军事家,需要二十年。
这老师的言论夸张了。
C语言语法其实并不难,学习这块花不了太多的时间,难的是它所牵扯到的计算机软硬件技术与原理,因为当你用C语言编程解决实际问题时,由于C语言比较偏底层,你需要关注大量的技术细节,因此,掌握与待解决实际问题相关的软硬技术与原理,是逃不掉的学习任务,这才是难的地方。
另外,不要总想搞个大新闻嘛。
一名老师发表的(讲不定他只是随口一说的)某个言论,怎就推出了“说明我国985水平的名不副实”这个结论?