C++

97
Ebook

Hands-On Robotics Programming with C++. Leverage Raspberry Pi 3 and C++ libraries to build intelligent robotics applications

Dinesh Tavasalkar

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. You'll even be able to implement C programs in Raspberry Pi with the WiringPi library.The book will guide you through developing a fully functional car robot and writing programs to move it in different directions. You’ll then create an obstacle-avoiding robot using an ultrasonic sensor. In addition to this, you’ll find out how to control the robot wirelessly using your PC or 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.

98
Ebook

Hands-On System Programming with C++. Build performant and concurrent Unix and Linux systems with C++17

Dr. Rian Quinn

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.

99
Ebook

Inkscape Beginner's Guide. Create attractive layout designs, logos, brochures, icons, and more using the Inkscape vector graphics editor

Bethany Hiitola

Learning to use Inkscape, an exciting open-source vector graphics program, broadens your software toolkit as a graphic designer. Using practical, real-world examples, you'll learn everything about the software and its capabilities so you'll be able to design anything from logos to websites.Inkscape Beginner's Guide is a practical step-by-step guide for learning this exciting vector graphics software. Not only will it take you through each menu item and toolbar, but you will also learn about creating complex shapes, text styling, filters, working with images, extensions, and the XML editoróall using real world examples.The book starts with an overview of vector graphics and how best to use them when designing for digital and print mediums. Then we install Inkscape and start learning all the ins and outs of the software. You'll build your first vector graphic while learning best practices for using layers, and build simple and complex objects with shapes and paths that will ultimately become exciting graphics to be used in your designs. Beyond designing sample logos and brochures while learning the software, you'll also learn how to use filters, install and use extensions, and the ins-and-outs of SVG and the XML Editor in Inkscape.

100
Ebook

Internet rzeczy. Podstawy programowania aplikacji i serwerów sieciowych w językach C/C++, MicroPython i Lua na urządzeniach IoT ESP8266, ESP32 i Arduino

Mariusz Duka

Internet rzeczy to przykład koncepcji, która - w odróżnieniu od wielu innych relatywnie młodych dziedzin IT - została więcej niż pozytywnie zweryfikowana przez czas i rynek. Już dziś IoT znajduje bardzo szerokie zastosowanie w wielu obszarach życia: od projektów stricte hobbystycznych, przez automatykę domową, handel i usługi, po systemy inteligentnych miast, przemysł i rolnictwo. Internet rzeczy nadal ewoluuje - i staje się coraz powszechniejszy, a to może być zachętą do tego, by poznać go bliżej. Internet rzeczy. Podstawy programowania aplikacji i serwerów sieciowych w językach C/C++, MicroPython i Lua na urządzeniach IoT ESP8266, ESP32 i Arduino może się okazać świetną propozycją na początek przygody z IoT. Książka kompleksowo objaśnia specyfikę wybranych urządzeń i uczy, jak je programować w sposób na tyle przystępny, że wystarczy przeciętna znajomość obsługi komputera, by zacząć tworzyć pierwsze projekty. Treść została zilustrowana przykładowymi kodami źródłowymi, co zdecydowanie ułatwia stawianie pierwszych kroków. Dzięki książce: poznasz wybrane urządzenia IoT zaznajomisz się z narzędziami programistycznymi nauczysz się podstaw języków programowania uruchomisz własny serwer dla aplikacji web stworzysz serwer WWW na urządzeniu IoT a nawet zaprojektujesz serwer Minecrafta! Internet rzeczy ma przed sobą wielką przyszłość, bądź jej częścią!

101
Ebook

Java 9: Building Robust Modular Applications. Master advanced Java features and implement them to build amazing projects

Dr. Edward Lavieri, Peter Verhas, Jason Lee

Java 9 and its new features add to the richness of the language; Java is one of the languages most used by developers to build robust software applications. Java 9 comes with a special emphasis on modularity with its integration with Jigsaw. This course is your one-stop guide to mastering the language.You'll be provided with an overview and explanation of the new features introduced in Java 9 and the importance of the new APIs and enhancements. Some new features of Java 9 are ground-breaking; if you are an experienced programmer, you will be able to make your enterprise applications leaner by learning these new features. You'll be provided with practical guidance in applying your newly acquired knowledge of Java 9 and further information on future developments of the Java platform. This course will improve your productivity, making your applications faster. Next, you'll go on to implement everything you've learned by building 10 cool projects. You will learn to build an email filter that separates spam messages from all your inboxes, a social media aggregator app that will help you efficiently track various feeds, and a microservice for a client/server note application, to name just a few.By the end of this course, you will be well acquainted with Java 9 features and able to build your own applications and projects.This Learning Path contains the best content from the following two recently published Packt products:• Mastering Java 9• Java 9 Programming Blueprints

