I have heard of disassemblers like IDA and debuggers like OllyDbg but honestly, when you give both of them a binary file it gives me the assembly code. I know that the decompiler gives the source code if you provide it a binary. However, I don't know how they differ in terms of mode of operationand I ask myself questions like "Why can a android/python code be decompiled but a C code be only disassembled?"
Can anyone give a precise difference between these 3 kinds of tools?