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, 06:52:11 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 18531 times)

Armando

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 2,727
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #25 on: September 06, 2008, 10:19:36 PM »
Someones going to like you... His jaw is... made of metal?

jdmarch

  • Charter Member
  • Joined in 2005
  • ***
  • default avatar
  • Posts: 186
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #26 on: September 06, 2008, 10:40:15 PM »
2armando: (metal jaw)... HUH?

2ketracel: After an investigation similar to yours, I also chose python. Too early to give a verdict, but so far I'm happy with the decision. It's readable, writable, logical, powerful, extensible, pretty good supply of tools, good community. If you need heavy numeric array processing, numpy seems outstanding. What graphics package(s) are you thinking of using? I'm inclining toward wxpython and chaco.

Armando

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 2,727
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #27 on: September 07, 2008, 12:38:54 AM »
[off-topic]clue : avatar_tinjaw.png[/off-topic]

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #28 on: September 07, 2008, 12:57:25 AM »
LOL
I'm also pleased, it is a good decision, and python + wx should serve you well.

Ehtyar.

CWuestefeld

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,002
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #29 on: September 07, 2008, 02:20:34 PM »
I read through this thread once last night, and bit my tongue, saying I'll look at it fresh in the morning. I'm back, and I'm sorry to say that I'm still infuriated.

Why in the world would someone other than the developer want to choose the language that an application is developed in? You admit yourself that you're not the expert. But even I, an expert proficient in more languages (and language families, for that matter) than I can even count anymore, wouldn't make this decision at the beginning of the project.

Do you buy software based on the language that it was coded in? I know that there are some open-source zealots who do this, but they're insane. The fact is, an application does its job or it doesn't. That's what you make the buying decision based on.

Let the developers do the analysis and high-level design first, and then let them make the decision. I'm certain that on any modern hardware, any reasonable choice of programming language will provide a responsive user interface -- assuming that the developers are competent on the platform; understand well both the language chosen and the problem they're trying to help the user solve; and sufficient resources (time, tools) to complete the project.

I understand that you're looking to sponsor a project, and want to ensure that it's successful, but this is not the way to do it. You may actually be undermining its success.

It's true that some languages are better at some things than others, but there are many more factors than that oversimplification -- and they're generally more important.

It's an oversimplification because modern compilers and JITters (e.g., the .Net CLI and Java) are very smart. It's common now for high-level languages to demonstrate higher performance than hand-coded assembler or C.

But also, allowing developers to use higher-level abstractions frees them to address the overall architecture more fully. Even if you could code something in C++ that would be 5x faster, if there were an alternative approach that only needs to execute 10% as often, that alternative would be better. This isn't so hypothetical. Every time you find yourself frustrated with an application, it's because the developers failed in building an application that anticipated your needs. If you force developers into the wrong tool, you're diverting resources away from preventing these problems, and into the minutiae of coding.

And you've got to consider the skills of the individual developers. The failure of the Chandler project has been discussed here recently. Many observers believe that part of its problems were that an executive decision had been made to use the Python language. But most of the developers didn't have the experience to "think" in Python, and instead wrote Java code in Python (if you can see what I mean). This means that the project got the worst of both worlds: they weren't able to leverage Python's strengths, but they retained all of the limitations of the Java platform.

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #30 on: September 07, 2008, 03:59:47 PM »
Perhaps you could make a constructive suggestion or criticism?

Ehtyar.

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 #31 on: September 07, 2008, 04:59:21 PM »
I'm certain that on any modern hardware, any reasonable choice of programming language will provide a responsive user interface -- assuming that the developers are competent on the platform;
I personally find that most JAVA applications have somewhat sloppy user interfaces, even on fast CPUs... but I'm very sensitive to issues like that, most users might not be bothered by that.

It's an oversimplification because modern compilers and JITters (e.g., the .Net CLI and Java) are very smart. It's common now for high-level languages to demonstrate higher performance than hand-coded assembler or C.
I still haven't seen this in practice. Theoretically, JITers with hotspot recognition and profiling could do very well, but they'll still be following heuristics - and statically compiled languages also have profilers available (just how often does varying data input massively change hotspots?).