102
Ebook

Język C dla małych urządzeń. Krótki kod o wielkich możliwościach

Marc Loy

Wydawałoby się, że język C najlepsze lata ma już za sobą. Opracowano w końcu mnóstwo łatwych w użyciu i efektywnych wysokopoziomowych języków programowania. W rzeczywistości język C wciąż okazuje się niezastąpiony do tak ważnych celów, jak programowanie sterowników, systemów operacyjnych, kart graficznych, a także niewielkich mikrokontrolerów o ograniczonych zasobach. Właśnie teraz, w czasach burzliwego rozwoju internetu rzeczy, język C udowadnia swoją przydatność. Wystarczy nauczyć się tworzyć w nim czysty kod o niewielkich rozmiarach. W tym podręczniku do praktycznej nauki programowania w języku C szczególną uwagę zwrócono na pisanie kodu umożliwiającego uzyskanie wysokiej wydajności w środowiskach o bardzo małych zasobach. Znalazło się tu gruntowne omówienie podstaw dobrego programowania w języku C. Opisano struktury kontrolne, operatory, funkcje i inne elementy składni C, a także zasady dobrego programowania i wzorce, dzięki którym można zmniejszać rozmiar skompilowanego programu. Przeanalizowano również środowisko Arduino, które jest świetną platformą docelową dla niewielkich programów napisanych w C. Zawarte tu informacje przydadzą się jednak każdemu, kto chce się zająć programowaniem dla systemów wbudowanych. W książce między innymi: podstawy języka C, w tym typy danych, przepływ sterowania i funkcje zarządzanie pamięcią i działanie programów w prostych urządzeniach tworzenie czytelnego i łatwego w utrzymaniu kodu w języku C optymalizacja kodu pod kątem wydajności testowanie istniejących bibliotek i tworzenie własnych Programowanie niskopoziomowe? Czysta radość z czystego C!

103
Ebook

Język C++ i przetwarzanie współbieżne w akcji

Anthony Williams

Odkryj wszystkie tajemnice wielowątkowych aplikacji! Współbieżne przetwarzanie danych to największe wyzwanie dla programisty. Na każdym kroku czyhają na niego najbardziej wymyślne pułapki, a wykrycie pomyłki stanowi nie lada wyzwanie. Każdy programista wzdryga się na samą myśl o implementacji wielowątkowych rozwiązań. Nie musi tak być! Dzięki tej książce poradzisz sobie z większością zadań i zwinnie ominiesz zastawione pułapki. W trakcie lektury dowiesz się, jak zidentyfikować zadania, w których zastosowanie współbieżności ma sens, oraz jak zarządzać wątkami. Ponadto nauczysz się chronić współdzielone dane oraz synchronizować współbieżne operacje. Duży nacisk został tu położony na zagadnienia związane z projektowaniem współbieżnych struktur danych oraz kodu. Osobny rozdział poświęcono debugowaniu aplikacji wielowątkowych. Książka ta jest długo oczekiwaną pozycją, która ułatwi codzienne życie programistom C++. Dzięki tej książce: zaprojektujesz współbieżny kod oraz struktury ochronisz współdzielone dane poznasz zaawansowane metody zarządzania wątkami bez problemu przeprowadzisz debugowanie Twojej wielowątkowej aplikacji Sprawdź, jak tworzyć niezawodne oprogramowanie wielowątkowe!

104
Ebook

Język C++ i przetwarzanie współbieżne w akcji. Wydanie II

Anthony Williams

