A message to a string
In `x = "100".to_i`, the string is the receiver. The dot sends it the message `to_i`; the matching method runs, and its result, the integer `100`, is assigned to `x`. section 1.1.4
Ruby values are objects. To request behavior from one, put a message to the right of a dot and the receiving object to the left. The receiver may be a literal, such as `"100"`, or an object represented by a variable. A message usually matches a method name, so “sending a message” and “calling a method” often describe the same operation. section 1.1.4 section 2.1.2
Teaching an object to respond
Create an object with `obj = Object.new`, define `def obj.talk` to print two lines, and then send `obj.talk`. The object responds to `talk` because it has a method with that name. Message sending is how code requests an action from an object, including behavior you define yourself. section 2.1.2
The two terms are not quite interchangeable: a receiver may have no method matching a message. Ruby can route an unknown message through `method_missing` rather than simply execute a matching method. Calls may also pass arguments, as in `"100".to_i(9)`. A call without an explicit receiver, such as `puts "Hello"`, sends its message to `self`. section 1.1.4 section 1.5
