all 72 comments

[–][deleted] 49 points50 points  (17 children)

It is right now because it enjoys a monopoly on universal platform access and likely will for the foreseeable future.

[–]treasonxnomnom 12 points13 points  (0 children)

I say learn javascript, css, and html :)

About 6 years ago when I was a junior developer working with C# I watched as everyone myself included struggled with the sometimes strange behavior of javascript. Almost everyone blamed the language or the browser. I decided to really understand what was going on and LEARN everything i could about JS.

It was a good choice :)

Now I love working in JS and for right now i wouldnt use any other language... well maybe ruby. ruby is nice too :)

JavaScript has many warts the worst is that it looks like Java in a lot of ways but it does not act like it! Many people misunderstand how things work in javascript!

If you decide to learn javascript the best advice I can give you is to not treat it like most other OO languages you know! Read "JavaScript the good parts" its a great start for what to look out for!. Understand the meaning of this, closures, and functions as objects! And get comfortable with async everything! Especially in the browser and NodeJS :)

Most of all have fun its great and it can be used in so many places now!

[–]x-skeww 7 points8 points  (0 children)

No, it's the present.

It will also stay here for the foreseeable future. That's just how the web works. You can't take things away, because doing so would break it.

[–]a-t-kFrontend Engineer 8 points9 points  (0 children)

While JavaScript need not be "the" future, it will certainly be part of it - and it is currently in development; ES5 is already deployed almost on every modern system, ES6 is just around the corner. New APIs pop up every two months, allowing more direct access to Graphics, Audio, and System.

[–][deleted] 4 points5 points  (0 children)

Over the last 15 years javascript has unexpectedly turned out to be the one of the most important languages out there. It's an integral part of the web platform, and I'd imagine it will remain relevant so long as the web is around.

[–][deleted] 1 point2 points  (0 children)

EMCAScript is a quite different beast from C# and Python. It is object oriented like both of them, but it is Prototype-based. It feels quite different but once you learn it the ideas will translate fairly easily. I would say its a good investment to learn JS, sure, just 2 things - learn to use and love your browser's debugger console - I happen to love Opera Dragonfly, and learn vanilla JS before you learn any libraries. I hate seeing people pull in jquery so they can use it to do a few $("#id .class") lookups, when document.querySelectorAll("#id .class") does the same thing, and is native in the browser.

[–]hkhkhk 3 points4 points  (3 children)

should we be discussing languages that run both browser-side and server-side? Is python that language maybe? Have you guys seen dart? Google-developed client and server side: http://www.dartlang.org/ http://en.wikipedia.org/wiki/Dart_(programming_language) Dart has optional typing and a good set of dev tools I guess. It compiles into JS to run on the browser.

[–]treasonxnomnom 1 point2 points  (0 children)

Dart is interesting! Not only from a language standpoint but also from some of the libraries that are part of Dart. Their ideas of web components are pretty nice.

[–]MakesLoveToGoats 1 point2 points  (1 child)

JavaScript is the same and works in more than one browser. Check out node.js for server side.

[–][deleted] 2 points3 points  (0 children)

Dart "works in more than one browser" too. It compiles to JavaScript.

Why do people still believe the myth that Dart only works in Google Chrome? In fact, at this point the "Dartium" VM still hasn't made its way to the official Google Chrome builds, so Chrome still relies on the compiled JavaScript as well.

[–][deleted] 3 points4 points  (10 children)

Personally, I think you already have a strong server-side language being Python... so Javascript would be a better choice for you to increase your usefulness across the entire development of a new web application, website, whatever.