Jeśli aplikacja ma działać szybko i niezawodnie, najlepiej wybrać C++, dojrzały i wszechstronny język programowania, konsekwentnie rozwijany przez mistrzów kodowania. Wymaga on zachowania pewnej dyscypliny podczas pracy, jednak pozwala na uzyskanie kodu o znakomitej wydajności. Nowy standard C++17 zapewnia doskonałą obsługę wielowątkowości oraz programowania wieloprocesorowego wymaganego podczas szybkiego przetwarzania grafiki, uczenia maszynowego czy też wykonywania innych zadań, w których kluczową sprawą okazuje się wydajność. Ta książka jest drugim, zaktualizowanym i uzupełnionym wydaniem doskonałego podręcznika dla profesjonalistów. Szczegółowo opisano w niej wszystkie etapy programowania współbieżnego: od utworzenia wątków po projektowanie wielowątkowych algorytmów i struktur danych. Przedstawiono zastosowania klas std::thread i std::mutex oraz funkcji std::async, a także złożone zagadnienia związane z operacjami atomowymi i modelem pamięci. Sporo miejsca poświęcono diagnozowaniu kodu i analizie rodzajów błędów. Opisano techniki lokalizowania błędów oraz metody testowania kodu. Prezentowany materiał został uzupełniony przykładami kodu i praktycznymi ćwiczeniami. Znalazły się tu również porady i wskazówki, które docenią wszyscy programiści C++. W tej książce między innymi: nowości w standardzie C++17 zagadnienia niskiego poziomu: model pamięci i operacje atomowe zagadnienia wyższego poziomu: złożone struktury danych zagadnienia wysokiego poziomu: kod wielowątkowy i zarządzanie wątkami obsługa równoległości za pomocą funkcji dodanych w standardzie C++17 debugowanie kodu wielowątkowego Programuj elegancko, twórz wydajny i czysty kod. Oto współbieżność w C++!

105
Ebook

Język C++. Kompendium wiedzy. Wydanie IV

Bjarne Stroustrup

Twój przewodnik po C++! C++ dzielnie broni swojej pozycji na rynku języków programowania. Pomimo silnego naporu języka Java oraz platformy .NET wciąż jest niezastąpiony w wielu dziedzinach. Jeżeli tylko wymagana jest najwyższa wydajność, dostęp do sprzętu oraz przewidywalny czas wykonania, programiści najczęściej wybierają właśnie język C++. Ostatnia wersja standardu - oznaczona numerem 11 - pozwala na jeszcze łatwiejsze pisanie kodu oraz tworzenie szybszych i wydajniejszych programów. Najnowsze wydanie tej cenionej książki zostało poprawione i uzupełnione o nowości z tej właśnie wersji standardu języka C++. Dowiesz się, jak korzystać ze wskaźników, liczb losowych oraz udoskonalonych kontenerów. Ponadto poznasz najlepsze zastosowanie wyrażeń lambda czy szablonów. Oprócz omówienia nowości znajdziesz tu również szczegółowy przegląd klasycznych elementów języka C++. Pętle, zmienne, tablice, instrukcje warunkowe - to tylko niektóre z omawianych zagadnień. Książka stanowi doskonały podręcznik dla początkujących programistów i świetne rozwinięcie dla programujących w języku C++ na co dzień. Przekonaj się, jak łatwo i przyjemnie możesz opanować ten popularny język oprogramowania. Dzięki tej książce: poznasz nowości wprowadzone w C++ 11 zaznajomisz się z elementami biblioteki standardowej opanujesz podstawowy model pamięci języka C++ zrozumiesz model pamięci języka C++ Poznaj nowości C++ 11! podstawowe narzędzia, np. typy, obiekty, zakresy, pamięć, wykonywanie obliczeń i wiele więcej modularność oparta na przestrzeniach nazw, plikach źródłowych oraz obsłudze wyjątków abstrakcja w C++, tj. wykorzystanie klas, hierarchii klas oraz szablonów w programowaniu tradycyjnym, obiektowym oraz ogólnym biblioteka standardowa: kontenery, algorytmy, iteratory, narzędzia dodatkowe, łańcuchy, strumienia wejścia i wyjścia, lokacje, biblioteki liczbowe i wiele więcej szczegółowy opis podstawowego modelu pamięci języka C++ Czwarte wydanie książki pozwala na łatwe przejście na C++11 programistom, którzy do tej pory programowali przy użyciu C++98 lub w innych językach. Ponadto w książce znajduje się wiele cennych informacji nawet dla znawców standardu C++11.

106
Ebook

Język C++. Owoce programowania. Wydanie IX

Tony Gaddis

