
Simplicity Made Easy - lizmat
http://blogs.perl.org/users/damian_conway/2019/06/simplicity-made-easy.html
======
valw
If people wonder, this is NOT the same notion of 'simplicity' at all than in
the classic 'Simple Made Easy' talk:
[https://www.infoq.com/presentations/Simple-Made-
Easy/](https://www.infoq.com/presentations/Simple-Made-Easy/)

I think a more relevant title for this post would be: "any paradigm made
straightforward in Perl 6".

------
iLemming
> So, whether you prefer an imperative, functional, object-oriented, or
> pipelined approach

The problem with this: if you give people a multi-paradigm language, they'd be
using all of them. Often in the same codebase.

~~~
dan-robertson
I think people should use all of them. Some problems are much better expressed
with logic programming, others with inheritance, others with polymorphic
functions.

There is one school which says people ought to be giving a powerful
programming language to better write powerful programs in the best way. The
idea is to amplify what a single programmer can produce.

Another school says you should give programmers a non-powerful language
because they aren’t to be trusted. The goal is to make changing enormous
codebases easy (or maybe to maximise lines of code).

Perl fits into the first category and java is representative of the second. So
I think this argument isn’t so much about Perl as it is a complaint about its
philosophy. It could equally go on an article about the next c++ feature.

~~~
pjc50
I'd like a definition of "powerful" that is more than just "agrees with my
personal prejudices"; Perl lacks the power of a strongly checked type system,
for example.

~~~
tadzik_
All the examples in the post are written in Perl 6 though, which does not lack
it.

------
kamaal
Frankly speaking its surprising Perl 6 hasn't taken off yet. Its a language
which has Java like potential. Not sure where the efficiency/speed story has
gone so far(Which was preventing adoption?). But pretty much any one I have
shown the language has been floored by it so far.

I guess a killer framework is lacking too.

~~~
coldtea
Surprising?

1) The Perl 5 community itself was dwindling before Perl 6.

2) Perl 6 took a good chunk of time to arrive.

3) It's still not 100% baked.

4) Perl 6 is mostly a different language.

5) Perl in general doesn't have a good "name" with todays devs

6) There's no killer app

7) Python got the data/science niche, Node got the web/services niche, Go got
the backend niche - what's left for Perl 6?

8) The libs are also lacking.

9) Too complex to begin with (kitchen sink offering), at a time when devs
started valuing simplicity more than before.

10) Maturity of implementation, tooling, support, etc.

11) No major commercial backing...

~~~
kamaal
>> 1) The Perl 5 community itself was dwindling before Perl 6.

[https://metacpan.org/recent](https://metacpan.org/recent)

More people are writing Perl everyday than may be even Java, Let's put this
Perl is dwindling argument to rest. Perl's niche, more like empire is glue
language for anything Unix. That is a huge empire to govern on. Unless Unix is
going away, Perl is here to stay.

>> 5) Perl in general doesn't have a good "name" with todays devs >> Node got
the web/services niche

Most dynamic languages are in the same bucket. Today everybody is hesitant to
start any serious big project in a dynamic programming language. Even in case
of JavaScript most things will move to TypeScript eventually. And that too is
more or less a totally new language.

>>Go got the backend niche

Go got nothing. Heck, merely shell scripting exceeds Go usage by several
multiplicative factors.

>> 7) Python got the data/science niche

Most of the use case for Python's 'Data science' library is basically spread
sheet automation. Perl has been used to that kind of work since early 90s.

>>what's left for Perl 6?

Firstly, and entire universe exists outside of web development. And most that
universe is far more exciting than majority of api and json plumbing work in
web dev work.

Secondly, Not sure, but no one can rebut an argument that says there is no
scope for any new software to be ever written anymore.

~~~
coldtea
> _More people are writing Perl everyday than may be even Java, Let 's put
> this Perl is dwindling argument to rest._

Err, that's just a link to a submissions page. That's not a statistic, and it
doesn't even show if Perl kept its people or lost them. Perl could even have
more people than 1999, but much smaller mindshare given how hugely larger the
dev market is in 2019 vs 1999.

