昨天进燕山大学编程爱好者 QQ 群,看到有很多同学在学 C++ ,我当然是不喜欢了,因为我是做 Web 开发的嘛。所以怀着猥琐的心情,今天写篇傻傻的文章,来黑一下 C++ 。
Peter 你有资格聊这个吗?我是研一(2006)那年开始全职用 C 语言开发嵌入式系统,(我的一个 C 语言项目,click here )研二开始就接触 C++ 了,用 Qt(一套 C++ 编程框架) 来写。09年毕业后第一份工作就是 “Qt Developer” 在中关村一家公司,叫做红旗 Linux 。全职做 C++ 一共9个月,项目代码在这里。我不是 C++ 大牛,今天我也不从很深的技术角度来黑 C++ ,而是给你举出很多实际的例子,论证一下,从大学生职业发展的角度来说,C++ 是不适合的。
传统 IT 公司,通信公司,IT 咨询公司,新兴互联网公司,这些公司类型是有差异的。前几天我在北京跟 ThoughtWorks (他们是高端咨询公司)的朋友聊天,他说我们这里的薪水比传统 IT 公司要高,但是跟互联网公司真是没法比。什么是互联网公司?国内的 BAT ,国外的 facebook,twitter,google 。Twitter 最早用 ruby ,facebook 用 php,google 主推 python。同时当然大家都会用大量的 Javascript 了。有谁是主要用 C++ 的吗? C++ 在传统 IT 公司用的比较多,主要应该是微软带的,但是看看微软惠普这些老恐龙们现在在干什么?一边在裁员,一边在做互联网转型。
我自己入门面向对象编程是从 C++ 语言这里,现在看来是一个巨大的错误。Why? 因为 C++ 很复杂,C++ 是我自己了解的语言中细节最为庞杂的一种。如果我用 ruby 或是 python 入门编程,学起来会容易的多。为啥 C++ 那么复杂? 在早年需要考虑硬件资源利用率的时候,可以说它很强大。现在只能说弱智。说说我自己做 C++ 的经历,简单来讲两面受气。一方面你要去实现业务逻辑,要让客户满意,这个是应该的;但是同时还要哄好手里的硬件,不然的各种编译错误运行时错误搞死你。如果用 ruby/python 这样的高级语言,程序员只需要关心业务逻辑,讨好机器的工作在底层完成,所以给程序员的是更加接近于人话的语言接口。
中国很多学校是用 C/C++ 来教编程入门,这个是错误的,晦涩的语法直接把大家的兴趣干掉。 MIT 用 python ,UCB 用 ruby 编程,大家可以 google 一下,看看他们的视频课程,非常的简单,精力都用在实现自己的想法了。好像开车,你首先应该学习的时如何使用方向盘,而不是直接就研究如何修车。做事情应该由粗到细,而不是先不管方向往深处钻,如果你方向错了呢?那回头损失岂不很大。
我的 C++ 水平有限了,现在我来说说我的几个朋友的故事。
A 君,清华大学硕士,对 C++ 情有独钟,真正的技术大牛,我很敬重的人,写过一本 C++ 的书。2010 年我们都在一家公司工作,他当技术总监,公司是互联网性质,有 php 有 python 但是就是没有 C++ 。他在那家公司任职两年,离职后兴趣就转了 nodejs 。后来去国外工作,做 C++ ,很没意思,但是那次他回来我在北京请他吃烤串, 问他未来搞什么?他还是坚持说是 C++ 。前几天,他又来秦皇岛找我玩,跟我说:”靠,我这个出国出错了,把我的方向都搞乱了“。现在他是一个3D打印机公司的联合创始人和技术负责人,但是也很少用 C++ 。 他说:”迷茫啊.. 我还是要去国外读一个计算机的学位“,话说他比我还大一岁呢!
B 君,我曾经的同事,也曾经是国内排名第一的计算机系的老师,十几年 C 语言经验。2011 年我跟他在一起工作的时候,我就逗他:”别搞 C 了,跟我学 Ruby On Rails 吧,互联网意味着开放和自由“,当时他没反应,我猜他的想法是:” Web 的那些东西都太肤浅,C 语言才有严肃的学术性“。后来2013年他家搬到了硅谷,受那里氛围的影响,他先学 RubyOnRails 一年多,现在又搞 meteorjs(这两个都是 web 的) 。C 方面的研究和写书方面的事情,据我所知,他都慢慢放下了。顺便把 C 语言也给黑了吧,尽管 Linus Torvalds 到现在依然是我的偶像。
总的意思就是让大家别学 C++/C 这些底层语言,而去拥抱互联网,一个既有钱又有梦想的领域。开发 iphone 应用原来用 OC 这个是很类似于 C++ 的一个东西,不过这是历史遗毒了,貌似苹果公司正在用 swift 来纠正这个错误。最后说一下,我叫 Peter ,github 账户是 https://github.com/happypeter 上面有我的邮箱,欢迎大家来信跟我交流。
欢迎所有朋友加我微信:happypeter1983