C++ powstał w 1979 roku. Od tej pory cały czas się rozwija. Mimo że wymaga od programisty pewnej dyscypliny i staranności w pracy, jest chętnie wykorzystywany, daje bowiem ogromne możliwości i cechuje się elastycznością. W języku tym zaimplementowano mechanizmy programowania obiektowego. Opanowanie C++ nie tylko pozwala programistom tworzyć aplikacje dla praktycznie wszystkich platform, komputerów, serwerów i urządzeń mobilnych, ale również ułatwia naukę innych języków programowania. Aby w pełni skorzystać z tych zalet, trzeba od początku przykładać się do nauki pisania kodu z poszanowaniem dobrych praktyk. To kolejne wydanie lubianego podręcznika programowania w języku C++; książka przeznaczona dla osób, które dopiero rozpoczynają naukę kodowania, i tych, które mają już doświadczenie z innymi językami. Znalazło się tu przystępne wyjaśnienie podstaw działania komputera oraz wprowadzenie do samego języka, a także mnóstwo pożytecznych wskazówek dla początkujących. Bardziej zaawansowani programiści docenią szczegółowe opisy niuansów, zawiłości i źródeł możliwych problemów. Książka jest napisana prostym, zrozumiałym językiem i zawiera wiele świetnie dobranych przykładów ilustrujących nie tylko funkcje i konstrukcje języka C++, ale również przypadki i sposoby ich użycia. Najważniejsze zagadnienia: przystępne wprowadzenie do C++ funkcje i klasy, tablice i wektory wyrażenia lambda, wskaźniki i przeciążanie operatorów dziedziczenie i polimorfizm stosy, kolejki i rekurencja - drzewa binarne: tworzenie i operacje na drzewach Idź i programuj w C++!

107
Ebook

Język C++. Pierwsze starcie

Zbigniew Koza

Poznaj tajniki programowania w C++ Jak skonstruowany jest program w języku C++? Na czym polega programowanie obiektowe? Jak korzystać z bibliotek? C++ to jeden z najpopularniejszych języków programowania. Stosowany jest zarówno przez profesjonalistów, jak i hobbystów. Wszyscy jego użytkownicy doceniają elastyczność, ogromne możliwości i szybkość działania napisanych w nim programów. Ogromną zaletą C++ jest to, że nie wymusza na programistach stosowania określonego stylu programowania. Z racji swoich możliwości jest to język bardzo złożony, a efektywne programowanie w nim wymaga poznania wielu technik i pojęć oraz umiejętności wykorzystania tej wiedzy w praktyce. Książka "C++. Pierwsze starcie" to podręcznik, dzięki któremu opanujesz zasady programowania w tym języku i zdobędziesz solidne podstawy do dalszego rozwijania swoich umiejętności. Znajdziesz w niej opis aktualnego standardu C++ oraz omówienia narzędzi programistycznych i bibliotek. Poznasz elementy języka, zasady programowania obiektowego i tworzenia złożonych aplikacji. Przeczytasz o szablonach, bibliotece STL i obsłudze błędów. Dowiesz się, jak stosować biblioteki przy tworzeniu aplikacji dla systemów Windows i Linux. Struktura programu w C++ Elementy języka Korzystanie z funkcji Programowanie obiektowe Dynamiczne struktury danych Stosowanie bibliotek Szablony Biblioteka STL Obsługa błędów Zrób pierwszy krok na drodze do profesjonalnego tworzenia oprogramowania.

108
Ebook

Język C. Solidna wiedza w praktyce. Wydanie VIII

Paul J. Deitel, Harvey Deitel

Początki programowania bywają trudne, jednak jest to bardzo ważny czas dla programisty. Od tego, jakich nabierze nawyków, w jakim stopniu opanuje zasady tworzenia bezpiecznego kodu i na ile będzie przestrzegał dobrych praktyk, naprawdę wiele zależy. Konieczne jest również dogłębne zrozumienie takich podstaw informatyki jak działanie procesora, zarządzanie pamięcią, wątki czy działanie kompilatora. Okazuje się, że skuteczne przyswojenie podstaw jest zadaniem bardzo trudnym, ale wyjątkowo ważnym i odpowiedzialnym - zarówno dla ucznia, jak i nauczyciela. To ósme, zaktualizowane i uzupełnione wydanie znakomitego podręcznika przeznaczonego dla adeptów języka C i ich nauczycieli. Zawiera doskonałe wprowadzenie do C oraz inżynierii oprogramowania. Materiał zamieszczony w książce jest aktualny i zgodny z nowoczesnymi zasadami pracy. Obszernie wyjaśniono tu zasady tworzenia i działania kodu, a także zagadnienia związane z typami danych, funkcjami, tablicami, operacjami na bitach, wyliczeniami, pracą na plikach i innymi kwestiami ważnymi z punktu widzenia funkcjonalności, wydajności i bezpieczeństwa kodu. To pozycja oparta na zasadach nowoczesnej dydaktyki - zawiera mnóstwo przydatnych przykładów, ćwiczeń, wskazówek i podsumowań. Poszczególne koncepcje wyjaśniono z użyciem pseudokodu, algorytmów i schematów, dzięki czemu zrozumienie języka C staje się dużo łatwiejsze. W tej książce między innymi: obszerne omówienie języka C funkcje wprowadzone w standardach C99 i C11 zasady bezpiecznego programowania testy i debugowanie kodu kwestie wydajności a wielowątkowość i systemy wielordzeniowe zasady programowania zorientowanego obiektowo: wprowadzenie do C++ C: ucz się od najlepszych i programuj jak mistrz!

