system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: Why a coder can't simply "decompile" an executable to get perfect source code for reverse engineering a piece of software?
gpt
Because the compiler preforms many irreversible changes to the code. At the very least, comments and variable names are removed, names of private functions are obfuscated, and the code is optimized to make it run faster and better.

However, certain programming languages, such as Java and C#, are compiled into a intermediate language which is similar to the original source language, and these indeed can be decompiled fairly successfully (just lookup Java Decompiler or .NET Decompiler).