Actual long term analysis look like "Perl is dwindling" is right:

[https://insights.dice.com/2018/04/05/perl-uncertain-
future-t...](https://insights.dice.com/2018/04/05/perl-uncertain-future-tiobe-
index/)

> _Perl 's niche, more like empire is glue language for anything Unix. That is
> a huge empire to govern on._

And that "empire" is already lost for Perl. Dev ops have moved to Ansible,
Puppet, Chef, etc, and Python and other languages are used as the glue. The
"Perl gluing admin" is a relic.

> _Most of the use case for Python 's 'Data science' library is basically
> spread sheet automation. Perl has been used to that kind of work since early
> 90s._

Which is irrelevant as to who does it now (and it's not even right, Pandas,
Numpy and co are not "spread sheet automation").

> _Most dynamic languages are in the same bucket. Today everybody is hesitant
> to start any serious big project in a dynamic programming language._

Actually millions start serious big projects in JS, Python and other dynamic
languages. There's a movement towards static typing but not that strong in
actual practice. Typescript is tiny compared to the size of greenfield JS
being written.

> _Firstly, and entire universe exists outside of web development. And most
> that universe is far more exciting than majority of api and json plumbing
> work in web dev work._

Also far smaller, devs wise. And I didn't just mention web work, but also data
science, microservices, and so on.

(And my point wasn't that Perl 6 can't do those, but that people aren't doing
those with Perl 6 -- people as in, "people in quantities large enough to
matter").

~~~
kamaal
You tossed out a statistic on library submissions and are debating
psychology(mindshare). Nothing is dwindling on the long term for Perl.

>>Dev ops have moved to Ansible, Puppet, Chef, etc, and Python and other
languages are used as the glue.

This is glue? Sorry but we seem to come from very different worlds.

>>Also far smaller, devs wise.

Wow, Just wow!

You probably won't like to hear this, but this how most of the software world
works:

1\. C based backend language: Java. C Based embedded/speed requirement
systems: C/C++

2\. Glue: Shell/Perl

3\. Web dev: Node, Java(Webservices)

4\. Lisp Based languages backend: Clojure/Racket.

5\. ML based languages backend: F#, OCaml, Haskell.

6\. Database: SQL.

There are other special languages which rule their domain. But this is how
bulk of the world works.

Data science area is still a extremely small part of even the web dev world,
let alone the broader software ecosystem.

------
beders
Interesting examples. Thank you!

However, I'm not sure having to parse 3-4 very different syntax constructs to
arrive at the same mental model is an advantage.

I do appreciate the terseness though.

------
blondin
oh wow, the "say" keyword is quite nifty. also, straightforward iterative
solutions often lead to inefficient implementations. which is why most of us
fall prey to complicated implementations that use all the tricks in the
book... i don't know much about perl anymore, but in some languages, creating
a new date object every time through that loop might not be space efficient.

~~~
SwellJoe
The magic isn't really in _say_. _say_ is just _print_ with an automatic
linefeed at the end (and, two fewer keystrokes for the keyword). Perl's
_print_ (even in very old versions of Perl, dating long before _say_ arrived)
also accepts expressions as arguments, so you can write: `print join "\n",
@array;`

Obviously, the Date (and other) type stuff is new to Perl 6, and is quite
lovely.

~~~
coldtea
> _Perl 's print (even in very old versions of Perl, dating long before say
> arrived) also accepts expressions as arguments, so you can write: `print
> join "\n", @array;`_

How's that different from any other language? Isn't the expression argument
evaluated before being passed to print, so at that point it's just a string
anyway?

    
    
      >>> print ", ".join(["a","b","c"])
      a, b, c
    

Or, if the point is about omitting the automatic newline, comma in python
suppresses it:

    
    
      >>> print "\n".join(["a","b","c"]),
      a
      b
      c

~~~
SwellJoe
It's not (at least most modern languages have it). I was just saying that
`say` isn't the interesting thing in the examples given.

------
agumonkey
perl6 seems heavily oriented toward a dsl metalanguage. Not that I'm against
it.

