JavaScript Leads The Pack As Most Popular Programming Language the TIOBE Index is listing C as the most popular programming language in use at the moment. TIOBE bases their rankings off of the number of skilled engineers, courses and third party vendors that cater to a specific language.

Ask yourself and programmers around you, how many have written C code. Not many I guess. In my company I don't think I can find anyone who writes C code.

According to TIOBE, perl is more popular than javascript. Excuse me while I laugh. Consider this, almost every single website out there uses javascript, and when you think of how many websites are actually out there... that's a whole lot of code.

Redmonk has a better approach than TIOBE, they consider the popularity of languages on community and collaboration sites that coders use TODAY. Granted, this may not reflect on enterprise level programming, because programmers can't freely put their code online, but what people are willing to spend their free time writing code in usually translates into enterprise level a little later.

So, TIOBE is more reflective on the past, while Redmonk is more reflective on current trends and the future.

Writing C code is not a skillset that is in a huge demand, and prospective employers are few. Everywhere I look companies want someone with experience and is productive in the most commonly used languages, and that usually means Java and C# coding, and languages like Ruby, Javascript and even Python, and more importantly the ability to pick up whatever interpreted/scripting language.

If you want to write anything for the web, Javascript is your language of choice. The old model of rendering web pages server side is quickly dying out, javascript enables clients to render pages themselves.

So if you want to be "future proof", C is obviously not the way to go, but mastering Javascript is.

Sorry, but that's a bunch of BS IMHO. JavaScript is only needed for webcrap. It is not a skill needed to be employed building non-webcrap software. While you can write non-webcrap software with it, your life will be hell (though you may not realize it and may even be content in hell), especially in a corporate setting working with a team. JavaScript is not the future.

I'm completely uninterested in writing software to run inside a browser and I'm sure others are too.

Sorry, but that's a bunch of BS IMHO. JavaScript is only needed for webcrap. It is not a skill needed to be employed building non-webcrap software. While you can write non-webcrap software with it, your life will be hell (though you may not realize it and may even be content in hell), especially in a corporate setting working with a team. JavaScript is not the future.

I'm completely uninterested in writing software to run inside a browser and I'm sure others are too.

Well, I think most of us here can thank that "webcrap" for paying our bills every month. Truth is, most of us work with something that is related to the web.

Try telling Google that Javascript is not the future, they're heavily invested in it. So, if you're going to apply for a job at Google, they'll laugh you out if you want to do everything in C.

Sorry, but that's a bunch of BS IMHO. JavaScript is only needed for webcrap. It is not a skill needed to be employed building non-webcrap software. While you can write non-webcrap software with it, your life will be hell (though you may not realize it and may even be content in hell), especially in a corporate setting working with a team. JavaScript is not the future.

I'm completely uninterested in writing software to run inside a browser and I'm sure others are too.

I concur. Especially google with chromebook and their shitty google docs saying you can and will do everything in a browser some day.Every browser app sucks. Nobody is going to write code, design 3D models, doing photoshop or edit video in a browser...

And Javascript is shit which accidentally got popular, and everybody knows it. So it's bad from the user side AND the developer side.

Also I think the whole Diablo 3 fiasco showed that, "always online" is just not realistic and it might never be. And if you cant do you work because you are offline or their servers are down, that sounds like fun. Let alone the fact that they potentially monitor everything you do.

- Has near C/C++ performance! In some microbenchmarks I did Java 7 code took about 15% longer for heavy number crunching than straight C. In similar tests, early Java 8 builds run even faster. I wonder how competitive Java is with OpenGL for high end 3D stuff. I've heard some say that the JNI layer adds substantial overhead to the Java OpenGL bindings, but I don't know that first hand.- Java is *way* more elegant than C/C++. I don't mind memory management, but there are tons of other warts. The #include system is awful, managing third party library dependencies is a mess, the standard library is awful. It isn't very standard, it doesn't touch things like networking or threading and generally expects you to use native libs for that. I remember I had to write code to upper case a string, with full internationalization support, that compiled under several different C++ compilers: wow, that was hard and required many different platform specific #if blocks.- The community is awesome.

