Landing : Athabascau University

Group members: please add any useful sites or pages that you discover to these bookmarks. Try to put them in appropriate folders if you can. If you find any here that are useful, please recommend them (thumbs-up icon) so that others can more easily find the best ones and you can more easily find them again.

QUICK COURSE LINKS:  Add blog post - Read latest group postsFAQs: Course process : Site design : HTML : CSS : JavaScript : JQuery : AJAX : Misc : Podcasts for each unit

Updated resource pages:  Unit 1 - Unit 2  - Unit 3Units 4 & 5 - Unit 6 - Unit 7

JavaScript Is Eating The World

https://dev.to/anthonydelgado/javascript-is-eating-the-world

Welcome news for students of COMP266 - skills in JavaScript are becoming more and more valuable every day, albeit driven mainly by NodeJS, the dominant server-side variant of JavaScript that is not (yet) addressed in the course.

 JavaScript seems to be replacing Java for many large-scale applications (the article cites Netflix, PayPal, Uber, IBM, and Microsoft) because it's easier to learn, faster to develop, more open, and easier to maintain.  What was, originally, a quick and dirty scripting language that piggy-backed its name on the then-rising fame of Java (despite bearing little or no resemblance to Java and being a completely independent project from a different company), that was and still sometimes is scorned by academic computer scientists, appears to be set to overtake Java very soon, if it has not already done so. Different sources using different methodologies come up with different rankings so it is quite hard to tell for sure. For example:

  • Based on job postings, http://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2017/ reckons SQL dominates, but SQL is not a general purpose programming language (solely used for databases) and is predominantly used embedded within other languages, so this is very misleading. It is followed by Java, then Python, then JavaScript.
  • Based on code uploaded to GitHub, https://stackify.com/trendiest-programming-languages-hottest-sought-programming-languages-2017/ reckons JavaScript dominates, followed by Java, then Python and CSS (nb. CSS is not a general purpose programming language - in fact, it's barely a programming language at all - so I don't think it should be included). But GitHub is mostly used for open-source projects, so the results are likely a bit skewed to under-represent languages predominantly used for closed-source systems, like C# or Swift.
  • Based on numbers of courses, experts, and vendors, combined with a bit of Googling,  https://www.tiobe.com/tiobe-index/ puts JavaScript eighth, with Java dominating, followed by C, C++, C#, Python and Visual Basic, of all things. I don't find this at all convincing, especially as it focuses on the overall picture, with all its historical baggage, rather than how things are today. The methodology reminds me of the (many) studies that claim to find a relationship between programming skills and math skills, but that measure that correlation according to how well students do on academic programming exams that force students to solve math problems. The few studies that avoid this trap generally suggest that there is actually no correlation or a negative correlation between math skills and programming skills when you look at programmers in real-world settings. 

All the figures I have seen, though, suggest that JavaScript programming is a pretty useful skill to learn.

Comments

  • Anonymous March 6, 2018 - 3:20am

    A few things. C# is open source. The design repo is here https://github.com/dotnet/csharplang. It is also an open ECMA standard.  https://www.ecma-international.org/publications/standards/Ecma-334.htm. 10 years ago you may have been right, but Microsoft has been moving in the direction of making it open source for quite some time.

    The other thing is that I don't see JavaScript supplanting compiled languages any time soon because JavaScript is terrible to maintain the larger the project gets. Lack of strong typing is a big drawback for me, though there are tools to help with this such as TypeScript and Flow.

    In the article you mentioned, most of the large companies you mentioned are still using traditional server side languages for the backend. For example NetFlix is only using JavaScript on the front end only. The back end is still Java. Most large scale apps would not trust their business logic to JavaScript.

    One reason JavaScript is so popular is because it is the only front end language available. For backend we can choose PHP, C#, Python, Java, Ruby ... the list goes on, but for front end there's only JavaScript.

    I'm not knocking JavaScript or anything, but I don't plan on using it for anything more than front end.


    - Louise Eggleton

  • Jon Dron March 6, 2018 - 10:49am

    Good points, Louise, thanks - I was certainly being unfair on C#, though I still think it is a redundant and pointless (and largely pointerless!) language that was more a result of marketing than genuine need.

    I guess the big thing I like about JavaScript is its flexibility: not so much technically, as in the way it is embedded in practice. It's like Wordpress - at best so-so architecturally, and nothing like as good as much of the competition when looked at from an objective design perspective, whether in terms of learnability, ease of development, speed, reliability, maintainability, scalability or whatever. However, the overwhelmingly vast number of developers, trainers, administrators and sources, not to mention an enormous range of extensions/plugins/libraries/frameworks to fill in any gaps, mean that it can do pretty much any job at least as well as anything else (often better), with the huge benefits that come from sheer scale. You'd not pick it as a backend if all else were equal, but all else is not equal because we are, as you say, pretty much forced to use it on the Web front end (for now - wasm may change that). Why struggle to stay fluent in two languages (and deal with the hiring, training, maintenance, and other associated costs)  when one will do? I still struggle unnecessarily with different curly bracket languages because I constantly forget which slight syntax variants and constructs matter in which language: I'd rather focus on depth than breadth. Useful, too, that it is increasingly embedded into many native apps and operating systems. Mind you, much of this was once true of BASIC too, which is barely a rounding error in the statistics any more, so who knows?

    It's too early to tell whether wasm will significantly impact JS growth. It makes it much easier to write front end stuff in other languages, and to run code at nearly native speeds, and it has a very powerful consortium behind it, so it's hard to ignore. However, the Web browser is not quite the driver that it once was, and JS has a lot of momentum across the field. My suspicion is that whether it affects JS growth will hinge as much on libraries and frameworks as on the languages themselves. Personally, I'd like to see Python replace JS - not perfect by any means, but it has the best balance I can see between ease of learning, power, elegance, maintainability, maturity, and developer community.

  • Louise Nicoll March 8, 2018 - 4:04am

    C# may have started as a marketing thing, ie as Microsoft's version of Java, but has some features beyond what Java has such as LINQ, Asnyc/Await, Nullable types. I come from a web programming background (Perl,PHP,VB Script, Cold Fusion) and switching to C# was the best thing I ever did. I love the C style snyntax. I can't tell you how much I dislike Basic style syntax like Visual Basic. I love the Visual Studio IDE and I love strong typing and objected oriented programming. I sound like a Microsoft fanboy (girl in this case), but actally I have been won over to C# despite healthy scepticism about Microsoft.

    The reason I decided on C# is because I can reuse the code in multiple applications. We have a web application, but also several scheduled console applications and soon a smartphone app, all of which can be done in C#.

    I suspect Java would have also provided many of the benefits over the interpreted languages I used in the past, though my understanding is that it is a liitle more invloved to port Java to web applications.

    I don't mind having to use different tools for different things, though I do also get mixed up at times with different sytaxes for different languages. That's when a good editor/IDE comes in really handy.

    Haven't learned Python yet, but am familar with its syntax and understand its appeal.

    I am very interested in learning TypeScript as it addresses a lot of issues I have with JavaScript.

    wasm sounds very interesting. I had a look at the link you sent. Coud be a while before it comes to fruition.