要不要使用新技术 - 程序员职业规划——程序视界 - 博客频道 - CSDN.NET



要不要使用新技术 - 程序员职业规划——程序视界 - 博客频道 - 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

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts