Home | Blog | Software | Reviews and Features | Forum | Help | Donate | About us
topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 05, 2016, 09:03:26 PM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Last post Author Topic: How to choose programming language?  (Read 18533 times)

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
How to choose programming language?
« on: August 23, 2008, 08:28:53 PM »
I'm not a programmer so I would appreciate your help. I would like to sponsor an open source project for an application (installed as opposed to online) and was wondering how to go about choosing which language to use for it?

How do programmers choose which language to use for a program? is there a "right" answer? what variables does it depend on? I know most know a few languages but are most comfortable with one or two. So before I hire a programmer, I think it would be obviously, helpful to narrow things down in terms of a language.

I have done a lot of work in developing the idea so I would be able to answer questions about it, if you need more info before you can give an answer.

Thank you.

 :)

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: How to choose programming language?
« Reply #1 on: August 23, 2008, 08:37:54 PM »
Your desire for a desktop application as opposed to a web service argues in favor of some languages over others.  php and ruby are less appealing, c++ and python more so.

Your need for open source again argues against using a non-free language like Delphi.

But beyond that, it's quite hard to advocate for a specific language without knowing more about what the program will do.

If it needs to be fast and efficient, that would argue for something like C++.  If not, c++ might be a bad choice.

If it needs to be cross-platform, that changes your needs too, and restricts you to certain languages and libraries.

It also needs to be said that the hardest part may be finding a good coder -- and if a good coder has certain preferences for a language that could be the determining factor.

If you feel comfortable telling us the idea, please do.  Maybe DC can help.

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #2 on: August 24, 2008, 05:05:03 PM »
Mouser,
Thanks for your message. To be honest I've done a bit of research and have a certain language in mind already... but want to make sure that it is the "correct" one.

To give you a better idea of the project, it is an installed app that would be used to trade stocks and other financial securities. An important part of the app and what sets it apart from others in the same category, would be its user interface. So while being somewhat "heavy" in terms of GUI load, it would also need to be relatively fast. When a user says buy/sell, the response should be instantaneous.

Having said that, I'm a bit reluctant to automatically jump into C++. I know it is the most common language today but I would like this project to be open sourced and think that there may be other languages more appropriate.

As well, I've done enough research to know that other languages, for example, python, can be as fast as C++ (with the right tweaking - psyco). Then there's C - with an incredible open source implementation in blender.org

C++ code can be notoriously difficult to read and understand for anyone other than the original coder. And even the person who wrote the code can get tangled up. Or so I've heard. So I'd prefer a "cleaner and leaner" language for the reason that many eyes will go over the code.

I totally agree with you when you say that the hardest part is finding a good coder. I've cast about here and there for them and either I don't know how to find one... or there are few around in languages that are not the most common (C++/java).

So how does one find and recognize a good coder? I've read a lot and googled much more but am still open to suggestions and feedback, especially from actual coders.

Here is one such article I found:
http://inter-section...se-a-good-programmer

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #3 on: August 24, 2008, 07:59:22 PM »
I found this neat little tool:

http://www.awaretek.com/atesterea.html

I'm not sure if I did it right because I don't know what some of the variables meant.

Here are the variables I gave it:

ease of learning the language 50
ease of using the language.... 85
speed of program execution.. 90
quality of available tools...... 90
popularity of the language.... 70
power and expressiveness......50 <-- what does this mean?
cross-platform availability.... 80
low cost of language tools.....90
ease of client side web scripting.1
ease of server side web scripting.1

The result is

1. C/C++
2. Java
3. Python

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: How to choose programming language?
« Reply #4 on: August 24, 2008, 08:00:28 PM »
Fun find!

"power and expressiveness" would be a measure of how powerful and flexible the language is and how easy it is to represent different data structures and concepts.
« Last Edit: August 24, 2008, 08:02:11 PM by mouser »

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #5 on: August 24, 2008, 08:31:21 PM »
yeah, I've spent a few minutes playing with it and the only time it recommends other programs over C/C++ is when you tell is that speed is not important

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: How to choose programming language?
« Reply #6 on: August 25, 2008, 09:10:32 AM »
If you're dealing with stock trading, you're going to be doing some (inter)network communication - this will be your bottleneck, completely dwarfing code speed. You could probably choose Visual Basic as language without any problems :)

