2 options
Expert C++ : Become a Proficient Programmer by Learning Coding Best Practices with C++17 and C++20's Latest Features.
- Format:
- Book
- Author/Creator:
- Hahn, Marcelo Guerra.
- Language:
- English
- Subjects (All):
- C++ (Computer program language).
- Physical Description:
- 1 online resource (605 pages)
- Edition:
- 2nd ed.
- Place of Publication:
- Birmingham : Packt Publishing, Limited, 2023.
- Biography/History:
- Hahn Marcelo Guerra: Marcelo Guerra Hahn, With over 18 years of experience in software development and data analysis, Marcelo Guerra Hahn is a seasoned expert in C++, C#, and Azure. As an Engineering Manager at Microsoft C++ Team and former leader of SoundCommerce's engineering team, Marcelo's passion for data and informed decision-making shines through. He shares his knowledge as a lecturer at esteemed institutions like Lake Washington Institute of Technology and University of Washington. Through this book, Marcelo aims to empower readers with advanced C++ techniques, honed by real-world experience, to become proficient programmers and skilled data analysts. Tigranyan Araks: Araks Tigranyan is a passionate software engineer at Critical Techworks, with an unwavering love for the world of programming, particularly in C++. Her dedication to crafting efficient and innovative solutions reflects her genuine passion for coding. Committed to excellence and driven by curiosity, Araks continuously explores new technologies, going above and beyond to deliver exceptional work. Beyond programming, Araks finds solace in sports, with football holding a special place in her heart. As an author, Araks aspires to share her profound expertise in C++ and inspire readers to embark on their programming journeys. Asatryan John: John Asatryan, the Head of Code Republic Lab at Picsart Academy, seamlessly blends his academic background in International Economic Relations from the Armenian State University of Economics with his ventures in technology and education. Driven by a genuine passion for coding, John's commitment to empowering aspiring developers is evident in his expertise in the field. His unwavering dedication to bridging the gap between education and technology inspires others to pursue their coding dreams. Grigoryan Vardan: Vardan Grigoryan is a senior backend engineer and C++ developer with more than 9 years of experience. Vardan started his career as a C++ developer and then moved to the world of server-side backend development. While being involved in designing scalable backend architectures, he always tries to incorporate the use of C++ in critical sections that require the fastest execution time. Vardan loves tackling computer systems and program structures on a deeper level. He believes that true excellence in programming can be achieved by means of a detailed analysis of existing solutions and by designing complex systems. Wu Shunguang: Shunguang Wu is a senior professional staff at Johns Hopkins University Applied Physics Laboratory, and received his PhDs in theoretical physics and electrical engineering from Northwestern University (China) and Wright State University (USA), respectively. He published about 50 reviewed journal papers in the area of nonlinear dynamics, statistical signal processing and computer vision in his early career. His professional C++ experience started with teaching undergraduate courses in the late 1990s. Since then he has been designing and developing lots of R&D and end-user application software using C++ in world-class academic and industrial laboratories. These projects span both the Windows and Linux platforms.
- Summary:
- Are you an experienced C++ developer eager to take your skills to the next level? This updated edition of Expert C++ is tailored to propel you toward your goals. This book takes you on a journey of building C++ applications while exploring advanced techniques beyond object-oriented programming. Along the way, you'll get to grips with designing templates, including template metaprogramming, and delve into memory management and smart pointers. Once you have a solid grasp of these foundational concepts, you'll advance to more advanced topics such as data structures with STL containers and explore advanced data structures with C++. Additionally, the book covers essential aspects like functional programming, concurrency, and multithreading, and designing concurrent data structures. It also offers insights into designing world-ready applications, incorporating design patterns, and addressing networking and security concerns. Finally, it adds to your knowledge of debugging and testing and large-scale application design. With Expert C++ as your guide, you'll be empowered to push the boundaries of your C++ expertise and unlock new possibilities in software development.
- Contents:
- Cover
- Title Page
- Copyright and Credits
- Contributors
- About the reviewers
- Table of Contents
- Preface
- Part 1: Under the Hood of C++ Programming
- Chapter 1: Building C++ Applications
- Technical requirements
- Building C++ applications
- Preprocessing
- Compiling
- Linking
- Low-level programming with C++
- Functions
- Data and memory
- Control flow
- Details of OOP
- Class relationships
- Summary
- Chapter 2: Beyond Object-Oriented Programming
- An introduction to OOP and the C++ object model
- Understanding objects
- Low-level details of objects
- High-level details of objects
- C++ object model
- State
- Identity
- Behavior
- Mimicking a class
- Working with classes
- Classes from a compiler perspective
- Initialization and destruction
- Copying objects
- Moving objects
- An lvalue reference
- Rvalue references
- Notes on operator overloading
- Encapsulation and the public interface
- Aggregation and composition
- Under the hood of inheritance and polymorphism
- Inheritance
- Polymorphism
- Virtual functions under the hood
- Classical design patterns
- The composite pattern
- The decorator pattern
- Design principles
- The single responsibility principle
- The open-closed principle
- The Liskov substitution principle
- The interface segregation principle
- The dependency inversion principle
- More UML in project design
- The sequence diagram
- Questions
- Further reading
- Chapter 3: Understanding and Designing Templates
- Motivation for using templates
- Function templates
- Syntax
- Instantiation
- Deduction
- Specialization and overloading
- Class templates
- Specialization
- Understanding variadic templates
- Examples.
- Exploring template parameters and arguments
- Template parameters
- Non-type template parameter
- Type template parameter
- Template template parameter
- Template arguments
- Traits
- Type trait implementation
- Optimizing algorithms using traits
- TMP and its applications
- Chapter 4: Template Meta Programming
- Back to basics (compile-time programming with templates)
- Compile-time evaluation using constexpr
- Constant expression-specified constructors (constexpr)
- SFINAE AND enable_if<
- >
- Argument substitution failure
- Disabling templates with enable_if<
- Type traits
- isFundamental
- isArithmetic
- isScalar
- isConst
- isVolatile
- isPolymorphic
- isAbstract
- is_signed
- Chapter 5: Memory Management and Smart Pointers
- Understanding computer memory
- Designing a memory storage device
- Understanding computer memory from a higher-level perspective
- An example of memory management
- Using smart pointers
- Leveraging the RAII idiom
- std::unique_ptr
- std::shared_ptr and std::weak_ptr
- Garbage collection
- Using allocators
- Types of allocators
- Part 2: Designing Robust and Efficient Applications
- Chapter 6: Digging into Data Structures and Algorithms in STL
- Sequential data structures
- STL containers
- Iterating containers
- Concepts and iterators
- Understanding concepts
- Using iterators in C++20
- Node-based data structures
- Graphs and trees
- Trees
- Graphs
- Hash tables
- Algorithms
- Search algorithms
- Sorting
- Chapter 7: Advanced Data Structures
- B-trees
- Searching
- Insertion
- Deletion.
- Implementation details of std::unordered_map
- How std::unordered_map organizes element storing and how elements are inserted into or searched in std::unordered_map
- Hash functions and strategies that are used to implement them
- Digit selection
- Folding
- Using modulo
- Collisions and how they are handled
- Heaps and their applications
- Advanced lists
- Skip lists
- XOR lists
- Chapter 8: Functional Programming
- Functional programming revealed
- Using ranges
- First-class and higher-order functions
- Why use functional programming?
- Principles of functional programming
- Pure functions
- Delving more deeply into recursion
- Head recursion
- Tail recursion
- Metaprogramming in functional C++
- Chapter 9: Concurrency and Multithreading
- Understanding concurrency and multithreading
- Processes
- Threads
- Working with threads
- Waiting for threads
- Using std::jthread
- Passing arguments to the thread function
- Managing threads and sharing data
- Sharing data
- Protecting shared data using a mutex
- Avoiding deadlocks
- Designing concurrent code
- Introducing coroutines
- Chapter 10: Designing Concurrent Data Structures
- Thread safety
- Lock-based concurrent data structures
- A thread-safe singleton pattern
- Synchronized counters
- Concurrent stacks
- Lock-free concurrent data structures
- Using atomic types
- Operations on atomic types
- Lock-free stacks
- A lock-free queue
- A lock-free hashtable
- A lock-free set
- More operations on atomics
- Chapter 11: Designing World-Ready Applications
- Design patterns.
- Singleton
- Factory
- Adapter
- Composite
- Observer
- Command
- Applying design patterns
- The problem
- Trade-offs
- Systemwide impact
- Users
- Using domain-driven design
- An example of a real-world project
- Chapter 12: Incorporating Design Patterns in C++ Applications
- Design patterns in game development
- The singleton pattern
- The factory pattern
- The flyway pattern
- Design patterns in data-intensive applications
- The proxy pattern
- The iterator pattern
- Design patterns in enterprise applications
- SOA
- Chapter 13: Networking and Security
- Introduction to networks, the OSI model, and network programming using sockets
- The OSI model
- Network applications under the hood
- Programming network applications using sockets
- Understanding network protocols
- Designing an echo server
- Securing applications
- Securing network applications
- Chapter 14: Debugging and Testing
- Understanding the root cause of an issue
- RCA overview
- Prevention is better than cure - good coding behavior
- The uninitialized variable problem
- Side effects in compound expressions
- Mixed signed and unsigned problems
- Order of evaluation problem
- Compile-time checking versus runtime checking
- Avoiding memory leaks
- Debugging programs
- Tools for debugging a C/C++ program
- GDB overview
- Examples of GDB
- Setting breakpoints and inspection variable values
- Practical debugging strategies
- Static and dynamic analysis
- Static analysis
- Dynamic analysis
- Testing, TDD, and BDD
- Unit testing
- TDD
- BDD
- Further reading.
- Chapter 15: Large-Scale Application Design
- The introduction of large-scale, cross-platform project organizing
- Large-scale, cross-platform project organization in C++
- A large-scale, cross-platform project in C++
- Best practices and strategies for managing a large-scale, cross-platform project in C++
- Horizontal and vertical scaling
- Horizontal scaling
- Vertical scaling
- Scaling C++ applications
- Horizontal scaling in C++
- Vertical scaling in C++
- Designing data-intensive applications
- Data structure
- Data processing
- The main function
- Part 3: C++ in the AI World
- Chapter 16: Understanding and Using C++ in Machine Learning Tasks
- Introduction to AI
- Computer vision
- NLP
- Knowledge reasoning
- ML
- Understanding ML
- Designing an algorithm that learns
- Categories of ML
- Applications of ML
- Neural networks
- Clustering
- Regression analysis
- C++ and ML
- Chapter 17: Using C++ in Data Science
- Introduction to data science
- C++ example
- Data capturing and manipulation
- Data cleansing and processing
- Applying machine learning algorithms
- Data visualization
- Chapter 18: Designing and Implementing a Data Analysis Framework
- Using and processing statistical data types
- Working with tabular and rectangular data
- A complete ETL pipeline design strategy
- Index
- Other Books You May Enjoy.
- Notes:
- Description based on publisher supplied metadata and other sources.
- ISBN:
- 9781804616123
- 1804616125
- OCLC:
- 1396236203
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.