C ++回到今天
在1999年我去大学之前学习的时候,C ++就是狂野的西部。令人困惑的语法,重度类c指针使用,并且很难调试。小编c++学习群825414254获取c++一整套系统性的学习资料还有数十套pdf
如果你足够幸运地得到你的应用程序编译,你会发现调试和测试是一场噩梦。API和平台之间几乎没有一致性。哦,我提到我们刚刚有56K拨号调制解调器,所以没有谷歌或Stack Overflow可以让你即时访问你需要学习的所有帮助吗?
干预年
Java从1999年开始占据主导地位。这是整整一代英国计算机科学家学到的东西 - 从命令行工具创建到UI代码,屏幕共享应用程序,再到使用EJB和Servlet的企业应用程序开发(这些都是非常详细的文档记录)当时我的MarkLogic同事Jason Hunter!)。
Java在语法上比C ++简单得多。它有自己的内存管理并通过指针而不是值传递。它有一个跨平台的API,可以满足您所需的一切。后来,通过Java Community Process添加了用纯Java编写的扩展 - 从而跨平台编写。
慢慢地,随着时间的推移C ++ - isms悄悄回来。类型化的集合回应了C ++标准模板库(STL)。程序员需要更多的力量。一些异教徒甚至希望他们具有C ++的强大功能和性能以及Java的简单性。
为了公平对待Sun Microsystems,现在是Oracle,他们在应对这方面做得非常好。Java一直坚持企业应用程序堆栈,从未用于系统编程(无论如何都在移动电话之外),浏览器中的applet因安全问题而死亡,而UI中的Java现在几乎与基于Eclipse的IDE同义,而不是纯Java Swing。
同时,对快速,机器代码编译,轻量级语言(如C ++)的需求经受住了时间的考验。
现代C ++
我必须承认,虽然我知道20多种计算机语言但回归C ++的想法让我充满了恐惧。更糟糕的是,我正在开发的项目也需要API的C包装器!哎哟!
与此同时,C ++已经更加有效地标准化并且不断发展。
标准组织认可了开发人员对Java的喜爱。各种低级操作系统安全问题意味着对语言创新的需求增加,以实现安全性并防止由于误用语言功能而导致的错误。
Smart Pointers绝对是一个神奇的天赐之物。当std :: unique_ptr <SomeType>对象作为变量的对象超出范围并被销毁时,它将删除其包装指针所使用的内存。非常类似于Java,但没有垃圾收集的延迟。
std :: shared_ptr <SomeType>对象将此扩展到多个对象可能具有对指针的引用的位置。非常像Java的参考。
没有更多悬挂指针 - 正确使用时。
具有一致性的迭代器以及使用STL模式定义自己的迭代器是一个值得欢迎的补充。更好的是,可以针对集合类的成员运行独立于集合的聪明算法。这些库的数量不断增加。
移动语义,我仍然试图让我的头脑 - 但它消除了旧的C ++编程习语的许多对象创建 - 复制 - 破坏开销。这真的让代码飞了起来 - 但需要一点点让你的头脑!特别是通用引用 - 即移动构造函数的方法:MyClass :: MyClass(const SomeType && other);
甚至还有std :: function <ReturnType(CallParamType1,CallParamType2,...)>函数指针包装器。
Boost库的工作有效地为语言特性创建了新的思想,最流行和最有用的思想成为下一个ISO C ++标准的一部分。
我们在2011年对C ++ 11进行了重大修订。这引入了上述许多语言功能,并对其进行了标准化。STL现在也是语言的一部分,并且普遍存在。STL并不觉得这种语言被黑客攻击,而是它的核心部分。
最佳实践也已形成并成为硬性规则。Scott Meyers的有效现代C ++(像语言大师这样的Jason Hunter!)是一本书的重写,是我个人的C ++习语和最佳实践。
此外,Martin Reddy的API Design for C ++必须是关于API设计主题的最佳书籍 - 对于任何语言 - 我都读过。我强烈建议任何计算机科学家,特别是那些即将开始大学...(你知道你是谁!)
通过实际例子,这些难以学习的课程非常容易理解和学习。这些示例清晰简洁 - 它们不会尝试教您C ++,而是更正确地使用它。因此,任何有经验的程序员都可以很容易地使用它来获取或重新学习C ++,就像我一样。
感谢这些经验和这些书籍,我学到了创建自己的C ++ API所需的最佳实践。这是MarkLogic的MLCPlusPlus客户端API项目。我还没有完全在那里,但他们已经允许我应用现代C ++ 11功能并创建一个非常高性能的API。
我通过继承最佳实践,迭代器模式,异步任务执行和同步,简单的API设计,甚至使用SWIG的跨语言绑定,应用了基本结构和类布局的课程!
我现在不会害怕任何需要C ++的项目......当你意识到我上个月一直在努力的事情时,这是最好的......但是直到2017年才能讨论这个问题!
结论
学习C ++。现在。做它!!!
现在这是一种绝对的快乐。我这样做比Java更有趣。Waaaaaaaay比JavaScript更有趣。
我敢说,比XQuery更有趣。我其实非常喜欢XQuery!
不要误解我有几天我想用棍子击败编译器死亡,但这通常是因为我太热情并且在尝试应用之前没有完全理解应用的最佳实践。从那时起。
C ++现在是一种很好用的语言。与90年代不同的是,非常可预测,一致,并且几乎不需要任何黑客或变通办法。
我完全建议你们再次学习C ++,并像我一样学会喜欢它。
网友评论