My Account Log in

2 options

Expert C++ : Become a Proficient Programmer by Learning Coding Best Practices with C++17 and C++20's Latest Features.

EBSCOhost Academic eBook Collection (North America) Available online

View online

O'Reilly Online Learning: Academic/Public Library Edition Available online

View online
Format:
Book
Author/Creator:
Hahn, Marcelo Guerra.
Contributor:
Tigranyan, Araks.
Asatryan, J. A. (Jon A.)
Grigoryan, Vardan.
Wu, Shunguang.
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&lt
&gt
Argument substitution failure
Disabling templates with enable_if&lt
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.

Find

Home Release notes

My Account

Shelf Request an item Bookmarks Fines and fees Settings

Guides

Using the Find catalog Using Articles+ Using your account