paint-brush
55 Stories To Learn About Cppby@learn
379 reads
379 reads

55 Stories To Learn About Cpp

by Learn RepoApril 19th, 2023
Read on Terminal Reader
tldt arrow

Too Long; Didn't Read

Learn everything you need to know about Cpp via these 55 free HackerNoon stories.

People Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - 55 Stories To Learn About Cpp
Learn Repo HackerNoon profile picture

Let's learn about Cpp via these 55 free stories. They are ordered by most time reading created on HackerNoon. Visit the /Learn Repo to find the most read stories about any technology.

1. An Introduction to Open-source Real-time Operating System

Alan Kay said: “Simple things should be simple, complex things should be possible”. This sentence was the inspiration for the founder of RT-Thread to stick to his beliefs.

Background:

2. Stack Overflow Vulnerability

Stack overflow is a type of buffer overflow vulnerability. When we pour water in a glass more than its capacity the water spills or overflow, similarly when we enter data in a buffer more than its capacity the data overflows to adjacent memory location causing program to crash. This is know as buffer overflow.

3. How To Get The Most Out Of OpenGL With C++ And WASM

wasm,opengl,cpp,c++,html

4. Open-source RT-Thread IoT OS Launches its Embedded Integrated Development Environment

RT-Thread, an open-source embedded real-time operating system that has launched its development tool: RT-Thread Studio. RT-Thread Studio is built on Eclipse but has innovative interface interaction designs and it is deep customization of Eclipse, easy and simple to use, even new developers can easily get started.

RT-Thread Studio has the features of project creation and management, code editing, SDK management, RT-Thread configuration, build configuration, debugging configuration, program download and debug.

5. Understanding Chrome V8 — Chapter 2: Hello World

Welcome to other chapters of Let’s Understand Chrome V8

6. Let’s Understand Chrome V8 — Chapter 6: Bytecode Generation

Bytecode is the output of the parse, which is an architecture-independent abstract machine code.

7. Exploring Graph Traversal: From Breadth-First Search to Dijkstra's Algorithm

In this article, the breadth-first search algorithm is explained with examples and implementations, including how it can be modified to find the shortest paths.

8. Folding in C++ using Variadic Function Template

Template parameter pack was introduced in C++11. Today we will utilise it to write our fold function. To the ones who don't know what a fold function the expression fold(add, 1, 2, 3, 4, 5) , we will output (1 +(2 + (3 + (4 + 5)))) = 15 (which is left fold). Similarly for fold(mul, 1, 2, 3, 4, 5) , we will output 120. More about it can be found here.

9. Why You Should Avoid Using #include <bits/stdc++.h> While Writing Code

#include <bits/stdc++.h> is not a C++ standard header. Using it is bad coding practice. In this article the reasons why this header should be avoided are shared

10. Lay a strong foundation by writing secure C and C++ utilities

Libraries and system utilities form the foundations on which larger projects are built. So it's critical to make sure they, in particular, are secure. That's why we recently introduced five new rules for C++ and C to detect broken authentication and access control in *nix systems. The new rules fall into three categories: account validity, granting permissions, and changing directories.

11. Intermodular Analysis of C and C++ Projects - Part 1

Starting from PVS-Studio 7.14, the C and C++ analyzer has been supporting intermodular analysis.

12. How To Get Accurate Feedback From The SonarQube Ecosystem Into C++ Directly

Late feedback is a pain in the butt. Regardless of how it comes, hearing "that thing you did two weeks ago was wrong" is unwelcome at best. Good feedback is immediate, actionable and at least dispassionate, if not compassionate.

13. A Step-by-Step Guide to Learning C++

In this article, we are going to discuss a step-by-step guide on how you can learn C++.

14. How Components Can Help to Speed Up the Development Process using the RTOS

Do you need components when you're working on a real-time operating system? The components such as FinSH console, virtual file system, utest framework, dynamic module, socket abstraction layer, AT commands, POSIX interface, Ulog log, power management, or network framework. If you have these demands, this article may be of interest.

15. Static Polymorphism using Curiously Recurring Template Pattern (CRTP)

