要不要使用新技术 - 程序员职业规划——程序视界 - 博客频道 - CSDN.NET
那时,天下人的口音、言语,都是一样。他们往东边迁移的时候,在示拿地遇见一片平原,就住在那里。他们彼此商量说:"来吧!我们要作砖,把砖梢头了。"他们就拿砖当石头,又拿石漆当灰泥。他们说:"来吧!我们要建造一座城和一座塔,塔顶通天,为要传扬我们的名,免得我们分散在全地上。"耶和华降临,要看看世人所建造的城和塔。
耶和华说:"看哪!他们成为一样的人民,都是一样的言语,如今既作起这事来,以后他们所要作的事,就没有不成就的了。我们下去,在那里变乱他们的口音,使他们的言语彼此不通。"于是,耶和华使他们从那里分散在全地上;他们就停工不造那城了。因为耶和华在那里变乱天下人的言语,使众人分散在全地上,所以那城名叫巴别(就是"变乱"的意思)。
这是《圣经·旧约·创世记》第十一章的故事——巴别塔和变乱口音。我引用这个故事,是想说:"言语和沟通是成就事情的一大障碍"。非但建造通天塔如是,对于软件开发,也是一样的道理。
我拿巴别塔譬喻软件开发,看起来有点风马牛不相及,实则其致一也,古今同也。
扯淡完毕,来聊聊当你所用技术有了新发展后可能会发生的事儿吧。
C++11是一门全新的语言?
看我博客的朋友们都知道,我最熟悉的语言是C++,这一点我在"程序员这样优化简历,一投制胜"一文中也提及过。然而,十来年了,我一直都在用C++98……想起来真是汗颜,C++03我都不了解……更别说C++11了……那天我女儿听说了这件事,就用冰棍里面的棍棍编了把扇子送给我遮脸,这事儿就不再提了。
我决定学习C++11还是因为我的第一本书《Qt on Android核心编程》的一个非常认真非常严谨的读者(致谢致谢致谢),他给我来信,说我这本书有一大半的篇幅在讲Qt基础,讲得非常好,比市面上的Qt书都好,但有一个缺点:就是没有讲C++11在Qt里的应用。
我看了信很是汗颜,那是2014年了吧,我居然只是听说而从未去了解过C++11到底是几个意思。当时我也不好意思说我不懂,只说改版时会加进去。然而到现在也没改版……我也很少用Qt了,也没改版的动力了……
不过呢,我还是下了决心了解了一下C++11,决心引入到在做的产品里。然后呢,还准备录一个《C++11 in Qt》的视频课程,要给自己个理由去学习新技术,还要把新技术用起来,不然知道、了解等于扯淡——虽然我现在扯淡惯了,还是会不好意思的。
我这篇文章其实是来扯淡的,C++11只是个引子,所以不会针对C++11相对C++98或C++03的改变来细谈,想了解的Google吧(度娘也行——当然作为程序猿你可能是拒绝度娘的)。
C++11里引入了初始化列表、统一的初始化模式、Range-based for loop、线程、自动类型推断(auto和decltype)、lambda表达式等等新特性,组合使用它们,可以让你的代码神鬼难读,你可能觉得这是C++标准委员会和Bjarne Stroustrup故意搞的巴别,特意来变乱程序员的语言的。My God,终于和文章开始的"巴别塔和变乱口音"联系上了吧,别说我不着边际了,现在我要擦干眼泪来show代码了:
auto it = m_msgHandlers.find(strCommand); if (it != m_msgHandlers.end()) { for_each(it->second->begin(), it->second->end(), [&message](MessageHandler*&handler){ handler->handleMessage(message); }); }
你觉得上面这段代码好读吗?我是觉得不太好读,我的几个同事看了这段代码第一反应也是不理解——这都什么玩意儿啊这!不过如果你用过Scala的函数式编程,就会感到很亲切。
Read full article from 要不要使用新技术 - 程序员职业规划——程序视界 - 博客频道 - CSDN.NET
No comments:
Post a Comment