Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie

Language of the future.

Options
  • 05-12-2007 5:14pm
    #1
    Registered Users Posts: 3,969 ✭✭✭


    What do you guys think will be the main language going forward into the future? We are being told it will be java. But wouldn't c or c++ be better as it can be more efficient as it does not run in a virtual machine??


«13

Comments

  • Registered Users Posts: 413 ✭✭ianhobo


    I dont think there will be "one" language.
    As long as there are different architectures, different devices, different needs,
    even more than that, cost will always be a crucial deciding factor.
    Cost decides both hardware and development environment and so too a language. Trying to keep it general of course


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Web Services TBH.
    We are being told it will be java. But wouldn't c or c++ be better as it can be more efficient as it does not run in a virtual machine??

    ahhhh. Will you ever read up on JIT.


  • Registered Users Posts: 995 ✭✭✭cousin_borat


    I think Domain Specific languages are the way forward. Larger programming languages that are easily adopted into DSL's. Groovy is a good example of this type of functionality.

    Obviously Web Services are also very important for interoperability.


  • Closed Accounts Posts: 413 ✭✭sobriquet


    What do you guys think will be the main language going forward into the future? We are being told it will be java. But wouldn't c or c++ be better as it can be more efficient as it does not run in a virtual machine??

    No idea, and to be honest I'm not optimistic that there's one coming or if not that the new one will be coming any time soon. Who's saying it's Java? I remember all the hype in the mid nineties onward, but these days I hear little about it's supposed domination. Short answer to C/C++, no. The benefits to memory managed languages are too great. The large rich client app I work on is in C# and would be vastly more difficult to write in C++. Bad code is a bigger enemy for us than the CLR. I'd prob agree with ianhobo though, the computing world is too fractured into different domains for there to be a single main language as C or C++ were.

    This is an interesting paper by Tim Sweeney of Epic games about the Unreal Engine. Most flaws come from problems in array handling in C++ that are non-issues in higher level languages. He talks about using a functional language as most their code is to do with mapping and folding lists. Another major problem is parallelism, so he talks about possible solutions and states pretty unarguably that new languages must facilitate it. (He even goes so far as to say a 10% performance would be fine if it can majorly reduce flaws - bye bye C++) He's talking about game engines, but the issues are no different for any other substantial app; taking advantage or parallelism is a big deal in any area. Interesting stuff, worth a read.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    sobriquet wrote: »
    Who's saying it's Java? I remember all the hype in the mid nineties onward, but these days I hear little about it's supposed domination.

    "Java Technology is everywhere - in mobile phones, cars, cameras, printers, games, PDAs, ATMs, smart cards, gas pumps, sports stadiums, medical devices, Web cams, server, you name it .." - Scott McNealy.
    Bad code is a bigger enemy for us than the CLR.

    True.
    I think Domain Specific languages are the way forward.

    I agree with the DSL, however the nice thing about SOA is that you can talk between DS Languages and not have to worry how one vs the other works.


  • Advertisement
  • Closed Accounts Posts: 413 ✭✭sobriquet


    Hobbes wrote: »
    "Java Technology is everywhere - in mobile phones, cars, cameras, printers, games, PDAs, ATMs, smart cards, gas pumps, sports stadiums, medical devices, Web cams, server, you name it .." - Scott McNealy.

    And Scott McNealy isn't biased! Re-reading my comment it does comes off a bit contrary. It wasn't intentional, I don't care how well Java does. Is it so far penetrated to be described as the mainstream language though? It's probably a factor of being outside of its' sphere that it just never seemed that way to me.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    sobriquet wrote: »
    And Scott McNealy isn't biased!

    True :) But if any person knew, it would be him?
    Is it so far penetrated to be described as the mainstream language though?

    I think it is one of them. It really depends on what you are talking about. Client? Server? Device? Web?

    Certainly applets are more or less dead vs what else is out there.


  • Registered Users Posts: 413 ✭✭ianhobo


    Hobbes wrote: »
    "Java Technology is everywhere - in mobile phones, cars, cameras, printers, games, PDAs, ATMs, smart cards, gas pumps, sports stadiums, medical devices, Web cams, server, you name it .." - Scott McNealy.
    Mobile Phones - Most OS's still in C (becoming even more so!)
    Cars - OS defiantly still in C
    Games - pc/playstation/xbox stuff very c++ orientated
    ATM's - well local ones look ancient!! so C! ha ha
    Medical devices - most definatly C is still heavily used


    C and C++ are in many many many more devices!

    What about non-web orientated services? (As most of the replies seem to be concerned with area, or am I wrong)


  • Registered Users Posts: 15,443 ✭✭✭✭bonkey


    ianhobo wrote: »
    C and C++ are in many many many more devices!

    Yes yes, and there's more lines of VB and COBOL than any other languages. It doesn't make them the language of the future either.


  • Registered Users Posts: 15,443 ✭✭✭✭bonkey


    http://www.joelonsoftware.com/items/2007/09/18.html

    Good article on this very subject. Its only one guy's view, of course. There's no promise he's right, and naturally it agrees as much as possible with the path his company is already following...but its an interesting read, if you don't read joel's stuff already.


  • Advertisement
  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    ianhobo wrote: »
    C and C++ are in many many many more devices!

    The point isn't that it is the mainstream in all those areas but that Java is in all those areas.

    I certainly don't know of any recent mobile phone that doesn't have a JVM on it. Also the mobile phone games market is predominately Java.

    As for games on PC. Unless its badly coded or has a popup that it is written in Java you wouldn't be able to tell the difference.

    To give an example check out Jake2. It is quake2 written in Java.


  • Registered Users Posts: 413 ✭✭ianhobo


    bonkey wrote: »
    Yes yes, and there's more lines of VB and COBOL than any other languages. It doesn't make them the language of the future either.

    Exactly, and I don't mean that c or c++ are either, my very first reply on this thread stated that, and *my* opinion that there will be no "one" language of the future, in much the same way as there isn't only one language now

    I wasn't trying to demonstrate the dominance of either languages, but rather just as a retort to the initial quote :)
    As for games on PC. Unless its badly coded or has a popup that it is written in Java you wouldn't be able to tell the difference.

    Hmmm I personally doubt that. I can appreciate your jake2 example, as its based on a relatively old core, but i don't think that statement would hold for a comparison of two *modern* graphics heavy, cpu intensive games. But again like so many other comparison threads, its apples and oranges! :)

    Again, difference projects will always require different tools, and there will always be many flavours of languages around for a long time to come


  • Registered Users Posts: 995 ✭✭✭cousin_borat


    Apologies for the sketchiness. There was a great article in the MIT Technology review magazine earlier this year. It was with a guy who was one of the original Microsoft people (wrote the first word processor) (definately not Paul Allen). He's since been working on a Meta languages that he sees as the future of programming. Many of the concepts related to domain specific languages and aspect oriented programming which is definately in at the moment (Spring).

    Crappy internet connection here in Leitrim so can't really go searching. I remember it was the same issue that had an interview with Bjarne Stroustrup (c++).

    Edit: Charles Simonyi. I'd highly recommend reading the article http://www.technologyreview.com/Infotech/18047/?a=f
    Here's the interview with Stroustrup in the same issue; http://www.technologyreview.com/InfoTech/17987/


  • Moderators, Science, Health & Environment Moderators Posts: 10,079 Mod ✭✭✭✭marco_polo


    Looking at the history of IT over the past 30 or 40 years it is had to believe there will be only one dominant anything of the future TBH :).

    I would guess that the likes of C++, Java and C# will remain the defacto languages for at least the decade (with increased emphasis on the likes of AOP etc), beyond that it is very early to say which of the next generation languages may or may not make it.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    ianhobo wrote: »
    Hmmm I personally doubt that. I can appreciate your jake2 example, as its based on a relatively old core, but i don't think that statement would hold for a comparison of two *modern* graphics heavy, cpu intensive games.

    Depends very much on what your trying to do. If you can offload the work to the GPU then it won't have any serious impact on the JVM at all.

    Not sure what you mean by old core though? You can also see more demo's here.

    https://jogl.dev.java.net/


  • Closed Accounts Posts: 4,943 ✭✭✭Mutant_Fruit


    Personally, i see the future being taken up with managed languages (no matter what managed language it is). The reason being is that they solve some of the problems which plague unmanaged code such as memory management and array out of bounds issues.

    From benchmarks which i read about a year ago, using managed directx through c# was only about 10-12% slower than using C++ and regular directx. A 10% performance hit isn't much considering that the majority of the actual processing is handled on graphics cards, so the more graphics intensive you are, the less important it is how fast the code itself runs.

    Unit3D uses .NET as it's scripting language (and maybe the editor itself runs on .NET, i can't remember) showing that managed languages really are a viable alternative.


  • Registered Users Posts: 5,618 ✭✭✭Civilian_Target


    There's never going to be one language for everything. Horses for courses. But learn one or two and the rest are easy.

    Personally, I think the next major language is Python, as Java has all the ease-of-use of a compiled language, and all the performance of an interpreted one!


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Personally, I think the next major language is Python, as Java has all the ease-of-use of a compiled language, and all the performance of an interpreted one!

    How long do people have to keep repeating that crap? If you think that your not in a position to comment on what Java is like.

    As for Python. There is Jython (compiles Python into Java Byte code). I'm in two minds tbh with Python. Just because a language is easier to code in doesn't mean that it is a better language. First versions of Visual basic for windows is a good example. While it made it easier to code it created a generation of piss-poor applications poorly coded. Also any examples I've seen trying to prove that Jython requires less coding is normally compared against badly written code.


  • Closed Accounts Posts: 413 ✭✭sobriquet


    Hobbes wrote: »
    As for Python.

    I agree with your first comment re java, but I'd regard Python as a Real Programming Language myself. I've used it in a professional capacity for creating a test suite for a C application, and it was great. To do the same in C would've been an almighty pain in the arse. I use it for day to day scripting too. Anyways, the reason that you cite (easier != better) was one regularly trotted out about Java back in the day. I see no indication that Python has created a legion of bad programs; it's certainly not aimed at the VB market.
    managed languages really are a viable alternative.
    Definitely. My companies rich client app is written in C# running on .Net and it's great. The wins you get from using a VM are too great, most things will go that way. I wonder about the Java games mentioned earlier though; you win from not having to write in C++ and deal with a multitude of resulting problems (see that link I posted) but no-one seems to be moving to the JVM/CLR to run their games on. The Sweeny paper talked about how, trying to update 10,000 objects for collision detection, physics, animations, audio processing, AI etc at 60fps, every performance hit counts. I wonder if a VM for that sort of purpose doesn't introduce too much latency.


  • Closed Accounts Posts: 4,943 ✭✭✭Mutant_Fruit


    IronPython (python running on the .NET CLR) actually runs faster than regular CPython in some circumstances. So, while python might be a good language of the future, it can run better in a VM ;) There is a java implementation, but the only benchmarks i could find were old and put the java implementation about 2.5x slower to nearly on-par with CPython. Maybe someone can find newer ones?

    As for games on the CLR, it's unlikely that any of the big name FPS engines will be written in C# any time soon. There's been too much time and effort placed into the C++ code to just throw it away and rewrite in c#. One 'game' that is going to use C# is Second Life. The reason being is performance, it's much faster than what they currently have. Just google for 'second life mono' and you'll get a bunch of links.


  • Advertisement
  • Registered Users Posts: 1,481 ✭✭✭satchmo


    Casual games are definitely able to make use of the advantages that Java affords like garbage collection & easier multithreading etc, but it won't cut it for a high-performance mainstream game. Not having complete control and transparency of things like memory allocation/usage & cache access patterns, or not being able to write platform-specific performance code with SIMD and the like just makes it unfeasible. Offloading work to the GPU isn't really an option either - its nice in theory, but in practice the GPU is too busy pushing pixels and reading textures to worry about doing work for the CPU as well. C++ certainly has its flaws, but its the best option out there at the moment for high-performance code.

    There is no "language of the future", there is only the best language for your requirements. Not that worried about memory allocation & access patterns, but want a robust and well-performing language? Use Java. Every cycle counts, and you need to know where every byte is being allocated? Use C++. Lots of file processing & parsing to do, but you want simple and straightforward syntax? Use python. Or you still want simple and straightforward syntax, but need a small memory footprint and good C++ integration? Use Lua. Like brackets? Use Lisp.

    And so on.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    sobriquet wrote: »
    but I'd regard Python as a Real Programming Language myself.

    I do as well, but as I said making it easier to code is generally detrimental for beginners.

    qbut no-one seems to be moving to the JVM/CLR to run their games on.

    There is already a large number of games/apps that use GL in Java.
    I wonder if a VM for that sort of purpose doesn't introduce too much latency.

    JIT VM compiles Java byte code into local machine code. So there is no hit from interpretation. You can get some speed hit on start up but that can be configured at the JVM to run in client or server mode (client is faster load time, compiles over time, server compiles all at load time). Also the JIT can rewrite the machine code on the fly to optimize code that is running often to be faster/more memory efficient.


  • Hosted Moderators Posts: 7,486 ✭✭✭Red Alert


    Fortran95 - parallelism for free on the intel compilers! :p


  • Closed Accounts Posts: 1,444 ✭✭✭Cantab.


    Red Alert wrote: »
    Fortran95 - parallelism for free on the intel compilers! :p

    Yep -- there was an aritcle in Physics world this week about Fortran making a big comeback. Seemingly for efficient multi-processor systems, Fortran has some efficient and elegant multidimensional capabilities. There's talk about a new standard for Fortran being released that will be targeted at modern multi-processor systems.


  • Closed Accounts Posts: 413 ✭✭sobriquet


    Hobbes wrote: »
    There is already a large number of games/apps that use GL in Java. [...]
    I don't doubt that, and for anyone doing less than cutting edge a VM based language will be a major win - C#, Java, Python, whatever. But is there anything at the high end - the idTech or UnrealEngine level that are using it? They obviously want the wins - see again that link I posted, but there's no traction there. Games companies seem to cycle their tech pretty frequently, legacy isn't quite such an issue for them, so they'd be in a good place to take advantage of VM based/managed languages. It does appear that satchmo is right; Java et al just don't afford the control required for that sort of domain.
    satchmo wrote:
    Like brackets? Use Lisp.
    Heh.


  • Closed Accounts Posts: 4,943 ✭✭✭Mutant_Fruit


    It depends on how you set up your engine. Second life does all it's heavy lifting in unmanaged code, but will handle all it's scripting (i.e. all user created content and a lot of other ingame stuff) via managed languages (you get to choose which managed language you use - there's quite a selection).

    There's no hard and fast rule saying you either use managed or you use unmanaged. You can use both.


  • Moderators, Science, Health & Environment Moderators Posts: 10,079 Mod ✭✭✭✭marco_polo


    Hobbes wrote: »
    JIT VM compiles Java byte code into local machine code. So there is no hit from interpretation. You can get some speed hit on start up but that can be configured at the JVM to run in client or server mode (client is faster load time, compiles over time, server compiles all at load time). Also the JIT can rewrite the machine code on the fly to optimize code that is running often to be faster/more memory efficient.

    You are mostly spot on there, however if you forgive me for being pedantic :) the server vm doesn't actually compile everything upfront either, but it does perform a much more detailed upfront analysis of the code, allowing it to perform much more thorough optimizations. Typically you it will end up that a small percentage of the program has actually been compiled into native code (as most typically applications tend to spend the majority of their time in a relatively small percentage of their code).

    As you said the main strength of the hotspot VM is that it profiles the executing program to identify these bottlenecks of very frequently used code (hotspots) and performs very agressive optimizing of these bottlenecks, often revisting a previous optimized block more than once. However any code that is does not run at all(or very infrequently) will not be compiled.
    sobriquet wrote: »
    I don't doubt that, and for anyone doing less than cutting edge a VM based language will be a major win - C#, Java, Python, whatever. But is there anything at the high end - the idTech or UnrealEngine level that are using it? They obviously want the wins - see again that link I posted, but there's no traction there. Games companies seem to cycle their tech pretty frequently, legacy isn't quite such an issue for them, so they'd be in a good place to take advantage of VM based/managed languages. It does appear that satchmo is right; Java et al just don't afford the control required for that sort of domain.

    Heh.

    I remember reading an interesting article a few months ago by a developer from one of the large game developers, I will try and dig up the link.

    ** I can't for the life of me find the article, I'm not making it up I swear :p. Thanks for nothing google. **

    He made a point that managed languages per say were not unsuitable for game development from a speed point of view or even because of Garbage collection, for example the Unreal 3 engine uses garbage collected c++.

    It was more to do with some of the specific techniques that the current generation of managed languages use that make them unsuitable for game development (Pretty much the control factor you mentioned).

    Another factor in this is that games companies will have have a very large base of highly experienced C++ developers (the majority of whom I am sure have a healthy distain for the likes C# and java :) ), these are not an asset that games companies will be discarding any time soon.


  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    Why are people talking about Web services in a thread about programming languages?

    As for the language of the 'future' it comes down to market forces. Certain languages are popular because they are adopted by the 'cost effective' end of the market (e.g. PHP) and others because they are adopted by the 'enterprise' - read banks - end of the market (e.g. Java). Being a really cool language that's really efficient might help achieve this, but ultimately there's no shortage of really good languages that few actually use out there (e.g. Ruby).

    So when considering the language of the future, I suggest people look at market behavior before having academic discussions on the subject.

    I'm still waiting for Linux to become the OS of the future, btw.


  • Registered Users Posts: 21,264 ✭✭✭✭Hobbes


    Why are people talking about Web services in a thread about programming languages?

    Because in the end it won't matter if you program in .NET, Java, etc. If your API calls are a web service then it doesn't matter to you what the back-end language is. It also means it is easier to change the backend if needs be.

    However you still need to know how Web Services work. I would certainly class it as a language that you would need to understand.


  • Advertisement
  • Closed Accounts Posts: 19,777 ✭✭✭✭The Corinthian


    Hobbes wrote: »
    However you still need to know how Web Services work. I would certainly class it as a language that you would need to understand.
    It's not a language. OT at best TBH.


Advertisement