The concept of reverse engineering or retrieving the original source code back started as early as writing the source code itself. This was initially invented to regain the source code when the original code is lost in instances such as a disk crash, virus attack, theft or destruction due to natural causes. Once the source code is compiled in to a byte code for the machine it is intended to, the source code is not needed anymore as it is the byte code that goes along with the machine. Storage of the source code is as important as having the byte code since this will be required to regenerate the byte code any time when the machine crashes. With storage options abound, today there is no need to worry about storing these valuable codes. In the time when the options were limited there was a need for a handy decompiler all the time to avoid having to rework on the code during such crashes. And that's when this software was a boon.
Times have changed since then and there is always someone who needs access to the original piece of code to enhance or extend the functionality for a new device or with more advanced features. For someone who has access to the original source code that person/company can market this enhanced piece as a competitor for the original software itself. This is called copy right infringement and is penalized in a court of law. Such an infringement throws up a challenge for the original vendor to prove the pirated software was indeed a derivation from the original software which they claim ownership to. The hunter has become the hunted now. Now software copyright owners trying to plug such loopholes by means of software called the 'obfuscators' that helps mask the source code and not reveal simple data variables like the strings to complex flow patterns and conditional statements.
To the developer, it just means that writing and generating the code on this software rather than on the interface that was used for writing initially. These obfuscators are developed for specific languages and have all the dependent run time engines for compiling the code. Sometimes, they come in the form of 'plugins' which when plugged in to the current code interface does the job of code obfuscation while the underlying run time engines takes care of the compilation part. This solution has proved more successful and is being shipped along the studio interfaces where the original vendor and the obfuscation owner have a sale agreement going with the package. As languages evolve to address needs of the ever-growing demands from customers, so have the obfuscators to help stop code plagiarism thereby, helping the original developers thrive.