109
Ebook

Język C/C++ i obliczenia numeryczne. Krótkie wprowadzenie

Michał Matlak

Poznaj zalety języka C/C++! Początki programowania, czyli jak zacząć działać bez dogłębnej znajomości tematu Struktura prostych programów, czyli czego na pewno nie wolno Ci pominąć Obliczenia numeryczne, czyli jak możesz zastosować w praktyce swoją świeżo zdobytą wiedzę Język C i jego następca C++ towarzyszą programistom komputerowym już od dawna. Mimo to zainteresowanie tymi językami wcale nie maleje, lecz rośnie — i język C++ nadal się rozwija. Przyczyna jest prosta: nie ma on sobie równych, jeśli chodzi o szybkość działania kodu wynikowego i wszechstronne możliwości zastosowania w różnych dziedzinach. Jednak do nauki tego języka trzeba się trochę przyłożyć. Jeśli przerażają Cię opasłe tomy opisujące C/C++ w najdrobniejszych szczegółach, sięgnij po książkę, która pomoże Ci szybko nauczyć się podstaw programowania w tym języku. W tym krótkim, treściwym podręczniku pokazano sposób konstruowania programów obliczeniowych na prostych, przejrzystych przykładach. Dzięki temu także i Ty możesz szybko napisać swój pierwszy program, który ułatwi Ci pracę i odpowie na Twoje konkretne potrzeby. Dowiesz się stąd, jak używać poszczególnych elementów programowania w C/C++ jako przygotowania do pracy z gotowymi bibliotekami numerycznymi. Zobaczysz, jak powinna wyglądać struktura Twojego programu i jak zaimplementować w nim różne funkcje. Sprawdzisz, jak efektywnie uczyć się programowania i na co koniecznie należy zwracać uwagę. Zobacz sam! Szybki start Rodzaje wielkości w języku C/C++ i ich deklaracja Deklaracja tablic Operacje na zadeklarowanych wielkościach Instrukcje warunkowe i sterowanie pracą komputera Automatyzacja obliczeń Architektura programu i pierwsze programy Operacje wyprowadzania wyników Opis programów przykładowych do nauki programowania Wskaźniki, tablice, funkcje, struktury i liczby zespolone Cztery programy przykładowe C/C++ to przepustka do programowania dla każdego!

110
Ebook

Julia 1.0 Programming. Dynamic and high-performance programming to build fast scientific applications - Second Edition

Ivo Balbaert

The release of Julia 1.0 is now ready to change the technical world by combining the high productivity and ease of use of Python and R with the lightning-fast speed of C++. Julia 1.0 programming gives you a head start in tackling your numerical and data problems. You will begin by learning how to set up a running Julia platform, before exploring its various built-in types. With the help of practical examples, this book walks you through two important collection types: arrays and matrices. In addition to this, you will be taken through how type conversions and promotions work. In the course of the book, you will be introduced to the homo-iconicity and metaprogramming concepts in Julia. You will understand how Julia provides different ways to interact with an operating system, as well as other languages, and then you'll discover what macros are. Once you have grasped the basics, you’ll study what makes Julia suitable for numerical and scientific computing, and learn about the features provided by Julia. By the end of this book, you will also have learned how to run external programs. This book covers all you need to know about Julia in order to leverage its high speed and efficiency for your applications.

111
Ebook

Kombinacje C++. 648 łamigłówek programistycznych z odpowiedziami