Inheritance is one of the most used method for code reuse. Object Oriented Languages strive on the inheritance to collect the common functionality in a base class.

16. Flood Fill Algorithm with Recursive Function

We all are known to the “Bucket” tool of Microsoft Paint which is used to fill an area with single specific color. But do we know how it actually works? Well, Let’s discuss this.

17. How to Solve the Hamming Distance Problem in C++, A Google Interview Question

In hamming distance problem, we find the number of positions where the bits are different for the given input with constant time complexity.

18. What Exactly Is nullptr in C++

The answer to "What exactly nullptr is in C++?" would be a piece of cake for experienced C++ eyes & for those who are aware of Modern C++ i.e. keyword. But nullptr is more than just a keyword in C++ & to explain that, I have written this article. But before jump-into it, we will see issues with NULL & then we'll dive into the unsophisticated implementation of  nullptr & some use-cases of nullptr.

19. Is Learning C++ Scary?

Don't let C++ scare you!

20. Understanding Chrome V8 — Chapter 1:Checkout, Build, Run V8

Welcome to the first chapter of Let’s Understand Chrome V8.

21. An Interview With C++ Creator Bjarne Stroustrup

We had a great talk with Bjarne Stroustrup, the designer and original implementer of C++.

22. Lay a strong foundation by writing secure C and C++ utilities

Libraries and system utilities form the foundations on which larger projects are built. So it's critical to make sure they, in particular, are secure. That's why we recently introduced five new rules for C++ and C to detect broken authentication and access control in *nix systems. The new rules fall into three categories: account validity, granting permissions, and changing directories.

23. For secure code, maintainability matters

Author Robert Collier said that "Success is the sum of small efforts repeated day in and day out." That's especially true when it comes to security.

24. Running Arbitrary Workloads in a nano VM

This post will show you how you can run an arbitrary piece of code in your nano VM. This post assumes that you already have a nano VM running (here). A full version of the program can also be found here (gitlab).

25. How To Win The Race Against TOCTOU Vulnerabilities in C & C++

Security is an eternal race between the techniques and technologies of attackers and those of the defenders. Today, I'm proud to announce a step forward for defenders with a new rule to detect a literal race condition: TOCTOU (or TOCTTOU) vulnerabilities, known in long-form as Time Of Check (to) Time Of Use.

26. Design Patterns: Prototype Pattern in Modern C++

Prototype Design Pattern is a Creational Design Pattern that helps in the prototyping(creating/copying cheaply) of an object using separate methods or polymorphic classes. You can consider the prototype as a template of an object before the actual object is constructed. In this article of the Creational Design Patterns, we’re going to take a look at why we need a Prototype Design Pattern in C++ i.e. motivation, prototype factory & leveraging prototype design pattern to implement virtual copy constructor.

27. Building RESTful Web Service Using C++, Swagger UI And Auto-Documented Endpoints

This is a 5 minutes tutorial how-to-use Oat++ (AKA oatpp) web framework to build your own C++ performant web-service and integrate it with Swagger-UI.

28. False positives Are Considered Enemies, But Can They Be Your Friends?

When writing a rule for static analysis, it’s possible that in some cases, the rule does not give the results that were expected. Unfortunately, naming a false positive is often far easier than fixing it. In this post, I’ll discuss how the different types of rules give rise to different types of false positives, which ones are easier to fix than others, and how you can help. I’ll end with insight into how issues that are false positives can still be true indicators that the code needs to change.

29. SOLID Design: Dependency Inversion Principle in C++

Dependency Inversion Principle in C++ is the fifth & last design principle of a series SOLID as a Rock design principles. The SOLID design principles focus on developing software that is easy to maintainable, reusable & extendable. In this article, we will see an example code with the flaw & correct it with help of DIP. We will also see guideline & benefits of DIP inclosure of the article.

30. Open Closed Principle: SOLID as a Rock

This is the second part of a five-part series about SOLID as Rock design principle. The SOLID design principles, when combined together, make it easy for a programmer to craft software that is easy to maintain, reuse & extend. Open-Closed Principle(OCP) is the second principle in this series which I will discuss here with minimalistic example in Modern C++ along with its benefits & generic guideline.

