背景
新手总会陷入选择困难症
分析
良好的设计需要项目经验,需要时间,新手在不明真相的情况下使用会本末倒置陷入非必要复杂设计细节的泥潭。大可使用轻轻轻量的语言或框架或一切工具,解决问题是当务之急,优雅不用急。自己用原始的,朴素的方法解决之,后面有问题自然会发现,经验有了再顺理成章使用设计过的东西
reference
这里引用鸟哥的一个文章,针对c++这种复杂设计语言的看法
首先, 这篇文章不是对@左耳朵耗子的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手册就够了….有人会问, 一门很简单的语言, 学起来这么简单, 那后续怎么成长啊?
或许人性都是如此, 觉得掌握了复杂的东西会比较吊, 然而他们却忘记了, 还是我刚才的观点, 语言只是你学习来解决你实际问题,
把你的想法变为实际的工具, 你的成长应该是你在使用它们解决问题的过程中, 解决问题的经验的成长, 而不是语言的使用技艺的增长.当你为了精通一门语言, 埋头闭关三年, 苦读各种书籍, 终于有一天学成出关的时候, 你却悲剧的发现, 这门语言已经不流行了…
不知道你作何感想? (写这段话的时候, 我脑袋里浮现出, 东成西就中的王重阳出关场景, 嘿嘿)所以, 不要本末倒置, 选择你会用的(学一个易于学习的), 尽快开始解决实际问题吧!