1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Glorified form-filler ; what languages to look at?

Discussion in 'General Programming Chat' started by gettinthere, Aug 27, 2012.

  1. gettinthere

    gettinthere Regular Member

    Joined:
    Apr 17, 2010
    Messages:
    346
    Likes Received:
    57
    I'm considering creating a consumer product which is essentially a glorified form-filler with website login ability. I've had a bit of a read about & think C++ might be the language to go for & would appreciate any advice you may have.

    I'm also still unsure whether to build a web-based app or desktop (discussion here).

    Thanks in advance :)
     
  2. lisper

    lisper Newbie

    Joined:
    Aug 23, 2012
    Messages:
    44
    Likes Received:
    24
    Occupation:
    Lead developer of some German research project
    Location:
    Currently Brussels, Belgium
    Hey mate,

    do you have any previous programming experience? Generally I would suggest to use whatever you are most comfortable in. If you don't have previous programming experience, I'd suggest going for something like C#, Java, Delphi or Clojure (if you feel adventurous haha). I would also suggest to stay away from a web based application in that sense. If you want a form filler (glorified or not) a web app wouldnt really be suitable. All requests would need to go through your server which would result in massive load and expenses for yourself. A lot of overhead involved. With a desktop based app, you offload all that to the users machine.

    Further on, I would advice against C++ to be honest... Thats obviously just my personal opinion, but you would be better off with a language that exposes some higher abstraction. With C# doing HTTP requests is really trivial, with Java, Clojure (and I'm sure C# as well) you got plenty of headless browsers that can really help you with DOM manipulation, parsing of websites and so on. With C++, based on my own experience, that kind of abstraction is absent.

    Finally, stay away from interpreted non machine compiled languages, as your software will be trivial to crack. For example Python could be a pretty good contender for this type of task, however, distributed Python software is very easy to crack since your code is interpreted... Anyhow, thats a whole other discussion I suppose.

    Hope this helps you.
     
    • Thanks Thanks x 1
  3. gettinthere

    gettinthere Regular Member

    Joined:
    Apr 17, 2010
    Messages:
    346
    Likes Received:
    57
    Cheers - really useful information! :)
     
  4. amb00

    amb00 Newbie

    Joined:
    May 9, 2010
    Messages:
    4
    Likes Received:
    0
    If you are considering C++ then web-based app are not an option (there is a framework to develop component based but it is overkill to do it in C++).

    If you don't want somebody to look into your code then your only option is compiled languages and in this case, C++ with WinForms (drag and drop components so easy) or Qt. Both of them are for desktop.

    If you don't know C++ very good (to avoid stack or buffer overflow by using incorrect pointers) then your choice is an interpreted language (Java, C#, Python). Java and C# can obfuscate code, but if someone wants to know what you are doing, they will be able to :) Of course the same is valid for compiled languages but you will have to read asm code (after decompile) and that's not for everyone.

    You could go hybrid and write the critical part in C/C++ and then just use it with C#, Java, etc.

    Between desktop and web-based, the most versatile will be desktop-based.

    Hope that helps.
     
  5. lisper

    lisper Newbie

    Joined:
    Aug 23, 2012
    Messages:
    44
    Likes Received:
    24
    Occupation:
    Lead developer of some German research project
    Location:
    Currently Brussels, Belgium
    Actually you can do ahead of time compilation with Java too (similar to what C++ does) or use JIT to compile on the fly at runtime. All depends on your implementation. While this might still be considered interpretation as such, its very much different to traditional interpretation (Python etc.) where the interpreter reads and executes your human readable, high level source code. With Java, again depending on your JVM setup and if you do use JIT instead of ATC, the bytecode output of the Java compiler is interpreted instead of the Java source.

    Similar story with C sharp really, its compiled into an intermediate language which in turn is JIT compiled to native assembly language of the running host. Again, very different to what Python and friends do.

    In terms of source code recovery, decompilation is possible, but one would again need to read ASM code as with any compiled language. I wouldn't worry too much about someone lifting your code base to be honest (as this is rarely possible with a compiled language) and that would be the case with Python once again. Cracking however is fairly trivial (to an experienced coder), with or not, as you merely need to remove all the security hooks and this can be achieved without the full knowledge of the actual source.

    There's no known counter method against this, everything and anything can and will be reverse engineered, so I wouldn't worry about this too much as long as your actual source is safe.
     
    Last edited: Sep 1, 2012
  6. jazzc

    jazzc Moderator Staff Member Moderator Jr. VIP

    Joined:
    Jan 27, 2009
    Messages:
    2,468
    Likes Received:
    10,143
    The context is not clear, but if you are referring to .NET, that 's not true. AOT compilation in .net still requires the intermediate code in the binary because it 's always JIT and JIT requires metadata. Some companies that offer encryption services advertise that they strip the code, but it 's not exactly true :) Native binaries are a no-go in the .net world, at least as far as I understand the issue.
     
  7. lisper

    lisper Newbie

    Joined:
    Aug 23, 2012
    Messages:
    44
    Likes Received:
    24
    Occupation:
    Lead developer of some German research project
    Location:
    Currently Brussels, Belgium
    My wording from before was pretty poor, sorry... Thats basically what I said, C# is a jitted language. However, I would still argue that C# is, at the same time, a compiled language (which it is) and very much different to a purely interpreted one. Hence the "similar story" part.

    Sorry for the confusion.
     
  8. amb00

    amb00 Newbie

    Joined:
    May 9, 2010
    Messages:
    4
    Likes Received:
    0
    For Java AOT will not work in all cases and also, the code will be slower then JIT compiled (in both cases b/c a lot of information is present only at runtime). But with JIT, after decompile, you will read purely java source code.

    He should write in what it saves time and if scared, just get a lawyer b/c people can decompile and read everything so securing your code will eventually be a waste of time.