On Wednesday, 28 February 2018 at 20:01:34 UTC, H. S. Teoh wrote:

Just to give some background. At work I spend most of my time maintaining legacy systems adding some small features or replacing subcomponents. So most of what I do is reading code and making some minor changes (unless it's buggy code then you get to rewrite :))

The idea of sigils is actually not a bad one. It does, after all, have basis in natural languages. But the way it was implemented in Perl is, shall we say, rather quirky, leading to all sorts of unexpected interactions with other things and generally become a cognitive burden in large projects, where a disproportionate amount of time is spent fighting with syntax rather than getting things done. (E.g., is it @$x[$y] or $x->y or ${x}{y} or ${x->$y}[$z] or something else?)

Perl is a maintenance nightmare. It just takes so much time to figure out what the code actually does. Particularity if it has been changed by multiple people over the years. That's the main reason Perl is at the top of my most disliked languages.

Yeah, that's 10 trains worth of WATs right there. :-D

And the whole thing about == vs === is just one huge WAT. It "makes sense" if you understand why it's necessary, but it just begs the question, why, oh why, wasn't the language designed properly in the first place so that such monstrosities aren't necessary?!

Another personal favorite.
function foo($myArray) {
   return $myArray['test'];
}

$myString = "hello, world";
$test = foo($myString);

echo $test; // $test = 'h'; Because you know 'test' auto converts to 0.

Now PHP does have many WATs but it's still simpler to read than Perl so it has an edge over Perl for me atleast.

Compared to them, programming in C++ or Java for that matter is like a dream.

C++ is hardly any better, actually:

        https://bartoszmilewski.com/2013/09/19/edward-chands/

Yeah... C++ is interesting in that way. Mostly what I have seen is that for any given project they have a strict policy of how to do memory management and error handling. Also it's not really a pleasure reading C++ templates :D.

Java... well, Java is a walled garden, a somewhat nice (if verbose) one that's somewhat detached from reality, but forcefully anchored to it by big commercial interests. As a language it's not too bad; the core language is pretty nicely designed -- in an idealistic, ivory tower sort of sense.

But in practice, it's more of a Write Once, Debug Everywhere deal. The verbosity and IDE dependence sucks. The OO fanaticism also sucks (singleton classes IMO is a big code smell, esp. when it's really just syntactic lip service to the OO religion for what's essentially global functions). The lack of real generics is total suck, and a showstopper for me. Even the half-hearted attempt at generics that they shoehorned into it later doesn't fully save it from being sucky. The only saving grace of Java is the extensive library support -- you can find just about anything you might imagine as a library, which saves you from dealing with the suckier parts of the language. Most of the time.

The awful and nice part of Java is that since your forced to do things a certain way then things will actually be done in that way. In this case OOP and all of that. It's nice when you read the code, awful when you actually have to code in it.


Only thing missing is the ability to do arbitrary system calls during compilation :D

AKA compile-my-source-code-and-get-a-trojan-installed-on-your-system. :-D If this ? (mis)feature ever gets merged into DMD, give me a call right away -- I have a lot of source code to sell you. For free. :-D

Why must you ruin my perfect plan of getting a free botnet! :D


Reply via email to