Hacker News new | past | comments | ask | show | jobs | submit login

Pretty cool, but why would anyone new want to invest in Perl when it has the language problem of Perl 5 or Perl 6 ?

Imho they should just fork Perl 6 and continue developing Perl 5.

Perl 5 is a great language and does not deserve any of the hate it gets. Unfortunately the dev community is always on the look for bandwagons to jump into. It's a well thought out language with a comprehensive list of features nicely integrated together, a vast ecosystem of packages, very good documentation (has the best offline docs among all of the popular languages out there, after C stdlib), and has stood the test of time.

Perl 6 is a nice experiment and may hold some ground in the future, but is not a practical tool or something in the same space as Perl 5 today. It's very unfortunate naming IMO.

Perl 6 is as realistic an option as several other new languages. It is new(ish), and still has some performance issues compared to Perl 5 (though this is becoming less a thing, and there are now several areas where 6 is faster than 5), but it has had regular stable releases for nearly three years. You can deploy it today and expect the code to keep running in the future without major modifications.

I'm not using it in production, but I think one reasonably could. I suspect we'll be able to start shipping Perl 6 code in a couple of years (my company builds installable applications, and we don't want to maintain Perl 6 packages ourselves, so we need our target platforms to have good packages for Perl 6 available before we can ship it).

What does your company do to where they're chill with trying to ship p6? Just open-minded?

Who's "they"? I'm the founder of the company. It's small, we do what we want.

Ah sorry. I assumed a 500+ company with bloated and old-school IT like my own. I shouldn't have assumed that :).

I think in 10 more years it's going to be anazing. Amazing just takes time to get right.

It might be amazing (to some degree, it already is), but unfortunately I don't think I'll be using it for much. TIMTOWTDI is great, but like most things, too little or too much are both problematic. This wasn't always my point of view, I came to after many years of following Perl 6 development (from all the way back in the Parrot days). As the language implementations started maturing and people implementing things to show off (often for Advent calendars), I started realizing that I was having a really hard time following how each thing was implemented, because there were far too many ways it could be implemented, but in a fundamentally different way than Perl 5.

Perl 5 gives you a good set of primitives, a lot of flexibility, and then tasks you with using this mix of core types, context, and namespaces to do what you want, how you want. The actual things you need to know to reason about most code you encounter is fairly simple though, and if not immediately known to the average Perl programmer, they'll have a good idea to figure out what it is, and what the usual suspects are for really weird stuff (I'm looking at you, indirect object notation).

Perl 6 has so many core, fundamental things to know, that in any piece of code I might encounter, the number of things that could be in use is staggering. I've read the Perl 6 Synopses, end-to-end, years ago. I remember a lot of what's in there. Hell, I was really excited about those features when reading about them. When I saw them start to be put into practice, that's when it crystallized for me. Specifically, I started having real doubts when I saw Larry implement a solution for Rosetta code in Perl 6 using a sigilless[1] style. What's the point of these? Just to represent special characters, as in the example? But they're also constants, because they have no containers? And there's also defined constants, but those have sigils?[2]

Don't get me wrong. Perl 6 has some (a lot!) of good ideas. I mean, it sort of has to, since it actually has all the ideas. That's the problem. Not all ideas area good, and even if you only selectively implement all the good ideas, they aren't always still good when they are forced to coexist with each other.

At this point I see Perl 6 as a really interesting experiment to see how some of the more interesting ideas work in practice when used in a less opinionated language. I'll probably do some simple stuff in it eventually (I mean, I'm still fairly familiar with it just from following it for almost 15 years), but I don't have high hopes for using it for any professional projects, or for using it on a project with many other contributors. That's okay, I never stopped writing Perl 5, it's what I do for my day job, so I'm not missing it too much.

That said, I still have a very soft spot in my heart for Perl 6. It's an extremely quirky and wonderful language when viewed purely as a language and a thing to play with. That I think it won't ever see professional success is fine. There's lots of things in life that are great without that, and there's lots of types of success other than that to aim for. And that's totally okay.

1: https://docs.perl6.org/language/variables#Sigilless_variable...

2: https://docs.perl6.org/language/variables#The_constant_prefi...

I started using Perl again. It is a well-defined language with a good library system that's also been around long enough to have stabilized. The fact that it is so integrated into many system things help ensure that it remains stable. It's flexible, but you can still write readable code with it.

The only thing I couldn't find at first was a good editor for it. I would up with ... IntelliJ. The only minor thing that Community Edition doesn't have is editing CSS, and I can live without it. There's a Perl plugin that does good completion and navigation (Find Uses / Find Definition, semi-intelligent completion).

And that's what I am using now for prototyping.

I would highly recommend Sublime with ModernPerl syntax highlighting. You can also set up perlcritic and perltidy pretty easily.

It's not intellij, but it covers most bases.

