技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 关于语言的选择-选易用的

关于语言的选择-选易用的

浏览:1899次  出处信息

     关于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手册就够了….

     有人会问, 一门很简单的语言, 学起来这么简单, 那后续怎么成长啊?

     或许人性都是如此, 觉得掌握了复杂的东西会比较吊, 然而他们却忘记了, 还是我刚才的观点, 语言只是工具, 你的成长应该是你在使用这些工具解决问题的过程中, 解决问题的经验的成长, 而不是语言的使用技艺的增长.

     当你为了精通一门语言, 埋头闭关三年, 苦读各种书籍, 终于有一天学成出关的时候, 你却悲剧的发现, 这门语言已经不流行了… 不知道你作何感想? (写这段话的时候, 我脑袋里浮现出, 东成西就中的王重阳出关场景, 嘿嘿)

     所以, 不要本末倒置, 语言只是工具… 所以, 选择你会用的(学一个易于学习的), 尽快开始解决实际问题吧!

建议继续学习:

  1. 每个程序员都应该学习使用Python或Ruby    (阅读:16099)
  2. 敲击最多的键和编程语言语法    (阅读:5571)
  3. 为什么Lisp语言如此先进?(译文)    (阅读:5486)
  4. 编程语言的选择很重要    (阅读:4189)
  5. 编程语言的可读性    (阅读:3861)
  6. PHP很烂?我的看法    (阅读:3541)
  7. 几种计算机语言的评价(修订版)    (阅读:3211)
  8. php语言漫谈    (阅读:3095)
  9. 分清“语言/规范”以及“平台/实现”,以及跨平台.NET开发    (阅读:3017)
  10. 为什么我喜欢Lisp语言    (阅读:2947)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1