What you will learn in Data-Oriented Programming: Reduce software complexity
Reduce software complexity
Chapter by chapter
Concepts explained in this book
- genericsA generic data manipulation function processes structured data according to its accessible structure rather than a specific domain class.
- testA test case is a specific set of input data, execution conditions, and expected results used to evaluate software behavior.
- immutable collectionImmutable data is data whose stored value cannot be modified after creation, requiring changes to be represented by new data versions.
- data-oriented programmingA programming paradigm that organizes software around data and seeks to reduce system complexity by separating data from code and avoiding unnecessary mutation and encapsulation.
- JSON SchemaJSON Schema is a language and vocabulary for describing constraints on JSON data and validating JSON instances against those constraints.
- structural sharingStructural sharing is a data-management technique in which related versions reuse unchanged portions of the same underlying structure.
- recordA record is a data structure that groups related fields, potentially containing values of different data types.
- persistent data structureA persistent data structure is an immutable data structure whose previous versions remain available after updates, typically through structural sharing.
- serializationSerialization is the conversion of structured data into a representation suitable for storage or transmission.
- generic data structureA generic data collection is a collection whose representation is not tied to a particular domain class or component implementation.
- deserializationDeserialization is the conversion of a serialized representation back into structured data, including JSON text in the JSON-specific sense.
- schemaA data schema is a formal description of the structure, constraints, and types that valid data must satisfy.
- reproducibilityReproducibility is the ability to recreate the behavior of a computation in another environment using the same relevant inputs and conditions.
- heterogeneous string mapA heterogeneous map is a map whose values can have different types or shapes.
- multimethodA multimethod method is a function that provides an implementation for a particular dispatch value.
- homogeneous string mapA homogeneous map is a map whose values all have the same type or kind.
- data manipulation routineData manipulation code computes or transforms structured data without directly managing persistent application state.
- data entityA data entity is an entity representing stored or modeled information independently of the code that operates on it.
- moduleA software unit that aggregates stateless functions separately from the data entities those functions manipulate.
- stateless systemA stateless function is a function whose result does not depend on persistent state stored inside the function or its containing module.
- polymorphic dispatchA dispatch function is a function that defines a multimethod's signature, validates its arguments, and emits a value used to select an implementation.
- atomAn atom is a concurrency-control mechanism that provides coordinated updates to shared state without requiring explicit locks.
- _.get_.get is a Lodash function that retrieves a value from a nested object or array using a property path.
- code-data separationAn architectural technique that represents program behavior and program data as separate entities rather than mixing them in one class.
- object-oriented programmingA programming paradigm in which programs are composed from objects that combine state with methods for accessing and manipulating that state.
- required keywordA required array is a JSON Schema keyword value listing the property names that an object must contain.
- positional collectionA positional collection is an ordered collection whose elements are accessed by their positions.
- persistent listA persistent list is an immutable list whose earlier versions remain available after elements are added or updated.
- multi-version state managementMulti-version state management maintains multiple immutable versions of system data and advances a reference to select the current version.
- late bindingLate binding is the practice of deferring the determination or handling of concrete data types until runtime or a later processing stage.
- context-capturing codeThe recording of a function's inputs and relevant execution context so that its execution can be replayed.
- branching factorA branching factor is the number of child nodes or partitions produced at each level of a tree-structured data representation.
- immutable functionAn immutable function is a function that manipulates data without mutating existing data, producing new data instead.
- calculation phaseThe calculation phase is the phase of a mutation that computes the next version of system data without advancing the current state.
- business logicBusiness logic is the domain-specific rules and computations that determine how an application processes requests and data.
- flexibilityThe degree to which a software system can adapt to changing requirements without requiring changes to its design.
- prefixItemsprefixItems is a JSON Schema keyword that specifies schemas for the positional elements of an array.
- tupleA tuple is a fixed-size ordered collection whose elements may have different types or shapes.
- inheritanceClass inheritance is a language mechanism in which a class derives behavior and structure from one or more parent classes.
- tree of function callsA tree of function calls is a hierarchical model whose root is a function and whose child nodes are the functions called by each parent function, with leaves representing functions outside the application code base or functions that call no other functions.
- composition relationshipA composition relation is an object relationship in which the composed object's life cycle depends on the composing object.
- optimistic concurrency controlOptimistic concurrency control is a concurrency-control technique that allows operations to proceed without locking and detects or reconciles conflicts before committing changes.
- enum keywordThe JSON Schema keyword that restricts a value to one of a specified set of allowed values.
- all_.every is a Lodash function that returns true when a predicate returns true for every element of a collection.
- prefix matchingPrefix matching is text matching that succeeds when a specified string begins at a recognized word boundary or other defined starting position.
- universally unique identifierA UUID is a 128-bit identifier represented in a standardized textual form and designed for practical global uniqueness.
- word boundaryA word boundary is a position in text recognized by a regular expression as the boundary between a word character and a non-word character.
- database driverA database driver is software that enables an application to communicate with a particular database system.
- database result setA JDBC result set is an object that provides access to the tabular rows returned by a JDBC database query.
- JDBCJDBC is the standard Java API for connecting to databases, executing database operations, and processing returned results.
- negative testingA negative test case verifies that software behaves correctly when given invalid input or an input that should cause failure.
- diffA diff is a representation of the changes between two versions of structured data.
- data modelA data model is a structured representation of the data entities, fields, values, and relationships in a system.
- UML class diagramA UML class diagram is a structural diagram that represents classes, their attributes and operations, and relationships between them.
- polymorphismPolymorphism is a language capability in which a common interface can represent values or objects with different implementations.
- structural diff algorithmAn algorithm that recursively compares structured maps and collections to represent differences while ignoring map field order.
- _.merge_.merge is a Lodash function that recursively combines properties from source objects into a destination object.
- JSON.parseJSON.parse is the standard JavaScript function that parses a JSON string into the corresponding JavaScript value.
- filteringA filter function returns the elements of a collection that satisfy a specified predicate.
- mutationA mutation is an operation that changes the state of a system or data structure.
- items keywordThe JSON Schema keyword whose value specifies the schema for elements of an array.
- arrayAn ordered collection whose elements are accessed by numeric position.
- dispatch valueA dispatch value is the value produced from multimethod arguments that identifies which implementation should execute.
- statefulnessStateful code is code whose behavior or effects involve persistent state beyond the values passed directly to a computation.
- usage relationA usage relation indicates that one class or object uses a method or capability of another class or object.
- entity-relationship diagramA data entity diagram is a visual model that represents data entities and distinguishes association and composition relationships between them.
- explicit inputAn explicit argument is a value directly supplied by the caller in a function invocation.
- high-level designA high-level design is a system-level definition of its modules and the interactions between them.
- multiple dispatchMultiple dispatch is a dispatch mechanism that selects an implementation based on the types of several arguments.
- classA class is an object-oriented programming construct that defines the structure and behavior of objects and can serve as a type or inheritance basis.
- conflicting mutationA mutation whose structural changes overlap with those of another mutation at one or more information paths.
- three-way mergeA three-way merge combines changes by comparing two divergent versions with their common predecessor.
- _.isEqual_.isEqual is a Lodash function that recursively compares JavaScript values for deep structural equality.
- determinismDeterminism is the property that the same causes produce the same effects, such as the same function arguments producing the same return value.
- Lodash FP moduleThe Lodash FP module is the Lodash module that provides functional-programming-oriented versions of Lodash functions.
- class hierarchyA class hierarchy is an arrangement of classes connected by inheritance relationships.
- composition over inheritanceComposition over inheritance is a design principle that favors assembling objects from component objects instead of extending classes through inheritance.
- diamond problemThe diamond problem is ambiguity caused when a class inherits from two classes that share a common ancestor.
- multiple inheritanceMultiple inheritance is a class-inheritance mechanism in which one class derives directly from more than one parent class.
- arrows/multimethodsarrows/multimethods is a JavaScript library that provides an implementation of multimethods.
- multimulti is a library function that creates a multimethod.
- GsonGson is a Java library for converting Java objects to JSON and JSON text back to Java objects.
- dotted notationDot notation is syntax for accessing a named property or member through a dot-separated expression.
- JSON Schema FakerJSON Schema Faker is a library that generates randomized data conforming to JSON Schema definitions.
- schema-based unit testA schema-based unit test is an automated test that generates arguments conforming to an input schema and checks that the result conforms to an output schema.
- record typeA record type is a classification identifying the kind of entity represented by a record, such as a member or librarian.
- update functionA function that returns a new version of structured data by applying a supplied transformation to a value at a specified path.
- atomicCompareAndSetAn atomic conditional-update operation that sets state to a new value only when it equals a supplied old value.
- swapAn atom operation that repeatedly computes and conditionally installs a new value derived from the current value.
- Immutable.jsImmutable.js is a JavaScript library providing persistent immutable collections and related data structures.
- dynamic dispatchDynamic dispatch is runtime selection of an operation implementation based on runtime argument information rather than only static types.
- extensibilityExtensibility is the capacity of software to accommodate new functionality with minimal changes to existing code.
- case statementA switch statement selects and executes code according to the value of an expression or discriminant.
- complexityThe degree to which a software system is hard to understand, rather than the computational resources it consumes.
- recursive comparisonRecursive comparison is the process of comparing nested data structures by recursively comparing their contained values.
- additionalPropertiesadditionalProperties is a JSON Schema keyword that controls whether object properties not specified by the schema are allowed.
- schema flexibilitySchema flexibility is the degree to which a schema permits variations or additional fields in valid data.
- schema strictnessSchema strictness is the degree to which a schema rejects data that contains unspecified or otherwise nonconforming structure.
- Immutable.fromJSImmutable.fromJS is an Immutable.js function that recursively converts JavaScript values into immutable collections and values.
- field aggregationField aggregation is the transformation of values from a field across multiple records into one combined value.
- AjvAjv is a JavaScript library that compiles JSON Schema definitions into functions for validating data.
- state referenceA state reference is a mutable reference identifying the version of system data that currently represents the system state.
- first-class objectA first-class citizen is a value or language entity that can be represented, stored, passed, and manipulated in the same general ways as other values.
- dynamic field accessA programming capability that resolves a data field by a runtime string key rather than fixed source-code property syntax.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
