1 Star 0 Fork 0

zhensheng/Expert-Cpp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

Expert C++

Become a proficient programmer by learning coding best practices with C++17 and C++20's latest features(各位程序员,来了解一下C++17和20标准的新特性)

  • 作者:Vardan Grigoryan & Shunguang Wu
  • 译者:陈晓伟
  • 原文发布时间:2020年04月10日

翻译是译者用自己的思想,换一种语言,对原作者想法的重新阐释。鉴于我的学识所限,误解和错译在所难免。如果你能买到本书的原版,且有能力阅读英文,请直接去读原文。因为与之相较,我的译文可能根本不值得一读。

— 云风,程序员修炼之道第2版译者

本书主旨

  • 通过学习函数式编程、模板和网络等高级概念,设计专业的、可维护的应用。
  • 应用设计模式和最佳实践来解决实际问题。
  • 通过设计并发数据结构和算法提升应用性能。

本书概述

C++经过多年的发展,目前的最新标准为C++20。自C++11以来,C++语言不断的增强特性集。在新标准中,您将了解到一系列新特性,如概念、模块、范围和协程。这本书将作为学习错综复杂的语言、技术、C++工具和C++ 20新特性的指南,同时也会帮助你了解,在构建软件时如何应用他们。

本书将从C++的最新特性开始,然后转向高级技术,如多线程、并发性、调试、监视和高性能编程。本书将深入探讨面向对象的编程原理和C++标准模板库,并展示如何创建自定义模板。之后,将学习不同的方法,比如测试驱动开发(TDD)、行为驱动开发(BDD)和领域驱动设计(DDD),然后看看构建专业级应用程序所必需的编码最佳实践和设计模式。本书的最后,有关于人工智能和机器学习的C++最新进展的内容。

这本书的末尾,还有实际应用程序开发方面的专业知识,包括设计复杂软件的过程。

将会学到

  • 了解内存管理和C++底层编程,编写安全稳定的应用程序。
  • 了解C++20的新特性,如模块、概念、范围和协程。
  • 熟悉调试和测试技术,减少程序中的问题。
  • 使用Qt5设计带GUI的程序。
  • 使用多线程和并发性可以使程序运行得更快。
  • 使用C++的面向对象的功能开发高端游戏。
  • 使用C++探索人工智能和机器学习。

目标读者

这本书是为有经验的C++开发人员准备的,能将他们现有的知识进行升级,并完善在构建专业级应用程序方面的技能。

作者简介

Vardan Grigoryan 是一名高级后端工程师和C++开发者,拥有9年以上的开发经验。Vardan以C++开发人员的身份开始他的职业生涯,然后转到服务器端后端开发领域。在设计可伸缩的后端架构时,总是在耗时敏感的关键部分使用C++。Vardan喜欢在更深的层面上处理计算机系统和程序结构,通过对现有解决方案的详细分析和对复杂系统的精心设计,可以实现真正的卓越编程。

Shunguang Wu 是美国约翰霍普金斯大学应用物理实验室高级专业人员,分别在西北大学和美国莱特州立大学获得理论物理和电气工程博士学位。早期职业生涯中,在非线性动力学、统计信号处理和计算机视觉领域发表了大约50篇评论期刊论文。与C++的邂逅是在20世纪90年代末的本科教学中,从那时起,他就一直在学术和工业实验室使用C++设计和开发大量的研究和开发。这些项目都是跨平台项目,主要是Windows和Linux平台。

书评人简介

Lou Mauget 在密歇根州立大学(Michigan State University)主修物理时,使用软件设计了回旋加速器。之后,在IBM工作了34年,目前是堪萨斯州利伍德的Keyhole软件公司的顾问。Lou会使用C++、Java、JavaScript、Python和新语言进行了编程,几乎是个语言通。其目前的关注的领域有,响应式函数编程、容器、Node.js、NoSQL、地理空间系统、移动端,以及任何新的语言或框架。与其他人合著了三本计算机相关的书籍。他编写了两个IBM DeveloperWorks XML教程,并与其他人合作为IBM编写了几个J2EE认证测试。并且,他还是Packt Publishing等公司的书评人。

Scott Hutchinson 在加州奥克斯纳德领导着一个C++和F#开发团队。做了几年VB/VBA开发人员之后,他在2002年开始使用.NET框架。2016年之后,他的大部分开发工作都用C++完成。他是F# track on Exercism项目的导师,并在工作中作为团队教授F#函数式编程。他的主要关注函数式编程和机器学习。并且,他在假期时,会常在南加州的山区进行徒步旅行。

本书相关

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

Expert-Cpp 展开 收起
TeX
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhenshenglee/Expert-Cpp.git
git@gitee.com:zhenshenglee/Expert-Cpp.git
zhenshenglee
Expert-Cpp
Expert-Cpp
main

搜索帮助