But actually, today, I must say, Java is really heavily dated. Scala is really a dramatically better language. Even without the heavy functional stuff, just as a basic OO language, Scala is far better than C++/Java/C#.

A few examples:

- Properties. C++ and Java had this informal notion of "properties", which is an internal variable with getter/setter methods. C# improved, by making this an official language construct and streamlining it and adding appropriate internal code generation. Much better. Scala has the way better design, in that there is no difference between a class variable and a property. A class implementation can change between a val and a get method or a var and a get+set method without impacting external code.- Static. Scala fixed the C++/Java/C# notion of class "static" data/methods with the singleton companion object.- Type inference. In C++/Java, I frequently see code like "SomeClass i = new SomeClass()". Why do you have to duplicate the type information? Much better to write "var i = new SomeClass()" and have the compiler simply see the type. C# has this type inference too.- First-class support for top-level constant/immutable variables or values. Scala has val which is equivalent to Java final variables (C# doesn't have this). This is really nice for read-only properties, and limiting mutable state.- for loops, if blocks, and any code blocks in braces can return values. Extremely nice and elegant. Removes the need for a separate ternary operator.- Scala removes special case "arrays" which are separate from the generics used by the rest of the language. Java and C# both started with just arrays and later bolted generics on, while Scala started with generics and designed them to handle array type usage with zero performance loss. Also, Java/C# arrays have a broken type variance, where you can cast a Circle[] to a Shape[], add a Rectangle, and get a runtime exception rather than a compiler exception.- Persistent immutable data structures in the native library. In other wrords you can do: "val modifiedList = sourceList.add(item)" and sourceList isn't modified and guaranteed to never be modified until it is not used and garbage collected.- Native tuples- Pattern Matching- Option rather than null. Null causes tons of errors and requires tons of safety if-checks. Option provides safety, and simplifies the if checks. Null is baked into C++,Java,C#, but Scala is very consistent about Option.

Also, Scala generally runs slightly faster than Java in benchmarks. Obviously, they use the same VM, but I believe Scala does more aggressive inlining and other performance tricks. One caveat is for performance sensitive code you often need to use while loops instead of for loops, which to me is a glitch, but I am sure they will fix that.

Like for example no semicolon at the end of a line. That's wrong.And I like to write two commands in one line from time to time...

In Scala, you can totally use semicolons to put two commands on a single line like this:

println("hello"); println("there");

But for the times when you don't put multiple commands on a single line, you don't need to write the semicolon. You can if you want to or if it makes you feel comfortable. But Scala doesn't enforce needless ceremony.

Sorry, but that's a bunch of BS IMHO. JavaScript is only needed for webcrap. It is not a skill needed to be employed building non-webcrap software. While you can write non-webcrap software with it, your life will be hell (though you may not realize it and may even be content in hell), especially in a corporate setting working with a team. JavaScript is not the future.

I'm completely uninterested in writing software to run inside a browser and I'm sure others are too.

I concur. Especially google with chromebook and their shitty google docs saying you can and will do everything in a browser some day.Every browser app sucks. Nobody is going to write code, design 3D models, doing photoshop or edit video in a browser...

And Javascript is shit which accidentally got popular, and everybody knows it. So it's bad from the user side AND the developer side.

Also I think the whole Diablo 3 fiasco showed that, "always online" is just not realistic and it might never be. And if you cant do you work because you are offline or their servers are down, that sounds like fun. Let alone the fact that they potentially monitor everything you do.

You're right that you won't be doing 3D modelling, photoshopping, etc. any time soon on the web. But that's not what the ordinary consumer is doing anyway. He's quite content with playing music, watching videos, facebook, twitter or other things. There's a difference between what YOU are going to be doing and what HE (the consumer) is going to be doing.

The PC era is ending, and device era is beginning. Professionals will continue to use PC's to create stuff, but consumers are moving away from the cumbersome interface and usage of PC's. Consumers want simplicity, they want the stuff to work, they want it to be easy, accessible. A PC with Windows like we've known it doesn't do that, and I've seen firsthand how complicated PC's with Windows are for ordinary people who don't use them a lot, the PC's end up plagued with malware, dead slow with annoyware and the user simply gives up on it. My mom's computer is just like that, and I've given up on it, I'm getting her an iPad.