Quote
C++ code can be notoriously difficult to read and understand for anyone other than the original coder. And even the person who wrote the code can get tangled up. Or so I've heard. So I'd prefer a "cleaner and leaner" language for the reason that many eyes will go over the code.
I dunno who make this argument today, apart from diehard zealots of other languages? Code can be an unreadable mess in any language, if not written by a competent programmer. C++ has features that makes it possible to write cleaner and easier-to-follow than C code... if written properly.

Quote
As well, I've done enough research to know that other languages, for example, python, can be as fast as C++ (with the right tweaking - psyco). Then there's C - with an incredible open source implementation in blender.org
Uh, C implementation in blender.org? What?
- carpe noctem

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: How to choose programming language?
« Reply #7 on: August 25, 2008, 09:11:35 AM »
Why not tell us more about what the application is going to do, how much you are willing to sponsor, etc.

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #8 on: August 25, 2008, 06:02:12 PM »
I would also recommend VB or C#, both for, as f0dder mentioned, ease of networking, and also for the GUI in particular.

Ehtyar.

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #9 on: August 25, 2008, 11:40:57 PM »
f0dder,
re the importance of networking (sending/receiving data constantly), yes! you're absolutely correct. This is vital to the app.

re the argument, well, I've heard it - I'm not convinced because common sense tells me what you mention also. Having said that, without wanting to start a language war or debate, higher languages have an inherent usability which lowel level ones don't have by sacrificing effiency/speed. Most of the time. And if you want to get poetic, some languages are more "pretty" than others. Anyway... :-)

I was talking about Blender (check it out at blender.org), a 3D modeling program written primarily in C and C++ with some python for scripting. I love what they have done with the GUI of that app. I had a similar vision for my own project, before finding Blender.

re VB... I dunno... lol, oh and also, I'd like it to be platform agnostic (Mac/*nix/Win). Can VB do that? :-)

__________________________________________________

mouser,
sure, what would be most helpful? I've got the project fleshed out but I'm not sure which portion of it you'd like me to expound on. In one sentence, the installed desktop program allows a person to trade securities by graphing their chart and giving feedback to the user on what is going on in the market and what they have done relative to it.

Since I'm not a programmer, I'm not sure what complexity it would call for... and therefore, no idea in terms of $$ or time. What I had in mind was to quickly get a rickety version up and running and then to iteratively refine it. I'd like to kick start the project off by hiring a programmer then based on the strength of the offering, organically building a dedicated community of traders/programmers to move it forward.

What makes a certain language more appealing is that there is currently a sort of long-lost "third cousin" already under GPL v2 which I could use as a launching pad. This would mean that, rather than staring from zero code, there would be already an existing project to "fork" in a matter of meaning.
« Last Edit: August 25, 2008, 11:52:13 PM by Ketracel »

f0dder

  • Charter Honorary Member
  • Joined in 2005
  • ***
  • Posts: 9,029
  • [Well, THAT escalated quickly!]
    • View Profile
    • f0dder's place
    • Read more about this member.
    • Donate to Member
Re: How to choose programming language?
« Reply #10 on: August 26, 2008, 12:30:50 AM »
Quote from: Ketracel
I was talking about Blender (check it out at blender.org), a 3D modeling program written primarily in C and C++ with some python for scripting. I love what they have done with the GUI of that app. I had a similar vision for my own project, before finding Blender.
Yeah, I know about Blender3D, I was just reading your post as if it was supposed to be an implementation of the C language, which confused me :)

The GUI for Blender looks pretty, but has somewhat of a learning curve since it doesn't really work like standard GUIs. I guess that's OK for something like a 3D modeler, as the focus is on working efficiently once you become familiar with the app. But imho for most apps, familiarity is important.

Quote from: Ketracel
re VB... I dunno... lol, oh and also, I'd like it to be platform agnostic (Mac/*nix/Win). Can VB do that? :-)
Not really, I was just saying that speedwise, probably anything goes :-)

Personally, I'd probably go for C++ - partially because it's my primary language, partially because it's available just about everywhere (and you do say you want portability). Add some cross-platform GUI framework to avoid a lot of pain. Other languages might be less painful to develop in, but C++ has the advantage that a lot of people know it - that could be important for an open-source project.
- carpe noctem

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #11 on: August 26, 2008, 12:34:13 AM »
Unfortunately, what you're asking for has been developed upon very little. What you're asking for is owner drawn interface support, simple networking libraries and multi-platform support. In my opinion, for a novice programmer, C++ is out, which removes most of our options right there (wx, qt, gtk etc). VB and C# unfortunately will not give you the multi-platform support you desire, thus those are also out.

I have two options I can think of, you can try Python or Perl (these will be scripting languages, each with extensive library support, and GUIs provided by PyQT/wxPerl/PyGTK/GTK2-Perl), or you can try Mozilla's XUL platform, which will be a markup language with javascript api (see the "Events and Scripts" section of this page). If you'd like a better overview of this kind of thing let me know and I'll see if I can find some examples or tutorials online for you (you can always look yourself too, I will be busy for the rest of today and most of tomorrow).

