Hey there! Sign in to join this conversationNew here? Join for free
    Offline

    1
    ReputationRep:
    (Original post by paper-wings)
    I currently know: VB.NET (the shame! ), PHP, XHTML/CSS, Javascript and I have done a tiny bit of python.
    There's a lot of people who'd argue as to whether some of those are programming languages.

    If you want something that's useful to learn go for Java and/or C. Personally I'd stay away from C++ until you're happy with the lower level bits of C and the OO side of Java.

    And for those talking about messy code the best language for writing something unreadable is perl (There's a good example of how bad it can be at http://totl.net/PerlContest/).
    Offline

    14
    ReputationRep:
    (Original post by mfaxford)
    And for those talking about messy code the best language for writing something unreadable is perl (There's a good example of how bad it can be at http://totl.net/PerlContest/).
    I think someone has already mentioned brain**** and whitespace. Can't get much more unreadable than those.
    Offline

    0
    ReputationRep:
    You can write unreadable code in any language. www.ioccc.org anyone?

    Perl can be quite elegant if written properly.
    Offline

    1
    ReputationRep:
    (Original post by Psyk)
    I think someone has already mentioned brain**** and whitespace. Can't get much more unreadable than those.
    Although writting something useful in bf isn't that easy either. Not seen whitespace before but I can imagine its similar to bf.
    Offline

    14
    ReputationRep:
    (Original post by mfaxford)
    Although writting something useful in bf isn't that easy either. Not seen whitespace before but I can imagine its similar to bf.
    I don't think either is designed to be particularly usable
    Offline

    0
    ReputationRep:
    Depends what you want to do after uni? If you want to be a web developer, learn PHP, RoR or Python.
    If you want to develop applications for windows, particularly those that have GUIs then learn C#.
    Java is good for android development, or GUI development for more than one OS.
    C/C++ are good if you want to do embedded development, OS development and (slightly less) Games development.

    Choose a language which will teach you more about where you want to go as a developer. Whilst understand low-level concepts well will give you better background knowledge as a programmer generally, it's completely counter-intuitive to learn ASM to benefit you as a web developer, for example.
    Offline

    14
    ReputationRep:
    (Original post by Redux)
    Depends what you want to do after uni? If you want to be a web developer, learn PHP, RoR or Python.
    If you want to develop applications for windows, particularly those that have GUIs then learn C#.
    Java is good for android development, or GUI development for more than one OS.
    C/C++ are good if you want to do embedded development, OS development and (slightly less) Games development.

    Choose a language which will teach you more about where you want to go as a developer. Whilst understand low-level concepts well will give you better background knowledge as a programmer generally, it's completely counter-intuitive to learn ASM to benefit you as a web developer, for example.
    What do you mean by that? Most games are written mostly in C++. Other languages are used for scripting (e.g. UnrealScript, LUA), but a lot of the time people hired as "programmers" don't do much of that. Also C#, Python and various other languages are used for programming tools to produce content for the game.

    However I'd imagine similar things apply to OS development. I'm fairly sure some parts of Windows 7 were written in C#, on top of the core OS.
    Offline

    0
    ReputationRep:
    (Original post by Psyk)
    What do you mean by that? Most games are written mostly in C++. Other languages are used for scripting (e.g. UnrealScript, LUA), but a lot of the time people hired as "programmers" don't do much of that. Also C#, Python and various other languages are used for programming tools to produce content for the game.

    However I'd imagine similar things apply to OS development. I'm fairly sure some parts of Windows 7 were written in C#, on top of the core OS.
    'Most' games is a bit of a misleading term. Big console games are likely, at the moment, to be programming in C++. Games for Mobile platforms, or the web, probably not so much.

    Even if you are looking at large scale, blockbuster games, the trend is likely to go away from C++. Looking at the current state of the industry, Microsoft are the producers of one of the leading games consoles. They also dominate the operating system of the PC gaming industry. It's likely that they'll want to push their own proprietary technology as much as possible (notably DirectX). As games get more complex (which is inevitable) it'll take more and more programmers to create them, in a time when C++ as a language doesn't seem to be taught anywhere near as much as a priority as in the past. Game Studios will be looking to cut costs and increase development time. The obvious answer to this is the use of 'interpreted' languages. Probably the most notable of these is C#. Microsoft have already demonstrated with XNA that its perfectly possible to create games for the xbox using C# as opposed to C++, so the JIT concept obviously works to some degree. Given that in PC environments, the difference between the 2 in speed is usually negligible (and certainly not as great as everyone makes out).
    There will also be the advantage of the fact its a closed system, owned by the same company as the programming language. They can really optimise the JIT system/virtual machine for the xbox. As Android demonstrates, Java can be used to develop for Android, and MS have the advantage of controlling the whole application stack. They could create some really very efficient wrappers for things like DirectX.

    From MS's point of view, they have more people using their proprietary tools. C# becomes one of the most prominent languages because its already a viable option for Windows development, but now people see it as a games development language too. Given that a disproportional amount of students entering higher and further education wishing to be a software engineer have their eye on the games industry, given a language which will really help them towards that goal, is accessible, and allows them to write applications for their existing (probably windows anyway) PC will lead to high adoption with learners. As a language it's only going to be held back by its closed source nature, and incompatibility with other platforms, which obviously MS won't give a **** about anyway.

    From the Games Developers point of view, the use of JIT languages increases the speed of development massively. I'm not even going to attempt to estimate how much quicker it is to make a system in managed as opposed to unmanaged code, but it's a hell of a lot. 10x gets thrown around quite a bit. This is obviously going to be a very real advantage, because quicker development time means less investment in people, quicker release dates, and the ability to add features even quicker. The faster development will also facilitate larger games, since it won't take as many man-hours on typing lines of code. Bugs in code will be decreased, as opposed to entrusting low-level control with programmers who you've hired, you can simply get them to use the existing wrappers written by the company who wrote the VM (in this case MS). Decrease in development time again, as there's no need to reinvent the wheel, but perhaps more crucially, it'll reduce the amount of memory leaks and such in code because you won't be having to look for them. In addition, as the skill level is arguably lesser, you can pay your staff more, and it should be easier to find staff. You'll need less staff to produce a game of a similar size/quality, and you'll therefore save quite a bit of money. Result.

    From an individual developers point of view, its faster to code in, easier to learn, and generally avoids the headache of memory management and such.

    Sony and Nintendo would likely adopt Java eventually, since if development is exponentially faster on their competitor, they'll want to keep up.



    That said, this is all speculation and the games industry is notoriously slow at adopting new languages and standards. It took them many, many years to move from ASM to C, and then from C to C++, so the cognitive bias of moving to C#/java will probably take a while still.
    Offline

    14
    ReputationRep:
    (Original post by Redux)
    'Most' games is a bit of a misleading term. Big console games are likely, at the moment, to be programming in C++. Games for Mobile platforms, or the web, probably not so much.

    Even if you are looking at large scale, blockbuster games, the trend is likely to go away from C++. Looking at the current state of the industry, Microsoft are the producers of one of the leading games consoles. They also dominate the operating system of the PC gaming industry. It's likely that they'll want to push their own proprietary technology as much as possible (notably DirectX). As games get more complex (which is inevitable) it'll take more and more programmers to create them, in a time when C++ as a language doesn't seem to be taught anywhere near as much as a priority as in the past. Game Studios will be looking to cut costs and increase development time. The obvious answer to this is the use of 'interpreted' languages. Probably the most notable of these is C#. Microsoft have already demonstrated with XNA that its perfectly possible to create games for the xbox using C# as opposed to C++, so the JIT concept obviously works to some degree. Given that in PC environments, the difference between the 2 in speed is usually negligible (and certainly not as great as everyone makes out).
    There will also be the advantage of the fact its a closed system, owned by the same company as the programming language. They can really optimise the JIT system/virtual machine for the xbox. As Android demonstrates, Java can be used to develop for Android, and MS have the advantage of controlling the whole application stack. They could create some really very efficient wrappers for things like DirectX.

    From MS's point of view, they have more people using their proprietary tools. C# becomes one of the most prominent languages because its already a viable option for Windows development, but now people see it as a games development language too. Given that a disproportional amount of students entering higher and further education wishing to be a software engineer have their eye on the games industry, given a language which will really help them towards that goal, is accessible, and allows them to write applications for their existing (probably windows anyway) PC will lead to high adoption with learners. As a language it's only going to be held back by its closed source nature, and incompatibility with other platforms, which obviously MS won't give a **** about anyway.

    From the Games Developers point of view, the use of JIT languages increases the speed of development massively. I'm not even going to attempt to estimate how much quicker it is to make a system in managed as opposed to unmanaged code, but it's a hell of a lot. 10x gets thrown around quite a bit. This is obviously going to be a very real advantage, because quicker development time means less investment in people, quicker release dates, and the ability to add features even quicker. The faster development will also facilitate larger games, since it won't take as many man-hours on typing lines of code. Bugs in code will be decreased, as opposed to entrusting low-level control with programmers who you've hired, you can simply get them to use the existing wrappers written by the company who wrote the VM (in this case MS). Decrease in development time again, as there's no need to reinvent the wheel, but perhaps more crucially, it'll reduce the amount of memory leaks and such in code because you won't be having to look for them. In addition, as the skill level is arguably lesser, you can pay your staff more, and it should be easier to find staff. You'll need less staff to produce a game of a similar size/quality, and you'll therefore save quite a bit of money. Result.

    From an individual developers point of view, its faster to code in, easier to learn, and generally avoids the headache of memory management and such.

    Sony and Nintendo would likely adopt Java eventually, since if development is exponentially faster on their competitor, they'll want to keep up.



    That said, this is all speculation and the games industry is notoriously slow at adopting new languages and standards. It took them many, many years to move from ASM to C, and then from C to C++, so the cognitive bias of moving to C#/java will probably take a while still.
    Well there's certainly no sign that develoment of "triple-A" games will switch to managed code any time soon. You say it's much faster to develop which is true, but it's also much slower to execute. Developers are trying to push as much out of the hardware as they can and languages like C# won't help with that. Some people developing Xbox Indie games using C# are having to be very careful with the CLR's garbage collection to get the performance they want, and most of the games they're making are no where near the scope of blockbuster AAA games.

    Say Microsoft supported C# while Sony and Nintendo supported Java on their consoles. Assuming they still had the option of C++, why would they pick either C# or Java if it means they'd have to completely rewrite everything for different consoles? With C++ the vast majority of the code will work across multiple platforms. For developers to switch to a language that is only supported by a single console, that console would have to completely dominate the market, because it would effectively rule out the possibility of multi platform development.

    I suppose I can see why you might say C++ is slightly less useful for games than it is for embedded development (even though in many cases game development can be considered a form of embedded development), and OS development. It's at least feasible to write a game of some form entirely in a managed language, and there are certain areas where they can be commercially successful. Where as you can't feasibly write an OS in a managed language (I'm not even sure that would even be possible by definition).

    Want to guess what I do for a living?
    Offline

    0
    ReputationRep:
    (Original post by Psyk)
    Well there's certainly no sign that develoment of "triple-A" games will switch to managed code any time soon. You say it's much faster to develop which is true, but it's also much slower to execute. Developers are trying to push as much out of the hardware as they can and languages like C# won't help with that. Some people developing Xbox Indie games using C# are having to be very careful with the CLR's garbage collection to get the performance they want, and most of the games they're making are no where near the scope of blockbuster AAA games.
    This is true, but as I already stated, the Games Industry as a whole is slow to adopt the changes which are made by other areas of the Software Development Industry.
    As an industry, they are slow to adopt what they see as slower, or less efficient languages. While it might be the case at the moment that the overhead of Garbage Collection prevents widespread adoption, or use in AAA games, this probably won't be the case in the future. Execution speed differences in C# compared to C++ are often exaggerated and the gap will only close in the future, as the .net framework and equivalent technologies develop. Gotta kinda bear in mind that memory and stuff is getting cheaper too.
    (Original post by Psyk)
    Say Microsoft supported C# while Sony and Nintendo supported Java on their consoles. Assuming they still had the option of C++, why would they pick either C# or Java if it means they'd have to completely rewrite everything for different consoles? With C++ the vast majority of the code will work across multiple platforms. For developers to switch to a language that is only supported by a single console, that console would have to completely dominate the market, because it would effectively rule out the possibility of multi platform development.
    Good call. I suppose the alternative would be game engines designed to abstract the hardware, where game developers script for the game engine. As far as I'm aware, this isn't hugely different to the model used now (for example, Vivendi Games use scripting almost exclusively to add new features because of iteration speed).

    Even so, if it takes you 10x less time to code in C# and java than in C++, then you could effectively state that you wouldn't be losing too much from having to code the same thing twice. Irritating, yes, but it would theoretically take less time to code something twice in languages with 10x quicker development time.

    (Original post by Psyk)
    I suppose I can see why you might say C++ is slightly less useful for games than it is for embedded development (even though in many cases game development can be considered a form of embedded development), and OS development. It's at least feasible to write a game of some form entirely in a managed language, and there are certain areas where they can be commercially successful. Where as you can't feasibly write an OS in a managed language (I'm not even sure that would even be possible by definition).

    Want to guess what I do for a living?
    I don't think it is possible to write an OS entirely in Managed code, though there is a fair bit of .net code knocking around in Windows as far as I'm aware. The kernel and other low level stuff is always going to be unmanaged though.


    I just think it's naive to assume that the games industry, or any other for that matter, will remain so static forever. Languages and tools change, and that's going to be towards managed languages and away from things like C++. It might not be starting now, but logically it eventually will. If you could get similar performance out of both of them (or at least, could achieve your aims in managed code) then which would you choose as a development house? The only question is when you will be able to achieve that with managed code. MS have already shown their interest with XNA and hardware is getting cheaper and more powerful on a constant basis. The bit of memory and processor overhead added by managed code is going to decrease while hardware power increases, until eventually it's a near-negligible difference (or at least, little enough that it isn't a concern anymore).
    Offline

    14
    ReputationRep:
    (Original post by Redux)
    This is true, but as I already stated, the Games Industry as a whole is slow to adopt the changes which are made by other areas of the Software Development Industry.
    As an industry, they are slow to adopt what they see as slower, or less efficient languages. While it might be the case at the moment that the overhead of Garbage Collection prevents widespread adoption, or use in AAA games, this probably won't be the case in the future. Execution speed differences in C# compared to C++ are often exaggerated and the gap will only close in the future, as the .net framework and equivalent technologies develop. Gotta kinda bear in mind that memory and stuff is getting cheaper too.

    Good call. I suppose the alternative would be game engines designed to abstract the hardware, where game developers script for the game engine. As far as I'm aware, this isn't hugely different to the model used now (for example, Vivendi Games use scripting almost exclusively to add new features because of iteration speed).
    Even then it's only the base levels of the game engine that are platform specific. I work on a game engine and the majority of the code is for all platforms.

    (Original post by Redux)
    I just think it's naive to assume that the games industry, or any other for that matter, will remain so static forever. Languages and tools change, and that's going to be towards managed languages and away from things like C++. It might not be starting now, but logically it eventually will. If you could get similar performance out of both of them (or at least, could achieve your aims in managed code) then which would you choose as a development house? The only question is when you will be able to achieve that with managed code. MS have already shown their interest with XNA and hardware is getting cheaper and more powerful on a constant basis. The bit of memory and processor overhead added by managed code is going to decrease while hardware power increases, until eventually it's a near-negligible difference (or at least, little enough that it isn't a concern anymore).
    Yeah I'm sure eventually the games industry will move on from C++. But by the time anyone currently studying A-levels or university graduate, the games industry will still be using C++. To be honest, they probably won't even be using the new standards by then.
    Offline

    0
    ReputationRep:
    (Original post by Psyk)
    Even then it's only the base levels of the game engine that are platform specific. I work on a game engine and the majority of the code is for all platforms.


    Yeah I'm sure eventually the games industry will move on from C++. But by the time anyone currently studying A-levels or university graduate, the games industry will still be using C++. To be honest, they probably won't even be using the new standards by then.
    Yeah. By the time the game industry does actually start to adopt a new language, C#/Java might have been superseded by something else. Doubtful though.

    Out of interest, how long would you predict until the industry begin to change their working practices?
    Offline

    14
    ReputationRep:
    (Original post by Redux)
    Yeah. By the time the game industry does actually start to adopt a new language, C#/Java might have been superseded by something else. Doubtful though.

    Out of interest, how long would you predict until the industry begin to change their working practices?
    Definitely not for the next generation of consoles, so I'd guess at least 10 years. Maybe newer C++ standards will become more widely used in that time, and maybe managed languages will be phased in slightly during that time. It's not going to happen any time soon.
    Offline

    3
    ReputationRep:
    Surely even much games development for mobile platforms is in C-ish languages? NDK for Android is for C++ and ObjC is just that?
    Offline

    0
    ReputationRep:
    (Original post by estel)
    Surely even much games development for mobile platforms is in C-ish languages? NDK for Android is for C++ and ObjC is just that?
    iDevice development is in Objective-C. Android development is in Java.
    Offline

    3
    ReputationRep:
    (Original post by Redux)
    iDevice development is in Objective-C. Android development is in Java.
    I know next to nothing about iOS development, but most games development on Android is in C/C++ through the NDK explicitly to avoid the overheads of the Dalvik VM and the ragingly aggressive garbage collector.
    Offline

    14
    ReputationRep:
    (Original post by Redux)
    iDevice development is in Objective-C. Android development is in Java.
    Don't iDevices also support C++? I'm sure they must do because I doubt Epic would have rewritten their entire engine in Objective-C.
    Offline

    3
    ReputationRep:
    Yup. Two minutes with Google reveal that Apple support C and C++ programs being compiled for iOS.
    Offline

    0
    ReputationRep:
    (Original post by paper-wings)
    Hey guys,

    I am currently on my gap year, so I have a bit of free time, and I would like to learn another programming language, for fun and also to keep my brain active before I go to uni to do Maths and CS in Sept 11.

    I currently know: VB.NET (the shame! ), PHP, XHTML/CSS, Javascript and I have done a tiny bit of python. I am pretty good in all of the above, I can make decent programs (I am best in VB.NET just because it was the language my college taught)

    I'm just looking for something to enjoy really, and something that will help me in my degree next year, I think we learn C, Java, Haskell.

    Any ideas? I did think of Python, but does anyone else have any suggestions?
    <3 Haskell, If you want something different learn Haskell.

    by far and away my favourite language.
    Offline

    2
    ReputationRep:
    My dad is a proffesional developer and nowadays i think he just hires the devs and manages stuff. As far as he is concerned a scripting language (php/perl/python) is way more useful than C.

    And you say your good at php? Make something amazing then package it and sell it.
 
 
 
  • See more of what you like on The Student Room

    You can personalise what you see on TSR. Tell us a little about yourself to get started.

  • Poll
    What newspaper do you read/prefer?
    Useful resources
  • See more of what you like on The Student Room

    You can personalise what you see on TSR. Tell us a little about yourself to get started.

  • The Student Room, Get Revising and Marked by Teachers are trading names of The Student Room Group Ltd.

    Register Number: 04666380 (England and Wales), VAT No. 806 8067 22 Registered Office: International House, Queens Road, Brighton, BN1 3XE

    Quick reply
    Reputation gems: You get these gems as you gain rep from other members for making good contributions and giving helpful advice.