C/C++培训
达内IT学院
400-996-5531
想必只要是以C++作为启蒙语言的程序员,只要工作常用不是C++,都会对重新使用这门“万能”的语言抱有一丝恐惧。以C++作为初学语言甚至影响到一部分新手程序员去学习其它语言的信心。
C++之父Bjarne Stroustrup
如果把编程语言比作程序员的工具箱,那么C++这个工具箱无疑是目前我们接触的主流语言中最大、最沉的一个。
为什么会这样?举个不恰当的例子,现在你要把一颗钉子锤到木板里,其它语言的工具箱会直接给你一把锤子,你直接用就行了;而在C++的工具箱里,你会找到好几把锤子,作为初学者第一反应肯定是懵比的,怎么选?是不是用哪一把都可以?然后你才发现每把锤子还附带了一页说明书,里面的内容大致是这样的:“当钉子为XX型号,木板材质为XX时,请使用这把锤子”,这个时候你认真阅读每一把锤子的说明书,直到其中一把锤子的说明书写着:“这把锤子是一把通用的锤子,无论是什么型号的钉子、什么材质的木板,都可以用这把锤子”。
再举一个例子,《孔乙己》一文中曾有一句经典的话:你可知道“茴”字有几种写法?
在C++里面,尤其从C++11之后,你可以这么问:你可知道数组的初始化有几种写法?你可知道vector的构造函数有多少种?你可知道...
作为初学者,很少有人不被C++那复杂的语言细节、“灵活性”、繁多的选择所困惑,初学者很难知道当他碰到一个问题时,解决这个问题的最佳实践是什么。
作为初学者,很少有人在第一次看到数十屏的编译错误时,能准确说出自己到底错哪儿了,初学者很难从C++的编译错误信息中快速发现自己的编码问题。
可以先抬头看看其它的编程语言
现在仍然在写C++的程序员,或曾经被C++伤害过的程序员,如果你们长期在使用单一的编程语言,且接触其它编程语言不多,那么我建议各位可以先放下手头的工作,抬头看看最近几年编程语言的发展以及一些新的编程语言。
最近两年,对整个程序员社区贡献最大的语言无疑就是Golang(下文简称Go),不少程序员可能对社区谈起Go这件事已经免疫了,甚至每次看到就会心想“怎么又是它”,然而这才说明这门语言带来的革命性变化。
Go语言吉祥物Gopher
自从Go语言出现后,“协程”这种原本严重依靠程序员脑力去设计的编程模式突然变得唾手可得。就正如下面的漫画中提到的,Go语言的出现让原本多线程、多进程编程的专家显得更普通了。
当人们都在朋友圈歌颂《人民的名义》,在各大评分网站不吝对《摔跤吧!爸爸》竖起大拇指的时候,我们都想凑个热闹;而这种心态,也应该放到对编程语言的学习上。其它的新兴语言(或某些语言的新版本)也会带给你耳目一新的感觉,例如Python 3,Rust,Haskell等。
这些新的编程语言不但学习成本远远低于C++,而且它们会消除你在程序设计上的一些桎梏,可能还会让你在工程设计时得到极大的启发,在更短时间内编写出更高性能、易维护的程序。
最近的明星语言从诞生之初,就很注意新手文档、API文档等手册,一周之内你就能掌握新编程语言的大概,而且这个过程还很有趣,与啃《C++ Primer》可不一样。
现在不写C++的也可以回头看一看
我们前面不是还在说C++“坏话”吗,怎么现在又转变态度了?
C++这门语言的描述能力是目前我见过几乎最强的,它的复杂性一方面来自于“要兼容C语言”这个想法的包袱,一方面来自于其几乎要求无所不能、对程序行为最后一丝的控制能力。
在重新回到C++的时候,我们应该从容易的地方下手,例如声明变量总是用auto,使用指针总是用shared_ptr,要用数组的时候总是用vector(而不是自己new一个数组),故意不用函数重载而总是给函数不同的名字等,我们不需要一开始就面面俱到,让自己在每个细节一开始就做到最“高效”。重回C++我们不需要那么累,就往傻瓜喜欢去往的方向走就行,而显然C++也是在往这个方面努力的。
所以到最后,总结一下就是,学一门新的语言没那么难,多抬头看看世界,感受一些新的编程语言设计上的巧思;重回C++也没那么难,不要一开始就要求太高,往容易的方向去,再通过不断学习别人的代码吸收最佳实践。
这才是21世纪能用好语言工具箱的程序员。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved