Book Name: | The Modern C++ Challenge Become an Expert Programmer PDF |
Category: | Computer Books ( CE & IT ) |
Language: | English |
Format: | |
Free Download: | Available |
The Modern C++ Challenge Become an Expert Programmer by Solving Real-World Problems by Marius Bancila | PDF Free Download.
Book Details : | |
---|---|
Language | English |
Pages | 321 |
Format | |
Size | 6.59 MB |
The Modern C++ Challenge Become an Expert Programmer
Author of The Modern C++ Challenge Become an Expert Programmer
Marius Bancila is a software engineer with 15 years of experience in developing solutions for the industrial and financial sectors. He is the author of Modern C++ Programming Cookbook. He focuses on Microsoft technologies and mainly develops C++ and C# desktop applications.
He is passionate about sharing his technical expertise with others, so he was recognized as a Microsoft MVP for over a decade. He can be contacted on Twitter at @mariusbancila.
The Modern C++ Challenge Contents
- Chapter 1: Math Problems Problems
- Chapter 2: Language Features Problems
- Chapter 3: Strings and Regular Expressions Problems
- Chapter 4: Streams and Filesystems Problems
- Chapter 5: Date and Time Problems
- Chapter 6: Algorithms and Data Structures Problems
- Chapter 7: Concurrency Problems
- Chapter 8: Design Patterns Problems
- Chapter 9: Data Serialization Problems
- Chapter 10: Archives, Images, and Databases Problems
- Chapter 11: Cryptography Problems
- Chapter 12: Networking and Services Problems
Preface to The Modern C++ Challenge Become an Expert Programmer
C++ is a general-purpose programming language that combines different paradigms such as object-oriented, imperative, generic, and functional programming. C++ is designed for efficiency and is the primary choice in applications where performance is key.
Over the last few decades, C++ has been one of the most widely used programming languages in industry, academia, and elsewhere.
The language is standardized by the International Organization for Standardization (ISO), which is currently working on the next version of the standard, called C++20, due to be completed in 2020.
With the standard covering almost 1500 pages, C++ is not the simplest language to learn and master. Skills are not acquired only by reading about them or watching others exercising them, but by practicing them again and again.
Programming is no different; developers do not learn new languages or technologies just by reading books, articles, or video tutorials. Instead, we need the practice to sediment and develop the new things we learn so that we can eventually master them.
Many times, however, finding good exercises to put our knowledge to test is a difficult task. Although there are many websites that feature problems for different programming languages, most of these are mathematical problems, algorithms, or problems for student competitions.
These kinds of problems do not help you exercise a large variety of programming language functionalities.
That is where this book steps in. This book is a collection of 100 real-world problems designed for you to practice a large variety of the C++ language and standard library features as well as many third-party, cross-platform libraries.
Yet, a few of these problems are C++ specific and generally can be solved in many programming languages. Of course, the intention is to help you master C++ and therefore you are expected to solve them in C++.
All the solutions provided in the book are in C++. However, you can use the book as a reference for its collection of proposed problems when you learn other programming languages, although in this case, you will not benefit from the solutions.
The problems in this book are grouped into 12 chapters. Each chapter contains problems on similar or related topics. The problems have different difficulty levels; some are easy, some are moderate, and some are difficult.
The book has a relatively equal number of problems for each difficulty level. Each chapter starts with a description of the proposed problems.
The solutions to these problems ensue with recommendations, explanations, and source code. Although you can find the solutions in the book, it is recommended that you try to implement them by yourself first, and only afterward—or if you have difficulties completing them—look at the proposed solutions.
Only one thing is missing in the source code presented in the book—the headers you have to include. This was left out on purpose so that you figure those out by yourself.
On the other hand, the source code provided with the book is complete, and you can find all the required headers there. At the time of writing this book, the C++20 version of the standard is in progress and will continue for the next couple of years.
However, some features have already been voted in, and one of these features is the extension to the Chrono library with calendars and time zones.
There are several problems in the fifth chapter on this topic, and although no compiler supports these yet, you can solve them using the date library, based on which the new standard additions have been designed. Many other libraries are used for solving problems in the book.
The list includes Asio, Crypto++, Curl, NLohmann/JSON, PDF-Writer, PNGWriter, pugixml, SQLite, and ZipLib. Also, as an alternative to the std:: optional and the filesystem libraries used throughout the book, you can use Boost with compilers where these are not available.
All these libraries are open source and cross-platform. They were chosen for reasons that include performance, good documentation, and wide use within the community. However, you are free to use any other libraries you would like to solve the problems.
Who The Modern C++ Challenge eBook Is For
Are you trying to learn C++ and looking for challenges to practice your learning? If so, this book is for you.
The book is intended for people learning C++, regardless of their experience with other programming languages, as a valuable resource of practical exercises and real-world problems. This book does not teach you the features of the language or the standard library.
You are expected to learn that from other resources, such as books, articles, or video tutorials. This book is a learning companion and challenges you to solve tasks of various difficulties, utilizing the skills you have previously learned from other resources.
Nevertheless, many of the problems proposed in this book are language agnostic. You can use them when learning other programming languages; however, in this case, you won’t benefit from the solutions provided here.
What This The Modern C++ Challenge PDF Book Covers
Chapter 1, Math Problems, contains a series of math exercises to warm you up for the more challenging problems in the next chapters.
Chapter 2, Language Features, proposes problems for you to practice operator overloading, move semantics, user-defined literals, and template metaprogramming aspects such as variadic functions, fold expressions, and type traits.
Chapter 3, Strings and Regular Expressions have several problems for string manipulation, such as converting between strings and other data types, splitting and joining strings, and also for working with regular expressions.
Chapter 4, Streams and Filesystems, covers output stream manipulation and working with files and directories using the C++17 filesystem library.
Chapter 5, Date and Time, prepare you for the upcoming C++20 extensions to the Chrono library, with several calendar and time zone problems that you can solve with the date library, on which the new standard additions are based.
Chapter 6, Algorithms and Data Structures, is one of the largest chapters and contains a variety of problems where you need to utilize the existing standard algorithms; others are where you need to implement your own general-purpose algorithms or data structures, such as circular buffer and priority queue.
The chapter ends with two rather fun problems, Dawkins’ Weasel program and Conway’s Game of Life program, where you can learn about evolutionary algorithms and cellular automata.
Chapter 7, Concurrency, is where we use threads and asynchronous functions to implement general-purpose parallel algorithms, but also solve some real-world problems involving concurrency.
Chapter 8, Design Patterns, proposes a series of problems suited to be solved with design patterns such as decorator, composite, chain of responsibility, template method, and others.
Chapter 9, Data Serialization, covers most common formats of serialized data, JSON, and XML, with several problems; but it also challenges you to create PDF files, all with the use of third-party, open-source, and cross-platform libraries.
Chapter 10, Archives, Images, and Databases, teaches you to solve problems for working with zip archives, creating PNG files for real-world problems, such as Captcha-like systems and barcodes, and embedding and utilizing SQLite databases in your applications.
Chapter 11, Cryptography, mostly covers the user of the Crypto++ library for data encryption and signing. It also challenges you to implement your own Base64 encoding and decoding utilities.
Chapter 12, Networking and Services, is where you have to implement your own client-server application communicating on TCP/IP, and also consume various REST services such as bitcoin exchange rates or text translation APIs.
Download The Modern C++ Challenge: Become an expert programmer by solving real-world problems PDF
Author(s): Marius Bancila
Publisher: Packt Publishing, Year: 2018
ISBN: 1788993861,9781788993869
Download The Modern C++ Challenge Become an Expert Programmer in PDF Format For Free.