In SuperCollider everything is an object, and behaviour is triggered by sending messages to receivers
SuperCollider is object-oriented: every value — numbers, strings, arrays, UGens, patterns, synths — is an object. You make things happen by sending a message (also called a method) to a receiver, optionally with arguments, written receiver.message(arguments). The dot connects receiver to message. Classes, written with a leading capital (SinOsc, Array, Pbind), define which messages their objects understand; messages themselves are lowercase. Messages can be chained: 100.0.rand.round(0.01) sends rand to 100.0, then round to the result. Sending a message an object does not understand raises a clear error naming the unknown message (ERROR: Message 'X' not understood). This single model explains all of SC’s dot-notation and why capitalized class words can be followed by .ar, .kr, .play, .add, and so on.
Examples
2.squared; // receiver 2, message squared
[1,2,3].reverse; // receiver array, message reverse
"hello".dup(4); // receiver string, message dup, argument 4
100.0.rand.round(0.01).dup(4); // chained messages
SinOsc.ar(440,0,0.5); // receiver class SinOsc, message ar
Assessment
For each expression identify the receiver, the message, and the arguments: 3.1415.round(0.1), [1,2,3].reverse, SinOsc.ar(440,0,0.5). Rewrite 3.1415.round(0.1) in functional notation. Predict what SC does when you send a nonexistent message.