Hope this helps, Ehtyar.

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #12 on: August 27, 2008, 12:44:27 AM »
f0dder,
thanks for the explanation, that clears it up. And yes, I hear you re C++. it is the most popular and common language out there (isn't it?).

Ehtyar,
the only part which I really understand is that you are recommending python and perl, but I'm not sure I follow your reasons. Can you "dumb" it down just a bit for a non-programmer?

XUL you say? I'd never heard of it. I'm not sure I understand... is it installed? or online apps? or both? I mean, does the program run inside Firefox? is there an example of an app written in XUL?

thanks!

« Last Edit: August 27, 2008, 12:46:58 AM by Ketracel »

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #13 on: August 27, 2008, 03:49:53 AM »
Hmm, strange, I didn't get an email that you replied, I came back to edit my last post and here you are :). I apologize if my post seems a bit rushed, but to be honest it was :P Anyway, now that I have some time I'll try to give you a better explanation.

Perl and Python are both very popular scripting languages. Each will run on just about any flavour of OS. Now being your stock standard scripting languages, neither has support for GUI applications (you can't create windows/buttons and such with them), so in comes wxWidgets (having done some research myself since I made that post, I am no longer recommending PyQT, PyGTK, or GTK2-Perl). wxWidgets is a cross-platform GUI framework that can be accessed by Perl and Python via addons called wxPython (for Python) and wxPerl (for Perl). The way this would work is you would download and install your choice of Python or Perl (I use both), then get a copy of wxPython or wxPerl with respect to which language you've chosen. With the combination of scripting language and wxWidgets, you can create cross platform applications with a GUI and simplified networking capabilities. Unfortunately, you'll probably be missing a bit of the skinning business with this solution, but so you know what you're getting into, here are some screenshots of wxPython on windows.

I've also done some further research on XUL, so I can give you a quick rundown. If you've used Firefox, then you're familiar with the way firefox addons work. Firefox addons are written in XUL (XML User Interface Language, which if you've ever done web development, is a lot like HTML) and javascript. The user interface is provided by XUL, and the functionality is provided by javascript. Mozilla (the organisation that maintains XUL and Firefox) maintain an application called XULRunner, which is a platform providing XUL and javascript functionality across Windows, Linux and MacOS, independent of Firefox and/or other Mozilla applications. You can find a tutorial on writing an XULRunner application here. The unfortunate side with XulRunner is that the documentation *sucks* and examples are near impossible to find, in sharp contrast to Python and Perl. This will severely inhibit your ability to quickly pick up the language as you won't have the benefit of others' work to help you along. Firefox addons are similar, so that may be your savior, however I haven't delved into that department much yet so I can't say either way.

Finally, my suggestion to you is to simply download what you're interested in and have a play. It is very important that you *like* the language you choose, otherwise writing in it will be a b*tch.

Hope this helped, Ehtyar.

P.S. The links in this post are used under the assumption you'll be using Windows to start development. Since I have little experience with Linux, I'm afraid I won't be much help unless that is the case.
P.P.S. I've found a package of Chatzilla for XULRunner. This is a very impressive example of a network centric application running in XULRunner. It also appears that it is only slightly modified from the Firefox addon version, which would seem to indicate that you can learn how to code for XULRunner from the abundant Firefox extensions available (which is also far better documented, has an excellent user support base, and tons of example code).
« Last Edit: August 27, 2008, 05:03:39 PM by Ehtyar »

VideoInPicture

  • Honorary Member
  • Joined in 2008
  • **
  • Posts: 467
    • View Profile
    • Circle Dock
    • Donate to Member
Re: How to choose programming language?
« Reply #14 on: August 27, 2008, 07:12:23 PM »
You can run both VB.net and C# programs on Windows and Linux if you don't use any Pinvoke calls and stay within the .Net Framework 2.0 instruction set. On Windows, you would use the .Net Framework and on Linux, you would use the open source Mono framework to run the program. I don't know about Mac's though. I don't think the open source community is that strong for Mac's.

You could quickly and easily create the interface you want and program it using the free Microsoft Visual Stuido Express. It comes with many graphical elements built into the interface layout designer and there is a strong community of programmers that thoroughly explain their VB.net and C# code at www.codeproject.com

I can use C++/VB.net/C#, and let me tell you, plain C++ is a nightmare compared to VB.net or C# and I doubt you would see much difference if you use any of these languages for a stock trading program. Maybe if you were render video you would go with C++ but for a stock trading program, I would definitely recommend against it.
Author of Circle Dock: http://circledock.wikidot.com
Author of Video In Picture: http://videoinpicture.wikidot.com
Author of Webcam Signature: http://webcamsignature.wikidot.com
Author of Easy Unicode Paster: http://easyunicodepaster.wikidot.com

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #15 on: August 27, 2008, 08:39:12 PM »
Hmm, Mono appears to have come quite a ways since I last checked it out. Not much of a fan of the fact that Microsoft maintains the languages and compilers, but it would indeed be a good choice. Also, Mono maintains their own C# compiler if you're also put off by the Microsoft-ness.

Ehtyar.

VideoInPicture

  • Honorary Member
  • Joined in 2008
  • **
  • Posts: 467
    • View Profile
    • Circle Dock
    • Donate to Member
Re: How to choose programming language?
« Reply #16 on: August 27, 2008, 09:06:52 PM »
Hmm, Mono appears to have come quite a ways since I last checked it out. Not much of a fan of the fact that Microsoft maintains the languages and compilers, but it would indeed be a good choice. Also, Mono maintains their own C# compiler if you're also put off by the Microsoft-ness.

Ehtyar.

Microsoft is a good company.  :D
Author of Circle Dock: http://circledock.wikidot.com
Author of Video In Picture: http://videoinpicture.wikidot.com
Author of Webcam Signature: http://webcamsignature.wikidot.com
Author of Easy Unicode Paster: http://easyunicodepaster.wikidot.com

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #17 on: August 27, 2008, 09:10:22 PM »
Hmm, Mono appears to have come quite a ways since I last checked it out. Not much of a fan of the fact that Microsoft maintains the languages and compilers, but it would indeed be a good choice. Also, Mono maintains their own C# compiler if you're also put off by the Microsoft-ness.

Ehtyar.

Microsoft is a good company.  :D
LOL

Ehtyar.

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #18 on: August 27, 2008, 10:43:40 PM »
Ehtyar,
thank you for the detailed explanation. I think I understand.
This neat little app would then have to be written in XUL, right?
http://www.evolus.vn/Pencil/

And although I'm not a programmer, I have checked things out a bit and have run into wxWidgets. It seems to be the best GUI toolkit - again, don't want to start a debate! lol

I'm curious, would one be able to use wxWidgets and get the sort of GUI that blender has?

http://www.blender.o.../pics/6e6a5d0d36.jpg

http://www.blender.o.../pics/746e247682.jpg

http://www.blender.o.../pics/e637ade87d.jpg

I do have a program in mind, as I've mentioned and shortly I'll share what it is and ask your feedback on its suitability in more detail.

thanks again for your help, it is much appreciated!

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #19 on: August 27, 2008, 11:13:41 PM »
Ketracel, firstly, you're most welcome. I actually learned quite a bit and had some good fun doing it :)
Pencil is indeed written in XUL. One thing that may have been a help to you that I neglected to mention is that xpi's (firefox addon installers) are indeed just zip files with the source contained within them. If you download Pencil.xpi and extract it with your archiving program (winzip, 7zip etc), you can read all the XUL and JavaScript that makes it work. Have a stab at it with pencil (and if you're interested in XUL, download XULRunner and try it with chatzilla as I mentioned above).
You probably wouldn't get much opposition with your statement about wx, it is generally agreed to be the best. The GUI of blender would require a custom drawn window. If you download Python and wxPython, the wxPython samples contain some demonstrations of custom drawn controls that can be made with wxPython (execute the "Main.py" file and expand the "custom controls" tree).
Also, you seem to be somewhat reluctant to discuss your project. If you'd like to give out some details that you would prefer not everyone knew about, you can send private messages to anyone on the forum from here, you will need only their username.

