Remix.run Logo
nine_k 3 hours ago

Perl is a great language, the way Scala and Haskell are great: as openly experimental languages, they tried interesting, unorthodox approaches, with varied success. "More than one way to do it" is Perl's motto, because of its audacious experimentation ethos, I'd say.

Perl is not that good a language though for practical purposes. The same way, a breadboard contraption is not what you want to ship as your hardware product, but without it, and the mistakes made and addressed while tinkering with it, the sleek consumer-grade PCB won't be possible to design.

pavel_lishin 2 hours ago | parent | next [-]

> "More than one way to do it" is Perl's motto, because of its audacious experimentation ethos, I'd say.

Perl lets every developer write Perl in their own idiosyncratic way.

And every developer does.

It makes for very un-fun times when I'm having to read a file that's been authored by ten developers over ten years, each of whom with varying opinions and skill levels.

I guess in 2026, it'll be 11 developers writing it over 11 years. My sincere apologies to those who come after me, and my sincere fuck-you to those who came before me. :)

hinkley 2 hours ago | parent | next [-]

Something I only figured out in the ‘10s is that the main tax of code smells is during debugging. Debugging when taken to the level of art is less about sorting all of the possible causes for a problem by likelihood but by ease of validation.

Things that are cheap to check should be checked first unless they are really unlikely. You change the numbers game from trying to make the biggest cleaving lines possible, to smaller bites that can be done rapidly (and perhaps more importantly, mentally cheaply).

Code smells chum the waters. Because where there is smoke sometimes there is fire, and code smells often hide bugs. You get into Tony Hoare’s Turing award speech; either no bugs are obvious, or there are no obvious bugs.

So I end up making the change easy and then making the easy change because we have more code each week so the existing code needs to be simpler if someone is going to continue to understand the entire thing.

Perl doesn’t seem to have figured this out at all.

nine_k 2 hours ago | parent | prev | next [-]

Exactly. Perl is about experimenting, trying things your way, and discovering new and good ways to write programs. Which is a wonderful capability for research and discovery, and for art or recreation, but not that great for industrial production.

This is why Perl was quite fit for the job at the dawn, or, rather, the detonation phase of the Internet explosion in late 1980s and early 1990s, along with Lisp and Smalltalk that promote similar DIY wizardry values. But once the industry actually appeared and started to mature, more teamwork-friendly languages like Java, PHP, and Python started to take over.

creer 2 hours ago | parent | prev [-]

> in 2026, it'll be 11 developers writing it over 11 years.

Perhaps too, a tool that's been around and in active maintenance for 11 years has been wildly successful.

pavel_lishin an hour ago | parent [-]

I wouldn't say "wildly". I would say that it's critical enough to the company's workings that they devote enough resources to it to keep it going, but not enough resources to consider re-writing it or re-factoring it to be easier to work on.

Scarblac 2 hours ago | parent | prev | next [-]

It could have used a good "Perl: the Good Parts" book.

With a team where everybody wrote it in a similar style, Perl did perfectly well. Mod_perl was fast. I liked Perl.

Then Django came out, and then Numpy, and Perl lost. But Python is still so incredibly slow....

tasty_freeze an hour ago | parent | next [-]

Check out "Perl Best Practices" by Damien Conway, and the more recent "Modern Perl" by Chromatic. Both can be had as paperbacks, and I think both are also available free on online.

creer 2 hours ago | parent | prev [-]

Mostly - from here - python is so incredibly slow to write. Who has this kind of time?

ipaddr 2 hours ago | parent [-]

Slow to write, slow to run and throws whitespace errors. Surprised it made it so far.

altairprime an hour ago | parent [-]

Sounds exactly like academia itself, and is probably a selling point if you’re a business.

athenot 2 hours ago | parent | prev | next [-]

In a similar vein, as the industry matured, we went from having teams of wizards building products, to teams of "good-enough" developers, interchangeable, easy to onboard. Perl culture was too much about craft-mastery which ended up being at odds with most corporate cultures.

Unfortunately, as a former Perl dev, it makes a lot of other environments feel bland. Often more productive yes, but bland nonetheless. Of the newer languages, Nim does have that non-bland feel. Whether it ends up with significant adoption when Rust and Golang are well established is a different story.

hinkley 2 hours ago | parent | prev | next [-]

The big pearl of wisdom I took from Larry Wall seemed to be counter to the culture I experienced looking in from the outside. That always confused me a bit about Perl.

And that was, paraphrased: make the way you want something to be used be the most concise way to use it and make the more obscure features be wordy.

This could have been the backbone of an entire community but they diminished it to code golf.

Klonoar an hour ago | parent | prev | next [-]

It is not a great language.

It is, however, a significant language. It has left a mark and influence on the culture and industry of programming. Nothing to sneeze at.

morshu9001 2 hours ago | parent | prev | next [-]

Couldn't they have figured out one decent way to do things before releasing features to all users? I tried Scala for a bit then decided it was complicated for no good reason.

Idk about Haskell, but I used Erlang which is also purely functional. No matter how long I used it and tried to appreciate its elegance, it became clear this isn't a convenient way to do things generally. But it was designed well, unlike Scala.

jerf 44 minutes ago | parent | next [-]

Erlang is, by my accounting, not even a functional langauge at all. It takes more than just having immutable values to be functional, and forcing users to leave varibles as immutable was a mistake, which Elixir fixes. Erlang code in practice is just imperative code written with immutable values, and like a lot of other modern languages, occasional callouts to things borrowed from functional programming like "map", but it is not a functional language in the modern sense.

If you go to learn Haskell, you will find that it has a lot to say about functional programming that Erlang did not teach you. You will also find that you've already gotten over one of the major hurdles to writing Haskell, which is writing with immutable values, which significantly reduces the difficult of swallowing the entire language at once and makes it relatively easier. I know it's a relatively easy path because it's the one I took.

dtauzell 17 minutes ago | parent | prev [-]

If you wanted to write a quick on off script then using magic variables,etc made sense. Writing something you’ll keep? Don’t use those. When Perl 5 introduced references they could have simplified the syntax though.

eduction 2 hours ago | parent | prev | next [-]

Not really. It wasn’t audacious in service of anything innovative. Haskell takes functional programming to the nth degree, scala tried to be an advanced Java for example better at concurrency.

Perl was an early dynamic (garbage collected) “scripting language” but no more advanced than its contemporary python in this regard.

It had the weird sigils due to a poor design choice.

It had the many global cryptic variables and implicit variables due to a poor design choice.

It has the weird use of explicit references because of the bad design choice to flatten lists within lists to one giant list.

It actually was the one thing you said it wasn’t - a good practical general language at least within web and sysadmin worlds. At least until better competitors came along and built up library ecosystems.

2 hours ago | parent | prev [-]
[deleted]