object is perhaps the most overloaded word in computing, with the common denominator being the idea that an object is a concrete instance of some type of thing in the context of some larger system.
At the lowest level, the objects of interest to a programmer are locations in memory, and assembly programmers work primarily with these. At the next level up, languages like C allow direct manipulation of values and their locations in memory, but also provide primitive objects such as "character", "integer", "float", and "array". In The C Programming Language, the first use of the term "object" is in reference to these primitives. Already, this level, the concept of class creeps in, with the various numeric types having a certain degree of compatibility with each other.
In the context of compiling source code to machine code, C, an object is an instance of a compiled unit of source code. From this meaning comes the term, shared object, also called a dynamic link library, which is a compiled code object that can be linked into a program at runtime.
In object orientation, which refers to a set of programming language features which allow for the organization of code according to functional task within a program, an object is a collection of data elements representing some structure or entity, along with the functions that can be applied to the data. Such objects are often either instantiated from classes or cloned from prototypes. Because of the close relationship between a functional task in a program and the real-world objects that a program models, object-oriented programming features are often also used to organize code according to model function. The conflation of these two realms is one of the primary stumbling blocks in object-oriented programming.
In Tcl, at the implementation level Tcl_Obj is a data structure that is used to implement Tcl values.