Is hard.
Thick JavaScript
The following combination of symbols ->
is known in many languages as an "arrow" operator. Javascript is not one of those languages however it has a similarly looking operator =>
which by many is called "fat arrow".
Comparison in C++
C++ is known to be a rather verbose language. And one of the problems arises when one creates a custom types that need to be comparable. For example you have your class Dog
and want to compare
bool operator > (const Dog& a, const Dog& b) {
return a.awsomeness > b.awesomeness;
}
so you want to find which is the best dog out there. But C++ has more than just one comparison operator, it has 6 of them: ==
, >
, <
, >=
, <=
, !=
. So in order to support comparison you need to define all of them, not just one. To somehow solve  this problem of too many operators C++ has introduced yet another operator! Its official name is "three way comparison" <=>
. But most people call it the "spaceship operator".
Optimism of CocoaPods
The package manager CocoaPods has a number of operators that are used to specify certain ranges of versions of the packages. Among them is an operator ~>
which tells package manager to install the specified version, or any patched versions after the specified, hoping for a more stable package. To reflect this hope the operator was actually called the "optimistic operator". Not that often you would find explicit optimism in the code, most of the times it is revealed as hope of a programmer that its code would not fail.
Disambiguation of Rust
In the strictly typed programming language Rust many types are inferred by the compiler and rarely you need to write single type more than once (at least within a given context). However there exist some cases when Rust is not sure what it needs to do because it has too many options. In these cases Rust requires an explicit syntax ::<SomeType>
to disambiguate the behaviour. Which is known as "turbofish".
Low Level in Python
Anyone who has had a chance to work with Python have seen some functions that start and end with two _
symbols. Mostly this is __init__
method that is called when an object of a given class is created. But Python has much more of these functions and all of them are used to convey a lower level functionality of data types. They are considered lower level because normally they are not directly used in programs, but instead are picked up by the language when performing other operations with the objects. For example to find the number of elements in a list one would call function len(my_list)
. But if you define the method __len__(self)
in your class then you can use the very same function len(my_obj)
as if it was an array. And Python has dozens of these double-underscored-functions (and identifiers in general) that let your code mimic the behaviour of basic data types. The official name for them is the "data model" functions, but people ignore that name and usually call them "dunder" functions (because saying "double-underscore-function" is a bit of a mouthful).