https://en.wikipedia.org/wiki/Harry_Harlow
My much more charitable hypothesis is that it's just easier to take your frustrations with life in general out on the Internet, because it's so easy - especially when you're experiencing stress or anxiety - to lose track of the full reality of the fact that there's another real live person at the other end of the tube. Basically, the Internet encourages us to behave solipsistically.
I see the internet or driving cars as an example of that. You don't see the human behind the computer or car, you just see the enemy and you act accordingly. I think if you had to meet or see that person face to face, you'd automatically have empathy and no longer be a dick.
They do it pretty much anyone who is not in position to set boundaries and stop them.
I found Perl insanely frustrating, and hit a deal breaker problem I just couldn't figure out in a timely fashion. I also had no interest in learning Perl as it was clear that it was on its way out even back then. Our grading was largely automated-- the assignment specified what parameters the program took, what the name of the script was to be, where to store the backup files, what format they were to be in, everything. I figured it would be unlikely a human looked at my code... so...
So I wrote one line of Perl that passed the command line parameters to a Python script, which did the actual work.
Turns out, they did review the code... I got a C which, was probably a courtesy as I was employed by the same university as a system admin.
Eh. Perl 7 is coming out, and the list of differences with Perl 5 fits in a small blog post [0]. I get that everyone got spooked by Perl 6 becoming Raku, but this is a very narrow change for a new major version. The whole point of bumping to a new major version is that you can make backward-incompatible changes. But when the new version is just a new collection of defaults seems really silly to me. Why not just add a "use new_defaults;" pragma or something that just turns on this handful of new options?
[0]: https://www.perl.com/article/announcing-perl-7/?ref=alian.in...
I certainly want perl 7 to be more than what has been so far ascribed to it, to make the major version number change truly worthwhile.
Umm. Yes exactly. The thing is that it will instead be spelled as:
use v7;
There is already plenty of precedent for doing exactly that. use v5.10;
## enables the use of `say` `state` etc
# use feature qw(say state);
use v5.12;
## does the same as above but also
## - makes `use strict` mode the default
## - enables 'unicode_strings' feature
# use strict;
# use feature qw(… unicode_strings);
use v5.16;
## all of the above, plus
# use feature qw(… fc current_sub unicode_eval evalbytes);
use v5.28;
## all of the above, plus
# use feature qw(… bitwise);
One question is what quantity and quality of changes are necessary for jumping from `v5.xxx.yyy` to `v7`.There is also a question of what happens if you don't have a `use v_;` or equivalent statement.
(This is not an exhaustive list of questions.)
---
Personally I would think that `v7` should make the currently experimental signatures the default. It should also make the new Cor class experiment/prototype available with the `class` keyword. (Perhaps even a `method` keyword, but that is not strictly needed.)
Since both of those are currently being developed/designed, I think that `v7` should wait until then.
---
Other things that `v7` _might_ enable/change is things like the following. (Slightly edited from: https://stackoverflow.com/a/6163129/1337 ) I am not necessarily suggesting any of these, they are just possibilities.
use utf8;
use strict;
use autodie;
use warnings;
use warnings qw< FATAL utf8 >;
use open qw< :std :utf8 >;
use charnames qw< :full >;
use feature qw< say state switch unicode_strings
unicode_eval evalbytes current_sub fc
postderef_qq bitwise >;
no feature qw< indirect >;
use IO::Handle;
use File::Basename qw< basename >;
use Carp qw< carp croak confess cluck >;
use Encode qw< encode decode >;
use Unicode::Normalize qw< NFD NFC >;
END { close STDOUT }
if (grep /\P{ASCII}/ => @ARGV) {
@ARGV = map { decode("UTF-8", $_) } @ARGV;
}
$0 = basename($0); # shorter messages
$| = 1;
binmode(DATA, ":utf8");
# give a full stack dump on any untrapped exceptions
local $SIG{__DIE__} = sub {
confess "Uncaught exception: @_" unless $^S;
};
# now promote run-time warnings into stack-dumped
# exceptions *unless* we're in an try block, in
# which case just cluck the stack dump instead
local $SIG{__WARN__} = sub {
if ($^S) { cluck "Trapped warning: @_" }
else { confess "Deadly warning: @_" }
};
It might even start using object based exceptions by default.Again, one of the questions is what quantity and quality of changes are necessary for jumping from `v5.xxx.yyy` to `v7`.
(My only real opinion is that I think that signatures and Cor-like objects should be included. So it should wait until their designs are fully hammered out. The rest can be done in stages with `use v5.xxx.0;` until then.)
It really sucks that popular open source projects have to face so much abuse on a daily basis. Sometimes I wonder if this is a product of the internet or programmers in general. I've had plenty of bad experience on stack overflow, and various other programming forums even just asking questions, so I can only imagine what it's like being a maintainer of something people actually use.
If I ever create something popular that people use, I'd probably move it to gnu savannah, or use svn or mercurial, to make it harder to contribute and weed out the haters. But I've never made anything useful enough to warrant that.