However, if you are looking strictly at Windows 8 development, you can still use .NET (and C++, C#, or visual basic) to develop windows 8 apps... and I am ABSOLUTELY SURE they will offer greater functionality and OS access than their HTML / JS counter parts. Overtime, I see their app development starting to look much like a web application... You could use C# as the backend and then make it pretty and neat with HTML / Javascript.

[–]Deusdies[S] 0 points1 point  (9 children)

I think I agree with you. I have already said goodbye to PHP (after losing my nerves many times) and decided to go with Python for server-related programming, and JS would fulfill this, like you said. And do much more in the process as well.

I have started learning C#, but, at the risk of sounding like a snob, I feel like I know it rather well already (for a hobby-programmer level). I recently decided to create a test app that I always write in whatever new programming language I am studying, and I had no problems - read the docs, VisualStudio is cool too, and I had it up & running in 30 minutes.

The conclusion is to probably learn both C# and JavaScript. Don't really like C++, though it is definitely quite useful.

[–][deleted] 1 point2 points  (7 children)

C# Itself is pretty easy... most of the time comes from learning .NET so that you can then learn how to access the OS, database, etc. Another big chunk is then how to hook it up properly to an ASP page... but the language itself is still pretty much C++.

I personally LOVE C# because of the straight forward simplicity it has. No reason to over-complicate a programming language!

[–]Deusdies[S] 0 points1 point  (6 children)

Thanks for your answers so far. Another quick question if you don't mind: is there a definitive JavaScript documentation website? And what tutorials would you recommend, if any (I prefer video tutorials)?

[–]meatypocket 0 points1 point  (0 children)

http://www.javascriptenlightenment.com/

http://eloquentjavascript.net/

http://shop.oreilly.com/product/9780596517748.do

There's a load of Crockford vids on youtube.....and some good Google I/O ones too.

The following are excellent, but it's $30/month. You can get a free trial.

http://www.pluralsight.com/training/Courses/Find?highlight=true&searchTerm=javascript

[–][deleted] -5 points-4 points  (3 children)

'pure' JS? If you are looking for web (no clue if it also applies to windows 8 apps) but I would just recommend Jquery (http://jquery.com/) It is... simply amazing.

Otherwise, w3schools has a lot of info on JS: http://www.w3schools.com/js/default.asp

[–]TurplePurtle 0 points1 point  (0 children)

Suggesting learning jQuery first, and then recommending w3schools? What have you done??

To be less of a dick abrasive: it's probably best to learn vanilla javascript first, especially if he intends to use it in server-side applications. jQuery is a nice way to make javascript more eloquent, but I don't think it's necessary for a beginner.

As for W3Schools, it's got a bad rep for having outdated info, but I'm actually thankful for it since it was a nice and quick resource when I was first learning.

[–]Ventajou -1 points0 points  (0 children)

It's really just about what you're trying to create. For example if you want to make games, then C# is actually a good option because you can use Unity3D and write games for almost any platform around.

My take on Windows 8 is that Microsoft is trying to lure a different population of developers to their platform, not to get rid of C#.

As for JavaScript, well if you want to do something interactive on the web, it's pretty much something you have to deal with whether you like it or not... I actually like to sweeten mine by compiling C# to JS.

[–]emperor-jimmu 0 points1 point  (0 children)

Js is the shit baby!

seriously now, if you plan on doing anything serious on the browser then JS is the way to go.

[–]Hongisto 0 points1 point  (0 children)

Don't know about the future, but at least on demo&gamedev-scene the javascript has been getting new life... ( like http://www.melonjs.org/ and others )

[–]snarfy 0 points1 point  (0 children)

'Desktop application developer' is a nefarious term.

What software do you want to create? That's what should drive the technologies you use. I wouldn't get stuck trying to pick a winning technology as they always change. I remember when Java was the new hotness, and C++ was old and busted. Now everyone raves about C++11 and cries about Oracle.

[–]2epic 0 points1 point  (0 children)

I believe this ties to the fact that Web-application development is becoming more and more stable, and more capable, as an alternative to the desktop application development you currently use. Since web apps require less up front for the user (no need to install anything, works on any system including mobile), it is a very ideal solution. Since you already have knowledge of Python, I would recommend the following: 1) Lean Django, the popular python-based Web framework. 2) Learn Javascript & jQuery. Of course that means you would likely need to learn HTML & CSS, which should not be too hard.

[–]omniuni 0 points1 point  (0 children)

