The site lists Microsoft being the defacto contributor to the C# language spec as a negative. Honestly I think Microsoft has been an excellent steward of the language, and their opinionated choices over the years have helped keep C# succinct while also capable and modern.<p>I'm a bit of a fanboy, but when you compare it to the language that has been around longer and is a direct competitor (Java), C# really blows it out of the water for most common programming tasks (async, operator overloading, pair/triple returns in C# 7, var keyword, superior generics, to name a few.)
The go section is great, it's such a derpy 1980s language:<p>"Go's error type is simply an interface to a function returning a string.<p>Go lacks pattern matching & abstract data types.<p>Go lacks immutable variables.<p>Go lacks generics.<p>Go lacks exceptions"<p>I've been searching for as succinct a criticism as this and now have it, thanks.
Why is it that these lists seemingly always give JS a hard time for function scoped variable declarations, but never give Python the same treatment?<p>Not to mention “nonlocal”...
I get this is tongue in cheek, but I really wish this was a little more focused. Something more along the lines:<p>(1) Language x claims these as its design principles/goals: P1, G1, P2...<p>(2) These y things subvert those aspirations.<p>(3) Modus ponens &x suxxxorzzz_Aslang__<i></i><p>I'm not the biggest fan of Go for it's stripped nature or Rust for the complex babysitting the type system needs, but I much prefer both to C. so that is a win for me and hence both achieve that goal.<p>Similarly, I love how expressive Scala is, that seems like an unspoken design goal of Odersky's. You can't get that without there being a million ways to do something.
Thanks for the read! I appreciate the thought and work you put into this. And now my obligatory gripes!<p>Under the PHP section you claim<p><pre><code> "if an included file must return a value but the file cannot be included, include statement returns FALSE and only generates a warning. If a file is required, one must use require()."
</code></pre>
How is that a negative? That sounds like expected behavior to me and I can't imagine it working any other way.<p><pre><code> $error = include('script.php'); // Return FALSE and continue anyway.
require('script.php'); // Die with error.
</code></pre>
How is that undesirable/wrong? It lets you do things like...<p><pre><code> $error = include('script-A.php');
if ($error == FALSE) require('script-B.php');</code></pre>
I’m not going to defend other js parts, but calls on 0.1 + 0.2 != 0.3 and the type of nan both present the author as a non-skilled programmer at least. Big numbers and exact decimal-point numbers are out of scope of almost any general purpose language core for a reason. It is up to a programmer to decide whether this reason is applicable or not, but not blindly dismissing. Math is a+b, engineering is “%.14g”.
In C++, std::map's operator[] will either return the element pointed to by the specified key, or if the key is not in the map, <i>will default construct an object and insert it into that key's slot in the map</i>.<p>I really want to know who thought this was a good idea, because I've only ever seen this behavior act as a footgun.
> XSLT/XPath sucks because [...] It starts numbering from 1. Unlike <i>every single other</i> major programming language in use today.<p>Does Lua count?
I wonder why anyone would be so cruel as to put so much content in a single webpage.<p>Did they actually had the patience to write such a long article in a single file, or did they write it in multiple files, and then compiled it down to a single webpage for others to suffer?