← Back to context

Comment by raffraffraff

2 months ago

I've heard it called a "write-only language"

They call it like that, but it depends on the programmer as always. The problem is, that it is really flexible, more so than python or javascript, so it gives you all the tools to shoot yourself in the foot and take away the leg with it.

An example, you can rewrite the calling program in a module.(https://metacpan.org/pod/Acme::Bleach orhttps://metacpan.org/release/DCONWAY/Lingua-Romana-Perligata...)

While cool for jokes or serious DSL's, it may lead to difficult to understand code. (Nothing wrong with Damian Conway btw, I just remembered he used source filters in interesting ways).

  • > They call it like that, but it depends on the programmer as always.

    There are different styles, but in general they are concise, and I like them.

    perl use various sigils to remain concise, while other languages take a lot of room on the screen: too many letters in the usual function names, not enough sigils within the language.

    It's like if everything was in binary or hex, instead of using the full range of ASCII: while technically possible, it may be harder to fit into your head

    Python has one sub-style I dislike the most: using tabs for indentation, because how much EXTRA room they use on the screen.

    It must not just be me, as there are solutions for coloring the spaces (I forked https://github.com/csdvrx/indent-rainbow to focus on black-and-white and using spaces instead of tabs)

    I use space to limit the issue, but I can't make python less verbose.

    > it gives you all the tools to shoot yourself in the foot and take away the leg with it.

    python isn't innocent either: I recently traced a issue where exit(0) wasn't working to a threading problem, making a bad use of atexit.

    • > tabs for indentation

      I don’t know a single Python project that does it. You can’t mix space and tabs for indentation.

      4 spaces is the default for Python formatters like black, ruff (not sure whether it is configurable—never tried to change).

      Big indent is a feature—deep nesting is a code smell.

    • > Python has one sub-style I dislike the most: using tabs for indentation, because how much EXTRA room they use on the screen.

      Can you not adjust your tab stops?

      I hate it too, because tabs look like spaces and they have a different syntactic meaning

      5 replies →

It's more readable than C++, C or Rust though

  • 100% depends on how it’s written. It gives a ton of flexibility regarding incorporating “magic variables” which can lead to incredibly abstruse code. The language motto is “there’s more than one way to do it”, and that’s implemented to a fault.

    • Paraphrased quote from one of my professors years ago:

      Writing readable perl is easy, just code it like it's LISP.

      Granted, he was working with it in AI/bioinformatics.

      One of my classmates who moved into the IT/management side of things historically got much quicker responses from the dev team whenever he volunteered to code something, as he was always going to do it in perl.

      1 reply →

    • Same with C or C++. Only recently there came up some examples of well-written C++ code. But most of old cooperate, Microsoft or Stroustrup code is just horrible, worse than hard-core perl nonsense.

      2 replies →

  • Depends on who wrote it. My own Perl code, and plenty I've seen, is extremely clean and readable; sadly, a lot isn't. I'm sure clean and readable C++ exists, but the stuff I have to work with - big codebases with tons of history - is not. "Terrifying" would be more apt in most cases.

    • The Perl code I write today is much cleaner and easier to follow than what I wrote 30 years ago. I hope that's true of my programs in other languages too.

> I've heard it called a "write-only language"

A frequent opinion. Easy way to fit in for people who never bothered to learn the language. Which is all the more sad that Perl is super easy to learn (one layer at a time).

Also called executable line noise, like Python is called executable pseudocode.

But I like Perl (and other languages) too.

Variety is the spice of life.