Project ideas to become good at C++
我想在工作中加入C++团队。他们的工作是用C++编写CGIs(主要但不限于)。我知道基本的C++。阅读C++BooLoad问题列表,我从朋友那里得到了三本书(实际上我有第一本书)。
百万千克1C++编程语言——BjARNE StruouStup——供参考百万千克1百万千克1C++模板的完整指南-戴维VANDEOORDE/NICOLAI M.约瑟夫蒂百万千克1百万千克1现代C++设计——Andrei Alexandrescu百万千克1百万千克1
我想知道是否有任何项目或想法,你可以告诉我,我可以实施,以便我更好地在它。
百万千克1百万千克1
我需要的设置。我有一台MacBook和一台个人蹩脚的UbuntuDev服务器。如果需要的话,我可以安装任何操作系统。
百万千克1百万千克1
你能给我一些关于如何开始写CGI(或任何教程)的建议吗?
百万千克1
谢谢。
AJ公司
让我添加到你的阅读材料清单中,C++ FAQ Lite绝对是学习C++的最重要的资源。它既有助于老年人参考,也有助于初学者入门。我强烈建议您尽可能多地阅读其中的内容,并在加入实际项目之前尝试一些小例子来演示上面提到的每个特性。
一旦您觉得语言有点舒服,那么我建议您看一下GITHUB,看看是否有任何需要帮助的C++项目。对于计算机生成的图像或公共网关接口,这两者都是语言无关的。这些可以用任何编程语言编写,尽管不同的编程语言将有不同的现有库来处理它们。我建议你仔细阅读这个主题,以便更好地理解标准/算法(取决于你的意思)。一旦您对这个主题更加熟悉,您应该能够更好地理解相关库的文档。
至于开发环境,我发现Ubuntu是最容易配置的,因为几乎所有的设置都可以简化为一系列
1 | sudo apt-get install build-essential |
无论使用哪种操作系统,您可能都希望在可预测、可复制的环境中构建和运行代码。我还应该指出,您开发的环境不需要与实际构建和运行代码的环境相同。例如,您可以在Mac OS X上编写所有代码,但是在一个Docker容器中构建和执行您的代码,该容器使用预设的、可复制的构建/运行配置运行一个Ubuntu实例。
在C++中实现CGI的资源方面(和其他代码),请查看我的网站上的C++资源页面。它列出了用于网络、计算机图形和其他C++任务的多个工具,以及诸如Boost和Qt之类的通用库。
在C++中变得更好的最好方法是…编写C++代码。从没有任何外部依赖性的简单Raytracer开始(只需将输出写入PPM文件)。
在你有了更多的经验之后,再建立这个基础。返回,重构代码,添加更复杂的功能,第三方库(例如,编写一个jpeg输出,开始使用boost位,比如智能指针)。
冲洗,重复。
answer to the title of the question :) assuming C++03
从bjarnes网站:
1。新学问
2。使用C++的原理和实践(应该给出关于短程序/项目的想法)
三。C++的学习与教学
是的,如果你必须学习好的C++,那就有一个好的评论员在你的身边。将相关标准的副本放在手边(open-std.org)
读Scott Meyers的《有效C++》一书。这是非常好的,并且会在最佳实践和要避免的事情上给你很好的建议。
在我看来,如果你用
- http://www.boost.org/doc/libs/1_41_0/doc/html/thread.html
- http://www.boost.org/doc/libs/1_43_0/libs/spirit/phoenix/doc/html/index.html
- http://www.boost.org/doc/libs/1_43_0/libs/numeric/ublas/doc/index.htm
- http://www.boost.org/doc/libs/1_42_0/doc/html/proto.html
您可以进入高级的C++主题,比如表达式模板。这个项目甚至不需要做任何有用的事情,只要您能够将各个部分组合在一起以产生一些输出。
如果你知道一些C++,你可以有很多乐趣,推动语言限制与凤凰单独。
就想法而言,CGI在数学上可能很重,比如用表达式模板编写并行集成算法。
例如,您可以创建如下语法:
1 | integrate(x*x + sin(x), 0, 100, threads(4)); |