31. All About Lambda Functions in C++: from C++11 to C++17

Lambda function is quite an intuitive concept of Modern C++ introduced in C++11, So there are already tons of articles on lambda function tutorial over the internet. But still, there are some untold things(like IIFE, types of lambda, etc.) left, which nobody talks about. Therefore, here I am to not only show you lambda function in C++ but we'll also cover how it works internally & other aspects of Lambda.

32. How to Run and Debug C / C++ Code via VSCode

By the end of this short guide, you’d be able to run, debug, and get IntelliSense for C/C++ files in VSCode

33. How C program stored in RAM memory

When you run any C-program, its executable image loaded into RAM of computer in an organized manner which known as process address space or memory layout of C program. Here I have tried to show you the same thing in two parts .

34. Learn C++ Multi-Threading in 5 Minutes

Summary: A crash course on the C++14 multi-threading constructs in a very non-verbose manner

35. Variadic Template in C++: Implementing Unsophisticated Tuple

From C++11, std::tuple is an incredible expansion to Modern C++, that offers a fixed-size col­lec­tion of het­ero­ge­neous values. Un­for­tu­nately, tu­ples can be somewhat dubious to manage in a conventional fash­ion. But, subsequently released C++ stan­dard in­tro­duced a few fea­tures & helpers that greatly re­duce the nec­es­sary boil­er­plate. So, in this article, I will explain the variadic template in C++ with the help of unsophisticated tuple implementation. And also walks you through a tricky part of tuple i.e. loop through tuple element. In spite of the fact that I have shrouded the variadic template in my prior article i.e. C++ Template: A Quick UpToDate Look. So, my focus here would be a blend of variadic template & tuple implementation with more up to date C++ gauges.

36. Design Patterns: Singleton Pattern in Modern C++

In software engineering, Creational Design Patterns deal with object creation mechanisms, i.e. try to create objects in a manner suitable to the situation. The basic or ordinary form of object creation could result in design problems or added complexity to the design. In this article of the Creational Design Patterns, we’re going to take a look at the much-hated & commonly asked design pattern in a programming interview. That is Singleton Design Pattern in Modern C++ which criticizes for its extensibility & testability. I will also cover the Multiton Design Pattern which quite contrary to Singleton.

37. How to Manipulate Bits in C and C++

All data in computer is represented in binary i.e. in 0 or 1. Computers or machines do not understand our languages, they understand bits. Generally programmer do not care about operations at the bit level. But sometimes a programmer has to dive in a deeper level and work on bits.

38. Introduction to Object-Oriented Design Patterns

After hitting a certain level of experience & spending quite enough time in the industry, I have realised the importance of designing/architecting system & software. So I have started looking into system/software design & got to know nothing can better start than a Design Pattern. And the first thing I have done is googling "What is Design Pattern?" Hence got the idea of this article.

39. Single Responsibility Principle in C++: SOLID as a Rock

This article is the first part of a five-part series about SOLID as Rock design principle series. The SOLID design principles focus on developing software that is easy to maintainable, reusable & extendable. In this article, we will see an example of the Single Responsibility Principle in C++ along with its benefits & generic guideline.

40. Top 10 Bugs Found in C++ Projects in 2020

Top 10 Bugs Found in C++ Projects. Modulo division by one delete instead of delete[] Buffer overflow Meaningless overflow protection

41. Increment and Decrement Operators in C/C++

I found the sign '++ and — — ' in C++ confusing for many beginners, So let’s explain what’s actually they mean,

42. C++ Type Casting for C Developers

The typecasting is the feature which makes C++ more type-safe, robust & may convince you to use it over C. But this is also a more underrated topic when you are a newbie or moving from C background. Hence, I come up with an article on it. Here, we will not only see the C++ type casting with example for C developers but we will also cover Why do we need typecasting? & C++ type casting cheat codes for C developers to remember & employ it easily.

43. Design Patterns: Exploring Factory Method in Modern C++