If the ordinary consumer is not going to be buying a PC again, and the ordinary consumer makes up over 90% of those who buy PC's, how is that going to affect computers makers and professionals like programmers and designers? For sure we need PC's to make consumer "goods", like games, web pages or other applications. I imagine mouse/keyboard operated computers to be strictly used by professionals in the future, while the consumer mass will be using devices.

You don't realize it yet, but there's already a big revolution underway. The computers of the first era were impractical, bulky and required engineers to operate them, then came the 1980's with the PC era that allowed most people to use a computer in their home or office, although they weren't accessible to all. Now the third era is beginning, where virtually all people can use computers in whatever manner they want with whatever devices they want, and it's easy, for your mom, grandfather, and dog.

Big software giants are in a panic, attempting to repurpose themselves. You already see what Microsoft is doing, Oracle probably doesn't know what it's going to do because professionals are moving away from RDBMS databases as well. Dell, HP are in a big mess with sales plummeting. Big game makers aren't releasing as many AAA games as before, and they're scrambling to move into the devices market where the money seems to be.

If you think you'll be writing Java code or C code in this new era you're grossly mistaken. Most of the development for these consumer devices will be in scripting/interpreted languages. Web pages are what users use, it's what is most accessible to all devices, if you don't have the web accessible on your device then your device won't sell. And all devices manufacturers try to make it easy for developers to make applications for their devices (that means javascript or intepreted languages), because they know LOTS of apps for their devices means LOTS of buyers for their devices.

Open your eyes before you become one of those old guys in the basement hellbent on maintaining some legacy system with a language that nobody else still uses.

You can do amazing things in HTML5, now. In a few years time perhaps we'll see HTML6, and we can only imagine what sort of stuff will be in that. Java, C, simply doesn't have a place in this envisioned future, but javascript does have a big role.

But as always, the future is only what we can dream it to be, extrapolated maybe on the past. What it will actually be like is unknown.

But actually, today, I must say, Java is really heavily dated. Scala is really a dramatically better language. Even without the heavy functional stuff, just as a basic OO language, Scala is far better than C++/Java/C#.

You forgot Traits! (or maybe you didn't and just don't care for them). To me one, of the things I like best about Scala, and is most relevant to game programming, is being able to create objects that are little more (or even nothing more) than assemblages of traits. I think Java 8's defender methods will allow similar things (though I'm not sure it is as flexible as Scala traits).

Java 8 builds are fairly usable and have both of those features right now. I assume the default functions in interfaces qualifies as a trait/mixin.

I could write a laundry list of legitimate gripes about Java. Basically see my list of reasons above why Scala is better.

I think Scala traits are still more flexible. For instance, if you have a GameEntity class and you have Swimable a trait with swimming behaviors and Shootable, a trait that allows you to fire bullets you can do things like:

1 2 3 4 5 6 7 8

// A plain game entityvale1 = newGameEntity()

// A game entity that can swimvale2 = newGameEntity() withSwimmable

// A game entity that can swim and shootvale3 = newGameEntity() withSwimmablewithShootable

Note that GameEntity knows nothing about Swimmable or Shootable and doesnt implement or extend either. I don't think defender methods allow you to do this. Also, I think (but don't remember) that Java's default implementations only cover methods, not fields like Scala does.

Wrong. People do real programming in browser-base IDEs right now. I'm working on an HTML project and planning to use one of those.

I still use rich client tools the bulk of the time, but browser tools are legitimate, they are useful, and they will get better.

Quote

Java, C, simply doesn't have a place in this envisioned future, but javascript does have a big role.

I am skeptical that C and Java will vanish. I think JavaScript may explode and take over many use cases, but I can also see JavaScript turning into a VM, where people write code in other languages and compile to JavaScript.

How about just deciding what's the most efficient, elegant, and appropriate toolset, rather than looking for marketshare numbers?

Sure, you need to listen to what the market is saying so you can be employable and if you plan to make software for end users, you need to consider runtime marketshare. But, you still have lots of choice as a developer within those parameters. You can use any JVM language to target workstations. Many languages compile to JavaScript

