你们用多久学会了C++?
如何学习编程语言(一):一个小时学会C++? 某天上课的时候听到一个同学说,“C++其实只要一个小时就学会了”。
当时我没说什么,只是脸上的表情有点不自然。
那个讲课的老师是个ED(Enterprise Developer),那同学的发展方向也像是一个ED。而他这句话,令我表情不自然的原因貌似就是关于语言学习的问题。
学习一个语言究竟要多久?究竟该如何学习一门编程语言?
Haskell Wiki上有一篇关于Haskell入门介绍,貌似叫做“十分钟学会Haskell”,可是那篇文章费了我很久的时间也没有能够看懂多个大概。然后等到在学校图书馆找到一本《Real World Haskell》后,花了三天时间没有写出一行代码,单只是在那里理解静态多态类型是什么,然后后来遇到模式匹配也卡壳很久,到了Monad就已经决定放弃了,转去回头看Scheme了。
或者是我理解东西理解起来有点慢吧。
可是,一个小时,对于C++这么庞大而复杂的语言来说,真的不知道是什么概念。
我带过新手,初入门的时候,大概用了一个月的时间,学习C语言,他能够理解到了基本控制结构和数组。然后就看他就不太怎么继续的下去了。而即便是接触过其他命令式编程语言甚至是C语言的老手,接触C++然后并学会的话,也不知要多久:至少从非花括号系的语言转换过来适应语法就应该要不止适应一个小时吧,从C语言过来也要理解C++加入的那么多非OO相关的新元素(常类型、引用语义等等,这些概念不是一般的耗时)。
嗯,好吧,你不是新手,你也用过花括号语言,你了解OO,或者直接说你就是一个无敌了的Java或者C#的高阶ED而且还有C语言编程基础的那种。但如果你是新入门C++的话都很难保证一个小时学的完。(好吧,我可能会把ED的重视工程应用而忽略高阶应用的特长给忽略掉,那样的话他只要对比一下某些东西有什么不同就可以把Java/C#的习惯移植过来了。)除非能够在短时间内了解C++强大的符号体系和运算符重载的威力,当然,不要忘了模板。
你也许会说,那又怎么样?都不在话下的:这些放到我脑袋里面就跟玩儿似的全部都给保存下来了,自带扫描仪和OCR系统外加高容量高速度存储的人你比得过吗?
好吧,那么,试问下,泛化类型你需要理解多久?traits技法你需要理解多久?编译期生成/运行代码你需要理解多久?如果说你在一个小时之内搞得定,OK,你赢了。