back to article Official: Perl the most hated programming language, say devs

Developers really dislike Perl, and projects associated with Microsoft, at least among those who volunteer their views through Stack Overflow. The community coding site offers programmers a way to document their technical affinities on their developer story profile pages. Included therein is an input box for tech they'd prefer …

  1. JeevesMkII

    love perl || die;

    live perl unless dumb;

    1. yoganmahew

      Speaking of which, how's about a 'love' thread?

      I heart Assembly...

      1. asmblur

        Second this

        On both fronts! Sure ASM can be a PITA at times but when you need it, you need it.

    2. SuccessCase

      Perl has been described as a write only language.

      1. EarthDog

        Only if that's how you use it.

      2. sean.fr

        lots of existing code

        There is a lot of existing code you can pull in from CPAN. Pretty much anything you want has been done,

        The hard bit is regular expressions used to fiddle with text.

        It is ugly, But if you need it, it is powerful. The alternative of rolling your own code to pattern match in strings is much worse - particulary if you may need to work with ascii and unicode and other text coding schemes. That is why Linux is strung together with perl scripts. You know you will find it on any Linux machine.

        1. Anonymous Coward
          Anonymous Coward

          Re: lots of existing code

          I love PERL4, the first language that worked the way I wanted it to. No low level bullshit to deal with like C. Regex is so powerful...

          I find OOP to be overkill for most of what I've done professionally (sys admin, web, and processing data into other forms)

  2. Frederic Bloggs

    Common::Sense

    Just don't ask questions about it...

    1. Anonymous Coward
      Anonymous Coward

      Re: Common::Sense

      Take from this what you may: it's perhaps worth noting that The Register proudly runs on Perl

      Maybe that explains why it took so long for the site to have an https option.

  3. Matthew Smith

    Easily javascript

    alert(0.1+0.2)

    Jaysus.

    1. scarletherring

      Re: Easily javascript

      Annoying, to be sure, but not fair. That's just a floating point quirk.

      #include <stdio.h>

      int main() {

      printf("%.18lf\n", (0.1+0.2)); // 0.300000000000000044

      }

      1. Dan 55 Silver badge

        Re: Easily javascript

        But in C you have to set the field width to something rediculous to get that level of precision in the output. In JavaScript you get nonsense anyway.

    2. JulieM Silver badge

      Re: Easily javascript

      Does that alert "0.10.2" by any chance?

      Usually whenever I want to add two numbers in JavaScript, I do it by subtracting a negative number; just to make sure it's not going to mistake either the addent or augend for a string and perform concatenation instead.

  4. This post has been deleted by its author

    1. Dan 55 Silver badge

      Re: Perl.... Arrggh

      Whatever you can say about Perl, it's not worse than JavaScript. In Perl there's method behind the madness. JavaScript eschews the method and gives you 100% distilled madness.

      1. This post has been deleted by its author

      2. The First Dave

        Re: Perl.... Arrggh

        No, quite the reverse. I've used both PERL and JS fairly equally, and would rather work in JS any day.

        My biggest gripe with PERL is that there a thousand different ways to achieve anything, so when you visit SO or whatever, you never have a clue what style of code you are going to find, or if it is going to be a dirty hack or elegantly robust. In JS if it works, and doesn't use EVAL, you are pretty much fine.

    2. Steve Button Silver badge

      Re: Perl.... Arrggh

      Sounds like you had a bad book.

      1. Dwarf

        Re: Perl.... Arrggh

        If Perl is so bad, then why did MS use so many concepts of it within PowerShell ?

        Perl is a great tool. Like many, I have done really useful things with it, but I know it will take a bit of time to re-read what I meant in the old scripts if I ever go back to them.

        1. Someone Else Silver badge
          Coat

          @ Dwarf -- Re: Perl.... Arrggh

          If Perl is so bad, then why did MS use so many concepts of it within PowerShell ?

          Because it didn't' know not to?

    3. Frumious Bandersnatch

      Re: Perl.... Arrggh

      > I started to learn perl - from books - and it was the worst experience ever.

      I started learning it as a substitute for awk and various horrible shell variants. It was a great replacement for awk because it did everything that did, but with more power. It was better than shells because it had all the features a proper programming language has (eg, associative arrays) and had a single, fairly logical way of doing string interpolation (the worst part of all shells, which all decided on slightly different ways to handle the problem). Oh, and it's obviously much quicker to write in Perl than something like C.

      For people who come at Perl from the same direction I did, it was a brilliant language. I guess that people who came to it later, and who aren't building on previous awk/sed/*sh experience, it can be kind of hard to understand the power (and even simplicity) that Perl delivered.

      1. Jim 59

        Re: Perl.... Arrggh

        "I started learning it as a substitute for awk and various horrible shell variants. It was a great replacement for awk because..."

        Ditto. It was created as a reporting language, to replace & unify awk, sed, sh, a job it did, and continues to do, splendidly. A system administrators language, not really meant for writing general apps. Perhaps its success was its undong, as it came to be used for CGI in the 90's Internet, then spread to more general applications, which it was never really intended for, despite all the tweaks and OO extensions.

        The Stack Overflow survey is a pointless. Of the 16 languages presented, a respondent will have used only about 2. Whatever.

        1. Rich 11

          Re: Perl.... Arrggh

          Of the 16 languages presented, a respondent will have used only about 2. Whatever.

          Speak for yourself. I've used 10 of those and they still don't list the one I hate the most: Lisp.

          I've used Lisp on two different platforms and it annoyed the hell out of me both times. There's a reason I haven't touched it since 1989, and not just its rarity. There's also a reason why it lives up to its sodding joke name.

          1. Pen-y-gors

            Re: Perl.... Arrggh

            I think I've done 8 from the list, plus Algol W, Algol 66, PL/1, Lisp, APL, Z80 machine code (not even assembler), something called UFO and heaven knows what else. Most had a purpose, even if it was a bit obscure sometimes.

          2. Jim 59

            Re: Perl.... Arrggh

            Speak for yourself. I've used 10 of those and they still don't list the one I hate the most: Lisp. I've used Lisp on two different platforms and... I haven't touched it since 1989...

            Yes yes, and I could bore you with my 36 years of programming experience, but won't. We are all experts here. My point was, most survey respondents are likely to have used only 2 or 3 languages to an expert level, and have little or no basis for judging the others. For example, I dislike Python, but having used it for just a couple of months, I am not really qualified to say, because I haven't yet experienced the full benefits of advanced Python.

            1. Naselus

              Re: Perl.... Arrggh

              "For example, I dislike Python, but having used it for just a couple of months, I am not really qualified to say, because I haven't yet experienced the full benefits of advanced Python."

              A couple of months IS "advanced Python". It thoroughly expects the user to have no idea what they're doing, which makes writing in it frustrating for anyonewho knows the rules and when to break them.

          3. Daniel von Asmuth
            Happy

            LISP

            The whole research is shoddy. Languages that only a handful know, say SNOBOL or MUMPS, will have low scores on the popularity chart.

            Lisp is a very cool lingo.

            1. Captain Scarlet Silver badge
              Childcatcher

              Re: LISP

              "VB is on life support, just some residual noise from the poor sods who have to work with VBA"

              Thats what they said when .net came out but VBA will not go away (PLEASE HELP ME!).

              As long as products such as Office remain in businesses I can't see how they can get rid of VBA, after ignoring it MS are being forced to update many of their unloved office products such as Access which have had failed attempts to go to the web (Through Sharepoint of course).

          4. Long John Brass
            Gimp

            Re: Perl.... Arrggh

            Speak for yourself. I've used 10 of those and they still don't list the one I hate the most: Lisp.

            *Bah* Lightweight... I see your LISP and raise you RPG-II

            1. FozzyBear
              Pint

              Re: Perl.... Arrggh

              *Bah* Lightweight... I see your LISP and raise you RPG-II

              Great thanks, that's 2 years of therapy down the drain. (read that as solid drinking) .

              Now where's the scotch

              1. TurtleBeach
                Pint

                Re: Perl.... Arrggh

                Ah yes... a toast to APL, and Forth...

            2. Someone Else Silver badge
              Coat

              @Long John Brass -- Re: Perl.... Arrggh

              *Bah* Lightweight... I see your LISP and raise you RPG-II

              APL -- FTW!

            3. Truckle The Uncivil

              Re: Perl.... Arrggh

              @Long John Brass

              <jk>No trigger warning?</jk>

              RPGII? Why did you make me remember? I had that nightmare suppressed in my memory for years.

    4. Charlie Clark Silver badge

      Re: Perl.... Arrggh

      The biggest criticisms of Perl would be pervasive support for regexes in the language and the "there's more than one way of doing something". Loved by devotees but despaired of almost universally by others.

      It has extensive libraries for just about anything and isn't going away, but it's certainly not growing either.

      A while ago it looked like we were all going to have to learn Javascript but it seems that this is going to be eclipsed by WebAssembly getting universal support from all the browser makers.

      VB is on life support, just some residual noise from the poor sods who have to work with VBA.

      PHP remains my favourite bugbear for its unnecessarily poor choices in syntax.

    5. Marco Fontani

      Re: Perl.... Arrggh

      I started to learn perl - from books - and it was the worst experience ever. (in regards to what i was learning from a book, that is).

      I'd recommend you read Moden Perl, then. Good book to read if you already know how to program and don't need your hand held.

    6. Zippy's Sausage Factory

      Re: Perl.... Arrggh

      It is as if the author of the language decided arbitrarily what seems like a good idea.

      If you've read the documentation on Perl, this shouldn't be a surprise. In fact, it's pretty much what the documentation says they did.

    7. handleoclast

      Re: Perl.... Arrggh

      @Shadmeister

      It is as if the author of the language decided arbitrarily what seems like a good idea.

      Almost, but not quite. Larry Wall had formal training as a linguist, so designed the language based upon how humans think rather than the easiest way to write syntax parsers. He also wrote it so that it was very useful for one-liners. There's quite a bit of syntactic sugar, but that's because it makes intent clearer. All of which makes it somewhat different from other languages you encounter. But if you can make the mental leap you may find it rewarding. The syntax is more natural, but it's so different from what you're accustomed to that it's a bit of a leap to realize that it's actually better the way Perl does it.

      For example, the "unless" keyword. Sometimes it's a lot clearer to write

      unless (condition) {code}

      than

      if (!condition) {code}

      You'll probably find it perverse that you can place if/unless after code as well as before it, but it can make intent clearer.

      If you think about it, English works that way. (emphasis is that you're so stupid you have to think about it).

      English works that way, if you think about it (emphasis is that you're bright enough that you probably don't need to be told to think about it).

      And, of course, regular expressions are first-class citizens. In other languages they're grudgingly shoe-horned in. Any time I use a regex in another language I end up swearing at the hoops it forces me to jump through. Often they're not very big hoops and it's not much of a jump, but it's irritating.

      There's much more I could say, But you probably won't believe that either. :)

      1. hackmagic

        Re: Perl.... Arrggh

        Hmm, the trouble with the English language is that it is born out of an interpretation of the world around us, as we sequentially encounter it and respond to it in complex and convoluted ways. Mathematics (for the last 2000 years) has made good progress distilling and abstracting the inherent mess that is the organisation of the human mind into it's branch called logic. This benefits software development by allowing a more or less uniform way to express problems and their solutions. Some might even go so far as to talk about computer 'science'. This implies standardisation. Whilst i grant you that software is written in computer 'languages', it is frankly a grotesque regression to try to implement software development in the style of a human language (and thus mind). The ideas expressed in language and the mind are greatly open to interpretation, making the interaction based on that massively error prone (ever misunderstood anyone and got annoyed, argued or in a fight? Many people have literally died over these issues). Sadly Perl is no different. It is the interpretation of a single mind and all it's quirks, and instead of allowing you to be a scientist, with all the standards and ability to communicate rationally with your peers, Perl forces you to adopt the style of a madman.

        Regular Expression support side, Perl is INSANE!!!!!!!!

        Obviously i'm late to the party here, but if I can stop one more person learning Perl, i'll take all the flak needed

    8. HieronymusBloggs

      Re: Perl.... Arrggh

      "I started to learn perl - from books - and it was the worst experience ever."

      'Programming Perl' and many of the manpages are indeed painful to read due to the appallingly verbose and chatty writing style. There are much better books like 'Effective Perl Programming' and 'Perl Best Practices" which don't make you want to jam sharp sticks in your eyes after the first couple of pages.

      The language itself isn't too bad.

    9. Nick Kew

      Re: Learning languages from a book

      Sometime in the 1980s I first needed to learn C. I picked up the C book, K&R.

      After reading the whole thing, it told me little of any value. Most memorably, I came out puzzled: surely C does dynamic memory allocation? Yet I had to ask "what's the C equivalent of Pascal's new"? Yes, it's true, there is not a single mention of malloc in the whole of K&R[1]!

      In fact, the most informative learning resource I could find was a Microsoft VC++ manual. Despite the fact that I wasn't even working on an MS operating system, let alone with their compiler. It just happened to be something I could find.

      Towards the end of the '80s, I read Stroustrup on C++ and found him a lot more informative. Though when I wanted to get to grips with STL in the 1990s, I found again a great gap in available documentation.

      Perl was so much easier, with all the docs built in. Never looked at a Perl book, though.

      [1] I understand that may have changed in later editions of K&R.

  5. The MOTO

    common::sense .... what???

    You want people to use common::sense. What's wrong with you? Developers are still fighting about TABS vs SPACES. To prove it, my common::sense after 25+ years tells me TABS to the left SPACES to the right ... here we go.

    1. David Webb

      Re: common::sense .... what???

      And here I am stuck in the middle with you. Sorry, just that last line gave me a song in my head, now I can't get it out of my head, boy it's more than I care to think about.

      1. Zippy's Sausage Factory

        Re: common::sense .... what???

        And here I am stuck in the middle with you. Sorry, just that last line gave me a song in my head, now I can't get it out of my head, boy it's more than I care to think about.

        And every time I hear that song, my ear hurts.

        1. bombastic bob Silver badge
          Devil

          Re: common::sense .... what???

          "And every time I hear that song, my ear hurts."

          an earworm is like a babelfish, except that it plays the damn song in your head and feeds off of your insanity [as opposed to doing what the babelfish does, which is like symbiosis]

          which makes for a nice distraction-level side topic: an excellent exercise in mental discipline is to teach yourself how to shut off an earworm on demand. many positive benefits.

        2. Anonymous Coward
          Anonymous Coward

          Re: common::sense .... what???

          "And every time I hear that song, my ear hurts."

          Upvote for the 'Reservoir Dogs' reference.

      2. Pirate Dave Silver badge
        Pirate

        Re: common::sense .... what???

        "now I can't get it out of my head"

        Thanks, your ear-worm comment just made me think of Kylie Minogue in her younger days.

      3. The MOTO

        Re: common::sense .... what???

        From the Steve Miller song "Stuck In The Middle With You".

        Clowns to the left of me, Jokers to the right, Here I am Stuck in the middle with you

        In the words of Frank Caliendo ... "It's a long way to go for a Steve Miller Band joke, but"

        1. Someone Else Silver badge
          Headmaster

          @The MOTORe: common::sense .... what???

          From the Steve Miller song "Stuck In The Middle With You".

          Uhhh, no. That would be the Stealer's Wheel song, "Stuck In The Middle With You".

    2. bombastic bob Silver badge
      Trollface

      Re: common::sense .... what???

      "Developers are still fighting about TABS vs SPACES"

      Everyone knows that hard tabs are *EVIL* because what you see in the editor vs what you see with 'less' should look the same, on ANY platform, or your indents become redonkulous.

      Unfortunately hard-tabs still needed for 'Makefile'.

      also fun going with the "everyone knows" fallacy, just because, trolling [see icon]

      1. The MOTO

        Re: common::sense .... what???

        Clearly what you see in less vs the editor is the most important aspect of modern programming.

        Readable code, easy to understand, well structured, well designed, well documented, clean APIs, reusable code, all part of a great architecture is so last century.

        1. Anonymous Coward
          Anonymous Coward

          Re: common::sense .... what???

          Which is why I voted python top of my hated languages. How many needless hours lost trying to find that rougue space that is stopping the code compiling...

          1. rnturn

            Re: common::sense .... what???

            That's why I make whitespace `visible' in Emacs.

            [ducking for cover now]

    3. Nolveys

      Re: common::sense .... what???

      TABS to the left SPACES to the right ...

      ...put your hands on your hips

      And bring your knees in tight...

  6. Anonymous Coward
    Anonymous Coward

    FRIL - ok not widely hated but quite deeply hated in key areas

  7. Frumious Bandersnatch

    common::sense

    First I've heard of it. I write a lot of code that uses utf8 and then has to binmode stderr and stdout to avoid "wide character" warnings when printing utf8 strings. It seems that common::sense solves the latter problem

    $ perl -le 'use common::sense; my $a = { 私 => "あなた"}; print $a->{"私"};'

    あなた

    $ perl -le 'use utf8; my $a = { 私 => "あな た"}; print $a->{"私"};'

    Wide character in print at -e line 1.

    あなた

    Now if only I didn't have to open files with 'open FILE, "<:encoding(UTF-8)", $fn' every time ...

    1. Marco Fontani

      Re: common::sense

      $ perl -le 'use utf8; my $a = { 私 => "あな た"}; print $a->{"私"};'

      Wide character in print at -e line 1.

      あなた

      That "use utf8" only told Perl that your _program_ is encoded thusly, and did nothing to say that your standard output or standard error should output utf8.

      $ perl -le'use utf8; binmode *STDOUT, ":encoding(UTF-8)"; my $a = { 私 => "あな た"}; print $a->{"私"};'

      あな た

      There you go, no warning.

      Oh, you wanted to warn instead of print? There we go again…

      $ perl -le'use utf8; binmode *STDOUT, ":encoding(UTF-8)"; my $a = { 私 => "あな た"}; warn $a->{"私"};'

      Wide character in warn at -e line 1.

      あな た at -e line 1.

      So, you've got to set STDERR to also encode stuff as utf-8:

      $ perl -le'use utf8; binmode *STDERR, ":encoding(UTF-8)"; my $a = { 私 => "あな た"}; warn $a->{"私"};'

      あな た at -e line 1.

      … or just do what we do, and create a module which does the above for you, as unfortunately common::sense removes a little too many warnings that we want to instead keep enabled... and we don't always want or need to have the utf8 encoding layer enabled on either stdout or stderr.

      1. Frumious Bandersnatch

        Re: common::sense

        Thanks, but I did mention needing to use binmode (the use utf8 was only there so I could use a bareword 私 as a hash key)... and yes, I have come across times when I've had to turn UTF8 upgrading off locally on stderr/stdout after turning it on globally. Mainly because some libs or functions don't properly set the utf8 flag on returned data, so going back to raw output is often quicker/easier than messing around with utf8 internals that correctly set the utf8 flag on variables that have been affected. Especially if all you want to do is just add a quick print/warn for debugging a section of code.

        Anyway, thanks for the clarification, but I've been there, believe me :)

    2. Marco Fontani

      Re: common::sense

      Now if only I didn't have to open files with 'open FILE, "&lt;:encoding(UTF-8)", $fn' every time ...

      You might want to look into utf8:all, then :)

      1. Frumious Bandersnatch

        Re: common::sense

        I will check that out. Thanks.

    3. bombastic bob Silver badge
      WTF?

      Re: common::sense

      "Wide character in print at -e line 1."

      that is a little _ODD_ because the whole point of UTF-8 is to have 'wide characters' embedded in the otherwise-ASCII byte stream, while still working just fine with string functions that expect ASCII. On the GUI, functions have to be UTF8-aware to get the text extents right, but everything else works as it does with pure ASCII. You'd expect Perl to have that kind of "common::sense" automatically, right?

      I'd actually never heard of 'common::sense' before. I don't do that much in Perl, though. Just enough when I need to. I nearly always turn really useful things into C programs anyway.

    4. Bibbit
      WTF?

      Re: common::sense

      Tunes I just about understood but when the wide-?kanji-UTF stuff kicked off...boom. Finished.

  8. tin 2

    Love perl, although my perl reads as if it's written in C64 BASIC so I can understand it later, so maybe I don't qualify to talk.

    1. m0rt

      C64 basic? I would like to peek at your code to poke around...

      1. Korev Silver badge
        Coat

        There's no need to goto extremes...

        1. P. Lee
          Coat

          Why not? Is it considered harmful?

  9. deadlockvictim

    Lisp

    Lisp isn't on the list?!?

    When I was in second year in university, one third of Computer Science failed on account of the Lisp exams and there was much vitriol in the air. Now, whether the abstruseness of the language are to blame, the teaching of it or simply the low calibre of my fellow students is to blame, I cannot say.

    1. Bronek Kozicki

      Re: Lisp

      (you are (not (allowed to (hate lisp))))

      1. Rich 11

        Re: Lisp

        (you are (not (allowed to (hate lisp))))

        (yes (I (bloody (well (am)))))

        1. Bronek Kozicki
          Joke

          Re: Lisp

          "(I" ??? WTF, single CAPITAL letter for a LISP atom? Clearly you should not write any LISP code, let alone hate it!

      2. EmilPer.

        Re: Lisp

        >> (you are (not (allowed to (hate lisp))))

        (not (are (you (allowed (hate lisp)))))

        fixed that for you

    2. Jason Bloomberg Silver badge
      Coat

      Forth

      I was going to suggest Lisp and for me Forth is something I loath. I looked at APL once and burst out laughing. I find most languages I have used make for a love-hate affair.

      "Assembler" I don't even know where to start because some are good while some are terrible; Microchip did a spectacularly bad job there for their PIC chips.

      If I had to pick a single language to use it would probably be Python though there's a good deal I don't like about it.

      The one with the Advanced Brainfuck Programming Manual in the pocket ->

      1. sjsmoto

        Re: Forth

        For some reason I really liked FORTH. I have no idea why. Maybe it's because Leo Brodie wrote a fun book to read.

        It's COBOL I despise. It's like programming with Miss Manners. Here is what the code looks like to me:

        PLEASE RSVP.

        OPEN FILE "X" IF YOU WOULD BE SO KIND.

        THANK YOU.

        PLEASE READ A LINE FROM THE FILE PREVIOUSLY MENTIONED.

        PLACE IT THUS IF YOU HAVE A MOMENT.

        THANK YOU.

        1. Chemist

          Re: Forth

          "For some reason I really liked FORTH."

          My reason was that you could fit the whole system into ~6KBytes (6809) including (simple) disk i/o. With that you could control a whole heap of hardware without needing assembly all the time (and an in-line assembler if you did need it)

          1. Ken Hagan Gold badge

            Re: Forth

            "My reason was that you could fit the whole system into ~6KBytes (6809) including (simple) disk i/o."

            That would make it a fine language to compile into. It says nothing about whether human beings should be forced to write in that language to begin with.

            I've used several languages (Forth and the wretched NSIS setup scripting lingo spring to mind) that would have benefitted from an afternoon's work with yacc/lex to put a pleasant syntax on the front. The same goes, incidentally for some command-line tools I could name, whose options take about 20 screenfuls of man-page to describe.

            1. Chemist

              Re: Forth

              "That would make it a fine language to compile into".

              Indeed it would but the benefit to me was I needed no other support other than an ability to lay-out & etch PCBs and a self-written serial terminal program. This was a long time ago (certainly pre-1985) when hardware was expensive and I was a relatively poor chemist. Still have the hardware somewhere ( in an enormous case).

        2. Admiral Grace Hopper

          Re: Forth

          "It's COBOL I despise."

          Harumph.

          1. P. Lee
            Mushroom

            Re: Forth

            > "It's COBOL I despise."

            Says the one who has never seen Miranda.

    3. Anonymous Coward
      Anonymous Coward

      Re: Lisp

      Having avoided Python for some time I went to a "introduction to python" talk someone at work did one lunchtime. About half way through it suddenly occurred to me ... "it's Lisp without the brackets"!

      1. John Styles

        Re: Lisp

        TCL was much more 'Lisp without brackets' I think. Fortunately TCL seems to have faded from popular memory - it was only ever popular because of TK and Expect I think.

  10. AndrueC Silver badge
    Meh

    I don't hate any language. I use what is appropriate. However I am keeping my distance from my colleague that works in JavaScript with React. I've seen and heard enough to be in no hurry to leave my C#/VS world.

    I still have a fondness for C++ as a 'real programmer's language' but frankly it's hard work to do it well. Very much fun..but I prefer the easy life. I've often said that C++ is an F1 sports car to C#'s Ford Focus. One is fun to drive and extremely powerful. The other is boring but gets you to and from the shops with less hassle :)

    But, yes, it's the toolchain that stinks. We're in the process of migrating from vs2015 to vs2017. The best thing my other colleague has said on that seems to be 'It's no worse' :-/

    1. This post has been deleted by its author

  11. This is my handle
    Unhappy

    1 && 0

    My own relationship with perl is complicated. I used it for everything that was too laborious to do in C (and later java) for a good dozen years or so. I used to ask the python evangelists, "What can I do in a .py that I can't do in a .pl..." just to watch their enthusiasm dim as they skulked away.

    Then something changed. Perl 6 was supposed to happen, but didn't. I had to begrudgingly admit that I could read almost anyone's python code but had a hard time making sense of my own 5 year old perl hack.

    And bugs! Constructs I'd been using for years suddenly stopped working, on Linux even, not just Windows & Mac.

    So perl is like that old Honda that used to be my go-to way to get lots of places, and suddenly it's no longer as reliable, and I am starting to covet my neighbor's Hyundai.

    RIP, perl.

  12. Number6

    That's not a proper perl script, it's almost readable.

    1. g e

      Ahhh Perl

      The write-only language

      1. Peter Gathercole Silver badge

        Re: Ahhh Perl @g e

        You obviously haven't tried to read someone else's APL. There's no trying to work it out by 'reading' it, because there's no English words contained in the program, except the comments and any text it's trying to output.

        In my experience, it's the one language where "It's all Greek to me" is descriptive!

    2. Anonymous Coward
      Anonymous Coward

      Poor old Perl, getting blamed for the format of the input data clashing with it's regex syntax.

      The author could've made that more readable though, Perl does tolerate fools a little too gladly.

      I'm not sure how pretty C# would look doing all those regex's either, the end result would likely be quite a lot longer.

      1. bombastic bob Silver badge
        Unhappy

        "I'm not sure how pretty C# would look doing all those regex's either, the end result would likely be quite a lot longer."

        you actually compared C-pound with Perl? I'd rather fix unreadable Perl code than have *ANYTHING* to do with C-pound, especially because of ".Not".

        1. Number6

          I did an exercise once, I took an existing C# app that read from a USB dongle and updated a screen and ported it to C++ with the assistance of Qt. The original motivation was to be able to get the same functionality on Linux and the original, not exactly greased lightning on a Windows machine, was like cold treacle when run under Mono on Linux. Then I ported the C++ thing back to Windows (as in tweaked the HW-specific bits and recompiled it) and it was easily way more responsive than the original. C# is OK for slow-and-dirty hacks but a real pain otherwise. Yes, Perl is probably preferable.

  13. Voland's right hand Silver badge

    Perl's issues are not Perl as such

    Perl has two main issues:

    1. Multiple ways for everything. Multiple ways to do control structures, loops, etc.

    2. Lack of good tools to enforce style. There is a plethora of tools to do that for c and java and some languages like pyhton have them as a part of the standard and toolchain. Perl has none.

    When you combine 1 and 2 keeping a project with a consistent style becomes a major nightmare. It takes absolute dictatorship to do so which in turn always causes aggravation in the people who work on it.

    The issue which the code snippet in the article tries to illustrate is not a bug, it is a feature. Perl was originally built around regexps and till this day is the undisputed king if you need to live and die by the regexp. Any other language which needs to employ regexps ends up with similar mind-bending drivel which is also necessarily more verbose and limited in terms of features. F.E. if we try to rewrite that code in python or java it will not look any prettier.

    As far as pet hate subjects, Delphi IMHO is clearly the absolute leader. I have never ever had to deal with anything requiring so much useless labour to get anything done and producing such abysmal results in terms of size, speed and stability of the final product.

    1. FatGerman

      Re: Perl's issues are not Perl as such

      Your two main issues are the reason I like it. Multiple ways to do control structures along with no single enforced style allows flexibility of structure and style, which when used properly can aid readability and ease of maintenance. Choose the right tool for job, and also the correct attachments. I've never understood this obsession with consistent style, even my solo projects don't have it.

      1. Gotno iShit Wantno iShit

        Re: Perl's issues are not Perl as such

        Choose the right tool for job

        This is the nub of the issue. If you need a long term supportable application with lots of coders coming an going all understanding each others work perl is probably not the best choice. If you need a quick hack to get a surprisingly complicated job done fast perl is.

        Loads of 'real programmers bemoan VBA. There's gazillions of little jobs for which VBA is a perfectly fine choice. If you're worried about standard coding style, neatness of parameter passing, ease of code reuse and all the other things worshipers of K&R bemoan your project has probably grown to the point something else would probably be better.

        And where the hell is the discussion of ADA in this thread?

        1. Anonymous Coward
          Anonymous Coward

          Re: Perl's issues are not Perl as such

          Still compiling.

        2. rnturn

          Re: Perl's issues are not Perl as such

          ``And where the hell is the discussion of ADA in this thread?''

          Sorry. That's... classified.

    2. Anonymous Coward
      Anonymous Coward

      Re: Perl's issues are not Perl as such

      Heresy! Cast him out! Stob, where are you?

      Love,

      Sons of the Valley of Kahn

    3. Adam 1

      Re: Perl's issues are not Perl as such

      > As far as pet hate subjects, Delphi IMHO is clearly the absolute leader.

      That's interesting. I was kind of curious about why it was getting hate. To me, it was more a sadness about what might have been if better decisions were made by Borland, sorry I mean Inprise, sorry I mean Borland (again), sorry I mean Codegear, sorry I mean Embarcadero, sorry I mean Idera. The same sort of feeling one might have towards an upcoming sporting potential who through a series of bad life choices finds their careers over before they have reached their full potential. The stuff that annoyed me was rarely the language syntax. I actually much prefer the constructor chaining syntax in Delphi Vs C# (we won't talk about anonymous method or nullible value types or the clunky way that interfaces work). Maybe I just have a soft spot for the earlier versions which were light years ahead of their contemporaries.

      For the record, pet peeve is JavaScript. If only it wasn't the lingua franca of the web. The fact we need typescript to make it tolerable speaks volumes.

      1. Doctor Syntax Silver badge

        Re: Perl's issues are not Perl as such

        @ Adam 1

        Can't agree more about Delphi. AFAICS it reached its best at about D7 & then rapidly headed downhill. As luck would have it that was as far as I needed to go with it but continued with some sporadic FPC & Lazarus on Linux and only then for my own use.

        What you didn't mention was the way in which it (and Lazarus) build GUIs. I took a look at both the Gnome & Qt/KDE offerings before going with Lazarus.

  14. Notas Badoff

    It has served me well

    I've written binary file dumpers and converted oil well logging floating point formats to IEEE 754 using Perl. A beautiful language that forgets to permit flexibility is useless.

    Perl shows its origin as an amalgamation of tools, for the purpose of being a more useful tool. The additions to please language purists also happened to be those most useful. (catch the theme here?)

    I suppose there was poetry written in hieroglyphics. And some would reject it, saying "Ick, they use ibises and cobras and cartouches on names!"

    A quote I found years ago:

    Finally, a note of caution. This language, like English, can be a medium for prose, or a medium for poetry. The difference between prose and poetry is not that different languages are used, but that the same language is used, differently.

    1. Voland's right hand Silver badge

      Re: It has served me well

      Perl shows its origin as an amalgamation of tools,

      Unfortunately, Debian went politically correct at some point. If you pull one of the older versions - let's say Potato and execute dpkg --status perl you will see the Description as: "Pathologically Eclectic Rubbish Lister".

      Not far off. Any feature you can think of - it has it. And then some (provided the feature makes sense in a loosely typed language so if you are expecting brainf***, sorry generics, look elsewhere).

      Pity they now have "Larry Wall's Practical Extraction and Report Language" instead. It sounds humourless and stale.

      1. Mine's a pint
        Pint

        Re: It has served me well

        IIRC the usage of "Practical Extraction and Report Language" and "Pathologically Eclectic Rubbish Lister" are both said to be endorsed by Larry Wall in the first paragraph of the introduction of the O'Reilly book "Learning Perl".

    2. Charlie Clark Silver badge

      Re: It has served me well

      The comparison with human language as two problems: firstly, it's completely invalid on a technical level. But even if computer languages were human languages then this would just underline the problems introduced by flexibility, or to give it a more apt name, ambiguity. Ambiguity is bad not only for anyone reading the code but, potentially, also for the compilers as all the problems with creating a query plan from an SQL statement demonstrate.

      Anyone who is proud of their own unreadable code, considering it unreadable only by those less talented, doesn't understand what programming is about. Coding stye guidelines exist for a reason: some other poor sod is going to have to maintain that code that you dashed off a few years ago. But they're also not an end in themselves: foolish consistency is the hobgoblins of tiny minds.

      1. bombastic bob Silver badge
        Unhappy

        Re: It has served me well

        "Coding stye guidelines exist for a reason: some other poor sod is going to have to maintain that code that you dashed off a few years ago."

        that 'poor sod' often turns out to be ME, even if I'm the one who wrote it in the first place. Yeah try and remember what I was thinking yesterday, let alone 6 months or 5 years ago, by the use of "clever" tactics and no comments to say why.

        so I normally try to make code SO readable and self-documenting [and add lots of comments] so that _I_ can maintain it without difficulty. Or anyone else, for that matter.

        1. Voland's right hand Silver badge

          Re: It has served me well

          I can't believe it... I am +1 a BB post and it actually makes sense. Need to look around for the four horsemen and the lamb has definitely broken the seventh seal.

      2. Baldrickk

        Re: It has served me well

        Anyone who is proud of their own unreadable code, considering it unreadable only by those less talented, doesn't understand what programming is about.

        Exactly.

        Lets quote someone who knows more than me what he's talking about:

        Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?

        Brian Kernighan "The Elements of Programming Style", 2nd edition, chapter 2.

        Coding stye guidelines exist for a reason: some other poor sod is going to have to maintain that code that you dashed off a few years ago.

        It may even be future you that has to maintain it.

  15. Garfunkle

    It's a career positioning thing, not a like/dislike thing

    The conclusions are somewhat flawed, I think...

    It's not a measure of how well developers like a particular language. It's a measure of how beneficial they think it would be to add a particular language to their CV.

    It's a career positioning thing, more than a like/dislike thing.

    On their like list people will put the most hyped technologies of the day (because they want to be on the correct bandwagon, career wise). On their dislike list they will put what's perceived as "old and boring". Things that they think might hurt their careers, rather than advance it. That's what this measures, really.

  16. DCFusor
    Happy

    Regex

    I note when people are shown "ugly and unreadable" perl code, it's really mostly regular expressions...which almost every other language since - has copied/adopted too.

    Regexes make my head hurt too - and I'm a big fan of perl. Wonder why you see the above so often?

    Is it because perl is so otherwise useful for text processing that it's widely adopted for that use, and regexes amplify that power even more? If you grew up in C, where text was so hard to handle (and for most languages, unicode still is) - you'd just try to work around the need for much text processing.

    It's not a monkeys/typewriters kind of language, to be sure. It has a much higher think to type ratio than most of the others (which I speak and use too - from ASM to C++ and a few others). So, yes, when you can get what would be 5 pages of functionality in one of today's "fanboi" languages into a short paragraph of perl, it's by-definition going to appear hard to read at a glance, probably almost as hard as those 5 page solutions. Doh.

    Perl gives you enough rope to shoot yourself in the foot. Just because there's more than one way to do it, doesn't mean you have to choose the way that is the "cutest, cleverist, and most likely to promote job security since no one else can get it" way every time.

    As mentioned above, I write my perl as though it was a less dense language, only taking advantage of the obscure stuff when needed, as I myself might have to understand it later. Perl lets me do that, some others don't, or force that little clever one-line bit to be 5 pages, which is itself hard to read.... To each their own, I say.

    FWIW, I have a lot less trouble with cross platform perl than "write once, debug everywhere" Java, which I truly despise...

    With the python fad, and it's silly/stupid use of whitespace as a language element, I'm glad to be able to incorporate it into my perl via use Inline; - and it runs faster under perl than natively, as if it doesn't have a couple of rarely used python constructs, it's *compiled* and linked to the perl program. This reveals tons of bad python hardware interfaces that use a sleep instead of a busy test...

    1. Jason Bloomberg Silver badge

      Python whitespace

      With the python fad, and it's silly/stupid use of whitespace

      That is probably the number one complaint lobbed at Python. But most complaining can produce a convincing argument for why consistent indenting and alignment is essential in any language with nested constructs, even if entirely voluntary.

      Take a C program, move the braces up, remove them and semicolons, tweak the syntax a bit and there's often very little difference between that C and Python.

      Once one realises it is mostly complaining about having to type whitespace which one would have chosen to type anyway that stops being so much of an issue.

      1. Anonymous Coward
        Anonymous Coward

        Re: Python whitespace

        You just need to maintain/debug code at $VBC where the xml & Java is literally randomly indented to pray to be able to go back to Python and its "silly/stupid use of whitespace"

        And you can't use the IDE's indenter because fixing the indentation breaks the shitty homegrown source control system.

        FML.

        1. DCFusor
          Happy

          Re: Python whitespace

          xml and java are used by real programmers at all? Man, I've got it good, I can avoid them entirely!

      2. DCFusor

        Re: Python whitespace

        I agree that good indenting should always be done. But when things span multiple pages, it's darned hard to keep track of if it's the only thing defining scope. I often add "picky perfect" indenting before I'm done in whatever language.

        I do have a use-case where it's actually a serious problem - I wrote a perl program to plot data from my fusor in 4 dimensions, mapping perhaps 10 or so parameters into 4d (x,y,z,color). To make this useful for the scientist (me) - I have the axis mapping set up so that I can type in a line or few of perl per axis, defining how the mapping is (with presets for the common setups, using Storable). If I had to use newlines here, I'd have to use full edit boxes in GTK and the extra complexity that entails, along with wasted screen space, to accommodate python there. Wheras in Perl, and most any other sane language, a semicolon will do - code ISN'T POETRY where a newline controls formatting, or it shouldn't be IMO, anyway. And I'd like to be able to split long lines sometimes too, with minimal fuss.

        But, horses for courses, as they say. In my case, I can handle about any language, but my many years of learning not only languages but libraries makes me not want to have to start all over when what I have now works as well as, or better, than the language of the day.

        Being able to go from zero to hero fast as in python seems to encourage more monkies to use it.

        I cite nearly 100% of the hardware interface code for say, raspberry pies, where no one seems to get the concept of a ready flag vs a "keep increasing the sleep time till it works on this cpu at this speed".

        (And no where else...and breaks if the speed changes)

        Monkey code doesn't encourage me to go through the learning curve on yet another. I sat Java out too - and it turned out to be a wise move.

        Not that you can't write horrible code in any language...it's just that "new lang of the day" does tend to get the beginners who can't code well yet, and many of whom will drop out when they find out they'll never be good at it (or their employers figure that out).

      3. seanb-uk

        Re: Python whitespace

        It's not having to type whitespace, it's the lack of a visible difference between tabs and spaces. It's not possible to tell whether the code is correctly lined up - are there four spaces or one tab? Critical to the Python interpreter, invisible to humans.

        You really do have wrangle your text editor to stick to one format, and be very, very careful when pasting in code from another source. I've lost count of the number of times I've had to run an editor's "convert tabs to spaces" function to reveal why my code isn't working.

        In the end I've just set my editor to show whitespace, which I think is ugly but sadly necessary.

        1. zanshin

          Re: Python whitespace

          I've been a Python coder for 10 years, and I've never had a significant problem with the tabs vs spaces thing. Like, it maybe pops up once every ... four, five months? And either an editor feature or a search/replace fixes it lickety-split.

          I've also never had a problem getting (what I consider) proper code editors to stick to one standard for Python code. Probably the most common way for me to get in trouble with that is if I hack something with vi on a local machine, but I try to only do that for dire reasons. Most of my code goes from editor to source control to *some* kind of deployment pipeline.

          There's tremendous value (for any language) to get something that can really lint your code, preferably inline in your editor. (It looks like lack of that is one of the complaints against PERL?) Any popular Python linter will tell you you've got mixed tabs and spaces. And linters for many languages I've worked with will complain about that even if it's not syntactically relevant.

          I'm a bit surprised to see PERL rate highest for hate. I do suppose that's got a lot to do with where one is coming from. I wouldn't try to write anything really complex in PERL - I try only use it as an awk stand-in, but I did have to write CGI code for it back in the day. I don't hate it. I just think there are better languages for most formal programming tasks. And I am keenly aware it's super hard for most people to read and understand a PERL program of any real complexity.

          My personal most disliked language would probably be Pascal. I was taught that as a programming language in college, which I thought was laughable at the time. Maybe this was an implementation thing, but the version we had to work with was extremely limited. The closest thing I could get to an array with it was a doubly linked list. Fortunately, I knew how to program (if not how to exercise best practice) before I went to college.

          VB is up there on my list of dislikes, though it did serve a useful purpose in its day. I just really disliked its syntax.

          1. Marco Fontani

            Re: Python whitespace

            There's tremendous value (for any language) to get something that can really lint your code, preferably inline in your editor. It looks like lack of that is one of the complaints against PERL?

            Dunno what to say, I use (neo)vim and ale is perfectly capable of linting both my and ElReg's Perl (not "PERL") modules and scripts using both perl -c to check the syntax, and perlcritic (with per-projects overrides in .perlcriticrc) to ensure nothing too unwieldy is being typed. Coupled with a simple pre-commit hook to, again, check syntax and ensure we're not committing too much crap, it seems like kinda what you'd have with any other language, unfortunately sans "completion hints" as it's an interpreted language, and omnicompletion really only seems to work for the most basic of classes.

            I've got something similar setup for HTML, JS, CSS and SASS using the exact same system, so Perl isn't an outlier here.

            Rather, I feel that there's not enough options in perltidy to match my or ElReg's "house style", unfortunately. I'd love for Perl to have something as pleasant to use, and read, as gofmt, but unfortunately perltidy doesn't seem to be enough for me. I might just have weird syntax preferences!

            And I am keenly aware it's super hard for most people to read and understand a PERL program of any real complexity.

            IMVHO, you can write maintainable or unmaintainable code in any language. I've seen scary stuff in C, C++, Perl, ASM, and I've seen maintainable code in ASM, Perl, C++, C. /shrug

          2. DCFusor

            Re: Python whitespace

            @zanshin - I agree - lint is super good to have, whether automated, or with discipline, manual/visual.

            Big projects, yep, there are often better languages if you assume it's all gotta be in one language.

            But anymore, a coherent big project doesn't usually need that much "glue" to stick together a ton of existing and working functionality in libraries. If you have a clear vision, it usually doesn't turn out that complex - and the best code is the stuff that doesn't need to be there because you understand the problem space.

            I like the glue aspect of Perl myself...and I will often use inline::xxx to incorporate other languages libraries to get the job done - the already-debugged (usually) stuff is a plus. And the ability to control other processes very easily.

            I think the "other people's perl" comment is to the point - it's other people's code generally that is a pain, but perl does attract those who like it "tricksy" it seems. Luckily, I tend to be an originator, not a maintainer (other than my own stuff). As such, I stay far away from the tricksy stuff - or if I just can't resist, mark it with my signature #@@@ comment which I explain at top of file, and of course, I use comments copiously. It's my own butt I'm protecting, as if I need a change or there's a bug - I'm the one who has to make it right.

            No one has ever whined about my perl code - a couple have asked what C library (or whatever) I used to *make it so clear and obvious what's going on*. Again, that's really self-defense.

            While any sufficiently advanced programmer can write bad code in any language, it's also true for good code...(paraphrasing the old line about Fortran). The real deal, a quote from Douglas Adams - "People are a problem".

            Weak typing has its plusses and minuses. ASM for example has the weakest of all if you think about it - only length is specified...C has unions to ease type munging - they all have "issues" when strong typing doesn't allow you to simply say what you mean. Weak typing (oh gawd, php), of course has it's own issues. And *different* weak typing, for example, between perl and python, has bit my arse a few times, to the point I use use some of it that's been worked out inline, instead of translating it, when something uses impllicit conversion between text, integer, and floating point - lack of really good knowledge of the precise rules in play leads to issues. Like SystemD, I don't feel I should have to learn arcane new things just because someone else tries to force them on me, when they aren't right for my use-case.

      4. MrBanana
        Go

        Re: Python whitespace

        I'm very happy with using whitespace in my code, be it SQL, C, or any mish mash of shell scripting where I do most of my work. But a modern day computing language that *requires* whitespace as part of the syntactical structure? No. I might as well be writing FORTRAN or COBOL on punch cards.

    2. Anonymous Coward
      Anonymous Coward

      Re: Regex

      Ugh, Java.

      I have no patience for language that ties one arm behind my back in the assumption I am too stupid to be trusted with pointers or memory management, but has such terminal bitrot that any script kiddie can successfully attack the JVM directly, and crashes on it's own more often then not.

      Also it's version of string possessing is an act of both spite and cruelty.

      Perl code is more like a custom and tricked out motorcycle. Good for the guy who built it, but if anyone else tries their luck it's gonna end in a crash. Still, when practiced with a little Use Strict discipline, it has plenty of valid uses. It's still one of the primary tools to glue things together on the back end on 'nix, and real handy for juggling things around in a complex filesystem or doing text processing. We sadly also used it to cover up sins like bypassing broken installers that the original programmers didn't feel like fixing themselves.

      Funny thing is I'd still trust a person who HATES Perl to write it better than someone who LOVES it. Perl is like Jazz, loving it too much is a character flaw in a programmer.

      I don't have problems with JavaScript so much as with the HTML hell it's usually married to. The JavaScript itself is reasonably sane. The DOM, browser engine variations, webserver variations, and the obfuscated mess that is HTML ensure that the few things that ever run right won't stay that way for long.

      Perl can be a Hot Mess, but it's not the worst dumpster fire in town, by a long shot.

  17. tiggity Silver badge

    Horses for courses

    With perl it is very easy to produce unraedable code (hard to say whether perl or C wins the designed for obfuscation award)

    I mainly work in C# ton Windows hese days (although have used lots of languages in the past, from low level assembler to the likes of high level stuff such as Java) .

    However when I have large files with lots of text to process, I knock up a quick perl script to do the job because.

    1) It's quick to write a standalone script

    2) Under Windows, Perl script massively outperforms C# code on large file string mangling tasks (over 20x faster on real world complex large file text altering tasks)

    1. Jonathan 27

      Re: Horses for courses

      I don't agree with you. C# performs very well when it comes to string mangling, provided you use a string builder and not just the string object, which is immutable. You also need to be very careful with what you do with your strings, because implementation isn't always consistent across the framework.. I think your performance issue might be that you have a lot of experience working with Perl and less with C#.

    2. Doctor Syntax Silver badge

      Re: Horses for courses

      "hard to say whether perl or C wins the designed for obfuscation award"

      I thought APL was the outright winner of that trophy.

  18. Natalie Gritpants

    VHDL - pretends to protect you from stupid errors that Verilog doesn't, but lets you do equally stupid things; verbose syntax that makes you type the same stuff out two or three times.

  19. ratfox

    I used Perl quite a lot, because at the time that was the simplest thing to read a text file and use regular expressions. I wrote a Perl cgi-bin script that would let you surf the web in Elvish letters, and I can't believe that it's been 16 years since The Fellowship of the Ring.

    I've learnt Python since, and I would probably use that instead now. It's more verbose than Perl, but the additional readability more than makes up for it.

  20. Prosthetic Conscience
    Happy

    No way! Didn't realise el reg runs on Perl. Been on it for years and still use it daily. I hate myself not the language. And no wonder people find it intimidating and quickly send me some example snippet that doesn't even have use strict;.. Yes TIMTOWTDI but if you do the same things the same way across a project that's all right, can solve a system side problem way faster than my PHP colleague (bless him) wether it's to do with a DB or files or network/snmp.

    And by the way, looking at ruby loops or ternary operators and such I don't understand why people consider Ruby closer to natural language. I guess haters gonna hate

  21. Anonymous Coward
    Anonymous Coward

    My dear Perl

    I did quite some tools in Perl, some have been used 10 years after (backwards compatibility !)

    The language has big strength:

    - interpreted

    - fast (for interpreted)

    - has a good OS API (I wrote a full scientific computation job scheduler and I found it incredibly easy how controlling sub-processes was)

    - very powerful

    and some short coming:

    - encourages really poor cryptic style

    - regular expressions are scary as hell

    But I think this is an overall good language. Can't say the same for freaking java !

  22. Anonymous Coward
    Anonymous Coward

    Perl

    Very powerful and quick for interpreted

    BUT

    bloody hard to read unless you think the same way that the programmer did (part of the 'multiple ways to do things' idea)

    1. David Roberts

      Re: Perl

      I think the more accurate hating response is "other people's Perl".

      I love Perl because for uncomplicated entry level tasks it has all the tools and is simple to write. I've used for all sorts of trivial things including monitoring an early ADSL modem over a serial link and tweaking the parameters when required.

      I worked for a while with some very large applications written in Perl. As a Perl user not a full time programmer I found it slow and hard at times but generally understandable.

      However geek level Perl programmers have to constantly resist the urge to write a complete programme as one long regular expression because "it's obvious what it does"

      For the depths of sin, search for "obfuscated Perl". Beautiful to look at but really, that is not what the language was designed for (I hope).

  23. Anonymous Coward
    Anonymous Coward

    Poor Delphi....

    From the glory days of TurboPascal to one of the most hated languages. What's the reason? Being Pascal based? Being perceived today as a dead-end, an elephants' graveyard for developers? Being in the hands of a company quick to ask you more money, but very slow to fix bugs?

    1. Pen-y-gors

      Re: Poor Delphi....

      Delphi was a bit weird, but I could cope with it, I think largely because it was the great-grandchild of the first language I learned at Uni - Algol W. That then evolved into Pascal, then TurboPascal then into Delphi. Quite good for teaching programming concepts 15 years ago.

      1. werdsmith Silver badge

        Borland

        You just reminded me of Borland. Whatever happened to them? Their name used to be everywhere.

        1. Anonymous Coward
          Anonymous Coward

          Re: Borland

          Borland crashed many years ago - mostly because of big mistakes on its own (i.e. the Ashton-Tate acquisition - remember that name too?), and also because of Microsoft working hard to crush one of its most dangerous competitors - it lured away many key people, including Anders Hejlsberg - who at MS created C# and TypeScript.

          It was sold to Micro Focus in 2009, after it tried to reshape itself as a application lifecycle management company, while making the mistake of investing too little in its core development tools products for too long, which lost most of their advantages (while JBuilder was killed by the free Eclipse).

          The development tools group was spun of, was bought by Embarcadero, and later Embarcadero was bought by Idera - little known companies in the database tools business.

        2. Anonymous Coward
          Go

          Re: Borland

          Oh come on.

          Verity Stob's Chronicles of Delphi tells you everything you need to know about how things came to pass. Far and away the best reason to read El Reg.

          Love,

          the Sons of Kahn

    2. GerryMC

      Re: Poor Delphi....

      I suspect it is {} language developers maintaining old applications, and just not really getting it. And misplaced snobbery.

  24. Pen-y-gors

    APL?

    Described as the only language when even the author can't understand it a week later.

    Example (from Wiki) of the game of life - or possibly creating actuarial tables for 3-year-old male marmosets.

    life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

    1. Ken Hagan Gold badge
      Coffee/keyboard

      Re: APL?

      Is that Indus Valley script? Or the Disc of Phaestos?

      Icon: I'd need a new one to even begin to type that.

    2. Anonymous Coward
      Anonymous Coward

      Re: APL? - life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

      It does seem to have more boobies than the average programming language. Is that the alpha and omega of programming languages?

      1. Bronek Kozicki

        Re: APL? - life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

        A more modern example could be k (programming language) - the same terseness of style as APL, but you can use regular keyboard (as opposed to this) thanks to clever overloading of ASCII symbols. No boobies, in other words.

    3. Adam 1

      Malbodge hello world

      (=<`#9]~6ZY32Vx/4Rs+0No-&Jk)"Fh}|Bcy?`=*z]Kw%oG4UUS0/@-ejc(:'8dc

      Some people are evil

      1. Bronek Kozicki

        life:{3=a-x*4=a:2{+x-2{|1_0+':x,1#x}/x}/x}

        Unlike Malbodge (esoteric programming language), k is intended for production use - and is actually used for implementation of kdb (in-memory database). Conway's Game of Life in k , in subject (borrowed from here)

  25. Anonymous Coward
    Anonymous Coward

    Perl is horrible...

    So I'll be glad to see it go. It was always used by those bearded, bad tempered, patronising, middle aged SA types for two reasons and two reasons only:

    1. Job security.

    2. Because they couldn't actually program.

  26. disgruntled yank

    CPAN!

    Some years ago, it seemed good to write a script to transfer a bunch of posts from one server to another. In an uncharacteristic moment of common sense, I decided not to use regexps, and instead used HTML::TreeBuilder. That saved a great deal of trouble and time--my own, and that of the people who would have had to do copy and paste and discover on their own that, No, the new system does not support the blink tag.

    Could I have done this in Python, rather than Perl? Yes, I suppose. But it worked.

    1. JLV

      Re: CPAN!

      you'll pretty commonly find people stating that regexes are not a good match for non-trivial html processing so I am unclear as to the point you are trying to make. the host language has little to do with it.

      in other news, a carpenter congratulates himself for using a screwdriver to fasten screws.

      personally, while I avoid PERL it's solely because of the profuse use of special symbols and special operators - cryptic and unreadable code might be expected and tolerable in short awk or sed scripts but they're misplaced in a general purpose, to-be-maintained-later programming language.

      regexes have that old joke going - you have a problem and you use a regex, now you have 2 problems. and they are also slower than simple string slicing and comparisons. but when used judiciously and with an aim to readability they are brilliant little tools.

      1. John Gamble

        Re: CPAN!

        "...the profuse use of special symbols and special operators..."

        What special operators?

        If sigils are not your thing, well I can understand that. But the operators are mostly identical to the operators of C, and are not confusing.

        Most confusion that I see comes from using lists incorrectly. Okay, fair enough, if you fell into that trap, and it scarred you for life, I'm not about to try to convince you otherwise in a comments forum. But it's not difficult to work with.

      2. disgruntled yank

        Re: CPAN!

        My point, evidently as clear as somebody else's code, is that one need not fight one's way through regexes--as on the snippet of the main article, that there are sane and sound ways of using Perl to do this, e.g. somebody else's tested, documented library.

        The point I was too hurried to make is that CPAN is a huge reason to use Perl.

  27. hellwig

    Sad really...

    What's wrong with Perl? It's a great text processing language and was around long before your precious Python came about. Oh Python, meaningful white-space? Really?

    If you hate regular expressions, your problem isn't just with Perl (Perl just makes them easier).

    Now, people CAN do stupid things with Perl. People can do stupid things with any language, but the stupider you are, the easier it is in Perl.

    1. Anonymous Coward
      Anonymous Coward

      Re: Sad really...

      @hellwig: "It's a great text processing language and was around long before your precious Python came about."

      Not really - Perl was created in 1987 and Python in 1991. I used to do a fair bit of Perl for things that C would be too time consuming for, but I removed it from my CV as I got sick of seeing the abominations that others would create with it. "use strict" helped, but the dynamic typing meant it was ultimately inappropriate for anything large scale, and the tacked on support for OOP was a joke.

      1. P. Lee

        Re: Sad really...

        >Not really - Perl was created in 1987 and Python in 1991

        But four years in computing then was far more than four years in computing now.

        Perl is great for small and ad-hoc tasks - its great for gluing things together. My fondness for it stems from my first unix job, a simple netscape web server-cgi thing on solaris. I installed linux on a partition so I could get proper perl running and taught myself vim. Having grown up on BASIC and C, I was blown away by how it just did stuff. My Windows partitions have declined in use ever since.

        Having said that, I tend to default to Ruby now. It isn't serious programming, but more complex data structures are easy and I like the way you can just feed something to something else and it does what you expect with minimal effort.

    2. Charlie Clark Silver badge

      Re: Sad really...

      Oh Python, meaningful white-space?

      Yes, as demonstrated by multiple tests.

    3. 45RPM Silver badge

      Re: Sad really...

      @hellwig

      Python is a superb teaching language - a modern day BASIC. It’s fantastic for teaching kids how to code but…

      …and this is the lightning in the bottle compared with other teaching languages…

      …it’s great for real work too.

      For short scripts and processing text I’d still use Perl for preference, but Python has Perl soundly thrashed when it comes to more substantial projects. In my view, anyway.

    4. Gene Cash Silver badge

      Re: Sad really...

      > Now, people CAN do stupid things with Perl

      Yes, and my experience at $VBC shows people try their hardest. I'm tired of "code" that looks like line noise and modem barf, with not one comment in 1100 lines

      1. James O'Shea

        Line noise & no comments

        That’s not Pearl, that’s FORTRAN. Problably FORTRAN77, the first ‘high level’ language I was forced to use.

      2. hellwig

        Re: Sad really... <code comments>

        Perl doesn't lend it self any more or less to lack of comments, the problem is the syntax of Perl can be so complex, you really need the comments.

        I find myself adding plenty of comments to my Perl, so I can remember WTH I was doing when I wrote it a few months ago. But I always add comments, that's just a habit built up in school. Just like math teachers make you show your work, my CS teachers made us add comments.

        But then, I suppose so many "developers" these days are self-taught, which is why A) they don't comment anything and B) they complain about how hard Perl is.

    5. EmilPer.

      Re: Sad really...

      actually Perl is only like 2 years older than Python, only people started getting woozy about Python 5 or 6 years ago when the Ruby hype cooled down

  28. 45RPM Silver badge

    APL - without a shadow of doubt.

    As with most programming languages, Perl has its uses. Personally, I think that it’s best used for short test processing scripts - a sort of user-friendly sed if you will. I had to maintain a application of tens of thousands of lines of Perl once - that was not a pleasant experience, and I wasn’t allowed to rewrite it in something like C. I had ample justification too, besides not liking Perl for large projects. The code was written by an imbecile who left ‘strict’ out because it made his code crash. It was unreliable and crashy, and still I wasn’t allowed to do the job properly.

    The worst language I ever had to use was APL. I have a knack for picking up languages quickly, which meant that I’d often have to pitch in on eclectically coded projects. APL tested my abilities and patience and - although I got to be reasonably adept at it - I never want to touch it again. A vile waste of time, and not even as efficient and fast as its adherents claim. Every challenge that APL's fans have thrown at me to prove its mathematical prowess I have been able to beat on identical hardware just by using a sensible language. Like C. :-D

    1. Munchausen's proxy

      Re: APL - without a shadow of doubt.

      "I have a knack for picking up languages quickly, which meant that I’d often have to pitch in on eclectically coded projects. APL tested my abilities and patience and - although I got to be reasonably adept at it - I never want to touch it again."

      This is actually pretty common. People who already know programming tend to have a difficult time picking up APL, but people who have never programmed at all tend to pick it up fairly easily. Understanding how the computer itself works makes it difficult to cast aside habits dealing with linear, sequential strings of instructions. What APL does well is allow mathematical ideas to be expressed without going through that 'how does a vector get processed?' step that most of us in this forum cannot ignore.

      I freaking love APL. I use it as my desk calculator app. I'll never be any good at it because I've spent too many years thinking in Fortran/C/assembler/Pascal, etc., but I'll keep trying, because it rewards, maybe even forces, thinking outside the box.

      1. Bronek Kozicki

        Re: APL - without a shadow of doubt.

        Out of curiosity - do you have "proper" APL keyboard for your desk calculator app? What application do you actually use in this character? Asking because my favourite "calculator app" is Debug4x , with its HP 50g emulator (programmable in RPL, but I only use RPN part)

        1. 45RPM Silver badge

          Re: APL - without a shadow of doubt.

          @Bronek

          I realise that your question wasn't directed at me but, when I was programming in APL (SAX APL - with the SAX APL font), I carefully drew all of the APL symbols onto my keyboard with a CD marker - being sure to mark the front of the keys so that prodding with my fingers wouldn't wear my scribblings away. Eventually, of course, I didn't need to look at the markings - any more than I look at the keys when I'm typing this.

          Not a trick you could do today with the fashion for low profile chiclet keys!

  29. ValleyBoy

    Perl User Groups

    My first job after graduating involved quite a lot of perl scripting. I got on with the language rather well, until I made the mistake of asking a question on a perl user group. My god, what an angry bunch they are! Instead of getting an answer, I got a tirade of abuse for not knowing the answer already.

    Completely agree about Javascript. Give me perl over that rubbish any day!

    1. James O'Shea

      Re: Perl User Groups

      Are you sure that you weren’t on a Linux group, he asked, while running for cover.

    2. disgruntled yank

      Re: Perl User Groups

      Meh. When I started to learn PHP, I Googled to find out if there was an equivalent to Tcl's "upvar". Well up the list of links was a PHP forum in which someone had asked just that question, and been abused by all the PHP fans.

  30. Tom Melly

    A puzzled fan...

    I love Perl - for certain jobs, namely mine, it's a god-send. And I never get the complaint about perl + regular expressions. That's what regular expressions look like - anything with regex support is going to look the same.

    As for too many ways to do things - sure, you can write cryptic code, and head off down obscure structures, but then you're just an arse.

  31. EveryTime

    There is some negative sentiment for awk and sed.

    Yes, perl was designed to replace those 'languages'. It does a horrible job of it.

    I can expect sh, awk and sed to exist, to not have some wonky mismatched library problem, to start quickly, and to behave exactly as they did a few decades ago. Two decades from now the same will likely be true.

    I'm not going to write the Great American Novel errrm Program in those languages, but they are my first choice when I want tools that continue to work without being mucked with each time I try to run it.

    1. Peter Gathercole Silver badge

      @EveryTime

      I wish I could up-vote you more than once.

      - A fellow user of sh, awk and sed, but also cut and paste.

    2. John Styles

      I always felt that for the things awk could do it was better than Perl. Of course the main thing I could do was the sort of stuff you'd use 'find' or similar for, so with awk I would usually end up doing it as a multiple stage process. You could argue that having an awk script write a batch file you could eyeball before letting it loose on the file system was no bad thing.

    3. MrBanana

      Shell scripting tools

      "Two decades from now the same will likely be true"

      You've clearly not had to run your sh/awk/sed scripts on platforms like AIX and MacOS. Writing everything for the lowest common denominator (from two decades ago) will have you pulling your hair out.

      1. Peter Gathercole Silver badge

        Re: Shell scripting tools @MrBanana

        But that's the point. Basic System 5 (n)awk, sed, ksh88 and the other tools will probably never change, and that means that it will always work as you expect.

        No matter how good the writers of gawk at. al. are, there will always be enough differences to trip you up once in a blue-moon, normally when you can least afford the time to problem solve. Also, the exact version number becomes important as the tools evolve.

        I know this is a very backward looking view, but it's served me well over the last 35 or so years (before that, you're talking the original. much more limited awk from UNIX edition 7, and probably Bourne shell or maybe csh - did you know that somewhere in 2BSD circa 1979, there was a shell called vsh which worked uncannily like the later Norton Commander utility).

        If you want a real laugh, dig out the Edition 6 shell documentation at TUHS! Two character variable names, with a significant number reserved, no functions and very minimal looping constructs, and a much less usable environment to allow variables to be inherited by child processes.

    4. Doctor Syntax Silver badge

      "I can expect sh, awk and sed to exist ... and to behave exactly as they did a few decades ago. Two decades from now the same will likely be true."

      Unfortunately one place you'd expect sh to exist is in /etc/init.d but that's looking dubious.

    5. Anonymous Coward
      Anonymous Coward

      On what mystery system are you using which doesn't ship with native perl binary with full core support not already installed?

  32. HmmmYes

    Cant argue.

    Hate Perl and Java equally.

    Java was always going to be a design by committee fuck up, so you understand it to a certain level.

    Perl's different. You have a BDFL - Larry Wall. In my background reading about Perl all I can say that 'having multiple ways of doing the same thing' is not a fucking good idea.

    Needless to say, I have a large Perl codebase for some tools, written by many people,. who all wrote the the same thing differently.

    More proof of my rule of thumb - no program written in a scripting language (shell, perl) should exceed 20 lines.

    PHP is not language, more a lazy kids end of year project.

    Ditto for Javascript, although its kept in a box (browser). Anyone doing server side javascript should be shot. Many times.

  33. mmccul

    Perl is a tool

    Because perl doesn't dictate that people *must* do things in one way or another, but embraces the notion of empowering the developer, I find people dislike it. Because it allows me to solve problems, I use it. It's also by far the best tool for the problems I'm solving.

    Perl has another advantage. It's on every system I need to run my code on, unlike a consistent version of Python.

    Also, I find I have a much easier time reading perl code six months later than I can python or ruby because the sigils tell me immediately what is being done. Yes, the very feature that some people hate allows me to much more readily re-read the code *months* after I last looked at it.

  34. Anonymous Coward
    Anonymous Coward

    missing items

    swift, objective c, electron, cef

  35. Anonymous Coward
    Anonymous Coward

    Java most hated

    Looks like real programmers are now waking up, now Java is the most hated.

  36. muddysteve

    Another vote for APL

    It was unmaintainable. If you needed to make a change you modified the requirements spec and wrote the program again from scratch.

    Needed a special keyboard, as well.

  37. Jonathan 27

    I hate Perl because the syntax is so strange and non-standard, even inside of Perl. It's not a big issue because since I've been working I have never encountered any Perl at all. I don't think many people use it anymore. I'm also not a big fan or Python, or more realistically the concept of using white-space to denote code blocks. That just feels wrong to me.

    I do admit that Javascript has it's problems, but you can work around them. So I don't hate Javascript, although something I do hate is "other people's Javascript", because there is nothing worse than that!

    1. edge_e

      That's the first time I've ever wanted to upvote and downvote the same post.

      I think that means it deserves an upvote despite the fact you seem to have put the languages in the wrong places :)

  38. Pete 2 Silver badge

    A glaring omission

    So where is SQL?

    All I can suggest is that it simply isn't "trendy" enough for the people at Stack overflow to know, care or hate.

    it also makes me wonder whether the "hate" is because a language is difficult to use to achieve the desired result, or due to some factor like unfashionable (i.e. not object-orientated), clunkiness or doesn't have a pretty editor.

    My personal "hate" is for any language that resides wholly in an IDE - that doesn't have a printable form, cannot be written in a single file (even if it isn't generally done like that) or that enforces silly rules likeCapitalsInTheMiddleOfWords.

    1. Tom Melly

      Re: A glaring omission

      I'm not sure SQL is considered a programming language (and, as a general rule, the more your SQL looks like a program, the more likely you are to be doing it wrong).

      1. Anonymous Coward
        Anonymous Coward

        Re: A glaring omission

        "and, as a general rule, the more your SQL looks like a program, the more likely you are to be doing it wrong"

        Have you mentioned this to Microsoft?

  39. Tom Paine

    I was a n00b developer struggling to convert rusty memories of Sinclair Basic into working VBA code when someone lent me the Llama book. I have a vivid memory of standing reading the first chapter, the 'secret words' program, on a rush hour tube train in about 1995/96. I stared at one of the quintessential Perl contructs - something like this:

    while ($foo=<f>) {

    if ($foo = /^[a-zA-Z]+$/) {

    &do_stuff;

    }

    ..when I realised it would replace two pages of code I'd been strugglng to write for days and days in VBA. It really was a road to Damascus moment - it was dizzying. Suffice to say I got the hell out of VBA at the first opportunity. I'm now head of security at a city firm, and still regularly reach for #!/usr/bin/perl for small scripting jobs - auditing AD accounts, munging data copy-and-pasted from our ghastly proprietary SIEM, making the tea... hard things are easy and possible things are possible.

    Perl 4 life!

  40. a_yank_lurker

    Perl the worst?

    I would nominate JavaScript aka JackassScript or older versions of FORTRAN aka FORTURD. Both have no clue about real variable scope and at some point you are bound to change a variable accidentally. BASIC is another inept/criminal attempt to generate a computer language.

    1. Anonymous Coward
      Anonymous Coward

      Re: Perl the worst?

      "BASIC is another inept/criminal attempt to generate a computer language."

      You are forgetting both the state of computer science when it was first designed, and its purpose. I vaguely recall one of the original Dartmouth people saying that "Beginner's All Purpose etc." was a backronym and that it was so called simply because the design brief called for a "basic interpreted language". It was intended to teach the simplest constructs - iteration, branching, subroutines - and very simple I/O. It isn't their fault that companies like HP thought it was a good idea to try to make it into something else.

  41. StefanoW

    Perl is my oyster

    I am fond of Perl because I require pattern matching and replacing in numerous text files. Actually, quite a lot of text file processing...

    1. Daniel von Asmuth

      SED is my oyster

      I am fond of SED because I require pattern matching and replacing in numerous text files. Actually, quite a lot of text file processing... AWK is bloated. Perl is for weenies.

      1. Anonymous Coward
        Coat

        ed is my oyster

        Sed is for children. ed is the standard text editor.

  42. John Styles

    The thing I'm surprised no-one else has mentioned (or if they have I've missed it) is the distinction between Perl 4 and Perl 5 (to say nothing of Perl 6).

    Where it all went wrong with the objects. What is the phrase from the Perl 5 camel book? 'An object is a reference to a blessed thingy?' Something like that.

    When you find yourself writing something like this it is time to have a long hard look at your life choices.

  43. Version 1.0 Silver badge

    ALGOL

    ALGOL, I hates it still.

  44. l8gravely

    (((((((cdr lisp))))))))

    lisp by far is the worst... never could wrap my brain around it. which probably says more about me...

  45. Pirate Dave Silver badge
    Pirate

    RPG

    God, I hated RPG. It should've never left punch-card land. IBM (et al) should have never tried to make it Englishy. Leave it on the cards, in the proper columns, where it makes sense. Nobody tries to hand-code mag-tape data, but punch-card holes are just too close to being a real, physical object, so let's turn it into a language-like thing and torment people with it. Not saying it wasn't useful in the real world, but as a "language" it was as ugly as sin and as forgiving as gravity.

  46. Petrea Mitchell
    Thumb Down

    How did PHP not win this contest

    There are languages I don't want to touch unless someone is paying me. PHP is the first one where I've decided I never want to work with it again even if it comes with a good living.

    PHP: a fractal of bad design covers a lot of it.

    1. AdamWill

      Re: How did PHP not win this contest

      Easy - it's 'most hated', not 'most utterly despised and subject to attempts to retroactively erase it from existence via black magic'. Which is every right-thinking person's attitude to PHP.

  47. alvieboy

    print map chr,map{$a+=$_}(87,17,17,-58,-52,2);

  48. DeVino
    Pint

    Pokes head above parapet at Schloss Silicon

    Chip folk like Perl as it gets the job done at the physical design end of things.

    (Can we have it twice as speedy in half the area by last Saturday please?)

    On the other hand we are not averse to Python&Ruby.

    On the third hand anything is going to be better than a combination of Tcl, Sed and Awk.

    1. Dr_N
      Trollface

      Re: Pokes head above parapet at Schloss Silicon

      "Chip folk like Perl as it gets the job done at the physical design end of things."

      While you're playing with perl scripts the tcl + sed/awk/grep guy has beat you to tape out.

  49. Anonymous Coward
    Mushroom

    You can hate perl all you like

    But it has block scope and a binding construct ('my') which is distinct from assignment. Python, the language we are all meant to love has neither of these. So it has 'global' which doesn't fix the problem and now 'nonlocal' which does fix part of it. Except if your language needs scope-resolution constructs then its claims to be lexically scoped are just bullshit.

    Perl was designed by someone who had questionable taste and knew it. Python was designed by someone who doesn't know what taste is.

  50. Gordon 11

    The Human Genome Project...

    ...was saved by Perl.

    https://web.stanford.edu/class/gene211/handouts/How_Perl_HGP.html

  51. Chairman of the Bored
    Pint

    Black perl

    I will always have a special place in my heart for a language where a poem like Black Perl actually parses. Not sure if its a good place or not, so let's drink.

  52. Admiral Grace Hopper

    All welcome here.

    I'm comfortable with many languages and enjoy meeting the challenge of their specialisations and idiosyncrasies. It can be a joy getting an insight into the thought processes of our antecedents. I learned a huge respect for the designers of S3 when I had cause to revisit it recently. Each has its own quirks that can delight or infuriate, but each language was created for a purpose and the fun lies in using it for that purpose.

    That being said, if the answer is VBA, you're asking the wrong question.

  53. Red Gritty Brick

    That's disappointing

    Two of my favourite languages are Perl and Delphi!

    I'll get my coat ...

  54. Sitaram Chamarty

    the example code in the article...

    ...is a perfect example of how Perl is *unjustly* vilified.

    All the line noise in that example is due to regular expressions -- a distinct sub-language that is nevertheless supported (though usually very badly and/or reluctantly) by all other languages.

    Since perl supports regexes as first class citizens, it gets a bad rap because of how regexes look.

    As for the $, @, {}, etc -- I've never understood this angst about perl's syntax. You expect a mathematician to use special symbols to mean special things to them. Heck, an electrician has to learn almost as much special stuff to get a license to wire your home (India excepted, heh!). Yet people think perl's using the character set a little more than other languages (which mostly stick to a-z for syntax) is a problem.

  55. Potemkine! Silver badge

    In the poll

    I'm really surprised you mention VB as a programming language! VB can be called many things but certainly not that

  56. d3rrial

    Verilog

    The very worst of languages to teach yourself.

  57. Ozzard

    R?

    Perhaps not quite as bad as APL for write-only semantics, but R is really not a nice language in which to work.

  58. JulieM Silver badge

    Perl fan here

    I don't hate Perl. I've come to understand it.

    Perl requires you to think in a certain way and if you don't get that, then you probably won"t get Perl. The first key concept is Regular Expressions. In Perl, regular expessions are literally just a comparison operator. If you don't get Regular Expressions, then you probably won't get Perl. The second key concept is redundancy. There is more than one way to do most things, and Perl never tries to force your hand. This means you have to think about which might be the more appropriate one to use under any given circumstance.

    For instance. The code sample on the front shew the operator "eq" being used to test strings for equality, but it also would have been equally valid to use a regular expression test;

    if ($origin_LANG =~ /^n/) { # nl

    # ...

    } elsif ($origin_LANG =~ /^e/) { # en

    # ...

    } elsif ($origin_LANG =~ /^i/) { # it

    # ...

    };

    And it would not be wrong. It would not run noticeably slower (the business logic inside the executing branch being the limiting factor) nor would it break any worse under unexpected conditions (i.e., a language besides "nl", "en" or "it"; it would give false positive matches with languages such as Norwegian being mistaken for Dutch, Spanish or Greek for English or Icelandic for Italian, but at least that failure mode is predictable). Nor would it be harder to extend (though careful ordering of tests may be required e.g. to distinguish English from Spanish:

    elsif ($origin_LANG =~ /^e/) { # en

    # ...

    } elsif ($origin_LANG =~ /^es/) { # es

    # ...

    } elsif ($origin_LANG =~ /^i/) { # it

    This will always treat Spanish as English. It could instead be written as:

    elsif ($origin_LANG =~ /^es/) { # es

    # ...

    } elsif ($origin_LANG =~ /^e/) { # en

    # ...

    } elsif ($origin_LANG =~ /^i/) { # it:

    (moving the test for /^es/ for Spanish before the test for /^e/) or:

    elsif ($origin_LANG =~ /^en/) { # en

    # ...

    } elsif ($origin_LANG =~ /^es/) { # es

    # ...

    } elsif ($origin_LANG =~ /^i/) { # it

    (rewriting the old test for English to require two letters to match).

    If you are already thinking Regular Expressions, though, this should not surprise you; think of /^e/ as a fairly rough test such as

    if ($h >= 1.8) { #...

    whereas /^en/ is a more precise test such as

    if ($h >= 1.8 && $h < 1.9) { #...

    But having such ready access to regular expressions can be a double-edged sword. If you have data in a known format such as HTML, XML, CSV or JSON, and you want to extract just a small portion of it, you might reasonably write a simple regular expression match to pull out the item of interest as opposed to using a library. Why walk all the way to the tool shed, in the pouring rain, just to fetch a chisel, when you already have a screwdriver to hand? Sometimes the improvised tool is perfectly adequate for the simplified case of a more general task.

    However, if and when your requirements grow more ambitious (and as a rule, every IT project tends to grow until it includes a Church-Turing Complete Interpreter), then your homebrew parser becomes the weak link. How easy it is for you then to modofy your code so aa to replace your original out-of-control ad-hockery with a proper Perl module (or executing an external program; ) will depend on how well you wrote your code in the first place.

    TL;DR Perl is a mindset-dependent language, and code written coming from the wrong mindset is liable to be bad in mindset-dependent ways.

    What i do hate in a programming language is the use of + as a string concatenation operator. Wherever this is found, another major design brokenness is never very far away.

  59. cfaber

    Haskell

    The only reason perl tops this list is because of how few people have been forced to use Haskell :)

    take :: Int -> [a] -> [a]

    take n _ | n <= 0 = []

    take n [] = []

    take n (x:xs) = x : take (n-1) xs

    How is that not clear?

  60. JBowler

    The thing I hate most is the thing I program in most

    Nothing's perfect and the more you get used to it the more you find to dislike. The only exception I've encountered is awk (NOT gawk, the one-true-awk) probably because it is incredibly simple and either does what you need or doesn't (in which case you have to use something else so don't grow to hate it.)

    Putting "assembler" in the poll is just about as useful and informative as putting ASCII in there would have been. I program in ASCII all the time and it sucks.

    John Bowler

  61. Brian Allan 1

    Nothing wrong with Perl or PHP. You just hate a language because you don't understand it!

  62. Anonymous Coward
    Anonymous Coward

    Perl

    Didn't mind it, useful as a "swiss army knife" for jobs and scripting, wouldn't do anything serious with it. Unlike the much hated Oracle Corp however who love Perl, the scripts they supply and underpin some the management tools are still coded in Perl and they don't bloody work work unless you hack them to bits to them working!

    To all you Oracle DBAs, if you use asmcmd interface, it's a Perl script under the covers that makes DB calls into ASM! About the only Perl script I've seen from Oracle that ever worked properly. Don't get me started on the abomination that is XTTDriver.pl though. A colleague and I sat and completely rewrote our own version in Python from scratch it 'cos Oracle's was such a pile of utter crap!

  63. onefang

    I have an unreasonable hatred of any programming language beginning with the letter "P", and I include Ruby as an honourary member of that group.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like