views:

178

answers:

7

I was looking for a Desktop Application Programming Language with one of the biggest constraint: - “I need to output as native executable”.

I explored multiple options:

  1. Java is not a very good option for desktop programming, but still you can use it. But Java to Exe is a problem. Only GCJ and Excelsior-Jet provides this.
  2. .Net platform does not support native compilation. Only very few expensive tools are available which can do the job.
  3. Python is not an option for native compilation. Right?
  4. VB6 is the option I am left with.

From the above list, if I am correct, VB6 is the only and probably the best option I have. But VB6 itself has issues like:

  • It is no more under development since
  • There are questions on support of VB6 IDE with Vista

Thus my questions are:

  1. From the list of programming language options, do you want to add any more?
  2. If VB6 is good/best option, looking at its development status, would you suggest using VB6 in this era?
+5  A: 

Delphi (and its underlying Pascal language) is still alive and well, with the 2010 edition recently released; if you have funding (a minimum of $899 for the cheapest edition, I believe). it may be worth your time to download a try a free-for-30-days (or something like that) version.

Alex Martelli
Thanks! It seems a good option. Though budget is a constraint, but it it really suffice my needs I can go for that. Exploring more on that. In the mean time: Does it generates native exes? Also can you comment in VB6 also?
Sandeep Jindal
Delphi can make native exes (which of course like any other exe can be disassembled). VB6, totally abandoned and indeed actively opposed by its maker Microsoft, can hardly be recommended today.
Alex Martelli
A: 

VB is an interpreted language not native although I guess there are native compilers. Also it's runtime support is not guaranteed past windows 7. The IDE and runtime have a few issues in windows vista and 7 mainly related to UAC and network drives.

I would suggest delphi or some c variant if it must be native.

PeteT
Thanks! Can you suggest some variants of C please?
Sandeep Jindal
Visual C++ provides relatively good tools support for Windows desktop applications -- it doesn't compare to the RAD designers of VB, C# or Delphi, but if C/C++ is what you want, then it should probably be your first port of call. There is a free edition (http://www.microsoft.com/express/Windows/).
itowlson
If money is an issue, then mingw is free.
Thorbjørn Ravn Andersen
Correct me if I'm wrong, but doesn't Visual Basic have a native compiler in Version 5 and 6?
Michael Stum
hmm! Does Object-pascal by GNU is as strong as Embarcadero Delhi? I mean is it an better free alternative of a commercial product?
Sandeep Jindal
VB 5 and 6 both had the option of compiling to either native or p-code.
Bob Riemersma
Visual Basic 5 and 6 definitely are capable of compiling to P-Code or Native EXEs.
Mark Bertenshaw
+1  A: 

You added a comment saying it is because .NET and java can be decompiled that you don't want to use them. You could use an obfuscator which makes the output code harder to read.

PeteT
Thanks, but this link http://www.excelsior-usa.com/articles/java-obfuscators.html explains why obfuscation may not the best option.
Sandeep Jindal
Sandeep, that article explains complications involved in Java obfuscation. It certainly does *not* say that compiling to native code prevents decompiling.
Matthew Flaschen
Thanks, that’s really disappointing/amazing. Do you mean the executable created from VB or C or VC++ can de decompiled, easily? Agreed that they can be decompiled, but the way we can do with Java Classes i.e. decompile the whole package, change the code and rebuild is quite cumbersome or difficult enough for an intermediate experience person to use it. I tried VB Decompile Lite and it not much appealing. <This comment is same I entered for comments of main question. Please use the same for answering. Thanks>
Sandeep Jindal
The link you provided is from a _vendor_ who wants to sell a native compiler. Hence, obfuscation is NOT in their interest.
Thorbjørn Ravn Andersen
:) Yes. But the vendor is technically strong and I thought it must be writing correct information without manipulating it.Out of curiosity, do you say that excelsior-jet could not be of much use as the think they claim most (security) is at stake as mentioned in this post.
Sandeep Jindal
I have no experience with Excelsior, so I cannot answer that.
Thorbjørn Ravn Andersen
+1  A: 

Visual C++ is an option, though unfortunately the free version is a bit crippled from the point of view of building MFC-based applications.

You can also choose to use a different GUI framework than MFC, such as wxWidgets or Qt. With these frameworks a GCC compiler (such as MinGW) can be used. There are several free IDEs that are supposed to work with one or both of those frames works including Qt Creator or Code::Blocks.

I've heard good things about Delphi, but don't know anything else about it.

Michael Burr
Thanks, I looked at wxWidgets. It looked quite interesting. Can I say wxWidgets can be used for Rapid Application Development also?
Sandeep Jindal
I have essentially no experience with those frameworks (my desktop experience is pretty much entirely in Visual Studio, with little GUI to boot) You might want to have a look at wxWidgets' wxWiki page on RAD tools: http://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Builders
Michael Burr
+2  A: 

Out of curiosity, what are the driving factors behind the "native-binary-only" constraint?

As others have said, it's essentially impossible to prevent reverse engineering. (I realize the answer I linked to is in the context of .Net, but it applies to all programs.)

BryCoBat
Thanks, that’s really disappointing/amazing. Do you mean the executable created from VB or C or VC++ can de decompiled, easily? Agreed that they can be decompiled, but the way we can do with Java Classes i.e. decompile the whole package, change the code and rebuild is quite cumbersome or difficult enough for an intermediate experience person to use it. I tried VB Decompile Lite and it not much appealing. <This comment is same I entered for comments of main question. Please use the same for answering. Thanks>
Sandeep Jindal
First, the obvious: Every native binary can be "decompiled" to assembly.The concept of patching a binary to inject new code or bypass existing code is an old one. This is how DRM and licensing schemes can be bypassed. It requires a deeper knowledge of how things work than usual, but it's not a *rare* skill set, and there are many who view such things as a challenge or puzzle to solve.Hope this is useful info...
BryCoBat
When people worry about decompiling they're concerned about more than mere disaasembly. It is more of a concern that the code can be decompiled back to something near the original source code.
Bob Riemersma
Oh, certainly there's a continuum, something like: (Hardware) - Machine Code - Assembly - Obfuscated Source - "Approximated" Source - Original Source - Algorithm/Idea, and the closer a third party can come to the original, the easier it is to duplicate your work. In practice, you have to decide where you want to fall on that contiuum vs. amount of effort you put in to hiding your proprietary stuff. In my opinion, Java and .Net both provide an acceptable tradeoff (obfuscated source) between hiding proprietary info and developer productivity.
BryCoBat
A: 

I was involved in a hunt for a similar language/platform for a client to replace their VB6 application. Although they eventually decided to webify everything and rewrite it all in Flex, they were briefly looking at RealBasic. VB6-esque syntax and it compiles to native binaries.

I can't speak for what it's like for day to day use; the trial looked ok. A bit of the RAD oh-that-didn't-take-long workflow that VB6 had and very little else has got anywhere near. Not unreasonably expensive for the Personal Edition.

tridian
A: 

Check out 'Power Basic' - It compiles 'true' small native EXEs and provides a fast VB like basic environment, and doesn't require a run-time environment. This makes it much harder to disassemble. It isn't VB, but its affordable and powerful.

andora