{{language |exec=bytecode |express=implicit |checking=dynamic |gc=yes |site= }} {{language programming paradigm|Dynamic}} {{language programming paradigm|Object-oriented}}

Brat is a little language which tries to let you do what you want to do, because it knows no one is the boss of you. While influenced by [[Ruby]] in many ways, it accidentally resembles [[Javascript]]. The language design attempts to avoid "special cases" as much as possible, and therefore has no keywords and very few special symbols.

In Brat, everything is either an object or a function, and all functions are closures. Objects are essentially just collections of functions which can have inheritance relationships with other objects. The object system in Brat uses a prototyping approach, so new objects are always created as children of some existing object. Functions in Brat are first-class values which can be passed around like any other value.

Brat is also a very eager language. The only way to delay code evaluation is to enclose it in a function. Any use of a variable containing a function is assumed to be calling the function.