diff --git a/user-guide/modules/ROOT/pages/glossary.adoc b/user-guide/modules/ROOT/pages/glossary.adoc index 437ab24..5499eab 100644 --- a/user-guide/modules/ROOT/pages/glossary.adoc +++ b/user-guide/modules/ROOT/pages/glossary.adoc @@ -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 @@ -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 @@ -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 @@ -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[] @@ -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 @@ -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* : @@ -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 @@ -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