Machine language, also called machine code, is a set of instructions, usually, but not always, represented in binary digits, which presents data to the processing functions of a computer in a way that enables the fastest possible throughput given resources.
Low-level symbolic programming, or assembly language, is the next step above machine language where mnemonics are used instead of binary or other numeric system instructions and the assembler translate this into machine language. These instructions are processor dependent (i.e. they may be different from processor to processor) and introduce the ability for the instructions to the processor to be phrased in ways that are easier to write and understand for humans without conversion by a third party process. Still almost as fast as machine language, this language evolved to simplify the processor instruction procedure between developers and processors at the slight cost of a decrease in speed.
High-level symbolic programming is the point at which the processor and the language become independent from each other, i.e. the developer can write programs for use on [almost] any machine and a compiler or interpreter is used to change these instructions into a form understandable by the processor in machine language. As a result the code in question must go through additional procedures before being in a ready state for the processor and more processing speed is sacrificed for the benefit of human development while writing, reading and maintaining programs.
Object-oriented programming is the use of a (very) high level symbolic programming language, such as Java, to use a technique that considers processor usage and attempts to make best use of resources in a complex data environment and hence is quite different from a set of instructions.
Hence the differences are largely human understandability v processing effectiveness and it can be seen above that as the language level develops we are sacrificing processing effectiveness at each level until the point in time where we use a technique that considers both aspects in complex systems: object-oriented programming.
LPL (1997), The Birth of PC [Online]. Available at: http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol1/lpl/ (Accessed 7 December 2009).