我正在寻找项目建议,这些建议会迫使我用先进的C++功能"弄脏自己".我说的是那些能充分利用语言能力的项目(STL甚至是提升(还没有使用它)).
为什么?因为我想学习,我想找到新的挑战.在工作中,事情开始变得无聊,真的.我习惯于经常遇到新事物,新想法和新功能.在大多数情况下,这不是遗留公司代码的情况,正如您可以想象的那样.而且,在这里查看一些问题和答案,深入研究模板的深度,共享指针以及所有我碰巧发现自己迷失的东西,不知道答案甚至更糟 - 甚至不了解正在发生的事情.
这就是为什么我正在寻找可以自己编写代码的东西,最好只使用C++(也许是+ boost) - 命令行实用程序,请不要使用图形.我真的不想加入任何开源社区.我知道,查看其他人的代码很有帮助.但这就是我在工作中做了很多事情......不,谢谢.项目可以是任何有意义或无意义的东西,有用的实用程序或只是没有实际用途的东西.唯一的要求是,它会迫使我真正测试我的C++技能.或者至少用C++的基本知识进行编码应该是非常困难甚至是不可能的 - 我是那种对代码工作永不满意的人,所以我相信这会迫使我学习.但请记住,我是一个工作的人,我的时间有限,所以答案就像"编写自己的操作系统"
我应该编写什么来深入了解高级C++?
而且,不,我不是在开玩笑.一点也不.大约15年前我开始学习C++,而且我还在常规基础上学习新东西.
看看The Definitive C++ Book Guide and List并做出选择.
我推荐了Andrei Alexandrescu的现代C++设计和C++模板 Vandevoorde和Josuttis 的完整指南.仅这两个就足以让一个程序员在几个月甚至几年内获得新想法.(请注意,按照这个顺序阅读它们的优势在于,安德烈的书更薄,并且让你想要阅读另一本书,只是为了完全理解他写的东西.以相反的顺序阅读它们的优点是你不会经常迷路在安德烈的书中.无论你喜欢什么.)
您提到创建诸如“无用的实用程序”之类的东西。相反,我建议考虑一个对您个人有用的应用程序或实用程序,或者可能是您已经使用的应用程序的替代品,您可以根据自己的要求、工作流程、美观等进行设计。选择一些特定的应用程序或实用程序你想从这个项目中学到的东西,例如智能指针、boost、模板元编程、正则表达式、多线程、网络。然后研究如何使用所选技术来实现应用程序。只要有一些编码要做,你已经知道如何做,然后停下来,强迫自己思考如何用新的习惯用法来做。例如,尝试仅使用智能指针编写应用程序。
我发现,创建一个愚蠢的小演示应用程序的危险在于您没有任何动力去完成它。最好记住一个对您有用的工具的目标。这正是我目前正在做的事情:我有一个非常复杂的工作流程来导入照片、标记照片、重命名和编辑,因此我开始用 C# 和 WPF 编写一个应用程序来为我完成此操作。这给了我完成这个项目的动力。
强迫自己使用不熟悉的技术解决熟悉的问题是一个很好的学习工具。