DEV Community

Discussion on: Do you hate JavaScript?

Collapse
 
dubyabrian profile image
W. Brian Gourlie

Know nothing about programming? JavaScript is a great place to start!

Is it, though?

Besides being a mess of a language that constantly violates the principle of least astonishment, it's also a mess of tools with so many choices that it would completely overwhelm anyone who just wants to learn programming.

IMO, a language that qualifies as a "good place to learn programming" would include as part of its standard distribution:

  • A standard library
  • A package manager
  • A build system (if applicable)
  • Documentation that accurately reflects the features and capabilities of the distributed language

It would also have a standard module system, and wouldn't require transforms to use official language features, problems that are "uniquely javascript."

Collapse
 
reverentgeek profile image
David Neal

I can't argue those are real challenges in the JavaScript ecosystem. I submit Node.js provides an environment with most, if not all, of those important features.

Regardless, I believe the language, itself, is easy to learn. You don't need a compiler or special tools. You can use your own browser, or one of the many online editors, such as JSFiddle.

My 11-year-old son is learning JavaScript/Node.js and PHP. He's having a blast learning core programming concepts, while blissfully unaware of all the complexities that exist.

Yes, I believe JavaScript is a good place to start. And, there are many other languages that are a good place to start, too :)

Collapse
 
andrespineros profile image
Andrés Felipe Piñeros

Your son isn't a valid argument. He's doing fine because he has a Javascript programmer showing him the way. Most people, even adults, don't have that.

I feel like Javascript is too quirky to be a learning language, but I do consoder Async a very important concept that other languages such as Java and Python don't have at their core.

So yeha, Javascript is great if you have someone that already understands those quirks to guide you.

Thread Thread
 
mateiadrielrafael profile image
Matei Adriel

Im just some random 16 yr old guy from the internet, and ive started like 2 and something years ago. Js was a very easy to learn lang (without someone teaching me / paid courses) , just by googling "how to do x in js", i know this doesnt happen for everyone, just sharing my learning story thing:)

Collapse
 
dubyabrian profile image
W. Brian Gourlie

If using javascript in a specific environment and in a procedural manner, then yes, it's as good a place as any to start. But you will hit a ceiling, and once you have a desire to do more, you'll inevitably run into issues that overwhelm even experienced developers.

Also, the intent isn't to evangelize any particular language. I would easily recommend languages that I'm not fond of to beginner programmers—PHP, Python, or Ruby—over javascript. The concepts learned from these languages will apply more generally to others, while also being generally more sane.

With all that being said, the world still needs javascript developers, so learning it is not without merit. It's more a question of whether or not it's a good introduction to programming, which is where I suppose we disagree.

Thread Thread
 
nicolasnarvaez profile image
Nicolás Narváez

The point was to "introduce programing", not the dificulties of becoming an expert on it: "but you will hit a ceiling".

JS is so easy to use for a beginner, that you can invoke a repl with a hotkey 80% of the time, and test core programing concepts with lots of variations.

Thread Thread
 
hishamfangs profile image
Hisham El-Fangary • Edited

I absolutely hate PHP's syntax and standards, and for a beginner it doesn't just look daunting with all the $ signs, but visually it looks quite ugly.

"But you will hit a ceiling, and once you have a desire to do more, you'll inevitably run into issues that overwhelm even experienced developers."

Used to be true, but it isn't anymore with ES6. I am yet to run into any ceilings or issues and I've been using it to develop extremely complex systems with large code bases.

Bar none, it is my number 1 choice for introduction to programming. Nothing comes close in terms of user-friendliness and ease of use.
Opening a browser console and typing "x=2+3" and getting an immediate response with any complications allows for an easy introduction to programming concepts without showing the student a bunch of class declarations and voids everywhere and asking them to ignore it for now.

Thread Thread
 
dubyabrian profile image
W. Brian Gourlie

If you could teach someone programming entirely in a browser console window, you may have a point. But you can't. Eventually, you will end up having to explain the many intuitive javascript quirks that have built up over the years. Including with ES6.

New developers will marvel at the simplicity and ease-of-use of javascript while they struggle to understand why this doesn't refer to the thing they expect it to, depending on the syntax they use to declare a function.

Thread Thread
 
mateiadrielrafael profile image
Matei Adriel

I dont think your "this" example is viable since every language has its parts which seem normal to everyone except begginers (like how a lot of starters i know asked me why 9 / 2 equals 4 when they try to do some random stuff in python).

Also, i think most people start wondering about what "this" means after they learned the basics (at least i did, idk about others)

I think almost any popular language is okay for starters, and just saying one of them isnt because of some quirks doesnt make that much sense since u can sya that about any other:)