They're using objects, including arrays [1], so I think they would have been more precise to say that they're using objects and arrays as simple data structures rather than using OO features like inheritance and mutation.
This is just semantics then. If you're implementing a linked list or a tree without a class (or at the very least a function that behaves like a class), it's going to be awkward and clumsy.
Data-structures beyond what the standard lib gives you (string and array) are the main reason the addition of classes to JS was so helpful.
Absolutely. The navigation behaviors will have to be in functions though. And from an application code developer's perspective, the connection between these objects and functions may not be obvious. If only there were some way to associate behavior with state.
The whole point of the top comment is that they appreciate how this library chose not to associate behavior with state, and instead organized things as functions and data structures.
With the latter approach, the user is not limited to the bahaviors that the library author wrote. The data (not state) can be used freely. Similarly, the functions are not tied to any particular state - the data can come from anywhere, as long as it has the right shape.
Well, in principle you could have the node objects be created with an object literal in an outside builder function, and the manipulation also be done by outside functions. That's how it's done in languages without OOP. The question is how far are you willing to go to avoid doing anything that looks like OOP.
What they mean is functions and data are separate, emulating a more functional paradigm and less mutable state.
The functions are kept pure and the data is kept pure.
As opposed to an object oriented programming style in which data and functions share the same object and create bug ridden state machines thats not as easy to reason about.
I'm well aware of the pros and cons of mutability. I object (hah!) to this novel new use of the word "object". The concept is well defined by the ECMAScript spec.
Your first link's first sentence's first two words are "Immutable objects". No problem there. It doesn't conflate objects with mutability.
I have ideas but I don't think I'm getting them through. Most of the problems functional proselytizers have with objects come from inheritance and mutability. Instance methods from classes don't seem to conflict with any of the functional tenets.
As for mutability, I think it's good sometimes. Dates should have been immutable, but Maps are a good fit for mutation. Immutable maps might make sense too sometimes.
But I find it difficult to communicate about any of this when fundamental terminology is used in novel ways.
C# allows you to implement some data structures using `struct`s instead of `object`s. Probably not binary tree though.
I honestly still don't understand what you're getting at.
> a data structure in that context is clearly an ordered grouping of objects versus an unordered/loose grouping of objects.
What's an "ordered grouping"? What does "loose" mean? These are not gotchas. I'm trying my best here.
For me, if I were implementing a data structure, I would probably use objects. In fact, I'd probably use a class. I'm not trying to argue that data structures shouldn't be implemented in terms of objects or anything. My point is just that the tonal.js description is kind of nonsensical. Or at least hard to understand.
It's mostly a question of what the language considers to be an object.
There's often a stack-/heap-allocated dichotomy. Some languages consider stack-allocated structs not to be objects. They have no reference identity. Assignment has copy semantics. C# is one such language.
By "blunders", the author includes both those which can be prevented (see section "Preventable blunders") and those which can't. This is one of the reasons this article is silly.
Next in the series is, "Avoid accidents: 80% of being a good driver."
To be fair, you could stop calling them accidents. "Avoiding collisions" does sound like it will get you to 80% of being a good driver.
Like the author, I also play chess, and I could have written the same advice. Maybe the charitable take here is "Don't worry about long term plans so much, at least until you manage to stop making trivial mistakes, evaluated looking retro-actively at decisions you made."
If you avoid the wheel while tired or with alcohol in your system, you'll slash a big part of the risk. Avoid conversations in the car, on the phone or with your passenger(s), that's even more risk reduced. Keep your tires in good shape, your windshield clean, that's even better. Finally, if if you practice defensive driving, situational awareness, more still accidents can be avoided.
Nothing will of course mitigate all accidents, but there are definitely things that make you more or less accident prone in traffic.
That's not applicable to chess. Some blunders are deep and neither player sees mate in 10.
The computer immediately sees mate in 10 and calls the last move a blunder. The opponent misses the mate in 10 and moves elsewhere, the computer puts it as a blunder.
Both players blundered without even seeing a clear win, and it would take them an hour of analysis to see the exact sequence and prove there's no way to escape it even though there are a hundred variations
What if the left has been destroying their country through unchecked spending and immigration and the right are the only people awake enough to see it?
"What if the left has been destroying their country through unchecked spending and immigration and the right are the only people awake enough to see it?"
We had no left government in ages ;)
The ÖVP is moderate to right and is part of EVERY government since 1987 (!!!)
But the left wasn't in power the last 7 years. The center-right and the Greens were and are in power. It requires some mental gymnastics to frame this coalition as left.
But to be frank, I'm not following Austrian politics closely. If the FPÖ is anything like the German AfD they are actually a very pro free-market. anti-social and worker-hostile party. I don't know why struggling people would vote for them, but they do.
> I don't know why struggling people would vote for them, but they do.
In stark contrast to many, I know a lot of people voting for the FPÖ, although all my close friends are far more left than right.
I have family that votes for the FPÖ, I have acquaintances and I know them, because I talk to them, uncondescending and am very interested in their motives.
And quite frankly: Most of the time it's simply not logical.
I can point them to laws the FPÖ enacted (because, you know, stuff like that is public), laws that DIRECTLY hurt them and they still vote for them, because "the foreigners, they will take everything we have!"
And even foreigners vote for them. People that are not Austrian citizens but already living
in Austria feel like they belong here but now the gates should be closed.
It all boils down to emotions and the good ol' divide et impera, which has worked for millenia all around the world.
Some have their reasons, e.g. because they like what the FPÖ is doing at local levels.
It is absolutely not good for the environment. Your dog does not eat a local, natural diet. There are more dogs than could be locally and naturally sustained.
That blows my mind. I had two dogs as a kid, and if we didn't pick up the poop fast it destroyed the grass underneath. Their corner of the yard was all dead grass.
Sorry, misspoke. I meant any animal that eats meat, including humans, dogs, chickens, etc. If they eat meat, there are toxins in the poop that make it inappropriate as a fertilizer, but you can compost it and kill off most of the bad stuff.
Yeah, for the CSS I don't even have a handler because it just goes right in the head.
I don't usually have more than a few lines.
Perhaps my use case is unusual though, I work on simple web apps, games, interactive simulations. I'm about to get into writing, and I expect a small amount of CSS will be sufficient for that too. Though that would probably expand over time, heh. You want to add a quote, and then a floating image...
Thanks for posting another side of this.
What you're saying makes a lot of sense.