IMHO, the reason why they will never die is because the amount of man hours required to teach a whole workforce a new language is astonishing because for a business they'll mainly see thecost of it, if you have C++ projects with a staff of 1000 and let's assume it would take 80 hours for them to learn a new language that's 80,000 man hours on changing language.that's 80,000 hours for a group of 1000 people imagine a whole workforce, game companies wouldn't want to pay people to learn a new language so they would keep them on C++or any language they were originally using. If that all makes sense.

Problem is, Javascript is just plain shit for anything other than trinkets in browsers. Shit to code for, shit to use, shit to look at, shit to maintain. The tools are still shit despite having, hmm, 15 years to become good. Performance is - yes really - still shit. The JSVMs have come along in leaps and bounds and are now probably the most amazing turd polishing machines the world has yet seen.

ALL web applications are appalling to use versus any natively deployed application. Even using GMail is awful. Dare I say shit.

I could go on but I still think the ultimate tyranny is that there is simply no choice but to use it. How would you feel if someone pointed out that French is actually more widely spoken worldwide than English, so ultimately JGO was going to be a French-language only board?

Well, we'd all get a lot better at French, I expect, but I don't reckon you'd be very happy about it.

Well, javascript really isn't just for browsers. I think javascript is really quite nice. A quite nice scripting language. I'd never want to use it for general purpose programming. It's attempting to move in that direction, but it's going to have the classic problem of inertia. 2020 is the last guess I'd heard for threading. It needs tons of changes to become a useful general purpose language.

The PC era is ending, and device era is beginning. Professionals will continue to use PC's to create stuff, but consumers are moving away from the cumbersome interface and usage of PC's. Consumers want simplicity, they want the stuff to work, they want it to be easy, accessible ...You can do amazing things in HTML5, now. In a few years time perhaps we'll see HTML6, and we can only imagine what sort of stuff will be in that. Java, C, simply doesn't have a place in this envisioned future, but javascript does have a big role....But as always, the future is only what we can dream it to be, extrapolated maybe on the past. What it will actually be like is unknown.

I remember a similar 5 year prediction, ooh, about 4-5 years ago. Around the time Android was about to be released and development of Chrome OS was being talked about. Simply put, I agree with you that the device era is beginning. Does that mean everything is going to be HTML5 / JavaScript based? No!

As you said earlier, Google is heavily invested in JavaScript, and it makes sense on the desktop because it's a disruptive technology - they aren't the OS producer. Does Google or Apple give you access to all of a devices features through HTML5 / JavaScript on Android or iOS? No. Will they ever? Probably not. It removes the distinction between devices, reduces their control over the ecosystem, and bypasses their nice walled gardens.

For the foreseeable future, I see the devices market boosting Java (Android-style) and Objective-C coding more than HTML5 / JavaScript.

Well, javascript really isn't just for browsers. I think javascript is really quite nice. A quite nice scripting language. I'd never want to use it for general purpose programming. It's attempting to move in that direction, but it's going to have the classic problem of inertia. 2020 is the last guess I'd heard for threading. It needs tons of changes to become a useful general purpose language.

In other words... it needs to be a different language. Which do we think is easier and more painless - making a general purpose desktop language work better in a browser or making a browser language work better... everywhere?

FWIW I think that Mono has probably gained critical mass now and has achieved pretty much ubiquity everywhere - the exact thing Java should have achieved 5 years ago but never did.

So far I love programming in Java. My reasons:- I get stuff done in Java. In C or C++ I can make too many mistakes.- The stuff I get done runs on several platforms with little effort. I like C# but it's just not the same as Java in this respect. - Deployment (with some tricks, e.g. embedded JRE) is actually quite smooth.- It's plenty fast for what I'm doing (especially with LWJGL).

The fact that it's very slightly suboptimal compared to Java versus the fact that C# is, in fact, available on iOS, Playstation, XBox, every desktop OS, in fact, just everywhere, is a hugely compelling argument. For the game devs amongst us, Unity and MonoTouch are incredible bits of tech. These are all places Java should have been 5 years ago but due to colossal mismanagement it never happened.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org