The reality is, however, that for 99% of the software out there, you aren't going to be very CPU bound, so it doesn't matter much if you're coding in Ruby, C++, VB or Assembly. And for the serious number crunching, on x86 anyway, there's still nothing that beats hand-tuned assembly... especially when you have the chance to use SSE instructions. Compiler intrinsics, unfortunately, suck.

But also, allowing developers to use higher-level abstractions frees them to address the overall architecture more fully. Even if you could code something in C++ that would be 5x faster, if there were an alternative approach that only needs to execute 10% as often, that alternative would be better.
And what would stop you from doing this approach in C++? :)

Stuff like garbage collection can have benefits, but you can gain some benefits through the use of RAII and smart pointers, it's possible to do full garbage collection if you really want to, and for speed-critical stuff you can do pool allocators. You get choice instead of being forced to use GC, which you might not have much control over. True, this requires more work than automagic GC, but you can tune to your needs.

But again, for most software, you don't need this kind of control and fine-tuning, and it requires decent experienced coders to get substantial improvement over some of the JITed languages.

dotNET and JAVA do take their toll on the system, though - it takes quite a while to load the runtimes from a cold boot, and not everybody keeps their systems on 24/7.

Anyway, I agree with a lot of your points, I just had to bicker a bit :). And I fully agree that the developers should choose the language after doing project analysis... although they should probably be constrained to open platforms since this is going to be an opensource project.
- carpe noctem

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #32 on: September 07, 2008, 10:55:33 PM »
CWuestefeld,
Thank you for your message. It was not my intention to infuriate anyone but I do appreciate your input. Allow me to try to explain why I chose python:

1] I have to hire someone to start the project and I can't hire a "generic" programmer (or so I'm told)
2] python allows for rapid prototyping and iterative development
3] there is already an existing open source project that I can use as a base & it is in python
4] python goes with open source like pb and jam (or so I'm told)
5] python code is easy to read by a different programmer (or so I'm told)
6] I may get brave enough to want to contribute myself and I can see myself learning python... but not C++ (realistically)
7] I forget #7... let me get back to you

now, allow me to pose a question: is it truly so rare and undignified to propose a language beforehand? I have seen it as the standard procedure on sites like getacoder/rentacoder/odesk, etc.

« Last Edit: September 07, 2008, 11:01:29 PM by Ketracel »

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #33 on: September 08, 2008, 01:00:58 AM »
now, allow me to pose a question: is it truly so rare and undignified to propose a language beforehand? I have seen it as the standard procedure on sites like getacoder/rentacoder/odesk, etc.
No it's not. In most cases, professional coders will produce a substantial amount of documentation before making any decisions about their project, however hobbyists/managers/newbies need not concern themselves with such things.
To me your justification is well defined for a project that has not yet commenced, though do keep in mind some of your thought processes may change once you get a taste.

Ehtyar.

Ketracel

  • Participant
  • Joined in 2008
  • *
  • default avatar
  • Posts: 11
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #34 on: September 13, 2008, 07:01:03 PM »
Thanks Ehtyar. Appreciate the level headed response.

Someones going to like you... His jaw is... made of metal?

Did I miss an inside joke?

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 #35 on: September 13, 2008, 07:13:38 PM »
DC member by the name of tinjaw is a python enthusiast here on the forum.

Ehtyar

  • Supporting Member
  • Joined in 2007
  • **
  • Posts: 1,237
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #36 on: September 13, 2008, 07:21:57 PM »
Thanks Ehtyar. Appreciate the level headed response.
You're most welcome.
DC member by the name of tinjaw is a python enthusiast here on the forum.
Where is he? Surely he didn't miss this many veiled references to himself :P. Guess we'll have to point this topic out to him.

Ehtyar.

CodeTRUCKER

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,060
    • View Profile
    • Donate to Member
Re: How to choose programming language?
« Reply #37 on: January 03, 2011, 10:04:16 PM »
Thread revival... just for fun!

I found this neat little tool:

http://www.awaretek.com/atesterea.html
...
The result is

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


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.

Real fun!  Take a look at the score I was given...

awaretek chose C what a hoot.pngHow to choose programming language?

I couldn't stop laughing !  I can hardly spell, "C."