hello,
as intro: i would like to make clear that i'm not promoting perl (my go
to langage for scripting is now raku by far) but as i was a member of the perl
community more than 20 years, i have some opinions about it.
> felt like a random hack, especially compared to ruby. The only thing I
> really miss from python is "yield".
why is this ? return is the perl yield. the only difference is that the
"exhausted" situation is on your own. so basically:
def count_from(x):
while True:
yield x
x = x + 1
naturals = count_from(0)
print(next(naturals))
print(next(naturals))
print(next(naturals))
print(next(naturals))
is written in perl
use experimental 'signatures';
use feature 'say';
sub count_from ($x) { sub { $x++ } }
sub NEXT ($generator) { $generator->() }
my $naturals = count_from 0;
say NEXT $naturals;
say NEXT $naturals;
say NEXT $naturals;
say NEXT $naturals;
there are complete modules on CPAN based on this. Perlude provide
keywords stolen from haskell to make things more like shell scripting
so the equivalent of
grep root "$@" | sed 100q
is
use Perlude;
now {print}
take 100,
filter { /root/ }
sub { <ARGV> // () };
Perlude is available on CPAN:
https://metacpan.org/pod/distribution/perlude/lib/Perlude.pod
> and ruby in parallel and ruby was definitely the winner there. I have
> absolutely no idea why python even gained the popularity it has, it
my opinion: python gained popularity during the dark ages of internet
when most of the people (including developpers and IT people) were using
windows and teach themselves how to use a computer or worse: learned
from java schools.
so python won because:
* they took care about windows users
* the langage is designed to provide simple solutions for simple cases
which please most of the users (they don't need to maintain large
codebases)
* the default behaviors of the langage were the same than the langages
learned in the java schools (POO, ...). the most obvious example is
the "flatten values by default":
* it became the center of the stupidest talk ever
https://media.ccc.de/v/31c3_-_6243_-_en_-_saal_1_-_201412292200_-_the_perl_jam_exploiting_a_20_year-old_vulnerability_-_netanel_rubin
* thanks to javascript, (with the rest operator and the
destructuring syntax) they now all get the point and even python
dpeople now have access to those features and like this.
https://youtu.be/ggbi4SelOAo?t=955
so perl didn't fit the needs of the internet bubble
* perl were about unix culture, mailing lists and so on: they setup a
confortable cocoon to work together and this cocoon became an echo
chamber when the other communities started to use third party services
like stack overflow.
* something i call "the 'hello world' pride": when perl programmers were
just putting new modules on CPAN to get the job done, python ones were
creating tools and projet sites and so on with a logo "powered by
python". this has an impact on the myth of "perl is dying"
* the python community was unfair comparing the langages (using ugly
perl code and nice python counterparts). instead of taking time to
explain all the biases, perl community repetedly asserted that the
authors of those article were incompetents and gone away.
* same situation regarding the constant FUD from the other dynamic
langages
perl people didn't realised how unixish perl is:
* it's sad to realize that even linux users of nowaday are not
confortable with the basics of awk, sed and so on ... and perl
is born by improving the concepts of those langages and putting
them together in one tool. it means that learning perl is easy for
unix users: not for the rest of us. combined to the "DWIM" moto, perl
has some unexpected behavior because it implies you should *know* what
you should mean (which implies a unix culture). the most obvious
exemple for me is the fact that <> iterates by default on ARGV, not on
STDIN: ARGV is what you need to know when you want to write a filter
but it's way too magic when you don't know the unix philosophy.
* when perl gained popularity (the realm of CGIs), lot of aweful scripts
were written by newbies both in perl and unix. the result was terrible
and gave perl a very bad reputation.
regards
marc
No comments:
Post a Comment