Well, hmm. Several issues are raised by the current version of this page:
- Software can be written in a mixture of programming languages,
- Program execution doesn't necessarily require compilation (interpreted languages, etc.),
- An assembler doesn't turn object code into machine code, it turns assembly code into object code. The latter step (object code to machine code) is typically handled by a linker,
- Machine language can be turned back into source code. This is called disassembly.