1. Free format - You can start writing your program from any line and column.


2. Case sensitive - Lowercase letters and uppercase letters are distinct.The keyword end, for example, is completely different from the keyword END.


3. Comments - Anything following an unquoted #, to the end of the line on which it appears, is ignored by the interpreter. Also, to facilitate large comment blocks, the ruby interpreter also ignores anything between a line starting with =begin and another line starting with =end. This only works if the = signs are the first characters of each line.


4. Statement delimiters - Multiple statements on one line must be separated by semicolons, but they are not required at the end of a line; a linefeed is treated like a semicolon. If a line ends with a backslash (\), the linefeed following it is ignored; this allows you to have a single logical line that spans several lines.


5. Keywords - Also known as reserved words (around 42 of them) in Ruby typically cannot be used for other purposes. In addition to these keywords, there are three keyword-like tokens that are treated specially by the Ruby parser when they appear at the beginning of a line: =begin, =end, _END_ You may be used to thinking that a false value may be represented as a zero, a null string, a null character, or various other things. But in Ruby, all of these *values* are true; in fact, everything is true except the reserved words false and nil. Keywords would be called "reserved words" in most languages and they would never be allowed as identifiers. The Ruby parser is flexible and does not complain if you prefix these keywords with @, @@ or $ prefixes and use them as instance, class or global variable names. The best practice is to treat these keywords as reserved.