# Programming Terms

February 02, 2020

## Programming terms

I often had trouble reading complicated explanations about some terms and the list here tries to make a definition that can be understood by normal human beings without theoretical mathematics and other higher level skills.

LetterTermMeaning
"A"ACIDAtomicity, Consistency, Isolation, Durability. If a Database follows ACID rules then the operation will success and data will be stored or the operation will fail and the database remains in a safe state. Concurrent operations are handled transparently by the database. More
"A"Amdahl's LawLaw used to predict the maximum possible performance speedup when adapting programs to use more processors. More
"C"CouplingObjects or components are tightly coupled if they highly depend on each other what hinders their reuse and extendabilty. More
"D"Demeter's Lawor principle of least knowledge to avoid coupling More
"D"DRY principleDon't Repeat Yourself More]
"K"KISS principleKeep It Simple, Stupid! Avoid unnecessary complexity. More
"R"ReentrancyA routine is said to be reentrant if while one thread is running the code, another thread can enter and run also the routine safely. Usually involves not using static variables or calling only reentrant functions. More
"S"SOLID principleSingle responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion principles More

### closure

Example: a function declares another function inside itself that uses its local variables. The inner function + local variables is called closure. More

### code metric

A quantitative measure of a characteristic of the software source code. A simple metric is the amount of lines, or the ration comments/lines of code

### Fluent interface

A readable way to cascade and transfer a context to subsequent method calls. More

### GRASP

General Responsibility Assignment Software Patterns More

### immutable

An immutable object cannot be modified after creation. More

### Kerkhoffs' principle

A cryptosystem should be secure even if everything about the system, except the key, is public knowledge. More

### lambda expression

Description of a function by mean of a statement binding parameters to an expression. For example: (x,y) => x*y defines an anonymous function that returns the product of the two arguments. This is often used to define delegates in a more readable way.

### Liskov substitution principle

A derived class shall behave in the same way than the base class (keeping same semantics). More

### Mc Cabe complexity

A code metric representing the amount of decisions taken by a piece of code. Having complex code makes the maintenance and testing of that code harder and costly. Here is a small drop-in tool that computes metrics for you: ACQC metrics.

### OCP: open/closed principle

"software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification" More

A derived class overrides a base class virtual method, the implementation is replaced by the derived one, this is done at run-time.

### overriding

The same method has different implementations with different parameter types (in the same scope).

### REST/RESTful (Representational State Transfer)

An architecture that is resource oriented (accessible over an URL for example) and follows the constraints of requests being cacheable and the requests holding all parameters needed for operation (no need to manage a state or session on server side) among others. More

### Semantic Versioning

http://semver.org/, how to create/update versions according to these rules

### TOCTTOU

Time Of Check To Time Of Use: Security issue or bug caused by a change to a system between the check (where the conditions were ok) and the time at which a resource is used. Usually the solution consist into locking the resource before the check and while the resource is used. More