{{language
|exec=bytecode
|express=implicit
|checking=dynamic
|gc=yes
|site=http://brat-lang.org
}}
{{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.