Take a look at our C++ books. Shulph carries a great selection of C++ books, and we are always adding more.
Learn functional programming and build robust applications using the latest functional features in C++ Key Features Learn programming concepts such as loops, expressive code, and simple parallelization Understand the working of Lambdas and Currying and write Pure functions Explore event sourcing and other functional patterns to improve the efficiency of your applications Book Description Functional programming enables you to divide your software into smaller, reusable components that are easy to write, debug, and maintain. Combined with the power of C++, you can develop scalable and functional applications for modern software requirements. This book will help you discover the functional features in C++ 17 and C++ 20 to build enterprise-level applications. Starting with the fundamental building blocks of functional programming and how to use them in C++, you'll explore functions, currying, and lambdas. As you advance, you'll learn how to improve cohesion and delve into test-driven development, which will enable you in designing better software. In addition to this, the book covers architectural patterns such as event sourcing to help you get to grips with the importance of immutability for data storage. You'll even understand how to “think in functions” and implement design patterns in a functional way. By the end of this book, you'll be able to write faster and cleaner production code in C++ with the help of functional programming. What you will learn Understand the fundamentals of functional programming Structure your code by understanding the building blocks of functional programming Compare design styles in functional programming and object-oriented programming (OOP) Use the concept of currying to create new functions in C++ Become skilled at implementing design patterns in a functional way Get to grips with multithreading by means of functional programming Learn how to improve memory consumption when using functional constructs Who this book is for This book is for C++ developers who want to learn functional programming but have little to no knowledge of the paradigm. Although no prior knowledge of functional programming is necessary, basic C++ programming experience will help you understand key concepts covered in the book.
Make your WebAssembly journey fun while making a game with it Key Features Create a WebAssembly game that implements sprites, animations, physics, particle systems, and other game development fundamentals Get to grips with advanced game mechanics in WebAssembly Learn to use WebAssembly and WebGL to render to the HTML5 canvas element Book Description Within the next few years, WebAssembly will change the web as we know it. It promises a world where you can write an application for the web in any language, and compile it for native platforms as well as the web. This book is designed to introduce web developers and game developers to the world of WebAssembly by walking through the development of a retro arcade game. You will learn how to build a WebAssembly application using C++, Emscripten, JavaScript, WebGL, SDL, and HTML5. This book covers a lot of ground in both game development and web application development. When creating a game or application that targets WebAssembly, developers need to learn a plethora of skills and tools. This book is a sample platter of those tools and skills. It covers topics including Emscripten, C/C++, WebGL, OpenGL, JavaScript, HTML5, and CSS. The reader will also learn basic techniques for game development, including 2D sprite animation, particle systems, 2D camera design, sound effects, 2D game physics, user interface design, shaders, debugging, and optimization. By the end of the book, you will be able to create simple web games and web applications targeting WebAssembly. What you will learn Build web applications with near-native performance using WebAssembly Become familiar with how web applications can be used to create games using HTML5 Canvas, WebGL, and SDL Become well versed with game development concepts such as sprites, animation, particle systems, AI, physics, camera design, sound effects, and shaders Deploy C/C++ applications to the browser using WebAssembly and Emscripten Understand how Emscripten HTML shell templates, JavaScript glue code, and a WebAssembly module interact Debug and performance tune your WebAssembly application Who this book is for Web developers and game developers interested in creating applications for the web using WebAssembly. Game developers interested in deploying their games to the web Web developers interested in creating applications that are potentially orders of magnitude faster than their existing JavaScript web apps C/C++ developers interested in using their existing skills to deploy applications to the web
Discover Golang's GUI libraries such as Go-GTK (GIMP Toolkit) and Go-Qt and build beautiful, performant, and responsive graphical applications Key Features Conceptualize and build state-of-art GUI applications with Golang (Go) Tackle the complexity of varying GUI application sizes with a structured and scalable approach Get hands-on experience of GUI development with Shiny, and labs/ui, Fyne, and Walk Book Description Go is often compared to C++ when it comes to low-level programming and implementations that require faster processing, such as Graphical User Interfaces (GUIs). In fact, many claim that Go is superior to C++ in terms of its concurrency and ease of use. Most graphical application toolkits, though, are still written using C or C++, and so they don't enjoy the benefits of using a modern programming language such as Go. This guide to programming GUIs with Go 1.11 explores the various toolkits available, including UI, Walk, Shiny, and Fyne. The book compares the vision behind each project to help you pick the right approach for your project. Each framework is described in detail, outlining how you can build performant applications that users will love. To aid you further in creating applications using these emerging technologies, you'll be able to easily refer to code samples and screenshots featured in the book. In addition to toolkit-specific discussions, you'll cover more complex topics, such as how to structure growing graphical applications, and how cross-platform applications can integrate with each desktop operating system to create a seamless user experience. By delving into techniques and best practices for organizing and scaling Go-based graphical applications, you'll also glimpse Go's impressive concurrency system. In the concluding chapters, you'll discover how to distribute to the main desktop marketplaces and distribution channels. By the end of this book, you'll be a confident GUI developer who can use the Go language to boost the performance of your applications. What you will learn Understand the benefits and complexities of building native graphical applications Gain insights into how Go makes cross-platform graphical application development simple Build platform-native GUI applications using andlabs/ui Develop graphical Windows applications using Walk Create multiplatform GUI applications using Shiny, Nuklear, and Fyne Use Go wrappers for GTK and Qt for GUI application development Streamline your requirements to pick the correct toolkit strategy Who this book is for This book is designed for Go developers who are interested in building native graphical applications for desktop computers and beyond. Some knowledge of building applications using Go is useful, but not essential. Experience in developing GUIs is not required as the book explores the benefits and challenges they pose. This book will also be beneficial for GUI application developers who are interested in trying Go.
Explore Qt framework and APIs for building cross-platform applications for mobile devices, embedded systems, and IoT Key Features Build cross-platform applications and deploy them across mobile and connected devices Design 2D and 3D UIs for embedded systems using Yocto and Qt Creator Build machine to machine automation solution using QtSensors, QtMQTT, and QtWebSockets Book Description Qt is a world-class framework, helping you to develop rich graphical user interfaces (GUIs) and multi-platform applications that run on all major desktop platforms and most mobile or embedded platforms. The framework helps you connect the dots across platforms and between online and physical experience. This book will help you leverage the fully-featured Qt framework and its modular cross-platform library classes and intuitive APIs to develop applications for mobile, IoT, and industrial embedded systems. Considerations such as screen size, device orientation changes, and small memory will be discussed. We will focus on various core aspects of embedded and mobile systems, such as connectivity, networking, and sensors; there is no IoT without sensors. You will learn how to quickly design a flexible, fast, and responsive UI that looks great. Going further, you will implement different elements in a matter of minutes and synchronize the UI elements with the 3D assets with high precision. You will learn how to create high-performance embedded systems with 3D/2D user interfaces, and deploy and test on your target hardware. The book will explore several new features, including Qt for WebAssembly. At the end of this book, you will learn about creating a full software stack for embedded Linux systems using Yocto and Boot to Qt for Device Creation. What you will learn Explore the latest features of Qt, such as preview for Qt for Python and Qt for WebAssembly Create fluid UIs with a dynamic layout for different sized screens Deploy embedded applications on Linux systems using Yocto Design Qt APIs for building applications for embedded and mobile devices Utilize connectivity for networked and machine automated applications Discover effective techniques to apply graphical effects using Qt Quick apps Who this book is for The book is ideal for mobile developers, embedded systems engineers and enthusiasts who are interested in building cross-platform applications with Qt. Prior knowledge of C++ is required.
Enhance your programming skills to build exciting robotic projects Key Features Build an intelligent robot that can detect and avoid obstacles and respond to voice commands Detect and track objects and faces using OpenCV Control your robot with a GUI button designed using Qt5 Book Description C++ is one of the most popular legacy programming languages for robotics, and a combination of C++ and robotics hardware is used in many leading industries. This book will bridge the gap between Raspberry Pi and C/C++ programming and enable you to develop applications for Raspberry Pi. To follow along with the projects covered in the book, you can implement C programs in Raspberry Pi with the wiringPi library. With this book, you'll develop a fully functional car robot and write programs to move it in different directions. You'll then create an obstacle - avoiding robot using an ultrasonic sensor. Furthermore, you'll find out how to control the robot wirelessly using your PC/Mac. This book will also help you work with object detection and tracking using OpenCV, and guide you through exploring face detection techniques. Finally, you will create an Android app and control the robot wirelessly with an Android smartphone. By the end of this book, you will have gained experience in developing a robot using Raspberry Pi and C/C++ programming. What you will learn Install software in Raspberry Pi compatible with C++ programming Program the Raspberry Pi in C++ to run a motor Control RPi-powered robot wirelessly with your laptop or PC Program an RPi camera using OpenCV Control a Raspberry Pi robot with voice commands Implement face and object detection with Raspberry Pi Who this book is for This book is for developers, programmers, and robotics enthusiasts interested in leveraging C++ to build exciting robotics applications. Prior knowledge of C++ is necessary to understand the projects covered in this book.
A hands-on guide to making system programming with C++ easy Key Features Write system-level code leveraging C++17 Learn the internals of the Linux Application Binary Interface (ABI) and apply it to system programming Explore C++ concurrency to take advantage of server-level constructs Book Description C++ is a general-purpose programming language with a bias toward system programming as it provides ready access to hardware-level resources, efficient compilation, and a versatile approach to higher-level abstractions. This book will help you understand the benefits of system programming with C++17. You will gain a firm understanding of various C, C++, and POSIX standards, as well as their respective system types for both C++ and POSIX. After a brief refresher on C++, Resource Acquisition Is Initialization (RAII), and the new C++ Guideline Support Library (GSL), you will learn to program Linux and Unix systems along with process management. As you progress through the chapters, you will become acquainted with C++'s support for IO. You will then study various memory management methods, including a chapter on allocators and how they benefit system programming. You will also explore how to program file input and output and learn about POSIX sockets. This book will help you get to grips with safely setting up a UDP and TCP server/client. Finally, you will be guided through Unix time interfaces, multithreading, and error handling with C++ exceptions. By the end of this book, you will be comfortable with using C++ to program high-quality systems. What you will learn Understand the benefits of using C++ for system programming Program Linux/Unix systems using C++ Discover the advantages of Resource Acquisition Is Initialization (RAII) Program both console and file input and output Uncover the POSIX socket APIs and understand how to program them Explore advanced system programming topics, such as C++ allocators Use POSIX and C++ threads to program concurrent systems Grasp how C++ can be used to create performant system applications Who this book is for If you are a fresh developer with intermediate knowledge of C++ but little or no knowledge of Unix and Linux system programming, this book will help you learn system programming with C++ in a practical way.
Create apps in C++ and leverage its latest features using modern programming techniques. Key Features Develop strong C++ skills to build a variety of applications Explore features of C++17, such as containers, algorithms, and threads Grasp the standard support for threading and concurrency and use them in basic daily tasks Book Description C++ is one of the most widely used programming languages. It is fast, flexible, and used to solve many programming problems. This Learning Path gives you an in-depth and hands-on experience of working with C++, using the latest recipes and understanding most recent developments. You will explore C++ programming constructs by learning about language structures, functions, and classes, which will help you identify the execution flow through code. You will also understand the importance of the C++ standard library as well as memory allocation for writing better and faster programs. Modern C++: Efficient and Scalable Application Development deals with the challenges faced with advanced C++ programming. You will work through advanced topics such as multithreading, networking, concurrency, lambda expressions, and many more recipes. By the end of this Learning Path, you will have all the skills to become a master C++ programmer. This Learning Path includes content from the following Packt products: Beginning C++ Programming by Richard Grimes Modern C++ Programming Cookbook by Marius Bancila The Modern C++ Challenge by Marius Bancila What you will learn Become familiar with the structure of C++ projects Identify the main structures in the language: functions and classes Learn to debug your programs Leverage C++ features to obtain increased robustness and performance Explore functions and callable objects with a focus on modern features Serialize and deserialize JSON and XML data Create client-server applications that communicate over TCP/IP Use design patterns to solve real-world problems Who this book is for This Learning Path is designed for developers who want to gain a solid foundation in C++. The desire to learn how to code in C++ is all you need to get started with this Learning Path
Write comprehensive, professional-standard CMake projects and ensure the quality and simplicity of your solutionsKey FeaturesUnderstand and automate compilation and linking with CMakeManage internal and external dependencies easilyAdd quality checks and tests as an inherent step for your buildsBook DescriptionCreating top-notch software is an extremely difficult undertaking. Developers researching the subject have difficulty determining which advice is up to date and which approaches have already been replaced by easier, better practices. At the same time, most online resources offer limited explanation, while also lacking the proper context and structure. This book offers a simpler, more comprehensive, experience as it treats the subject of building C++ solutions holistically. Modern CMake for C++ is an end-to-end guide to the automatization of complex tasks, including building, testing, and packaging. You'll not only learn how to use the CMake language in CMake projects, but also discover what makes them maintainable, elegant, and clean. The book also focuses on the structure of source directories, building targets, and packages. As you progress, you'll learn how to compile and link executables and libraries, how those processes work, and how to optimize builds in CMake for the best results. You'll understand how to use external dependencies in your project – third-party libraries, testing frameworks, program analysis tools, and documentation generators. Finally, you'll get to grips with exporting, installing, and packaging for internal and external purposes. By the end of this book, you'll be able to use CMake confidently on a professional level.What you will learnUnderstand best practices for building C++ codeGain practical knowledge of the CMake language by focusing on the most useful aspectsUse cutting-edge tooling to guarantee code quality with the help of tests and static and dynamic analysisDiscover how to manage, discover, download, and link dependencies with CMakeBuild solutions that can be reused and maintained in the long termUnderstand how to optimize build artifacts and the build process itselfWho this book is forThe book is for build engineers and software developers with knowledge of C/C++ programming who are looking to learn CMake to automate the process of building small and large software solutions. If you are someone who's just getting started with CMake, a long-time GNU Make user, or simply looking to brush up on the latest best practices, this book is for you.
Discover interesting recipes to help you understand the concepts of object detection, image processing, and facial detection Key Features Explore the latest features and APIs in OpenCV 4 and build computer vision algorithms Develop effective, robust, and fail-safe vision for your applications Build computer vision algorithms with machine learning capabilities Book Description OpenCV is an image and video processing library used for all types of image and video analysis. Throughout the book, you'll work through recipes that implement a variety of tasks, such as facial recognition and detection. With 70 self-contained tutorials, this book examines common pain points and best practices for computer vision (CV) developers. Each recipe addresses a specific problem and offers a proven, best-practice solution with insights into how it works, so that you can copy the code and configuration files and modify them to suit your needs. This book begins by setting up OpenCV, and explains how to manipulate pixels. You'll understand how you can process images with classes and count pixels with histograms. You'll also learn detecting, describing, and matching interest points. As you advance through the chapters, you'll get to grips with estimating projective relations in images, reconstructing 3D scenes, processing video sequences, and tracking visual motion. In the final chapters, you'll cover deep learning concepts such as face and object detection. By the end of the book, you'll be able to confidently implement a range to computer vision algorithms to meet the technical requirements of your complex CV projects What you will learn Install and create a program using the OpenCV library Segment images into homogenous regions and extract meaningful objects Apply image filters to enhance image content Exploit image geometry to relay different views of a pictured scene Calibrate the camera from different image observations Detect people and objects in images using machine learning techniques Reconstruct a 3D scene from images Explore face detection using deep learning Who this book is for If you're a CV developer or professional who already uses or would like to use OpenCV for building computer vision software, this book is for you. You'll also find this book useful if you're a C++ programmer looking to extend your computer vision skillset by learning OpenCV.
Create image processing, object detection and face recognition apps by leveraging the power of machine learning and deep learning with OpenCV 4 and Qt 5 Key Features Gain practical insights into code for all projects covered in this book Understand modern computer vision concepts such as character recognition, image processing and modification Learn to use a graphics processing unit (GPU) and its parallel processing power for filtering images quickly Book Description OpenCV and Qt have proven to be a winning combination for developing cross-platform computer vision applications. By leveraging their power, you can create robust applications with both an intuitive graphical user interface (GUI) and high-performance capabilities. This book will help you learn through a variety of real-world projects on image processing, face and text recognition, object detection, and high-performance computing. You'll be able to progressively build on your skills by working on projects of increasing complexity. You'll begin by creating an image viewer application, building a user interface from scratch by adding menus, performing actions based on key-presses, and applying other functions. As you progress, the book will guide you through using OpenCV image processing and modification functions to edit an image with filters and transformation features. In addition to this, you'll explore the complex motion analysis and facial landmark detection algorithms, which you can use to build security and face detection applications. Finally, you'll learn to use pretrained deep learning models in OpenCV and GPUs to filter images quickly. By the end of this book, you will have learned how to effectively develop full-fledged computer vision applications with OpenCV and Qt. What you will learn Create an image viewer with all the basic requirements Construct an image editor to filter or transform images Develop a security app to detect movement and secure homes Build an app to detect facial landmarks and apply masks to faces Create an app to extract text from scanned documents and photos Train and use cascade classifiers and DL models for object detection Build an app to measure the distance between detected objects Implement high-speed image filters on GPU with Open Graphics Library (OpenGL) Who this book is for This book is for engineers and developers who are familiar with both Qt and OpenCV frameworks and are capable of creating simple projects using them, but want to build their skills to create professional-level projects using them. Familiarity with the C++ language is a must to follow the example source codes in this book.