Hope this helps, Ehtyar.

jgpaiva

  • Global Moderator
  • Joined in 2006
  • *****
  • Posts: 4,727
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #20 on: August 28, 2008, 03:14:35 PM »
I'm curious, would one be able to use wxWidgets and get the sort of GUI that blender has?
I'm sorry, I haven't been following this thread, but when I read this I thought I sould say something. I hope I won't say anything stupid for being out of context.

In my opinion, only on very special cases should people resort to using non-standard ways of designing user interfaces.
On most situations, it only causes lots of confusion for the user, and general catastrophe.
Also, programming this kind of interface is harder and more error-prone.

Just a heads-up ;)

ps: just noticed that f0dder already mentioned this in a previous post.. I should have anticipated that :)

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #21 on: August 29, 2008, 01:08:31 AM »
jgpaiva, thank you for your comment. I fully agree btw. I'm not a programmer nor am I an expert GUI designer but I have read more than 10 books on usability and GUI design which is more than I can say about programming :-)

The intention behind the question was not that I want to go ape$hit crazy on the GUI design, it was more to flesh out how much I can push the GUI framework. For example, does the "wire framing" that goes around the window have to be there? Is there a way to remove it (I'm assuming full screen mode here)


jgpaiva

  • Global Moderator
  • Joined in 2006
  • *****
  • Posts: 4,727
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #22 on: August 29, 2008, 05:07:35 AM »
Oh, it looks like I was preaching to the choir, then :)
Ok, glad to know that, and the advice stays for other readers of the thread ;)
Good luck on your search!

psionics

  • Participant
  • Joined in 2007
  • *
  • Posts: 117
    • View Profile
    • freestyle (nunchaku) forum.net
    • Donate to Member
Re: How to choose programming language?
« Reply #23 on: August 29, 2008, 08:49:46 AM »
If you want a database friendly application, or something for business, I would to recommend Power Builder (C++).. I dunno what people thinks about PB.. but I would be glad to hear it.

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #24 on: September 06, 2008, 08:46:46 PM »
I do have a program in mind, as I've mentioned and shortly I'll share what it is and ask your feedback on its suitability in more detail.

as promised, the programming language I have in mind is... [drumroll]... python.

Please let loose with praise and/or criticism. Why would this be a good choice? why would it be a bad choice?

thanks!