nameof operator allows you to get the name of a variable, type or member in string form without hard-coding it as a literal.
The operation is evaluated at compile-time, which means that you can rename a referenced identifier, using an IDE's rename feature, and the name string will update with it.
Stream represents a sequence of elements and supports different kind of operations to perform computations upon those elements. With Java 8,
Collection interface has two methods to generate a
Stream operations are either intermediate or terminal. Intermediate operations return a
Stream so multiple intermediate operations can be chained before the
Stream is closed. Terminal operations are either void or return a non-stream result.
Lambda expressions provide a clear and concise way of implementing a single-method interface using an expression. They allow you to reduce the amount of code you have to create and maintain. While similar to anonymous classes, they have no type information by themselves. Type inference needs to happen.
Method references implement functional interfaces using existing methods rather than expressions. They belong to the lambda family as well.
Concurrent computing is a form of computing in which several computations are executed concurrently instead of sequentially. Java language is designed to support concurrent programming through the usage of threads. Objects and resources can be accessed by multiple threads; each thread can potentially access any object in the program and the programmer must ensure read and write access to objects is properly synchronized between threads.
PHP's functional programming relies on functions. Functions in PHP provide organized, reusable code to perform a set of actions. Functions simplify the coding process, prevent redundant logic, and make code easier to follow. This topic describes the declaration and utilization of functions, arguments, parameters, return statements and scope in PHP.
In C++ Metaprogramming refers to the use of macros or templates to generate code at compile-time.
In general, macros are frowned upon in this role and templates are preferred, although they are not as generic.
Template metaprogramming often makes use of compile-time computations, whether via templates or
constexpr functions, to achieve its goals of generating code, however compile-time computations are not metaprogramming per se.
Used to prevent name collisions when using multiple libraries, a namespace is a declarative prefix for functions, classes, types, etc.