Maciej Matyka

Od dekad C++ pozostaje jednym z dwóch najważniejszych języków, jeśli chodzi o programowanie systemowe, ale też aplikacyjne. Bez niego nie byłoby Windowsa, Excela, Photoshopa ani dużej części oprogramowania bazodanowego na czele z MySQL. A bez nich trudno sobie wyobrazić funkcjonowanie dzisiejszego świata. Nic więc dziwnego, że C++ od lat pozostaje obiektem zainteresowania programistów - w branży IT niezmiennie utrzymuje się silna potrzeba, aby doskonalić umiejętności programowania w tym języku. Z pomocą przychodzi ta książka - Kombinacje C++. 648 łamigłówek programistycznych z odpowiedziami to zbiór blisko 650 praktycznych zadań doskonalących znajomość języka C++ i umiejętności programistyczne. Układem nawiązuje do podręczników szachowych, które na konkretnych przykładach przybliżają obowiązujące zasady. Zawartość została podzielona na dwie części. Pierwsza zapoznaje z podstawowymi motywami, jak klasy, funkcje czy biblioteki standardowe. Druga część zawiesza poprzeczkę wyżej i wymaga więcej wysiłku - tym bardziej jednak zachęca do zaangażowania się w rozwiązywanie problemów, co w praktyce wprost przełoży się na podniesienie kompetencji programistycznych. Dzięki książce: zrozumiesz działanie programów nauczysz się wyszukiwać błędy w kodzie poznasz kluczowe motywy języka C++ wyniesiesz swoje umiejętności na nowy, wyższy poziom Setki łamigłówek czekają!

112
Ebook

Learn LLVM 12. A beginner's guide to learning LLVM compiler tools and core libraries with C++

Kai Nacke

LLVM was built to bridge the gap between compiler textbooks and actual compiler development. It provides a modular codebase and advanced tools which help developers to build compilers easily. This book provides a practical introduction to LLVM, gradually helping you navigate through complex scenarios with ease when it comes to building and working with compilers.You’ll start by configuring, building, and installing LLVM libraries, tools, and external projects. Next, the book will introduce you to LLVM design and how it works in practice during each LLVM compiler stage: frontend, optimizer, and backend. Using a subset of a real programming language as an example, you will then learn how to develop a frontend and generate LLVM IR, hand it over to the optimization pipeline, and generate machine code from it. Later chapters will show you how to extend LLVM with a new pass and how instruction selection in LLVM works. You’ll also focus on Just-in-Time compilation issues and the current state of JIT-compilation support that LLVM provides, before finally going on to understand how to develop a new backend for LLVM.By the end of this LLVM book, you will have gained real-world experience in working with the LLVM compiler development framework with the help of hands-on examples and source code snippets.

113
Ebook

Learn OpenGL. Beginner's guide to 3D rendering and game development with OpenGL and C++

Frahaan Hussain

Learn OpenGL is your one-stop reference guide to get started with OpenGL and C++ for game development. From setting up the development environment to getting started with basics of drawing and shaders, along with concepts such as lighting, model loading, and cube mapping, this book will get you up to speed with the fundamentals.You begin by setting up your development environment to use OpenGL on Windows and macOS. With GLFW and GLEW set up using absolute and relative linking done, you are ready to setup SDL and SFML for both the operating systems.Now that your development environment is set up, you'll learn to draw using simple shaders as well as make the shader more adaptable and reusable. Then we move on to more advanced topics like texturing your objects with images and transforming your objects using translate, rotate and scale.With these concepts covered, we'll move on to topics like lighting to enable you to incorporate amazing dynamic lights in your game world.By the end of the book, you'll learn about model loading, right from setting up ASSIMP to learning about the model class and loading a model in your game environment. We will conclude by understanding cube mapping to bring advance worlds to your game.

114
Ebook

Learn WebAssembly. Build web applications with native performance using Wasm and C/C++

Mike Rourke

WebAssembly is a brand-new technology that represents a paradigm shift in web development. This book teaches programmers to leverage this technology to write high-performance applications that run in the browser. This book introduces you to powerful WebAssembly concepts to help you write lean and powerful web applications with native performance. You start with the evolution of web programming, the state of things today, and what can be done with the advent and release of WebAssembly. We take a look at the journey from JavaScript to asm.js to WebAssembly. We then move on to analyze the anatomy of a WebAssembly module and the relationship between binary and text formats, along with the corresponding JavaScript API. Further on, you'll implement all the techniques you've learned to build a high-performance application using C and WebAssembly, and then port an existing game written in C++ to WebAssembly using Emscripten. By the end of this book, you will be well-equipped to create high-performance applications and games for the web using WebAssembly.

