06 Aug 12 关于语言的选择-选易用的
作者: Laruence( )
本文地址: http://www.laruence.com/2012/08/06/2681.html
转载请注明出处
首先, 这篇文章不是对@左耳朵耗子的C++的坑真的多吗?一文的反驳, 我只是在我的理解角度说一下我对语言选择的一些感悟.
关于C和C++的争论, 由来已久, 从当年Linus攻击C++是恐怖的语言的时候, 就一直没有停歇, 而就我自己来说, 我对C++的掌握还远远不够, 所以没有能力来从语言设计角度来对比(我在最初, 也尝试学过C++, 用过C++, 但后来发现, 我学不好, 用不好, 就放弃了). 所以我尽量避免在这个方面说错话.
诚然, C++引入了很多的新东西, 如@左耳朵耗子一文所说, 它确实是为了解决一些问题而设计的, 但是问题是我们需要么?
在我看来, 语言, 或者工具, 它是一个工具, 它的存在是为了让我们能使用它们解决问题. 从这个角度讲, 一个语言最大的优点应该是易于上手, 能被快速的掌握, 这样学习者才不会本末倒置, 花费巨大的精力在掌握”工具”的使用上.
当然, 古话也有云:”兵欲善其事必先利其器”, 然而C++相比C来说, 并没有扩展更多可适用的场景, 也没有提升性能, 更没有提高多少开发效率, 当然, 从OO来说, 能从设计理念上或多或少影响使用者, 提高代码的可维护性. 然而这不是必须的, 因为也有太多的成功的, 可维护性很高的C项目, Linux, Unix, Apache, PHP…….
我对语言的设计是有一些经验的, 在我们设计开发PHP的时候, 最最慎重的就是新语法的添加, 这个过程近乎苛刻, 一个新的语言特性, 往往预示着不兼容, 更多的误用的可能, 更大的学习成本. 所以本能上我们排斥一些新的语法. 这也是对简单的一种追求.
相比C, C++提供了更多的新的语法, 新的语言特性, 这也就是说, 需要更多的学习时间, 更大的学习成本. 举个例子, 大家看看C++ primer有多厚, 看完这些还不够, 因为还有很多的细节你可能会误用, 所以又有: “Effective C++”, “More Effective C++”, 哦, 还有STL, ” Effective STL”等等. 你真的愿意为了学习一门语言, 花费如此巨大的精力么?
如果你觉得学习一门高深的语言, 可以满足你自己的智商优越感, 那我无话可说, 但我还是要善意的提醒你, 即使你花了大半年, 学完了这些, 你还是什么都做不成, 因为语言还需要和实际结合, 要真正在实际中使用, 还有很多知识等着你: “Advanced Programming in the UNIX Environment”, ” Unix Network Programming” , 对于Windows的话, 那要看的书就更多了…
所以, 现在你还觉得你有那么多的时间学习所有的这些么? 假设你真的坚持你有时间, 那么好吧, 我再来提醒你一下, 你所学到的很多东西, 是你这个时候无法理解的. 因为你还没有实际解决问题的时候遇到一些设计模式上的经验, 所以你现在是看不懂那些设计模式, 或者一些看似很无用的功能的. 看吧, 多么矛盾, 学习高级语言需要实际项目经验, 而实际项目经验有需要你学习一门语言以后来掌握….
从这个角度上, 我觉得PHP和C很像, 我学PHP只买了一本书, 然而也没看完, 因为一个tutorials学下来, 我发现我已经学会了怎么解决当时的需求了… 现在对我来说, 一本PHP手册就够了….
有人会问, 一门很简单的语言, 学起来这么简单, 那后续怎么成长啊?
或许人性都是如此, 觉得掌握了复杂的东西会比较吊, 然而他们却忘记了, 还是我刚才的观点, 语言只是你学习来解决你实际问题, 把你的想法变为实际的工具, 你的成长应该是你在使用它们解决问题的过程中, 解决问题的经验的成长, 而不是语言的使用技艺的增长.
当你为了精通一门语言, 埋头闭关三年, 苦读各种书籍, 终于有一天学成出关的时候, 你却悲剧的发现, 这门语言已经不流行了… 不知道你作何感想? (写这段话的时候, 我脑袋里浮现出, 东成西就中的王重阳出关场景, 嘿嘿)
所以, 不要本末倒置, 选择你会用的(学一个易于学习的), 尽快开始解决实际问题吧!
分享到:
相关推荐
此外,多个高校及期刊也宣布“暂不接受任何大型语言模型工具(例如:ChatGPT)单独或联合署名的文章”,如在文中使用该工具,必须作出具体说明。 实测: 半个小时写完一篇7678字论文,最大问题是套话多 事实底是...
最后,《程序员的呐喊》还收录了他写的Google面试攻略,这篇文章可以说为无数应试者点亮了明灯。 《程序员的呐喊》讨论的都是程序员非常关注的热点话题,内容广泛,观点独到,非常适合广大程序员阅读参考。
当一篇文章被创建,删除或更新后,缓存失效机制可以自动(并且是智能的)处理,下面有两个可以设置的地方: •Enable cache compression (this will strongly decrease the disk space but could give some ...
《私域肖厂长-入局视频号11个月变现800万,我如何用视频号引爆私域》这篇文章主要讲述了一位名为肖厂长的创业者如何利用视频号平台在11个月内实现800万的变现。肖厂长是星辰教育的创始人兼CEO,同时也是“私域创富圈...
《观八骏图说》是唐代文学家柳宗元的一篇散文,文章通过讨论古代关于周穆王八骏图的传说以及人们对圣人形象的奇异性追求,提出了一个深刻的道理:不应以奇异的形象来衡量事物的本质。柳宗元在文中强调了事物本质的...
有些读过这篇文章的人觉得像这种方式提出一种新观点是一种有趣的尝试.其他人觉得似乎对自己不太了解的事情妄加评论会招来麻烦。所以,以防万一,我先澄清一下,我所写的这些不是针对Java的(我从来没有用过Java)...
HHVM是Facebook开发的高性能PHP虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题:1.HHVM到底靠谱么?是否可以用到产品中?2.它为什么比官方的PHP快很...
本篇文章将深入探讨Linux环境下的常用C函数以及如何编写Makefile,帮助你更好地理解和应用这些知识。 一、Linux常用C函数 1. 文件操作:在Linux中,C语言提供了大量的文件操作函数,如`fopen()`用于打开文件,`...
在这篇文章中,我们将详细介绍基于模板引擎Jade的应用,并提供相关的实践经验。 模板引擎Jade的基本概念 模板引擎Jade是一种基于JavaScript的模板引擎,它可以将模板语言转换为HTML语言,从而提高开发效率和页面...