Slashdot Mirror


What Makes a Powerful Programming Language?

A not-so Anonymous Coward queries: "My company is about to start development on a new project, and I have to decide on a language and development environment. My boss gave me a set of criteria which needs to be filled: intuitive and easy to use IDE; simplified GUI design and event handling; advanced error handling; advanced object oriented design including multiple inheritance, abstract classes, and garbage collection; full support for operator and function overloading; and portable (at compile-time) across various platforms. I have already looked at C++, Java, C++, C#, Eiffel, and even VB.net; I may be missing something but as far as I can tell all of these languages are missing something from this list. Is there a language available that has all of these features? I thought that someone from Slashdot would be able to point me in the right direction?" If you were to design a language from the ground up, what features would you include and why?

4 of 1,098 comments (clear)

  1. Python by Noodlenose · · Score: 1, Redundant
    Python...

    Dirk

  2. Java Java Java by los+furtive · · Score: 1, Redundant

    What is java missing from the criteria?

    --

    I'm a writer, a poet, a genius, I know it. I don't buy software, I grow it.

  3. all languages are the same... by lburdet · · Score: 1, Redundant

    it's all question of compromise...
    you will pretty much _have_ to ignore ore try to acheive some other way one of the features you wanted...
    just try to find the one that gets ur project done fastest ;)
    FP

  4. Two problems with that solution by MAXOMENOS · · Score: 1, Redundant
    Your solution meets the criteria nicely, but I wouldn't recommend that to my boss. Here's why.
    1. Java GUI toolkits are notoriously bloated and slow. In fact I'd go so far as to say that it's probably the last language I'd use to develop a GUI. The reason is because most Java GUI tools relegate GUI management to the Java2d kit, which runs on the JVM. The result is that your client c ode, even for clients of only moderate complexity, can take up as much as 100MB of RAM.
    2. Linking Java together with C++ is a royal pain in the ass. If you're using XML, this isn't a problem; the Java components will communicate with the C++ components through XML streams. Otherwise, you're talking about something similar to linking Java and C++ code, and that's not exactly trivial.

      Let's suppose you want to run a C or C++ module in Java. You can write modules in C or C++ and have Python or Perl use those modules; that's relatively easy, thanks to SWIG. In the case of Java, you have to deal with Java Native Interface (JNI), which is basically like writing extensions to the JVM. Running Java within C or C++ code isn't as bad, but it's still tricky compared to running Perl or Python within C or C++. I would recommend studying JNI further before pursuing this path. It's doable, but it's not pretty.

    Frankly, I would say that the intrepid programmer is better off writing his or her GUI in Python-Qt, wxPython, or Python-Glade, than messing with Java. My experience is that development time is faster with Python than with Java; and for GUIs, the code is actually much faster and less bloated.