115
Ebook
116
Ebook

Learning C++ Functional Programming. Explore functional C++ with concepts like currying, metaprogramming and more

Wisnu Anggoro

Functional programming allows developers to divide programs into smaller, reusable components that ease the creation, testing, and maintenance of software as a whole. Combined with the power of C++, you can develop robust and scalable applications that fulfill modern day software requirements. This book will help you discover all the C++ 17 features that can be applied to build software in a functional way.The book is divided into three modules—the first introduces the fundamentals of functional programming and how it is supported by modern C++. The second module explains how to efficiently implement C++ features such as pure functions and immutable states to build robust applications. The last module describes how to achieve concurrency and apply design patterns to enhance your application’s performance. Here, you will also learn to optimize code using metaprogramming in a functional way.By the end of the book, you will be familiar with the functional approach of programming and will be able to use these techniques on a daily basis.

117
Ebook
118
Ebook

LLVM Techniques, Tips, and Best Practices Clang and Middle-End Libraries. Design powerful and reliable compilers using the latest libraries and tools from LLVM

Min-Yih Hsu

Every programmer or engineer, at some point in their career, works with compilers to optimize their applications. Compilers convert a high-level programming language into low-level machine-executable code. LLVM provides the infrastructure, reusable libraries, and tools needed for developers to build their own compilers. With LLVM’s extensive set of tooling, you can effectively generate code for different backends as well as optimize them.In this book, you’ll explore the LLVM compiler infrastructure and understand how to use it to solve different problems. You’ll start by looking at the structure and design philosophy of important components of LLVM and gradually move on to using Clang libraries to build tools that help you analyze high-level source code. As you advance, the book will show you how to process LLVM IR – a powerful way to transform and optimize the source program for various purposes. Equipped with this knowledge, you’ll be able to leverage LLVM and Clang to create a wide range of useful programming language tools, including compilers, interpreters, IDEs, and source code analyzers.By the end of this LLVM book, you’ll have developed the skills to create powerful tools using the LLVM framework to overcome different real-world challenges.

119
Ebook

Machine Learning for OpenCV 4. Intelligent algorithms for building image processing apps using OpenCV 4, Python, and scikit-learn - Second Edition

Aditya Sharma, Vishwesh Ravi Shrimali, Michael Beyeler

OpenCV is an opensource library for building computer vision apps. The latest release, OpenCV 4, offers a plethora of features and platform improvements that are covered comprehensively in this up-to-date second edition.You'll start by understanding the new features and setting up OpenCV 4 to build your computer vision applications. You will explore the fundamentals of machine learning and even learn to design different algorithms that can be used for image processing. Gradually, the book will take you through supervised and unsupervised machine learning. You will gain hands-on experience using scikit-learn in Python for a variety of machine learning applications. Later chapters will focus on different machine learning algorithms, such as a decision tree, support vector machines (SVM), and Bayesian learning, and how they can be used for object detection computer vision operations. You will then delve into deep learning and ensemble learning, and discover their real-world applications, such as handwritten digit classification and gesture recognition. Finally, you’ll get to grips with the latest Intel OpenVINO for building an image processing system.By the end of this book, you will have developed the skills you need to use machine learning for building intelligent computer vision applications with OpenCV 4.

120
Ebook

Mastering Android NDK. Master the skills you need to develop portable, highly-functional Android applications using NDK

Viktor Latypov, Viktor Latypov, Sergey Kosarevsky

Android NDK is used for multimedia applications that require direct access to system resources. NDK is also the key for portability, which in turn allows a reasonably comfortable development and debugging process using familiar tools such as GCC and Clang toolchains.This is a hands-on guide to extending your game development skills with Android NDK. The book takes you through many clear, step-by-step example applications to help you further explore the features of Android NDK and some popular C++ libraries and boost your productivity by debugging the development process.Through the course of this book, you will learn how to write portable multi-threaded native code, use HTTP networking in C++, play audio files, use OpenGL ES 3, and render high-quality text. Each chapter aims to take you one step closer to building your application. By the end of this book, you will be able to create an engaging, complete gaming application.