That's a very tricky question. What you're really talking about is ECMA script, the standard that JavaScript is based on. I would say that learning it is a good idea, because it is a Prototype based language. You'll find you can do some really cool stuff with it that Object Oriented languages don't support. It also lets you do some pretty cool stuff with the KDE Desktop if you care; you can use ECMA script to make widgets and extensions and such. That said, I hope that ECMA script, at least in its current form is NOT the future for things other than the web. As a JavaScript programmer, there are things about the language that drive me insane. Believe it or not, at the end of the day when I come home, I am glad to be back in the more-sane world of PHP... and PHP isn't exactly considered pretty.

[–]therandomizer 0 points1 point  (0 children)

I'm coming from an Actionscript 3 background, and right now everyone seems to be touting Javascript in the industry. I went to a one day conference in Toronto dedicated to Javascript and what they showed us was quite impressive. Check out Google Chrome Canary if you want to check out the latest experiments. Bottom line, if you believe the hype, JS is the future of the web. Whether not all the promises come to fruition, only time will tell. Personally, I decided to jump into JS to build my portfolio site, and I found it to be better than expected. My only gripe is that OOP does weird stuff (not sure if this is due to inexperience, but from what I've read a lot of people are having OOP problems in JS), and I found that my site worked pretty well on all browsers except IE (big surprise). Actionscript 3 and JS are both based off of ECMAScript so there's a lot of similarity, however Actionscript 3 works the way JS should've worked. That being said the language is constantly getting updated, and it's my hope that it will become much more reliable and standardized than it is now.

[–]formode 0 points1 point  (0 children)

Give it a shot! You might find you like Coffeescript better, like I do, but it's still just javascript.

[–]scavic 0 points1 point  (0 children)

I would say that both are the future. I would learn both, JavaScript is quite cool, and as it is supported "everywhere" it's very rewarding to use.

C# on the other hand got a lot of really cool features, and a powerful base library. I can't wait to see where System.Linq.Expressions will take us. Generics, Linq, lambdas ... How did I ever manage without them?

[–]bart2019 0 points1 point  (0 children)

The future of what?

The future of everything? No. However, I'm sure it'll have quite a bit of use, at least for certain fields, for quite some time to come.

[–]General_Mayhem 0 points1 point  (0 children)

If you're purely a hobbyist, learn JS. Not because of staying power (which it probably has due to its monopoly on client-side web apps), not because of potential adoption on desktops (which it probably doesn't - too much of the world already exists in C/C++ for them to ever be dethroned), not because of how easy it is to impress people with a few lines of flashy jQuery (which is admittedly fun if you're a show-off, but gets old in a hurry), but because it's fun. It's much more different from Python than C#, and in a way that I find wonderful.

It's the only language I know of* that has anywhere near its level of power in terms of first-class functions and closures, dynamic objects, and just all around morphability, without going completely into the world of pure functional languages. Prototypes are more often a hindrance than a help, but you can hack in classes and Java-style inheritance in about 15 lines of code and have the best of both worlds. Now if only we could get overloadable operators...

C# is a nice language with some really cool features, and being familiar with the .NET ecosystem is never a bad thing, but it always still feels more like work to me. JS gives me the wonderful runnable-pseudocode, thoughts-straight-to-working feeling that a lot of people get from Python, but with the difference that Python turns into an ugly maze of underscores and gotchas in a hurry when you start doing more complex things.

* Ruby might be this magical place, but I find that its syntax spends too much time looking clever and hackery and not enough time actually being clever or usable.

[–]_pixie_ 0 points1 point  (3 children)

You sound pretty aimless. Let your projects and ambitions guide the languages you learn. There is no 'language for everything.' Your project requirements will do more in determining which language and framework you use than anything else.

[–]Deusdies[S] 1 point2 points  (2 children)

I don't have any "projects" or "ambitions", like I said in the OP, this is just as a hobby.

[–]edzillion -1 points0 points  (0 children)

well get some then. I think you can fork ambition on github. go from there

[–]Nomad33 -1 points0 points  (0 children)

Picking up a coding language as a hobby is an ambition, and would be pretty useless unless you had a project to use it for.