Skip to content

Commit

Permalink
More Safe Cpp glossary definitions (#382)
Browse files Browse the repository at this point in the history
  • Loading branch information
PeterTurcan authored Dec 20, 2024
1 parent dbbef64 commit 65ab98c
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion user-guide/modules/ROOT/pages/glossary.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*ASIO* : Asynchronous Input/Output - refer to boost:asio[]

*AST* : Abstract Syntax Tree - a data structure used in compilers to represent the structure of code in a hierarchical, tree-like form. It's a crucial intermediate step in parsing code for tasks like analysis, compilation, and optimizations.

== B

*BBK* : _Badly Broken Keyboard_ - describing terrible code or debugging issues
Expand All @@ -51,6 +53,8 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*CML* : Can mean CMake Language, Conversion Markup Language, Configuration Menu Language, Concurrent ML (a high-level language for concurrent programming) - depending on context.

*CppFront* : a project created by https://github.com/hsutter/cppfront[Herb Sutter], which is a _syntax experiment_ for pass:[C++]. It's designed as a front-end tool to make pass:[C++] more modern and easier to use by offering a simpler syntax that translates into standard pass:[C++] code. Essentially, it's a _transpiler_ for a modernized dialect of pass:[C++].

*CRC* : Cyclic Redundancy Code - refer to boost:crc[]

*CRTP* : Curiously Recurring Template Pattern
Expand Down Expand Up @@ -174,7 +178,11 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*LOPS* _Lack Of Programmer Skill_ - used humorously when a problem is tricky to debug

*LSP* : Liskov Substitution Principle - states that objects of a derived class should be able to replace objects of the base class without affecting the correctness of the program, ensuring that a subclass can stand in for its superclass without altering expected behavior.
*LSP* :

* Liskov Substitution Principle - states that objects of a derived class should be able to replace objects of the base class without affecting the correctness of the program, ensuring that a subclass can stand in for its superclass without altering expected behavior.

* Language Server Protocol - a standard protocol used for communication between code editors/IDEs (like VS Code) and programming language tools (like compilers or linters). It's designed to enable features like autocomplete, go-to-definition, and refactoring.

== M

Expand All @@ -186,6 +194,12 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

* Multiple Data Streams : a more abstract term, refers to scenarios where an application handles multiple data streams simultaneously, possibly in a parallel or distributed environment.

*MFW* : _My Face When_ - used humorously or sarcastically depending heavily on the accompanying context or image.

*MIR, MLIR* : Mid-level Intermediate Representation - an intermediate form of code that is generated by the compiler during the compilation process, designed to be easier for the compiler to analyze and optimize. In particular, this mid-level code aids with *borrow checking*, incremental compilation and ensuring safety (type, memory, etc.) issue.

*MOC* : In the context of Qt and pass:[C++], this refers to the Meta-Object Compiler - a tool that processes Qt's extensions to pass:[C++], such as signals and slots (a mechanism for event-driven programming) and other meta-object features (like introspection and dynamic properties). The MOC generates additional pass:[C++] code that enables these features to work seamlessly.

*MPI* : Message Parsing Interface - refer to boost:mpi[]

*MPL* or *MP11* : Metaprogramming Libraries - refer to boost:mpl[] and the later boost:mp11[]
Expand All @@ -198,6 +212,8 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*NIMBY* : _Not In My Back Yard_ - when a programmer doesn't want to deal with a particular issue

*NLL* : Non-Lexical Lifetimes - an NLL borrow checker in the https://www.rust-lang.org/[Rust] language that uses a more precise, dataflow-based analysis to determine when a borrow starts and ends, based on the actual usage of the variables. This allows for more flexible and intuitive borrowing rules.

*NTTP* : Non-Type Template Parameter

== O
Expand All @@ -214,6 +230,8 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*PFR* : A library to perform basic reflection - refer to boost:pfr[]

*Phi function* : a construct used in Static Single Assignment (see *SSA*) form to resolve multiple possible values for a variable when control flow converges in a program. It selects a value based on the control flow path taken to reach the convergence point. Phi functions are not visible to developers — they exist in the intermediate representation (IR) of compilers working with low-level code optimizations.

*PICNIC* : _Problem In Chair, Not In Computer_

*PIMPL* :
Expand Down Expand Up @@ -255,6 +273,8 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*RTTI* : Run-Time Type Information

*RUST* : https://www.rust-lang.org/[Rust] is a relatively new programming language incorporating memory-safety, thread-safety and type-safety constructs. This language provides many of the concepts proposed for *Safe pass:[C++]*.

*Rustaceans* : Afficionados of the https://www.rust-lang.org/[Rust] programming language

== S
Expand All @@ -279,6 +299,8 @@ You will find well known acronyms such as DLL, URL and UUID in this list, becaus

*SOLID* : Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion (Design principles)

*SSA* : Static Single Assignment - a property of intermediate representations (IRs) used in compilers. SSA is a popular technique in modern compilers to make optimizations and analysis simpler and more efficient. Each variable is assigned exactly once and is immutable after assignment. If a variable is updated, a new variable is created instead. Refer also to *Phi* functions.

*STL* : Standard Template Library

== T
Expand Down

0 comments on commit 65ab98c

Please sign in to comment.