I tried the IntelliJ plugin and unfortunately just couldn't make it work. Past a certain point of metaprogramming (e.g. using complicated-but-not-objectively-that-weird Moose constructions with multiple levels of subclassing and mixin-based inheritance), it just couldn't keep up and started providing autocomplete suggestions that were completely off-base.

> why would anyone new want to invest in Perl

There's lots of discussion on HN of languages that see less use than Perl. Often the reason people invest in them is that they think learning the lesser-known/used language might offer them a novel view of development or provide extra capabilities in some niche. It isn't particularly different with Perl, although there is the difference that many devs think they already know what they need to know about Perl even if they've never done anything serious with recent 5.x or 6 (or at all).

> Imho they should just fork Perl 6 and continue developing Perl 5.

[insert "what if I told you" meme here]

> Imho they should just fork Perl 6 and continue developing Perl 5.

[insert "what if I told you" meme here]

I meant rename Perl 6 into something else and develop Perl 5.xxxx into Perl 6....

That ship already sailed way over a decade ago (or longer) and changing it now would just massively add to the confusion between what Perl 5 and 6 are. You can't retroactively rewrite every webpage and reference in history, and it's not a particularly hard to explain that they're essentially separate languages. Perl 5 will continue to be maintained and evolve in a compatible way, and Perl 6 is a much different language altogether. They quite literally "forked perl 6, and continued developing perl 5".

Forking an existing, newer language just so you can do what amounts to a meaningless, useless major version bump of an existing, established language, is pretty much the exact definition of a breaking change for frivolous reasons.

> That ship already sailed ...

That doesn't prevent launching a new ship.

> and changing it now would just massively add to the confusion ...

There are two types folks who care about Perl - both are in dwindling numbers. The old-timers -- they never have and will never be confused and clearly understand that there is urgency for that "ship", now more than ever. The new-comers and those have deserted the ship and looking for an opportunity to come back -- they are massively confused as hell right here right now.

There is only one real reason for not launching that ship -- Larry Wall has taken that sailed ship long ago and will not come back (admit his mistake).

> There is only one real reason for not launching that ship -- Larry Wall has taken that sailed ship long ago and will not come back (admit his mistake).

To my understanding, he's admitted his mistake. That doesn't mean that after this much time, going back is the best solution. There are major positives and negatives to all options, so at this point people are just letting it stay as it is rather than force it into something that could be even worse. People have had well over a decades to come to terms with the naming, and coming out with Perl 7 (or taking the name Perl 6 back) aren't really going to help with anyone that's already confused.

Perl 5 and Perl 6 are still both advancing on their own paths, it's not like either one was actually stopped because of this.

> That doesn't prevent launching a new ship.

No, but launching a new ship is a bad idea if your reasons are frivolous. It's a waste of resources. Most people seem to think that resources like labor and trust are magical and grow on trees in community-driven projects (especially when it comes to executing on their pet-projects or desired features), and I can tell you they don't.

> The new-comers and those have deserted the ship and looking for an opportunity to come back -- they are massively confused as hell right here right now.

What exactly is so confusing about "Perl 5 is a stable language that has been in use for decades, and will remain developed, and Perl 6 is a backwards incompatible evolution that is independent". You're saying things like you're "confused as hell" but it's not really hard to figure out, and it's not even clear how hard you actually tried. The Perl.org webpage even literally states "Perl 6 is a sister language, a member of the Perl family, that is not intended to replace Perl 5".

Frankly when people say things like this, I'm often convinced it's not actually out of genuine confusion, but often feigning ignorance to make a point, to the level of being child-like. Computer programmers _love_ making everything complicated (especially over small trivialities that "could" be "fixed" if we "cared enough") -- but "Two similar things share a common family name" is not very complicated, to pretty much anybody.

And here's a counterpoint: I haven't written Perl in nearly 10 years with any regularity, and I recently started a new project because I wanted to write a small web app. Here's what I did: I searched "Popular Perl Web Frameworks" and came across Mojolicious. I then saw it was a Perl 5 framework. Then I followed the tutorial and wrote a web application and I was done. There was no "massive confusion" about it.

> Larry Wall has taken that sailed ship long ago and will not come back (admit his mistake).

People in the Perl community have admitted for a very long time that there were many mistakes made in the development of Perl 6, including the poor naming convention that maybe ties the languages too closely, when they are quite different. I'd say the mistakes are well known, even 10 years ago when things were far different.

Your mind is shrouded by your zealous emotion that you are handicapped in your perception.

> What exactly is so confusing ...

I can see you how you don't understand; unfortunately, you are having trouble understand the other way.

> Frankly when people ...I'm often convinced it's not actually out of genuine confusion ...

It doesn't take you a few sentences away to getting close to name-calling. It is very difficult to listen at this stage.


> it's not even clear how hard you actually tried.

You are putting me in the wrong camp. I love Perl and I have been using Perl for over 10 years. I am not confused. Perl is Perl5; Perl6 is an experiment that hasn't succeeded yet, And Perl6 is irrelevant to Perl5 from a language point of view (although, not vice versa).

