While similar to GolfScript in many ways, CJam also has the following differences (probably an incomplete list):
- Support for double (floating point) numbers
- Character type, which also enables a clear distinction between strings and arrays of numbers
- Adjacent letters and letters followed by digits are not automatically joined into a single identifier, but parsed separately (most identifiers are named with a single character, except some 2-character operators)
- Simplified string syntax, using only double quotes and minimal escaping (similar to single-quoted strings in GolfScript)
- Only standard variables (uppercase letters) can be assigned, and they are initialized with various useful values
- No support for comments; you can write comments as strings and pop them immediately, like this:
"This is a comment";.
- The input is not automatically placed on the stack; instead, there are operators for reading the input ("l", "r", "q")
- Support for setting array values (using the "t" operator)
- Support for converting values to specific types (using operators "a", "c", "d", "i", "s")
- Support for "for" loops with a loop variable ("f" operator)
- Support for "do-while" loops that do not pop the condition ("h" operator)
- Support for short map and fold operations (":" and "f" operators)
- Additional operators: scientific notation, min, max, debug, lowercase, uppercase, shift, shuffle
- The "." operator is renamed to "_"; dots are now used for double literals
- The "?" (power) operator is renamed to "#"
- The "and" operator is renamed to "e&"
- The "or" operator is renamed to "e|"
- The "print" operator is renamed to "o"
- The "n" built-in is replaced with the "N" variable (pre-assigned to the newline string)
- The "rand" operator is renamed to "mr"
- The "do" operator is renamed to "g"
- The "if" operator is renamed to "?"
- The "abs" operator is renamed to "z"
- The "zip" operator is renamed to "z"
- The "base" operator is renamed to "b"
- A few operators are not (yet) implemented, or do not (yet) have all the meanings they have in GolfScript, or just work a bit differently