In software engineering, Creational Design Patterns deal with object creation mechanisms, i.e. try to create objects in a manner suitable to the situation. In addition to this basic or ordinary form of object creation could result in design problems or added complexity to the design.

44. How C Program Converts Into Assembly

In an earlier article, we have seen C runtime: before starting main & How C program stored in RAM memory. Here we will see "How C program converts into the assembly?" and different aspect of its working at the machine level.

45. Design Patterns: Builder Pattern in Modern C++

In software engineering, Creational Design Patterns deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic or ordinary form of object creation could result in design problems or added complexity to the design. Builder Design Pattern in C++ solves this specific problem by separating the construction of a complex object from its representation.

46. SOLID Design: Interface Segregation Principle in C++

Interface Segregation Principle in C++ is the fourth & by far the simplest design principle of a series SOLID as a Rock design principles. The SOLID design principles focus on developing software that is easy to maintainable, reusable & extendable. In this article, we will see a code violating ISP, a solution to the same code, guideline & benefits of ISP.

47. Top 10 C++ Open Source Project Bugs Found in 2019

Another year is drawing to an end, and it's a perfect time to make yourself a cup of coffee and reread the reviews of bugs collected across open-source projects over this year. This would take quite a while, of course, so we prepared this article to make it easier for you. Today we'll be recalling the most interesting dark spots that we came across in open-source C/C++ projects in 2019.

48. Bugs From the 90's: The Code of the Command & Conquer Game

The American company Electronic Arts Inc (EA) has made the source code of the games Command & Conquer: Tiberian Dawn and Command & Conquer: Red Alert publicly available. This code should help the game community to develop mods and maps, create custom units, and customize the gameplay logic. We all now have a unique opportunity to plunge into the history of development, which is very different from the modern one.

49. 7 best practices for exception handling in C++

Exception handling in C++ is a well-unschooled topic if you observe initial stages of the learning curve. There are numerous tutorials available online on exception handling in C++ with example. But few explains what you should not do & intricacies around it. So here, we will see some intricacies, from where & why you should not throw an exception along with some newer features introduced in Modern C++ on exception handling with example. I am not an expert but this is what I have gained from various sources, courses & industry experiences.

50. Modern C and C++: Important Facts To Know

C was developed and promoted by Dennis Ritchie in the years between 1969 and 1973 at AT&T Bell Labs. C++ came into existence around 1979 by Bjarne Stroustrup. C++ was created as an enrichment to the C programming language, and initially, it was named "C with Classes."

51. How To Use C++ Null Pointers

Some of you may have been tired of this topic already, but our software engineers picked 7 examples and tried to explain their behavior using the Standard (the latest draft at the time of writing):

52. Bugs from the 90's: The Code of Command and Conquer [Volume 2]

The American company Electronic Arts Inc (EA) has opened the source code of the games Command & Conquer: Tiberian Dawn and Command & Conquer: Red Alert publicly available. Several dozen errors were detected in the source code using the PVS-Studio analyzer, so, please, welcome the continuation of found defects review.

53. 7 Advanced C++ Concepts You Should Know

So I have started updating myself with Modern C++ a while ago & since my post 21 new features of Modern C++ to use in your project & All about lambda function in C++ was popular I decided to write about advanced C++ concepts & idioms which I have learned from this wikibook & course.

54. Fixing Code Errors in Amnesia: The Dark Descent

Just before the release of the "Amnesia: Rebirth" game, the vendor "Fractional Games" opened the source code of the legendary "Amnesia: The Dark Descent" and its sequel "Amnesia: A Machine For Pigs". Why not use the static analysis tool to see what dreadful mistakes are hidden in the inside of these cult horror games?

55. Machine Learning in Static Code Analysis

Machine learning has firmly entrenched in a variety of human fields, from speech recognition to medical diagnosing. The popularity of this approach is so great that people try to use it wherever they can. Some attempts to replace classical approaches with neural networks turn up unsuccessful. This time we'll consider machine learning in terms of creating effective static code analyzers for finding bugs and potential vulnerabilities.

Thank you for checking out the 55 most read stories about Cpp on HackerNoon.

Visit the /Learn Repo to find the most read stories about any technology.