I have students that I want to show Perl to. They, being young and natural, will not put their heart to Perl 5 if Perl 6 is out there -- different alright, but Perl 6 surely is newer and must be the future, right? Then they find the state that Perl 6 is slower than Perl 5 and obviously less mature, so they wait -- by moving on.

I have colleagues and old admins who are looking back but all their current thought are: Perl is dead, how is Perl 6 doing.

> People in the Perl community have admitted for a very long time that there were many mistakes ...

Acknowledged mistakes that have no action/effort of correcting them are not admitted. Sunk-boat fallacy is just a n excuse for not admitting mistakes.

> That doesn't prevent launching a new ship.

Amen. I’d love to see a rebrand to Rakudo and Pumpkin, where the latter is Perl5 plus some long-overdue backwards incompatible changes, but also 99% compatible.

I'm not really sure what you want in terms of backcompat breaking changes. I feel like if you do enough to make Perl 5 modern, you end up with Perl 6, but different. Once you add real Unicode support and a MOP and concurrency, you've reinvented more than half of Rakudo. It should be called Perl 7, so we can have yet another version.

I think there is this idea that you could graft the Perl 6 object model onto Perl 5 but keep the things people like about 5 (that it's implemented in C and installs more like a normal Unix/Linux tool that we are all familiar with). This would open the door for CPAN modules that exploit the cleaner and more modern object model like we have with Python and Ruby. Which would in turn allow Perl to be more in line with what people expect from a modern tool, combining the best of the old and best of the new.

I think if you start with the state of CPAN and work the problem in reverse you might see what people are wanting.

my $self = shift;

can fuck right off.

Agreed on everything.

However, nobody new (read: young) will want to learn a language that is not able to receive a major version bump. (notable exception I guess, Python).

A language that can't receive major version bump will be (is?) perceived as a dead language.

Perception does matter. Ads, marketing, etc etc, the world is run by perception.

"Mega language popularity"[1] is largely driven by boom-and-bust fads, my friend, as well as cultural artifacts like word-of-mouth -- and the number of people who generally make any language decisions about them based on minute details like you're implying is a vanishingly small one, in my experience.

I'd even go further and say that, in my experience, your mind is likely already decided, as well as the minds of many others, when it comes to choices like this. Whether or not they renamed Perl 5 to Perl 7 or whatever is not really going to make a difference in the long run and no perceptible marketing changes will change that to you... People on places like this website already like to talk about other examples such as how "Ruby and Rails are dead" despite them still being immensely popular and widely used today still... Their mind is decided well before any actual facts of the matter come up, even if Rails has more open bug-reports than they have users. No amount of new marketing will change it meaningfully, because much of the decision is driven by cultural aesthetics, and aesthetically, it's just not cool anymore. We're all prone to it, and unfortunately, it is not always a fully rational or predictable path, either.

Some amount of marketing matters for software projects, a lot of it in fact. But at some point you have to call a spade a spade, and decide when you're just chasing meaningless fads for something that won't happen, based on technical marketing alone.

[1] Which is almost exclusively what everyone 'means' when they talk about this sort of branding/marketing stuff, if you asked me as a FOSS developer. Nobody can ever conceptualize "successful, accomplished, and with a healthy life", because by every measure Perl is a wild success in all these metrics, beyond what most software could ever dream of -- they can only conceptualize "total failure" AKA "dead language" and "wildly successful beyond all measure in all circumstances, forever".

I don't really think most people think like that (or even necessarily initially have the information to be able to). To me, it seems like most language adoption is driven by fads, what people are hiring for, and random interesting projects.

Have you ever actually been interested in a language and looked to see whether it was able to have a major version number bump or not prior to deciding whether or not to pursue it?

> A language that can't receive major version bump will be (is?) perceived as a dead language.

It still seems to be a major effort to get people over to Python 3.

That't what I am doing with cperl. perl5 is unfortunately not developed anymore, just "maintained", with more and more destruction being added every year.

People seem to be ok with Java and JavaScript having pretty much nothing to do with each other. The couple of people trying to retcon the name to ECMAScript have not succeeded.

Perl5 and Perl6 are the same situation: on first glance they seem closely related, but they're not, end of story. It's been clear for a long time that Perl6 is not a replacement for Perl5, it's a different language from the same creator. It would have been great if it were named something else, but changing its name is something its community would need to do, and won't erase the years of history that already exist.

I remember having this argument a lot in 1999. It's nearly 20 years later now, they made their decision long ago, it's time to let it go and move on.

Which argument? The mug-throwing incident that initiated Perl6 development happened 2000-07-18, and it took a couple of years after that for the language to take shape...

My memory was off by a couple of years. You know what I mean, though.

smacktoward lives in the UTC+1752000 time zone now. Update your datetime libraries.

A different perspective: there’s probably a few command line perl scripts out there that could be nice web services or perform some task in a browser. This way you don’t have to rewrite those scripts.

that has been done already

Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact