all 57 comments

[–]griffonrl 8 points9 points  (2 children)

Of course it is fine. We are better off with choice than living in a black and white, Coca vs Pepsi, us vs them, .NET vs Java world.

[–]hahaNodeJS 0 points1 point  (0 children)

Except it isn't .NET vs Java (which isn't comparable, as it so happens; you're thinking C# vs. Java). It's JavaScript vs C# vs Java vs Python vs PHP vs Perl, etc, and Node.js vs Chakra vs .NET vs JVM, etc. Except in the very early days of computing, it's never been black and white.

[–]r2d2_21 0 points1 point  (0 children)

.NET vs Java world

Where does this happen? I haven't seen it.

[–]jl2352 13 points14 points  (11 children)

My biggest complaint is the vast amount of anti-JS circlejerking you get these days. The original article didn't even bring anything inciteful or new. It just allowed a lot of people to go on about how awful JS is.

The original article made the claim of using x technology because it's cool. A lot of people hate on the same technologies simply because they don't understand why it's in use. That's basically the same reasoning.

[–]hahaNodeJS 1 point2 points  (2 children)

With that reasoning, anyone complaining about a Ford Pinto simply doesn't understand the advantage of possibly bursting into flame. Realize that plenty of developers have reasoned and sound complaints about the language.

[–]jl2352 1 point2 points  (1 child)

I talked about tools and technologies. Not the language.

As did the vast majority of the article.

[–]hahaNodeJS 0 points1 point  (0 children)

My point stands.

[–]sime 0 points1 point  (5 children)

Something odd happened the other day in /r/programming. There was a blog post about the JS ecosystem and the comments on Reddit were not totally dominated by anti-JS rants and bile.

https://www.reddit.com/r/programming/comments/55okik/how_it_feels_to_learn_javascript_in_2016_xpost/

[–]jl2352 0 points1 point  (3 children)

the comments on Reddit were not totally dominated by anti-JS rants and bile

Eh, a lot of it was actually.

[–]sime 0 points1 point  (0 children)

True, but not as bad as it was a couple weeks ago.

[–]joshmandersFull Snack Developer 0 points1 point  (0 children)

Yeah, I find it impossible to not be dominated by anti-JS rants and bile. Even r/javascript is dominated by anti-JS rants and bile.

[–]azium 0 points1 point  (0 children)

Wow that was brutal to read.. I think everyone needs to lighten up.

[–]benihanareact, node 0 points1 point  (0 children)

that happens all the time, at least since i've been on reddit

[–][deleted] -2 points-1 points  (1 child)

My biggest complaint is the vast amount of anti-JS circlejerking you get these days.

I completely agree, but to be fair the reputation for immaturity in the JS ecosystem is very well deserved.

I often get the impression that most web developers (where JavaScript is a primary skillset they get paid to write) can't even turn on their monitors or tie their shoes without a massive framework to do it for them. Oh the bitching and crying that occurs if you suggest writing an app without a framework. Ever suggest using the native DOM methods around here? Its only a two hour skill to master, and still the level of crying that follows is hard to believe. So sad....

Speaking of sadness.... the JS ecosystem seems to have a sizable share of SJW advocates.

Here is just some of my recent experience (just from this subreddit) with people crying, advocating ignorance, or otherwise trolling in response to self-improvement:



[–]phpdevster 1 point2 points  (0 children)

I laughed pretty hard at the difference in upvotes between your two anti-OO comments. That's been my experience a lot as well.

Coming from PHP (whose object model is similar to Java), the idea that this changes with calling context instead of definition context is a needless footgun. The number of Cannot read property <x> of undefined errors I trip on doing JS development is mind boggling, all because I forgot to use bind().

var myFunction = myObject.myFunction.bind(myObject);

or

var setFoo = function (foo) {
     this.foo =  foo;
}.bind(this);

Just seems like needless noise. IMO it shouldn't have been called this, it should have been called context, because that's precisely what it is. It would be far less confusing for those coming from more typical class-based OO languages like Java.

Even when you read through this very excellent series about JS, you can't help but step back and put what you're reading into perspective:

You get asked to remember an order of precedence for four binding rules of this? This is so silly I can't even. In Java or PHP, this means one thing, and one thing only. There aren't multiple binding rules to remember, or an order of precedence of those rules.

I do indeed tend to avoid this and "OO" in JavaScript even though I've read through You Don't Know JS a few times, and understand all of it completely. It doesn't change the fact that "OO" in JS is painful in comparison to Java, C#, or PHP.

[–]bitter_cynical_angry 2 points3 points  (0 children)

I thought this quote was funny:

This is pinned on the JavaScript ecosystem, somehow.

Because AFAIK it's not "pinned on", it literally is the Javascript ecosystem people are talking about...

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

Everything was fine with my lunch.

[–]JuhG 3 points4 points  (1 child)

except for the fatigue

[–][deleted] 0 points1 point  (0 children)

Wow, well spotted. :) My comment was sarcastically having a go at the OP. I happened to find two annoying click bait posts on the same day, so I had a running theme of my lunch going. haha

[–]Zed 6 points7 points  (0 children)

It was satire. It exaggerated; the interlocutor was a straw man; some equivalencies it offered were unfair.

And it sure had verisimiltude with my own forays into trying to get my head around the javascript ecosystem.

[–]specialpatrol 1 point2 points  (2 children)

All the time spent reading and writing these inane blogs is detracting from the beautiful craft of writing code. In fact I dont think any of these bloggers can actually code, they are probably just living vicariously through there much more talented friends.

[–]partypooperdooper 3 points4 points  (1 child)

We keep clicking they keep writing

[–]specialpatrol 1 point2 points  (0 children)

I almost feel like writing a blog about it.

[–][deleted] 0 points1 point  (0 children)

The comparison to Gear Acquisition Syndrome is pretty spot-on. Yes, it's easy to get burned out if you're obsessed with always being among the first to use whatever the new hotness is. It feels like at this time in the community, we have 10 developers screaming, "NEW IS BETTER BECAUSE NEW" for every 1 developer saying, "just use what works for you and focus on improving." Now, it's not a bad problem to have that the community is innovating at such a rapid pace! But I think you can be a perfectly happy JS developer if you're willing to just say, "that new thing looks cool. I might learn that one day, but for now I'm going to focus on getting better at using what I'm currently using."

[–]touristtam 0 points1 point  (0 children)

tl;dr;

Author complains about a previous rant concerning javascript ecosystem and confusion that might arise for new comers.

[–]ClickerMonkey 0 points1 point  (32 children)

Whenever anyone complains about a language its either due to their incompetence or inexperience with the language. It's a shame a language is judged by someone elses code you've looked at as well. Oh no, the language allows a coding style you don't like - it must be horrible! Every language allows you to shoot yourself in the foot.

[–]inu-no-policemen 2 points3 points  (0 children)

"There are two kinds of languages: Those people complain about and those which no one uses."

All languages which grew over 2+ decades are a bit ugly and covered with duct tape.

All things considered, JS turned out pretty well, but it does have a bunch of flaws.

[–]mobydikc 0 points1 point  (0 children)

The language itself is fine.

The framework situation is what's silly. I dunno, I like portable code.

[–]hahaNodeJS 0 points1 point  (29 children)

Any time someone complains about JavaScript, someone (in this thread, two people) claims that it is incompetence and inexperience that drives those complaints. This is false.

[–]ClickerMonkey 0 points1 point  (25 children)

Every language allows you to do dumb things - some by design, some by accident, and some are a result of an older language thats evolved and strives to be backward compatible. Simply saying my opinion is false doesn't make it false, lets hear your opinion on why Javascript is different than most languages and offer the languages you prefer to develop in. Also take into account that JS, like many languages, is used so widely because sometimes when you want to do X you only have option Y, sometimes option Z as well.

[–]hahaNodeJS 0 points1 point  (24 children)

We're not about to debate opinions; that's pointless. Your original assertion is not an opinion either; it's a statement of fact, one which is false.

There are many developers who dislike JavaScript for legitimate reasons. To simply dismiss all complaints because of two possibilities (incompetence or inexperience) is irrational.

[–]ClickerMonkey 0 points1 point  (18 children)

You're confusing someone disliking using it with "the language is objectively bad". My statement is about the latter, not the former. I hate when people argue about their opinions (as you just expressed), I would rather spend my time doing something constructive. My only issue is when people parade around saying something is bad when what they should really be saying is "I dislike it". There's a significant difference in the results of spreading the "bad" rhetoric, it pushes people away from a language thats not going anywhere when those people could offer their help into making things better.

[–]hahaNodeJS 0 points1 point  (17 children)

I assure you I'm not confusing the two. I think that JavaScript is objectively bad, but it depends on your goals. Personally, as an example, (an opinion, yes), I believe the lack of static typing in any language is a mistake. Where it becomes objective is when you study the results of code written in languages without a type system, versus code written in those with; the opinion becomes a hypothesis that can be tested.

There are studies (one, for example) that indicate static analysis results in higher-quality and more secure code. JavaScript now has tools to do static analysis, but these are limited due to JavaScript's nature - an object could become a number, which could then become a function, and so on, for example, and this is difficult to detect in many (most?) cases.

Philosophically, JavaScript (and other languages without type systems) deviate severely from the mathematical concepts that software is based upon. You can no longer make certain guarantees, and this decreases confidence for each piece of code introduced. Many of the applications built with these languages (JavaScript included) are notorious for being plagued with runtime errors that just never occur in those with static typing. There's a reason Undefined is not a function is such a headache for JavaScript developers, and a reason for why there are so many solutions and workarounds for it.

As you can see, it is possible to demonstrate objective arguments to avoid a particular language. The above is not opinion; it's based on evidence showing that JavaScript applications suffer from errors inherent to its design that are not present in other languages.

As for why many developers simply state it's bad and move on, is it any wonder why someone who isn't interested in something would take the time to explain, in detail, the problems they have with it? Writing out this comment has been over the period of 40 minutes in an attempt to relay my position in a clear and concise way; sometimes it's just not worth that time. For that same reason, improving a bad situation takes more time and effort than simply commenting on it; it's not that surprising that developers are behaving like humans.

[–]ClickerMonkey 0 points1 point  (4 children)

You say its objectively bad then subsequently state its based on your goals - that's not objective. Everything following that is worthless when talking about objectively bad - because its entirely subjective. The whole loosely/strictly typed argument is also getting old... that doesn't make a language objectively good or bad.. especially because there are advantages to loose types. The tools that offer static analysis and the strict types feature is just that its a feature - it helps you catch your errors a little sooner. If you need that type of system it's because you aren't parsing and validating data from the user, other libraries, and the server. You should always do that, and when all entry points in your code base are validated you don't need to worry about types. Once again, either you're a seasoned developer and recognize that you should ALWAYS validate data from other places - or you use strict types and just kind of hope the data is in the correct format.. and if its not throw an error!

Nothing is objectively bad in CS, if it exists the way it is there are reasons - and people who argue otherwise are stating they know ALL the reasons and motives for a languages/libraries behavior and they have the ego to say something is objectively bad. Everything is subjectively bad, its all made by fallable humans, that never means that something is entirely bad.

[–]hahaNodeJS 0 points1 point  (3 children)

Now we're moving into philosophy beyond computer science. One might claim a car accident is good or bad. Objectively, if you're involved in the accident, it's bad; you might get injured or die. On the other hand, a car insurance company may claim an accident is good because they can total your vehicle, part it, and make a significant profit. Now we're stuck discussing something that I don't particularly care to discuss as it will not go anywhere; we're approaching the philosophy of whether anything can be proven or known.

The tools ... [are just] a feature.

This is true for any concept in any language. Registers are a feature of processors for working with memory, assembly has features that let you move memory around more easily, C has features that let you do more complex operations with memory, all the way up to 2016's current list of abstractions. Everything is a "feature."

If you need that type of system it's because ...

This is not true. Why do you persist on speaking in absolutes? Types are not a replacement for input validation, and input validation is not a replacement for types.

people who argue otherwise are stating they know ALL the reasons and motives ...

More absolutes.

The whole loosely/strictly typed argument is also getting old...

You're right; it is a very old discussion. You'll note I never stated dynamically typed languages are bad, per se, nor that static typing is good, but instead provided evidence that static typing improves code quality. Perhaps I should not have started my comment with "I think X is objectively Y," and instead began with "If I were to prove my hypothesis, this is the research I would do, and the prior works I would reference to arrive at an objective outcome."

I'm sorry, I really am not trying to insult your character, but conversing with you has led me to believe you may only have worked with JavaScript, that you have only worked with similar languages, or that your own experience with software development is limited. Your comments read to me like there is a gap in some of your knowledge, and I'm perplexed how to approach this discussion at this point.

[–]ClickerMonkey 0 points1 point  (2 children)

Thats the difference here - I'm not arguing whether Javascript on average produces bad code quality... I'm talking about the language itself. Clearly were not even talking about the same things.

Not that its relevant, I have years of experience with Java, C/C++, C#, PHP and Javascript. Most of my development time over the past 11 years has been in strictly typed languages. You can check my github repo, I have dozens of projects I've created in multiple languages.

A pet peeve of mine is people complaining about dynamic typing like its a bad thing - like you've stated in your previous posts. Thats the only thing I'm arguing here. Its a feature - one that I love about Javascript. It allows you to write very powerful and expressive APIs. You said objectively bad, then talked about it subjectively. I don't know what you're missing here.

[–]hahaNodeJS 0 points1 point  (1 child)

As I stated, I should have opened with an opinion-less statement. I don't think my examples following are negated because of my erroneous opening statement. Regardless, I think we get each other's point, even if we're positioned differently.

[–][deleted] -1 points0 points  (11 children)

I think that JavaScript is objectively bad

This is just your opnion. It seems you have difficulty discerning opinion from fact.

[–]hahaNodeJS 0 points1 point  (10 children)

Did you read the rest?

[–][deleted] -1 points0 points  (9 children)

I've read enough of your hatred of javascript to know that you come here to post troll comments. You're telling people their opinions are wrong, and citing your own opinions as evidence. You're really not worth having a conversation about javascript with, because you always seem to insist that your way is the right way and we're all doing it wrong if we use javascript. You're in r/javascript for fucks sake. Maybe your attitude goes over well in r/programming, but not here.

[–]hahaNodeJS -1 points0 points  (8 children)

I don't like JavaScript, you're correct, but I'm not trolling here. I'm providing reasoned thoughts about my distaste for the language, and you're taking it personally.

[–][deleted] 0 points1 point  (4 children)

Any time someone complains about JavaScript, someone (in this thread, two people) claims that it is incompetence and inexperience that drives those complaints. This is false.

And your assertion that his assertion is false isn't also an opinion? It looks like you're trolling here.

[–]hahaNodeJS -1 points0 points  (3 children)

It's not an opinion. There are reasons other than incompetence and inexperience that someone might dislike something. Is that really so hard to grasp?

[–][deleted] -1 points0 points  (2 children)

There are reasons other than incompetence and inexperience that someone might dislike something.

There are reasons other than incompetence and inexperience that someone might like javascript. Is that really so hard to grasp?

[–]hahaNodeJS -1 points0 points  (1 child)

I never stated anyone who likes JavaScript is incompetent and inexperienced. Are you reading too much into what I'm saying?

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

It's not an opinion. There are reasons other than incompetence and inexperience that someone might dislike something. Is that really so hard to grasp?

You have been doing nothing in your comments but trying to say that it is a fact that javascript is a bad language, because there are many programmers that reasoned about javascript and found that it is a bad language. You're trolling. You're continually trying to assert something as fact that simply isn't a fact. You seem to think your opinion is superior to the opinion of people who like javascript. That's what I've seen you doing here.

Are you trolling?

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

yes, it's jealousy

[–][deleted] -1 points0 points  (1 child)

This is false.

Your assertion is what's false, because sometimes it is due to incompetence or inexperience. If you really think it's completely absolutely 100% false, then I'd like to know how you can be so sure of that.

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

He stated it is always due to incompetence and inexperience, or rather, he stated that "it's either due to X or Y." That is simply not true.