1) ANY program can be reverse engineered. Until DRM is embedded in the processor itself, this will be true. I have reverse engineered programs written in just about every language over the past 30 years. If there is a gain to be made from reverse engineering, somewone will do it.

2) There are two distinct issues, the first is copying your implementation (see point #1), the second is tampering. The techniques for making tamper resistant code apply to all languages.

3) Obsfucation takes many forms. The simple "identifier substitution" really does nothing (just consider if you were reverse engineering a program written by someone who use variable names in their native tongue which you do not speak. However there are many techniques that can be added (an most commerical obsfucators add them) which makes reverse engineering exactly on-par with any native language.

As was mentioned early in the thread...if you distribute your code, then any and every "Security" measure can be broken, and will be if there is sufficient incentive. For "real" programs this is very rarely an issue since what the customer wants is support and will typically purchase from a reputable vendor.