I did not intend to sound angry. I was trying to do an honest review of this article. Since I did not consider it good at all.
What a way to validate OP by completely misreading what he said.
What is this article? There is no author, and it is written as if it were an objective truth when it is clearly subjective.
There is no conclusion, it's just an introduction paragraph that says "do this, this is good design", followed by a pro-con analysis, and then the article just ends. Given that it has real drawbacks, you would think it would be more nuanced than "do this, this is good design".
Furthermore the analysis is not even complete. The only 2 drawbacks mentioned only affecting the developer of the language. And ignoring more obvious drawbacks that would affect the users of the language:
- Aesthetics. Annotations are just uglier than modifiers. Due to their special syntax instead of just a naked keyword.
- Annotations take up more space. Screen space is valuable, annotations usually are stacked vertically, which takes up a lot of vertical screen space. This is in order to mitigate their use of horizontal screen space by their syntax.
- Disorder. Annotations are not ordered, which means they are harder to parse by a human. And if there is a wall of annotations, a human might miss an important one because it is surrounded by others that are just boilerplate.
- "Downgrading" modifiers to annotations removes their perceived importance. Modifiers modify the class/function/whatever, annotations add to it. Usually, you can ignore annotations and just look at the modifiers. If modifiers are annotations, you have to read the annotations to filter which ones are important to you and which aren't. Which is harder to do due to the previous point "Disorder".
- If annotations were objectively better than modifiers, the logical conclusion would be "your language should not have modifiers, do annotations instead" instead of "if your language has both, remove modifiers".
- Namespacing is not objectively better. I don't want to import "public" in every single file. It's just useless boilerplate at that point. And some dependency might export their own "public". Or even worse, a non-annotation (function, class) named "public". If reserving keywords for modifiers is a concern, you can just prepend the uncommon ones with "__". Nobody is going to complain that they can't use the name "__readonly" because it's reserved.
- Variable declarations do have modifiers too (for example "const" in C). Annotations are awful for variable declarations. See the point about screen space. Same for closures or code blocks.
Headline: says something. (That is obviously not true and just clickbaiting)
Instant disclaimer: the headline is not good, it should be instead "don't do this other thing".
Later in the article: how do we avoid doing the thing I told you not to do? By doing what I told you not to do.
The dude may be correct (idk, haven't bothered reading the rest of the article), but he doesn't know how to write/communicate. I don't believe he's respecting my time. Just tell in the title what you actually want to talk about.
5 seconds at every boot and shutdown is important.
The reason you shouldn't blindly benchmark an init system is because most of the time is not caused by the init system itself being slow, but the processes it manages being slow.
As the other commenter says, it is very easy to make the system "faster" by just configuring the timeouts to be lower. If you just set the timeout to 0 it will be very fast, but it won't be a very good system.
This triangle is impossible.
If the distance between B and C is 0, B and C are the same points. If that is the case, the distances between A and B and A and C must be the same.
However, i ≠ 1.
If you want it to be real (hehe) the triangle should be like this:
C
| \
|i| | \ 0
| \
A---B
|1|
Drawing that on mobile was a pain.
As the other guy said, you cannot have imaginary distances.
Also, you can only use Pythagoras with triangles that have a 90° angle. Nothing in the meme says that there's a 90° angle. As I see it, there are only 0° and 180° angles.
Goodbye, I have to attend other memes to ruin.
I'll train my AI on just the bee movie. Then I'm going to ask it "can you make me a movie about bees"? When it spits the whole movie, I can just watch it or sell it or whatever, it was a creation of my AI, which learned just like any human would! Of course I didn't even pay for the original copy to train my AI, it's for learning purposes, and learning should be a basic human right!
She was supposed to be ugly?
If I choose MIT it's because I don't care if people "steal" the code. This meme is stupid and condescending, if he didn't mind that Intel used it's code it's because he didn't mind, that why he chose MIT. Why is Intel beating him in the meme? It makes no sense. You are proyecting your thoughts onto him as if that's how he felt, but then you show that he didn't feel the same way you do. Why?
When I see a GPL license I don't see freedom. I only see forced openness, which makes me immediately avoid that library, since I can't statically link to it.
Freedom means that everyone can use your code. Yes, that means for-profit corporations. For free, without restrictions.
If I want to make a piece of software to improve people's lives and I don't care to do it for free, I'll choose MIT. If it gets "stolen" by a for-profit corporation it only makes it better, because now my software has reached more people, thus (theoretically) improving their lives.
-
This is not lately, it's been happening for a long time.
-
Nothing in particular happened.
-
I'm gonna explain the meme: Discord started as a gaming communication software, after some time they expanded and discord servers are not used just for gaming. This leads to some software projects being coordinated in discord servers. However, discord is not a tool designed for this purpose, and because of that, OP had the reaction of this meme.
The disadvantages of discord when used as a community for software projects (as opposed to traditional forums, for example) are as follows (not an exhaustive list):
- Most importantly, discord doesn't get indexed by search engines. So you can't just Google a problem and a link to a discord message with the answer will appear. Some say that if something is said in a discord server, it hasn't been said, because it's not findable. You have to know in which server to look for, and then use Discord's own searcher (which in my opinion is bad).
- Conversations are just a flow of messages. Recently they introduced threads, which acts more like traditional forums, with an OP, title and answers. However, most people still just use the chat.
- If you ask a question in a chat and nobody answers, people will just keep chatting and your question will be faded away, hidden by more recent messages.
Unlock origin is the adblocker that people are installing. There are a lot of people with shitty adblockers out there, I guess they are switching.
I'm not looking to argue about the importance of my points. I wouldn't have listed so many in that case.
The point I'm trying to make is that this is a very incomplete article, as it doesn't seem that much thought was put on the downsides.
A good article would've considered every angle. And so would probably conclude (if it had a conclusion) that the premise is incorrect, and the world of language design is more nuanced than "having both modifiers and annotations is bad language design".
And at that point, the article would've probably ended up being: when should annotations be used instead of modifiers?
Many of the most popular languages have both modifiers and annotations:
C doesn't have both because it doesn't even have annotations. Idk about C++, but it either doesn't have annotations (like C) or it should be in the list above
All of those have been heavily criticized from a language design PoV. And I've never seen anyone complain about this. People genuinely don't believe this to be an issue.
The closest is
public static int main()for java. But making them annotations would not fix that, only rearrange the issue vertically.