17 ms·
Perl's decline was cultural
- superkuh 11mo agoPerl's "decline" saved it from a fate worst than death: popularity and splitting into dozens of incompatible versions from added/removed features (like python). Instead Perl is just available everywhere in the same stable form. Scripts always can just use the system perl interpreter. And most of the time a script written in $currentyear can run just as well on a perl system interpreter from 2 decades ago (and vice versa). It is the perfect language for system adminstration and personal use. Even if it isn't for machine learning and those kinds of bleeding edge things that need constant major changes. There are trade-offs. This kind of ubiquitous availablility (from early popularity) combined with the huge drop-off in popularity due to raku/etc, lead to a unique and very valuable situation unmatched by any other comparable language. Perl just works everywhere. No containers, no dep hell, no specific versions of the language needed. Perl is Perl and it does what it always has reliably. I love it. The decline was a savior.
- keepamovin 11mo agoMy language learning trajectory (from 10 years old) was 8086 assembly, QBASIC, C, Perl, Java, MAGMA, JavaScript/HTML/CSS, Python, Haskell, C++, vibe coding
- pomatic 11mo agoHow old are you now? Mid fifties here. And 'vibe coding' in what exactly - it is not of interest from a programming perspective, but from a 'what does the AI know best perspective'? I've followed a similar, but not identical trajectory and now vibe in python/htmx/flask without needing to review the code in depth (NB internal apps, not public facing ones), with claude code max. Vibe coding in the last 6-8 weeks now also seems to make a decent fist of embedded coding - esp32/arduino/esp-32, also claude code.
- keepamovin 11mo ago35–44. Same thing, sometimes it makes planning errors, or misses context that should be obvious based on the files, but overall a huge booster. No need to review in depth, just set it against tests and let it iterate. So much potential, so exciting. My feeling is the current suite of LLMs are "not smarter than US" they simply have far greater knowledge, unlimited focus, and unconstrained energy (modulo plan/credits/quotas of course!). I can't wait for the AIs that are actually smarter than us. Exciting to see what they'll do.
- amiga386 11mo agoPerl's binary brings with it the ability to run every release of the language, from 5.8 onwards. You can mix and match Perl 5.30 code with 5.8 code with 5.20 code, whatever, just say "use v5.20.0;" at the start of each module or script. By comparison, Python can barely go one version without both introducing new things and removing old things from the language, so anything written in Python is only safe for a a fragile, narrow window of versions, and anything written for it needs to keep being updated just to stay where it is. Python interpreter: if you can tell "print" is being used as a keyword rather than a function call, in order to scold the programmer for doing that, you can equally just perform the function call.
- 0xDEAFBEAD 11mo agoThe Python approach seems better for avoiding subtle bugs. TIMTOWTDI vs "there should be one obvious way to do it" again.
- zahlman 11mo ago> By comparison, Python can barely go one version without both introducing new things and removing old things from the language Overwhelmingly, what gets removed is from the standard library, and it's extremely old stuff. As recently as 3.11 you could use `distutils` (the predecessor to Setuptools). And in 3.12 you could still use `pipes` (a predecessor to `subprocess` that nobody ever talked about even when `subprocess` was new; `subprocess` was viewed as directly replacing DIY with `os.system` and the `os.exec` family). And `sunau`. And `telnetlib`. Can you show me a real-world package that was held back because the code needed a feature or semantics from the interpreter* of a 3.x Python version that was going EOL? > Python interpreter: if you can tell "print" is being used as a keyword rather than a function call, in order to scold the programmer for doing that, you can equally just perform the function call. No, that doesn't work because the statement form has radically different semantics. You'd need to keep the entire grammar for it (and decide what to do if someone tries to embed a "print statement" in a larger expression). Plus the function calls can usually be parsed as the statement form with entirely permissible parentheses, so you have to decide whether a file that uses the statement should switch everything over to the legacy parsing. Plus the function call affords syntax that doesn't work with the original statement form, so you have to decide whether to accept those as well, or else how to report the error. Plus in 2.7, surrounding parentheses are not redundant, and change the meaning: $ py2.7 Python 2.7.18 (default, Feb 20 2025, 09:47:11) [GCC 13.3.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print('foo', 'bar') ('foo', 'bar') >>> print 'foo', 'bar' foo bar The incompatible bytes/string handling is also a fundamental shift. You would at least need a pragma.
- cedilla 11mo agoWhat incompatible versions of pythons do you mean? I'm entirely unaware of any forks, and the youngest version I have to supply at the moment is 3.9, which is over 5 years old and available in all supported platforms.
- superkuh 11mo agoTry to run any random python program of moderate dep use on your python 3.9 system interpreter without using containers. Most likely you'll have to use a venv or the like and setup a special version of python just for that application. It's the standard now because system Python can't do it. In practice, pragmatically, there is no Python. Only pythons. And that's not even getting in to the major breakages in point version upgrades or the whole python 2 to 3 language switch.
- zahlman 11mo ago> Most likely you'll have to use a venv or the like and setup a special version of python just for that application. Using venvs is trivial (and orders of magnitude more lightweight than a container). And virtually every popular package has a policy of supporting at least all currently supported Python versions with each new release. You need to set up a venv because of how the language is designed, and how it has always worked since the beginning. Python doesn't accommodate multiple versions of a package in the same runtime environment, full stop. The syntax doesn't provide for version numbers on imports. Imports are cached by symbolic name and everyone is explicitly expected to rely on this for program correctness (i.e., your library can have global state and the client will get a singleton module object). People just didn't notice/care because the entire "ecosystem" concept didn't exist yet. I have at least one local from-source build of every Python from 3.3-3.14 inclusive (plus 2.7); it's easy to do. But I have them explicitly for testing, not because using someone else's project forces me to. The ecosystem is just not like that unless perhaps you are specifically using some sort of PyTorch/CUDA/Tensorflow related stack. > It's the standard now because system Python can't do it. Your system Python absolutely can have packages installed into it. The restrictions are because your Linux distro wants to be able to manage the system environment. The system package manager shouldn't have to grok files that it didn't put there, and system tools shouldn't have to risk picking up a dependency you put there. Please read https://peps.python.org/pep-0668/ https://peps.python.org/pep-0668/, especially the motivation and rationale sections. > major breakages in point version upgrades I can think of exactly one (`async` becoming a keyword, breaking Tensorflow that was using it as a parameter name). And they responded to that by introducing the concept of soft keywords. Beyond that, it's just not a thing for your code to become syntactically invalid or to change in semantics because of a 3.x point version change. It's just the standard library that has changes or removals. You can trivially fix this by vendoring the old code.
- 999900000999 11mo agoPython is mentioned and I think the key reason it's continued to grow while Perl declined, is a vastly more welcoming culture. Python says you know nothing, but want to automate a small task. The community will help you. More so than any other language. Then again, Python 2 and Python 3 are two different languages. Very few projects are willing to have such a massive migration.
- zahlman 11mo ago"Willing" is an interesting word choice. There was quite a bit of resistance in the Python world despite the clear benefits. (2.x really could not be fixed, because the semantics were fundamentally broken in many places.)
- 999900000999 11mo agoIt's open source. Any one ( and I'm sure a few have tried) can fork 2.x and keep using it. 3.x is remarkably easy , you can probably onboard a non programer to Python in a month.
- zahlman 11mo ago> Any one ( and I'm sure a few have tried) can fork 2.x and keep using it. They have tried and succeeded: https://docs.activestate.com/activepython/2.7/ https://docs.activestate.com/activepython/2.7/ I still consider the result "broken".
- mmastrac 11mo agoIn fairness, Perl died because it was just not a good language compared to others that popped up after its peak. Sometimes people just move to the better option.
- frankwiles 11mo agoYeah I think I would have been considered part of the “in” crowd of Perl to some degree and it wasn’t the culture that drove me away and to Python. It was Django and the people involved with it.
- liveoneggs 11mo ago> and the people involved with it. Culture?
- MangoToupe 11mo agoPerl was (and still is) a very expressive and concise language for working with text and a unix-style system. It exists in the odd space between a shell language and a general purpose language. But, shell scripting has already become somewhat of an arcane skill. I think the article nailed that Perl was just too hard to learn for the value it provided to survive. Python is not nearly as, erm, expressive as perl for working in that space, but it is much easier to learn, both in terms of reading and writing. In other words, it encourages broadly maintainable code. Ruby is quite similar (although I think people massively overstate how much the language itself generally encourages understandable semantics)
- zihotki 11mo ago> Perl was (and still is) a very expressive and concise language And that could be one of major reasons why it lost in popularity. It was and still is easy to write but hard to read.
- jordanb 11mo agoShell is a crappy scripting language because it has primitive data structures and data flow control making it hard to manage and manipulate data as you process it between applications. The fact that newlines are such a problem is a case in point. Python is a crappy shell scripting language because the syntax around pipe and subprocess is really clunky. Perl managed to have decent data structures and also have decent syntax around subprocess calls. But I feel like the Python invoke module gives me everything I need wrt subprocess calls. I basically write any nontrivial "shell script" these days as a Python invoke command.
- deafpolygon 11mo agoPerl6/Raku killed Perl. Python 3 almost killed Python. It's normal. Once a community loses faith, it's hard to stop them from leaving.
- MangoToupe 11mo ago> Python 3 almost killed Python. People were being crybabies; the critics were extremely vocal and few. Python 3 improved the language in every way and the tooling to upgrade remains unmatched.
- symbogra 11mo agoPython 3 was a disaster and enterprises were still undertaking pointless 2->3 upgrade projects 10 years later
- jordanb 11mo agoIt was annoying but if it hadn't happened Python would still be struggling with basic things like Unicode. Organizations struggled with it but they struggle with basically every breaking change. I was on the tooling team that helped an organization handle the transition of about 5 million lines of data science code from python 2.7 to 3.2. We also had to handle other breaking changes like airflow upgrades, spark 2->3, intel->amd->graviton. At that scale all those changes are a big deal. Heck even the pickle protocol change in Python 3.8 was a big deal for us. I wouldn't characterize the python 2->3 transition as a significantly bigger deal than some of the others. In many ways it was easier because so much hay was made about it there was a lot of knowledge and tooling.
- xscott 11mo ago> It was annoying but if it hadn't happened Python would still be struggling with basic things like Unicode. They should've just used Python 2's strings as UTF-8. No need to break every existing program, just deprecate and discourage the old Python Unicode type. The new Unicode type (Python 3's string) is a complicated mess, and anyone who thinks it is simple and clean isn't aware of what's going on under the hood. Having your strings be a simple array of bytes, which might be UTF-8 or WTF-8, seems to be working out pretty well for Go.
- tguvot 11mo agoI spent year developing CMS in Perl in 1999 (HTA application with ActivePerl. wonder if anybody else did something like this). It traumatized me, and first thing that I did in my next job is to learn python and develop some core systems in it. Few of my friends moved from perl to python as well. I still remember spending time with my coworkers on bench outside of building trying to figure out #@$%$^&$%@something = []sd[dsd]@$#!&lala lines written by previous developers
- tsak 11mo agoBefore I eventually switched to PHP, I ended up writing multiple CMS-like solutions that would run via `cgi-bin` but write contents to the webroot (what we would now call a static site generator). As I was quite limited with the standard shared hosting at the time, I ended up inventing my own single file database format (it was a simple text file) to keep state. It worked quite beautifully and kept me afloat for the first few years of my life as a web developer around the early 2000s. I was aware of ActivePerl and quite liked Komodo. Thankfully I could keep myself from doing things on Windows/IIS apart from a brief stint writing a single file CMS in ASP.
- tguvot 11mo agoI wrote php2 + msql before starting in that company (and a bit of php3). Like in your case it was essentially static site generator but the management part was HTA (application hosted in internet explorer. you could write one using whatever activex/language: vbscript, python, perl). as backend we had oracle. at first we tried oracle/linux (just released). but we never managed make it work (oracle engineers that came to us failed as well). So we got dedicated sun server for it. One day I was bored, installed mysql on my workstation, made a changes in couple of queries and all of sudden i got x20 performance of sun box with oracle. Lead developer said that it's bad solution as mysql doesn't properly supports referential integrity (we didn't actually used it in oracle iirc)
- eduction 11mo agoPerl heads are downvoting you but I agree as a longtime ex Perl user that the sigils were noisy nonsense. The original intent was you could see var types with them - $scalar, @array, %hash. They immediately broke this by deciding the sigil would apply to the value /extracted/ from the data structure. So you declared array @foo but accessed an element as $foo[1]. What? There’s a logic there but already you’re violating many people’s expectations so why even have them. The sigils are now confusing many people instead of clarifying anything. The sigil idea then /completely/ failed when they introduced references and “complex data structures” (nesting arrays within arrays like every other language - in Perl this was a special thing because they had been flattening lists by default so no way to put one inside another). So now to get at a hash in a hash you used not % but $ since a reference is a scalar. $hash1->$hash2->{“key”}. Versus $hash3{“key”} for a simple hash. Just awful noisy syntax. Due to poor language design up front.
- daedrdev 11mo agoI think a big part is does someone starting to program even hear that Perl exists? No, and they start learning python and so have little need to learn Perl after that
- zahlman 11mo agoThat's why it has stayed dead. But that can't explain how it died. People don't just spontaneously stop hearing about the existence of a programming language in common use.
- SoftTalker 11mo agoHow did vbscript die? How did php die? Better alternatives came along and sucked up the oxygen.
- creer 11mo agoWhich is (sadly) hilarious because that was the reason most people seem to have gone with python: they were told "this is what we use here" or they bought the "line noise" nonsense. They never put much effort into this. But I also think that people who are truly interested in programming immediately learn that there are many different paradigms. And the net makes it dead easy for them to explore different directions and, I don't know, fall in love with haskell or something. Perl is plenty visible enough for THAT. I don't know about perl 6 / raku though.
- jordanb 11mo agoI always found the Perl "community" to be really off-putting with all the monk and wizard nonsense. Then there was the whole one-liner thing that was all about being clever and obscure. Everything about Python came off as being much more serious and normal for a young nerd who wasn't a theater kid.
- simonw 11mo agoThis made me smile given Python's love of Monty Python references - the cheese shop etc.
- tmp10423288442 11mo agoI appreciated them at the time I encountered them (mid-2000s), but they were definitely a bit cringe in their frequency and shamelessness. I wonder if younger people even know Monty Python anymore - by my time, I think people had mostly forgotten about Hitchhiker’s Guide to the Galaxy, even if 42 survived.
- edoceo 11mo agoThe kids these days have factored 42 to 6,7 (said with some inflection and hand waving)
- GPerson 11mo agoDid you come up with that? If so, bravo!
- edoceo 11mo ago6-7? No, my kid says it about a thousand time a day. Then, for some unknown reason they follow it with 41! WTF! I've shouted 42! many times and have tried to inform the child of the significant cultural and scientific importance of 42. Which, IIRC, factors to 2,3,7.
- RayFrankenstein 11mo agoThere was a lot of pressure in the Perl community to write things as succinctly as possible instead of as maintainably and understandably. That’s not realistic for use in a field with a lot of turnover and job hopping.
- chrisweekly 11mo agoYeah the joke was, Perl is write-only.
- superkuh 11mo agoWrite-only perhaps, but with perl you only have to write it once and it'll run forever, anywhere. No breaking on updates, no containers, no special version of Perl just for $application, just the system perl. Because of this, in practice, the amount of system administration mantainence and care needed for perl programs is far, far less than other languages like python where you actually do have to go in and re-write it all the time due to dep hell and rapid changes/improvements to the language. For corporate application use cases these re-writes are happening anyway all the time so it doesn't matter. But for system administration it's a significant difference.
- pjc50 11mo agoThere was really only one big forced rewrite, 2->3, and ironically Perl was killed by failure to do the same with 5->6. I agree that python versioning and especially library packaging is the worst part of the language, though.
- chrisweekly 11mo agoAgreed! My father (RIP) absolutely loved Perl and could do amazing things with it in seemingly impossibly-few characters. I got reasonably proficient w/ regex but never came close to his wizardry. Much respect for those in his rarified company.
- JackSlateur 11mo agoAren't perl modules locked to the exact version they were compiled in ? I've met many time some error "haha nope, wrong version, perl 5.31.7 required"
- IshKebab 11mo agoNah Perl just wasn't a very good language. Not every language is equally good.
- lysace 11mo ago[flagged]
- DonHopkins 11mo agoWe don't have to say such things, because the syntactic sirup of ipecac and sputtering line noise of perl code speaks for itself.
- IshKebab 11mo agoClearly not loudly enough - look at all the people here searching for some mysterious cultural reason it failed.
- zahlman 11mo agoIronically alluding to the possibility of others who would castigate you for saying something reasonable things, is not any less obnoxious than the castigation.
- deleted 11mo ago[deleted]
- forgotpwd16 11mo agoNeither is Ruby that has also similarly disappeared and article praised it? Or Lisp? On the opposite end, C, PHP, JS that are omni-present are good languages? Sometimes meritocracy and success don't align.
- calmbonsai 11mo agoNo. Perl died because other languages starting having an equivalent to CPAN and its extremely flexible syntax does not scale for medium to large team coordination.
- altairprime 11mo agoIt does if you restrict flexibility, but one of the critical flaws in Perl culture was the belief in letting everyone evolve in different directions while cooperating. It’s a genuinely charming belief, but it’s also explicitly incompatible with ‘interchangeable parts’ employment, and tends to only work in an environment where every individual is the ‘wizard’ lord of their personal domain over code. Even if you managed to train everyone to parse Perl, the cognitive overhead of having to train everyone in each other’s syntactic decisions was O(2^n) expensive, which contrasted quite sharply with Python moving that expensive cognitive overhead to the Proposals system while the produced language had slow version updates and “What we argued about so you don’t have to retread the same ground at work every quarter” mission briefs.
- writtiewrat 11mo agoSome of the reasons why I never bothered with Perl was that I had the perception that it, like Ruby, encouraged mutating and modifying classes on the fly, willy-nilly. And the lack of static typing. Python also did not have static typing (it has some optional typing now or something like it), but my perception was that monkeypatching was not abused as much in Python as it might be in Perl and Ruby. Not that I used Python a lot.
- altairprime 11mo agoPerk was never much interested in fiat-enforced restrictions. That was considered to be the domain of local policy in a given project or team and not something to declare upon its users. We’ve since determined in programming that restrictions can exceed the value of perfect freedom (cf. Rust, TypeScript vs. C, Perl). But for scenarios where rapid flexibility is key (eg. ops eng, sans sre/k8s/etc) the flexibility is more important than the restrictions. Always have an adjustable wrench alongside your fixed-jaws, just in case.
- dc396 11mo agoI was a fairly heavy user of Perl, but eventually migrated to Python. The primary reason was the generally abysmal quality of what was in CPAN compared to what was available as third-party packages for Python. I found myself having to spend way too much time fixing stuff I pulled down from CPAN far more than I'd need to for Python for the same functionality. Undoubtedly Perl stuff got better, but I didn't have time to wait.
- dunham 11mo agoI mainly moved on to Python because the startup time for scripts seemed to be a lot worse for Perl. I was a heavy Perl user in the 90's and early 2000's.
- deleted 11mo ago[deleted]
- webdevver 11mo agoi disagree, python is Just Better. ive never used perl but ive had to install it due to some antique tools requiring it, and every time its been an incomprehensible mess. i still have no idea how packages work in perl. also, it seems like everything in perl is a string? and the syntax looks like a mess. maybe its painful for guys to admit that languages could be a lot better designed, and when such langauges appeared, everyone flocked to them.
- oncallthrow 11mo ago> also, it seems like everything in perl is a string? It's actually somehow even worse than this. The Perl type system is honestly ridiculous. Most veteran Perl developers don't fully understand it. https://blogs.perl.org/users/leon_timmermans/2025/02/a-deep-dive-into-the-perl-type-systems.html https://blogs.perl.org/users/leon_timmermans/2025/02/a-deep-... is a good introduction.
- buescher 11mo agoI never really warmed to perl in its era but perl dbi was kind of perfect in its way. If you needed what it could do, it got very intuitive very fast, and was pretty terse. Both of which were supposedly the appeal of perl.
- streptomycin 11mo agoFor me it wasn't cultural. Perl was my first language because I wanted to make interactive websites and that was the most common way to do it in the late 90s. Shortly after, everyone switched to PHP because mod_php was much faster than Perl CGI scripts.
- maxbond 11mo agoSurely the people who had purely performance problems with Perl CGI scripts moved to mod_perl? I didn't figure out when mod_php was introduced from casual searching, but given that mod_perl is only a year younger than PHP it must've been available to almost anyone who was considering rewriting their app in PHP. So I have to imagine there were additional reasons. Wikipedia says that this source [1] claims early versions of PHP were built on top of mod_perl, but I can't access the archive right now for some reason so I can't confirm. [1] https://web.archive.org/web/20130625070202/http://www.theperlreview.com/articles/php.html https://web.archive.org/web/20130625070202/http://www.theper...
- streptomycin 11mo agomod_perl was a lot more complicated, so in practice "normal people" (such as 14 year old me) didn't use it because it would have required a dedicated server and some sophisticated configuration, rather than a $2/month shared hosting account.
- jeberle 11mo agomod_php was distributed w/ Apache httpd, so it was "already installed". mod_perl needed to be installed manually, so it posed immediate friction, if not a complete freeze-out, depending on the situ. I believe that was why PHP became popular.
- giantrobot 11mo agoSystems with mod_perl (or just Perl allowing normal CGI) installed, especially shared hosting was so common as to be the norm in the late 90s and early 00s. I think instead the biggest reason PHP took off was it had far less deployment friction and better aesthetics than Perl did on machines where you didn't have admin access, basically ever shared web hosting ever. Typically CGI scripts on shared hosting were limited to explicit cgi-bin directories that had +ExecCGI. At the same time hosts would often not enable mod_rewrite because it could get computationally expensive on hardware of the era. This all meant that all your dynamic content had to live at some "/cgi-bin/" path. It could be difficult to have a main landing page be dynamic without an empty index HTML just having an HTTP-Refresh meta tag to your "/cgi-bin/" path. Contrast with PHP which would be processed from any directory path and was its own built-in templating language. It was also usually included in the DirectoryIndex list so an index.php would act as a directory index leading to cleaner URLs. In the era when deployment mean MPUT in an FTP client those small differences made a difference for people trying to make their first dynamic website and look "professional".
- bufordtwain 11mo agoI thought its decline was due to Perl's confusing syntax. That's what caused me to move away from it anyway.
- js2 11mo agoPerl died for many reasons. For me, it was a language that was always too tempting to be too clever by half. I'd been using Perl pretty significantly from 1995-2000 (perl4 to perl5) when I was introduced to Python (1.5.2)[^1]. I greatly appreciated its simplicity, zen, batteries included standard lib, and REPL. I found add on packages easier to install than dealing with CPAN. I switched to Python and basically never looked back. [^1]: https://news.ycombinator.com/item?id=44790671 https://news.ycombinator.com/item?id=44790671
- notepad0x90 11mo agoI didn't like cpan and python was just easier and available, if python didn't exist I'd like to think I'd have invested heavily in perl because it was everywhere at some point.
- mschuster91 11mo agoI don't get why Ruby is mentioned before PHP. The only Ruby thing I've ever come across is GitLab, and not with positive associations either - up until maybe 3, 4 years ago particularly Sidekiq was a constant point of utter pain.
- cwyers 11mo agoI was surprised by that, too, and assumed it was a decade-old article until I saw the date at the bottom. Both being mentioned before Python is wilder, as is the total exclusion of JavaScript.
- mschuster91 11mo agoJavaScript on the backend is a rare thing to see, even in "resume driven development" scenarios it's usually some sort of static build that gets pushed to S3 or whatever.
- DonHopkins 11mo agoAre you time traveling from 1998, when AOL acquired Netscape and sidelined Livewire?
- cwyers 11mo agoNode.js is the most popular web framework/technology in the StackOverflow developer survey. Express is more popular than FastAPI, Django, Flask and Rails in the same survey. Just... what are you talking about?
- petepete 11mo agoI suspect it's because Ruby's ability to deal with strings is so heavily influenced by Perl. When I first started using Ruby after years of Perl, it felt familiar but everything was just more... sensible.
- sammy2255 11mo agoI don't understand how Perl fell off and PHP didn't
- dbalatero 11mo agoI think PHP is way more accessible syntactically, even with all the standard complaints about the language. In the early 2000s it felt like "simple C style function calls embedded in HTML templates" more or less. Not much to have to teach there. And serving it tends to be "copy the files to your web server's public dir".
- inglor_cz 11mo agoPHP is, at least for me, way, way more readable. Similar enough to Java that you don't have to re-learn syntax too much.
- wvenable 11mo agoPerl is a very difficult language. PHP was a comparatively simple language. PHP was just a scripting language for C and incorporated as many open source C libraries as possible back when open source libraries were a bit of disjointed mess. PHP's success and Perl's decline was obvious at the time.
- writtiewrat 11mo agoAs someone who doesn't really know neither Perl nor PHP, PHP is more of a domain-specific EDSL than a mainstream programming language. One of the few insights in the blog post that aren't stupid, fake, inconsistent and schizophrenic, is the one about PHP's common approach regarding spinning up new processes.
- SoftTalker 11mo agoPHP has fallen off. Who is doing anything new in PHP? PHP has a much bigger legacy of web stuff than Perl, because it was so much easier to use. But there's no future in it. Wordpress, Drupal, Joomla... all had their time but it's all in the past.
- petesergeant 11mo agomod_php was dramatically simpler to use than mod_perl. If the sysadmin set it up, you didn't need to know it was there, and your regular PHP just ran really fast. That and nothing else really copied the "scriptable HTML file" paradigm which some people really really liked and made a very low barrier to entry compared to Perl. That's really what kicked off the demise of Perl -- it stopped being the most accessible way onto the internet. PHP also didn't screw up their major language upgrades like Perl did. RoR helped Ruby push off its inevitable demise for a while, but it's going the same way as Perl. Python got lucky that it's become the defacto choice for everything ML.
- getnormality 11mo agoThe lede says Perl died because it was "reactionary" and "culturally conservative", but the content says Perl died because it had bad culture, the culture of angry, socially corrosive anonymous internet commenters. If Perl had had a good culture, then conserving it would have been good!
- Juliate 11mo agoA good culture, as time goes, is not reactionary and conservative, if only because it opens itself to the contribution of the younger generations.
- writtiewrat 11mo ago[flagged]
- themafia 11mo agoThat was effectively the culture of the Internet in general at that time. It was the "wild west" for years, because, well, it _was_ a modern incarnation of the same phenomenon.
- deleted 11mo ago[deleted]
- lemonwaterlime 11mo agoRather than its "decline was", Perl's existence is cultural. All programming languages (or any thought tools) are reflections and projections of the cognitive values of the community who creates and maintains them. In short, the Perl language shares the structure of the typical Perl dev's mind. A shift to Python or Ruby is fundamentally a shift to a different set of core cognitive patterns. This influences how problems are solved and how sense is made of the world, with the programming languages being tools to facilitate and, more often than not, shepherd thought processes. The culture shift we have seen with corporations and socialized practices for collaboration, coding conventions, and more coincides with the decline of a language that does in fact have a culture that demands you RTFM. Now, the dominant culture in tech is one that either centralizes solutions to extract and rent seek or that pretends that complexity and nuance does not exist so as to move as quickly as possible, externalizing the consequences until later. If you've been on this forum for a while, what I am saying should seem familiar, because the foundations have already been laid out in "The Pervert's Guide to Computer Programming", which applies Lacanian psychoanalysis to cognitive patterns present in various languages[1][2]. This explains the so-called decline of Perl—many people still quietly use it in the background. It also explains the conflict between Rust and C culture. As an aside, I created a tool that can use this analysis to help companies hire devs even if they use unorthodox languages like Zig or Nim. I also briefly explored exposing it as a SaaS to help HR make sense of this (since most HR generalists don't code and so have to go with their gut on interviews, which requires them to repeat what they have already seen). With that stated, I don't believe there is a large enough market for such a tool in this hiring economy. I could be wrong. [1] [PDF] -- "The Pervert's Guide to Computer Programming" https://s3-us-west-2.amazonaws.com/vulk-blog/ThePervertsGuidetoComputerProgramming-ThePaper.pdf https://s3-us-west-2.amazonaws.com/vulk-blog/ThePervertsGuid... [2] [YouTube Vulc Coop]-- https://www.youtube.com/watch?v=mZyvIHYn2zk https://www.youtube.com/watch?v=mZyvIHYn2zk
- writtiewrat 11mo agoSorry for this repetition, but how popular was/is monkeypatching in Perl?
- coopierez 11mo agoThis is interesting to me, as someone moving from a company that uses C++ to one that uses Rust. It feels like the whole culture of the former company is built similarly - no guardrails, no required testing, or code review, minimal "red-tape". In effect, the core principles of the company (or at least, the development team of the company) end up informing which programming language to use.
- diegof79 11mo agoThere is no doubt that a product’s community culture and the maintainer’s attitude have a significant influence. However, I used Perl and stopped using it without knowing anything about its internal politics or community. PHP, ASP, Java JSP and later Rails were much better than Perl for web development. * I know that for some the mention of JSP will be rare, as it was ugly… However in the 2000s it was the state of the art
- hinkley 11mo ago> if difficulty itself becomes a badge of honour, you've created a trap: anything that makes the system more approachable starts to feel like it's cheapening what you achieved. You become invested in preserving the barriers you overcame. The mentality described here has always galled me. Half the reason I’m willing to scramble up these hills is to gain the perspective to look for an easier way up the next time. It’s my reward for slogging through, not for the gathering of sycophants. I’m not sure you’ve mastered a thing until you’ve changed the recipe to make it a little bit better anyway. My favorite pumpkin pie recipe, isn’t. As written the order of operation creates clumps, which can only be cured with an electric mixer. You shouldn’t need an electric mixer to mix pumpkin pie filling. If you mix all the dry ingredients first, you get no clumps. And it’s too soupy. Needs jumbo eggs, not large. So that is my favorite recipe. But maybe this is why I end up writing so many tools and so much documentation, instead of hoarding.
- Emen15 11mo agoPerl 5's non-breaking conservatism kept old scripts running forever, but it also meant there was never a clear migration path the way Python 3 eventually provided, and that made long term planning a lot harder.
- twoodfin 11mo agoPerl did have `use strict`, so there was at least some plausible path to making non-breaking changes under a new pragma. The OP’s theory that Perl 6’s radicalism allowed Perl 5 to be conservative sounds right to me.
- syklemil 11mo agoThough at the same time the bit where `use strict` was optional wound up being off-putting to a lot of us, at least in part because we'd always wind up with _something_ that wasn't designed for `use strict` and had, uh, interesting failure modes. It's the same drive that we see from JS to TS these days, or adding type hints to Python, and even to some extent why people pick up Rust: because you get a refusal to act and an explanation rather than wonky results when you goof. IME there's been a wider shift away from worse-is-better, and Perl was kind of one of the early casualties of that. Part of that is also how science has marched on: When Python and Perl were new, the most popular typed languages were kind of tedious but not what people would consider _good_ at types these days. Perl was the first language I learned, and if I was transported back to the 1990s, I'd probably still pick it, even if I don't use it in 2025. (OK, maybe I'd go all in on OCaml. Any way the camel wins.)
- neuroelectron 11mo agoPerl being so old means it's extremely fast for what it's designed to do, process streams or pipes. In a few tasks, it's faster than C, but being much faster to create a script or program that is useful, and with the implicit syntactic sugar, and since it's so flexible, you can just do things in the one way you know how and that's usually good enough. Python is pretty good too for this and because modern computers are so fast it doesn't matter that it's much slower than perl, but if you're doing something like processing terabytes of files, it's probably worth your time to find or vibe code a one-liner in perl and torture it into working for your task.
- autoexec 11mo agoPerl is amazing when it comes to regular expressions too. It's one of the reasons why perl is way more fun to write than Python. I still use perl for regex heavy tasks. I wish that python had integrated regex into the language the same way.
- zippyman55 11mo agoMy fingers have long forgotten all the PERL they once knew. But it was always pleasant.
- ChrisArchitect 11mo agoRelated: What Killed Perl? https://news.ycombinator.com/item?id=45977900 https://news.ycombinator.com/item?id=45977900
- morshu9001 11mo agoI looked at Perl once and decided to just not use it, and hoped it'd go away so I never have to use it. Sorry, the decline was probably due to it being bad.
- d_sem 11mo agoI worked for a few years in an large org which utilized perl for build scripts, testing automation, and a few other things. I would summarize the half decade Perl learning curve as initial bewilderment, intermediate cult like praise, to advance level disillusionment. There was something about scaling usage in large teams that felt awkward and high friction.
- oncallthrow 11mo ago> Perl always had a significant amount of what you might call "BOFH" culture, which came from its old UNIX sysadmin roots. All of those passive aggressive idioms and in jokes like "RTFM", "lusers", "wizards", "asking for help the wrong way" etc. > [...] > Cultural conservatism as a first principle. Counterpoint to this: Rust. Rust has a similar RTFM/"wizards" culture, but is not culturally conservative (in any sense of the word). My two cents: Perl's "culture" had little to do with its fall. I think Perl's problems run much deeper. Perl is built on rotten foundations. It's fundamentally a scripting language (albeit with bolted on additions to make it kinda-OOP), and it therefore has all the problems that scripting languages have for building large software projects. Those problems have no quick fix, and indeed fixing them would require throwing the language out entirely -- at which point, why not simply switch to another language entirely (which is exactly what happened...).
- twoodfin 11mo agoProbably stretching the cultural metaphor too far here, but Rust has much more of a “vanguard of the proletariat” vibe & appears susceptible to some of the problems inherent in that political mission.
- tbrownaw 11mo agoThe reason I mostly use Python is `python3 -mvenv env`. If I know that everything I might want is part of Perl's built-in modules, I prefer Perl.
- zahlman 11mo agoPsst: even if you aren't using uv, you can use a global pip with `--python` and create your venvs `--without-pip` to save time (unless you have many invocations per venv, since `--python` works through a not-very-sane hack and is a bit slower as a result). And you can use Pipx to provision that global pip, and then you also have Pipx available. https://zahlman.github.io/posts/2025/01/07/python-packaging-2/ https://zahlman.github.io/posts/2025/01/07/python-packaging-...
- 1vuio0pswjnm7 11mo agoPerl is still required for compiling autotools, openssl, nasm, etc. As such, is likely to be around for a long, long time Python is sometimes required for compiling software, too, but projects like the ones mentioned above requiring Perl have not switched to Python
- anarticle 11mo agoPerl was of a time, so it's important to remember when it was around. CPAN was legitimately one of the first package managers for a programming language that WORKED. Contextually, its references are bash, sed, awk, and other cli tools. There are too many ways to do things in perl because of the various flavors / takes on how to do things. It was also a fun way to write cgi apps in the era of C/C++. Is that the best way to do things today? No! It was one way to do something complex in few lines of code. It was the python of its day in many ways. There are tons of quirks that are interesting that influenced language development today, for me the spaceship operator "<=>" was a fun one. You can have a flip through the camel book to see what kind of stunts were common in its era. It is an auteur language that was not really done the way languages are today. Perl 6 did massive damage to the community mainly because it was so different that it looked like a fantasy language. That along with Parrot really lost the plot for me, I had mostly stopped doing that kind of work and moved on to R for my bioinformatics things. Bioconductor was the bees knees. I'm surprised at all the haterade, probably you're either <30, and/or being overly critical of a very nascent tech era. Perl was pre and post .bomb, and had one of the first online communities that I remember that shared tips and tricks at scale at perlmonks.org. It predated stackoverflow! It was a very different time to now. This was also from a time when people still paid for compilers(!) I am deeply biased, as I wrote a 3d distance calculator in Perl for small molecule drugs. We were looking for disulfiram analogs doing biopanning and then simulations. There was a great PDB library for structures at that time that saved me tons of time. This was circa 2005~, ages from now.
- darrenf 11mo ago> [TIMTOWTDI] literally means 'there is more than one way to do it in Perl' - and you can perhaps infer from that that there's little to no reason to do it using anything else Not my experience at all, FWIW. For me, and the vast majority of Perl devs I’ve worked with over the past 30 years, TIMTOWTDI absolutely means some of the “ways to do it” don’t involve Perl, and that’s not only OK but expected. Of course Perl isn’t the be all/end all. It’s a lot of fun though! (I’m a majority Perl coder to this day, it’s my favourite language by far. Hell, I even find it readable and easy/fun to debug)
- writtiewrat 11mo agoHow popular was/is monkeypatching in Perl?
- darrenf 11mo agoVery. I use `Test::MockModule` (not just in tests) or `Sub::Override` or `Class::Method::Modifiers` a lot, according to convention/style or as I see appropriate — but there are, of course, tons more ways to do it.
- sivoais 11mo agoIt is possible to do so, but it stands out in a way such that most people aren't doing it using direct language features unless necessary. If you have `strict` and `warnings` enabled, which is recommended, then the interpreter can give runtime warnings or compile-time errors if you try to manipulate the symbol table or redefine a function. If you still want to use those on a case-by-case basis, you have to turn off those pragmas within a scope. So there are built-in ways the language discourages using them arbitrarily. In tests, you can use monkeypatching as a quick way to mock, but typically, you use modules that wrap up the functionality and make it cleaner. The mocks get cleaned up on scope exit. There are also more principled ways of having composable behavior, such as <https://metacpan.org/pod/Class::Method::Modifiers https://metacpan.org/pod/Class::Method::Modifiers> (advice/method combination). There is another approach that takes advantage of the variety of scoping approaches Perl has. If one uses `local`, it indicates the use of dynamic scope rather than the standard `my` lexical scope. This can be used for things like setting an environment variable temporarily and automatically reverting it when leaving the scope. But this is not common.
- nucleogenesis 11mo agoThe number of blogs posted on here by people who can’t be arsed to make their writing legible on mobile blows my mind. Did everybody just skip the section of their CSS journey that covered media queries or what? I enjoyed the article but it was a nightmare to read on my phone’s browser
- colinstrickland 11mo ago(Author) Sorry you had a poor experience, yes my blog "engine" is a hacked together POS that barely works, with hand written CSS, that was mostly built before the mobile first era, I have just tweaked it to work somewhat on portrait phone screens, but it's really not a very good website. I do try to generate fairly plain semantic HTML so the pages should work pretty well with "reader mode" or user stylesheets if you have access to that. That's probably the optimal experience.
- nucleogenesis 11mo agoI definitely should have just opened it in reader mode in Safari but I just told myself I’d just not lose my spot again several times like a dope
- intalentive 11mo agoFine for me on iPhone Safari.
- outside1234 11mo agoC'mon. The language was like something born in Hogwart's. Magic spells, incantations. It lost because it was not an easy language to learn - and others were (in particular Python) - while being just as powerful.
- jancsika 11mo ago> None of this is literally serious, Exactly. I remember someone telling me to RTFM when I posted a question on IRC back in the 90s. Luckily, I explicitly asked if they were serious. They responded of course not-- they were kidding! Then they PM'd me with hidden link that had an image map of Perl wizards with whom I could schedule a free meeting and coffee to get started as a newbie. I was skeptical-- who cares about some random noob from the interwebs?!? Well, Perl, apparently. That face-to-face meeting left me with goosebumps that I feel to this day when I think back on it. It turned out to be an important confidence booster and my chief way into programming. I don't think it's an exaggeration to say that without Perl's focus on outreach I would never have served as president of Software Local 2142. Like my wizard mentor told me when I tried to pay for the coffee that afternoon: Perl it forward!
- kstrauser 11mo agoI need to hear more about this Software Local 2142.
- Suppafly 11mo agoI can't tell if this is real or real funny.
- kbelder 11mo agoNeither?
- chuckadams 11mo agoLooks like slashdot-era copypasta.
- m463 11mo ago... I’ll have you know I graduated top of my class in the Navy Seals, and I’ve been involved in numerous secret raids ...
- ____tom____ 11mo agoperl died because "Perl is write once, read never"
- Nextgrid 11mo agoExecutable line noise.
- fenazego 11mo agoMy first and only experience with Perl was like this: in 1997, just for fun, I tried to write a program in Perl to turn my Mozilla bookmarks into a website. After a week of not succeeding, in frustration I decided to try Python. In two days I had what I wanted, and programming it was a joy. That sealed my judgement that Perl (and all of its culture) was not for me, so I'm not surprised at all that others might feel the same. (To be fair, there's a single oneliner that does make life a lot easier: ... | perl -pe 's{...}{...}')
- kwoff 11mo agoI hope this doesn't come off as argumentative. You said that with Python "In two days I had what I wanted", but another way of looking at it: in a week of not succeeding in Perl plus those two days in Python, you had what you wanted.
- chihuahua 11mo agoI had an interesting experience starting a job at ZipRecruiter, and finding that up to that point (2022), most of their code had been written in Perl. Their CTO had just gotten fed up with Perl and decreed that from now on, all new projects should be written in Go. I was the first one on my team to write code in Go. There were various greybeards who kept telling me that Perl was a perfectly fine language and was fast enough for most purposes. I didn't argue with them and just backed away slowly. Regarding Perl as a language, it seemed fine in the 1990s as a slightly more advanced alternative to Unix shells. But for me, what made it a failure as a language is that in order to have an array of hashes, or a hash of arrays, you needed to use references. That may have been a nice hack to enable some things in the 1990s, but even in 2005 that sounds pretty primitive and outdated to me. Plus the reliance on using magical variables consisting of $ and every non-letter ASCII character for all kinds of random stuff, like $_ and $# and so on. That may have been cool in 1992, but it's not 1992 any more. Overall, Perl was pretty neat for little scripts up to 20 lines, but a bad idea for building an entire company on (like ZipRecruiter.) That's more of an indictment of ZipRecruiter than Perl.
- fredsmith219 11mo agoMy client uses IBM servers with it’s hobbled version of Unix (AIX). Perl and access to copilot have really helped me out. I don’t love Perl but I’m damn glad I have acres to it.
- twentyfiveoh1 11mo agoearly pearl was just about having an awesome tool at your disposal. There was minimal code written in a team environment. People were still amazed that you could do X in 1 line rather than 100 lines. Some people couldn't have done those 100 lines. So the idea of recipes/spells/hacks was an intentional parallel. It became a cultural thing. New people wanted to be respected for compact code that impressed people the same way they were impressed.
- PLenz 11mo agoI'm really, really confused by the typescript overtaking python comment, they're not really tackling the same domain of problems, right?
- troad 11mo agoI thought it was really perceptive. Look at what JS was designed to do cf. what it's actually doing these days. Turns out it doesn't really matter what domain you were originally trying to tackle. If you've stumbled upon a low friction way of achieving other things, people are going to use your tool for those things, even if it's not the optimal tool for those domains. I dread the JS/TS future, but it's obviously coming.
- stack_framer 11mo agoShould the Rust community take a lesson here, and maybe the Zig community to an extent? To me it seems that some in the Rust community in particular, perhaps because they're just the most vocal, are tightly coupled to progressive, social activism. I guess in general I just find myself wishing that political and social issues could be entirely left out of technical communities.
- valiant55 11mo agoI'd love for politics to not infiltrate most aspects of life. Until everyone is able to, at least in part, persue life without being oppressed because of their immutable attributes, their belief or lack of belief system, who they choose to love and/or how they view themselves I think it's our civic duty to crusade for those causes.
- stack_framer 11mo ago> I think it's our civic duty to crusade for those causes Why crusade using the resources of a technical community though? Surely it alienates the people who don't happen to align with the causes important to you. There are myriad ways to perform your civic duty in your city. You could knock doors and encourage people to vote, for example. Why do it through a technical community?
- array_key_first 11mo agoThere is zero way you don't alienate anyone. Ask women software engineers if they ever feel alienated. That's the reason why some communities like the python community do outreach for minorities in tech. I'm a white man, and I have never felt "alienated" in so-called progressive spaces.
- stack_framer 11mo ago> outreach for minorities in tech Why is there no outreach to other minorities in tech, like the Amish, for example? They are certainly more underrepresented than women in the python community. Or how about male ballet dancers? Why isn't the python community allocating some of its resources to helping them feel seen and included? I'm giving ridiculous examples because the whole premise is ridiculous. And my general question remains: Why devote the resources of a tech community toward one social issue/group or another? There are plenty of other outlets more suitable for doing our civic duty.
- rcarmo 11mo agoThis tracks. My own experience was that I moved from Perl to Python (for system and API stuff) and PHP (for templating and HTML). The only thing I kept using Perl for over a decade was RADIUS (we ran Radiator, which was arguably the most insanely flexible AAA server for ISPs)
- heikkilevanto 11mo agoI don't know, but for me Perl has not died at all. I still use it for smallish scripts and some CGI. Maybe I am an old retired fart, but it is the tool I reach for, when the problem looks like Perl-ish. Like I reach for C or other languages when I need that kind of things.
- michaeld123 11mo agoagreed. it's often in my toolbox -- mostly since I already know it, and I prefer semi-colon-driven syntax -- but it's just one of a few languages I use.
- grim_io 11mo agoAt first glance it looks like shit. That's all the reason I need to never touch it. It doesn't feel like I've missed out.
- dana321 11mo agoI remember the first time a saw Perl, it looked like some kind of alien language from outer space, all the symbols it used looked insane. But once you get it, its pretty intuitive to use. The worst part about it was the syntax for object oriented programming, which in raku (perl 6) is a lot better and intuitive. Raku has some great ideas like grammars, but has a lot of new magic symbology and lost what i thought was an intuitive way of regular expressions in Perl 5. =~ vs ~~
- xyzwave 11mo ago“Warning: Smartmatch is experimental at foobar.pl line 42.” If only I had a dollar for every time I’ve seen this message.
- 0xbadcafebee 11mo agoI think it's worth pointing out that Python only became popular after Google started using it. Remember when every nerd on the web was an ardent defender of Google? When people wanted to reach for a new language (say, for data science, also a new thing at the time) they reached for that slightly obscure yet easy to learn language that the cool tech company used. Schools adopting it exposed it to more people, but they picked it up, again, cuz Google used it and it was easy to learn. Nowhere in that decision-making process is there the consideration of if it's actually a good language, more efficient, more flexible, more powerful, faster, etc. It was ease of use and "the cool kids are using it".
- deleted 11mo ago[deleted]
- laughing_man 11mo agoMy problem with PERL was always that there's just too many things to remember, particularly if the code I'm debugging was written by someone who knows the language well. I'd be on a PERL project for awhile, then get pulled off to do Java or Ruby or whatever. By the time I needed to do PERL again, I had to go back and relearn everything. I never had that problem with Java, Ruby, Python, or Javascript. Also, PERL allows you to write the most unmaintainable code I've ever seen. I ran across a single line of PERL that would read a buffer, do some simple data transformations, add framing information (some of it derived from the data like length, data type, and checksum), and then write out the completed buffer. It was beautiful. And also completely unmaintainable. Even the guy who wrote it didn't remember how it worked and had to fiddle with it for twenty minutes before he remembered a variable he used was getting set as a side effect of something else later in the line. That's great for a programming contest, but not so much for production code you may be tasking a newly minted software developer with maintaining. Granted, you can write maintainable PERL code. But over the years the PERL has been hands down the least maintainable in different jobs and projects.
- kwoff 11mo agoPerl's "decline" means there is some metric to measure how high Perl is. It was higher, but now it is lower. I don't think the metric is well-defined, though.
- JSR_FDED 11mo agoPerl was the duct tape of the Internet. Regardless of the culture issues, it was effective!
- smithkl42 11mo agoPerl failed because it's a write-only language. The only time you really understand a Perl program is when you're writing it. Check back in six months and good luck. It's like trying to read someone else's regular expression - and the connection between Perl and Regular Expressions is not accidental.
- majormajor 11mo agoI never interacted with the "Perl community" described here. When I used Perl in a past job it was in the "just google for how to do things" era. The syntax, full of @ and %, was convoluted and made you have to think about more things compared to Ruby or Python without giving you that much apparent power or benefit (as opposed to when you'd need to think about types more in Java or a C-family language). Neither Ruby, Python, nor Perl were in my first three languages (Pascal, C/C++, Java were those). Ruby, Python, Matlab, R, and Perl all came later for me, within a few years of each other. Perl did not have anything like the approachability of Ruby and Python coming from that Pascal/C/Java background. (IMO Python is losing some of that now, especially like in the last project I encountered in a professional capacity in Python where optional type hinting was used but wasn't always accurate which was a special sort of hell.) EDIT: the article even touches on this some in its description of Ruby: "Ruby is a language for programmers, and is at this point an sensible candidate for building something like Rails with - a relatively blank canvas for dynamic programming, with many of the same qualities as Perl, with less legacy cruft, and more modern niceties, like an integrated object system, exceptions, straightforward data structures." Ruby was newer, and wasn't something that grew out of sysadmin tools, but was always a full fledged OO application programming language first. So my disagreement with the article is that the culture then doesn't matter because no perl culture changes would've been able to reinvent the language as a nicer, newer language like Ruby because it never would've been perl anymore at that point.
- thaumasiotes 11mo ago> the last project I encountered in a professional capacity in Python where optional type hinting was used but wasn't always accurate which was a special sort of hell. But that's the entire purpose of optional type hinting. If the hints had to be accurate, you'd have mandatory typing, not optional hinting.
- majormajor 11mo agoI think the purpose of optional type hinting is that you don't have to add it everywhere all at once, not that it doesn't have to be accurate. I guess you could split hairs and say "hint" doesn't imply perfect accuracy, but... adding a language feature that can lie really seems to have a lot of downsides vs upsides; whereas at least optional has obvious migration benefits. You could have optional type hints where the runtime would still yell at you - maybe even from just an optional flag - if you returned a string out of a function that should return an int. Because as-is, once you have those function that says it returns an int but returns a string instead, etc, in a big codebase, your editor tooling gets really confused and it's way worse to work through than if the hints weren't there at all. (And there are tools in Python that you can use to inspect and verify the accuracy. But those tools are also... optional... And if you start to apply them to a codebase where they weren't used, it can be very time-consuming to fix everything...)
- bpbp-mango 11mo agoI tried to learn perl a few times early in my career, we still had some old perl internal sites and a bit of tooling written in it. I really struggled to find good resources on the web at the time, and most of the perl I was exposed to was so badly written as to be incomprehensible to me. I knew C and Python at the time. I wonder how common my experience was and why the next gen (at the time) I was part of never learned it
- padjo 11mo agoI had the exact same experience. The Perl I encountered early in my career seemed hard to understand in way other languages weren’t. I also didn’t feel I made progress quickly trying to learn it, every time I thought I had my feet under me I’d encounter a new sigil or a new pattern and be back to having no idea what the code was doing.
- david_shaw 11mo agoYes: in retrospect, the Perl community (and maybe even the language in general) was cringe-worthy and perhaps even toxic. But at the time, that elite and esoteric language drew me and many others to it in much the same way that *BSD and arguably even Linux did. The way that programming computers in general did. It wasn't a pleasant vibe that anyone should strive to recreate, but Perl was something that felt cool to many nerds back then. Perl's decline being cultural is a good thing: it's because the industry grew and matured.
- Simplita 11mo agoPerl shaped so much of early web culture. It’s interesting how a language can fade not because of capability, but because the community’s momentum shifted elsewhere.
- INTPenis 11mo agoPerl was my first favourite programming language, used it for most things, from 1999 until switching to Python in 2012. I still find the occasional Perl script in my current job, usually going through someone's legacy infrastructure, and I always have the same reaction, "phew I'm glad I switched to Python". That reaction has nothing to do with the culture, it's 100% technical. Just a few of the main points, I don't know why Perl coders were so adverse to comments, it's almost like some of us took a perverse pleasure in producing the most illegible piece of code. It's like a stream of someone's consciousness. I used to take pride in being fluent in PCRE, as well as some other dialects, and looking through an old Perl script you easily see why, it's used on every 10th line. And it always strikes me with a sense of relief when I realize all those instances of Regex are solved in a more OOP/Pythonic way today. Regex is something I reserve for edge cases.
- huflungdung 11mo ago[dead]
- psadri 11mo ago25 years ago Perl allowed you to express what was in your head 10x more concisely as in other mainstream language (which have since caught up with some of the features). This was not the best when it came to others (or even yourself 6 months later) reading the code. But it was great for cranking stuff out that was simply too tedious in other languages.
- procaryote 11mo agoBy a lot of metrics it was a pretty awful language; hard to read, implicit, inconsistent, uncomfortable to write due to all the special characters etc. The idea of default arguments alone should have killed it by being a monumentally bad idea. In my recollection perl6 helped kill it by making perl5 stagnate, but hopefully it would have died regardless.
- hexo 11mo agoOh Perl, the programming language entirely made of footguns. Is it dead already?
- relistan 11mo agoWay back, Perl got off the ground really because, in contrast to the C compilers of the era, code written on one Unix ran on the others, usually unmodified. In my first jobs, where we had heterogeneous mixes of commercial Unixes, this was unbeatable. It also wrote like higher level shell, which made it easy to learn for systems people, who really were the only ones that cared about running things on multiple platforms most of the time anyway. As things became more homogeneous, and furthermore as other languages also could do that “one weird trick” of cross platform support, the shortcomings of both Perl and its community came to the fore.
- Deeg9rie9usi 11mo agoWhile I don't code in perl myself, one modern tool I use a lot is written in perl: https://github.com/digint/btrbk https://github.com/digint/btrbk
- BergAndCo 11mo ago[dead]
- dash2 11mo agoI dunno, I interacted with perl about 2000-2003 in a small way, it always seemed pretty friendly and welcoming, I loved perlmonks and remember it happily. I'm a bit sceptical about this: > (Pause a second and ask yourself about the sort of social culture that both allows this kind of behaviour at public events, and then chooses to embrace it as a key piece of cultural lore) Is it really so terrible that someone throws a coffee cup or two at a wall to make a point? Sounds a bit pearl-clutching.
- artyom 11mo agoPerl was aimed at intelligent people that considered obfuscated code challenges a sport and had a tendency for masochism. Its main achievement is being there first, before everyone else, to run server-side code in a scripting/interpreted language. The rest wasn't neither cultural nor technical. From a purely business perspective, having to fight against an idiosyncratic tool half the time doesn't really make much sense.
- deleted 11mo ago[deleted]
- leoc 11mo agoI'm not sure about the Perl-specific claims here, but it is amusing how pervasive "on one or more occasions, I got a dopamine release after managing to struggle through the horror and misery of X: now I'm convinced that X is Good, Actually" seems to be in computing.
- nmz 11mo agoBut isn't this everything? All of computing is a struggle for me at least, all followed with confusion and "Why did they make this, this way?"
- IshKebab 11mo agoBut is it all equally a struggle? Some things are definitely more of a struggle than others. Remember xfree86config? We used to have to manually configure our screen resolution in a shitty text file. I even remembered that you had to specifically add a line to tell it you had a 3 button mouse. This was in the late 90s, maybe early 00s. Way after it was sane to have to do that. And I specifically remember when they fixed it there really were some people who pushed back against the change. Kind of unbelievable but it's true. I guess psychologically they felt that it was unfair that they had to struggle and future people wouldn't have to. But they couldn't just say that so they came up with nonsense technical objections.
- leoc 11mo agoOne of those many cases where X = X.
- smt88 11mo agoI didn't have this experience when I first learned C#. Everything just kind of worked the way I expected it to. There are sharp edges, but far fewer than expected and always for an actual reason.
- zzzeek 11mo ago> I wrote a lot of Perl in the mid 90s and subsequently worked on some of the most trafficked sites on the web in mod_perl in the early 2000s, so I have some thoughts. Hey me too exactly! I wrote the CMS for mlb.com in 2003 entirely in mod_perl. This post is indeed a little walk down memory lane of the Perliness of the 1990s. I spent most of the 1990s enforcing everyone in my team (yes, by 1998 they made me in charge, totally inappropriately) use Perl on awkward environments like Windows NT because giving in to horrendous systems like Active Server Pages or...shudder...Cold Fusion represented the heat death of the profession. Microsoft was determined to to murder the whole "RTFM / TMTOWTDI" culture and replace it with their own brand of corporate mediocrity (remember, there was no XBox at this time. Github? no, source control was in Visual Source Safe [narrator: your source code was, in fact, not very safe!]. MSFT was 1000% uncool and evil). But ultimately mod_perl's decline was technical! It's syntax, organization and operation were enough to get us through the 90's but were at the same time doing violence to one's cognitive facilities. Python came along and fixed everything that was wrong with Perl. I started in Python porting things from Perl, like HTML::Mason, because I was not yet enlightened enough. But I got there eventually.
- nottorp 11mo agoI always thought Perl faded because it's write only and more readable alternatives showed up. Why did it have to take over the world anyway?
- hylaride 11mo ago> Why did it have to take over the world anyway? Because it was there, mostly. In a UNIX world where text was everything, it was well suited to quick and dirty solutions (that then morphed into long-term technical debt). Most alternatives at the time were not there by default as they either were commercial or otherwise didn't have any ecosystem to expand it's utility (like CPAN - without it Perl would likely be like awk - a fully capable language, but only used for one-liners 99.999% of the time).
- nottorp 11mo agoWell that's not what I meant. Does everything has to have taking over the world as a goal? Perl still exists, I guess it's updated, why isn't that enough?
- hylaride 11mo ago> Does everything has to have taking over the world as a goal? Perl still exists, I guess it's updated, why isn't that enough? I never got the impression that perl's goal was to take over the world, but it was good at dealing with certain kinds of problems at a time in computing where it mattered, especially for one-offs. The 1980s/1990s was full of many, many different data formats in a time before XML/JSON, often by long dead companies. Many a tech person was in a situation where "Oh fuck, how do I get this data out of some obscure database or other data format from some dead company that only ran on SCO UNIX or whatever into SAP/Oracle/etc" only to see somebody else already done it and made a CPAN module. It also became an early CGI workhorse because, quite frankly, it was just there until much cleaner web-native languages started to show up. Anecdotally, as part of some corporate lawsuits that involved stuff going back decades, a former colleague of mine recently had to grab ancient data for an insurance company from backup tapes that were last accessed in the 1980s (apparently getting readers for them was its own story). The only google results he could get for the data formats stored on them were literally usenet posts from the 1990s of people discussing working with it and...some CPAN modules somebody wrote to export it. He did chuckle when for the first time in his life he used tar without the -f switch, though.
- tracker1 11mo agoI always thought of Perl as write friendly... And Ruby as Perl++. I feel it only gained any web traction in the sense that it was widely available and already there in the early cgi-bin approach. On the last comment, I've taken to using Deno/TS for most of my shell scripting type tasks these days. In general it's worked very well for me.
- deleted 11mo ago[deleted]
- joeiq 11mo agoSpot on: the toxic culture around the language was a nail in its coffin. A classmate who introduced me to Linux in the early 2000’s was a Perl enthusiast who completely embodied the RTFM mindset. If someone didn’t already know something they were mocked. We ceased to be friends after a number of these interactions.
- giantrobot 11mo agoThe cult of RTFM is so painful to interact with and off putting. The concept is sound, reading documentation is important. However simply responding to all questions with "RTFM" is not only not helpful but as often as not useless advice. The documentation for something may not exist, may not be clear, or may just be wrong. Unless you specifically know the answer to a question is laid out clearly in the documentation, blindly telling someone to read the documentation is just being a dismissive asshole. A much more productive and helpful response is "did you RTFM?" or "check section X of the manual". But those sorts of questions require the desire to not be a dismissive asshole. The cult of RTFM has always been an impediment to Linux becoming more popular. When I was first learning Linux...almost thirty years ago now...the cult of RTFM nearly put me off the whole endeavor. I was asking for help with "Xwindows" on IRC and the responses were either RTFM (which I had done) or pedant diatribes about "it's X, not Xwindows newbie! It's not micro$oft!" Which was a super fun to deal with. The experience steeled my resolve to at least ask someone if they read the manual before assholishly telling them to do so.
- PaulRobinson 11mo agoOf course it was cultural. This article covers it all in more detail, but I was coding a lot in this period of Perl's decline, and in hindsight it was all so obvious. I wrote a lot of Perl 3 and Perl 4 to date my experience. Rails was designed to be a luxury hand-holding experience using a language that was intended - as a design goal - to make programming fun. There was even for a while in the late 2000s the culture of _why and MINSWAN. PHP was fast, easy, forgiving. It also led to such awful code that several companies banned it. I think nearly all of us who got to deploy code with nothing more than FTP miss that. Of course today it runs more of the web than any other language. Perl on the other hand wasn't interested in any of that, so many people just left because they were pulled by better ecosystems that took the web seriously, or pushed by a culture that believed the priesthood was real. For me, Rails and Ruby were genuinely joyful discoveries after spending a couple of years wrestling J2EE and .NET apps in the ~2002-2005 era, and the Perl community felt crusty and unwelcome and immature by comparison. Today I'm no fan of come of the politics of people being some popular Ruby frameworks cough, but I enjoy Ruby and I'm enjoying my dive back into systems programming via re-learning C and taking a long look at Zig. I'm not sure I'll ever write "production" Perl again.
- majormajor 11mo agoBut could a different culture have actually changed Perl to be friendly and fun like Ruby? Without completely torpedoing compatibility with existing code and essentially creating a whole new language anyway? Or did the language itself just get outdated and replaced? (there's nothing wrong with that! most things don't last forever!)
- wting 11mo agoThis requires those with power to relinquish authority and/or try new, unfamiliar practices and accept possible failure. Any company/organization can theoretically change its culture, but it's quite difficult in practice.
- klodolph 11mo agoI feel like I grokked Perl enough and I still write Perl code, but I also think that there are some technical reasons why it declined in popularity in the 2000s and 2010s. All those differences between $ % @, the idea of scalar or list context, overuse of globals, and references. These features can all make sense if you spend enough time in Perl, and can even be defended, but it creates a never-ending stream of code that looks right but is wrong, and it all seems to create a lot of complexity with very little benefit.
- broken-kebab 11mo agoThis theory may only sound convincing if you ignore parts of history which don't fit. Which is pretty much all of them. RTFM-culture was the norm for all online computer-related communities until 00s. Nothing of this phenomenon is Perl-specific. In late 80s and early 90s professional knowledge was way harder to get. Learning required significant devotion, and often was obtainable through experience only, and at the same time computer-related work wasn't as well-paid as it will become later. And had controversial social standing. Like, my brother said "It will hurt your chances with girls, bro!" when I told him I want to be a programmer, and with typical sibling-love added "This, and your ugly face of course". RTFM emerged naturally with all of these: people paid with their time and social life for this knowledge, and wrote down what they found in manuals, most often for free, and you can't just bother to read them? FWIW most BOFH types in my memory were C programmers, and early Linux UGs. Perlists in comparison were mild, and way more open (Perl community included biologists, linguists, and other non stereotypically computer people). Perl decline was to some extent a cultural thing. But absolutely not the culture the author means. In Perl Larry Wall promoted a sort of expressive style of writing code where you can chose between several compiler-equivalent ways to implement logic: There is More Than One Way To Do It (aka Tim Toady) principle. The alleged reason is that the choice you make conveys some subtle nuances of your thinking which 1) gives you more comfort while coding, 2) gives potentially more information to someone who will read your code. This was outrageously contrary to the mainstream tendency of commoditization of software development (and software developers) which started to gain the steam at those times. Managers wanted (and I guess still want though to the date the idea mostly failed) THE one and only right way to code each task, peferrably with the only one language (with Java as the main contender), standard training programs, and certifications - all across all domains, and as a result replaceable and transferrable coders. Perl was clearly unfit for this perfect future with its proud selection of 4 or 5 implementations of OOP, and it hurt the language promotion a lot. And then there was disastrously optimistic declaration about soon-to-be major uprgade to Perl 6 which in reality will take 15+ years, all while lots of interesting things happening outside.
- astrange 11mo agoI remember Perl programmers as being weird but nice enough. It's Lisp programmers who were impossible to talk to and mostly responded to any questions by telling you to kill yourself. I remember reading those BOFH stories because I thought it was how you became a cool technical person at the time, but never figured out why he was so angry. Eventually I realized it's because he was Gen X and in academia, so they probably had no money and all had lead poisoning.
- lagniappe 11mo agoNobody will agree with this hot take, but I was around in the perl years, so maybe take this opinion with a grain of salt: Perl wasn't arcane on purpose, the bar for being a programmer was just that much higher, born through necessity as we didn't have as much material to easily turn someone into a capable engineer, so to make anything work you had to -really- be motivated to learn, and that extended to the entire skill tree of things that happen before learning to code, like simply navigating the machine and being able to reach the realization that you needed to write something on your own. Perl evolved to suit the needs of those that used it at the time, and it reflected their interests, skills, and abilities. These days everything is so abstracted, so available, so easy, all of the material to learn literally anything is free and at your fingertips, programmers don't need to be that knowledgeable to identify a need and generate some code that mostly addresses that need.
- majormajor 11mo agoThere were programming envs that were easy to pick up in contemporary times. Hypercard is one that's often especially-fondly referenced as a non-traditional-programmer friendly example. Basic was much less arcane syntax-wise too. It's been a LONG time since I used Pascal but I also remember it being simpler to pick up. But Perl specifically came out of a fairly arcane sysadmin-y corner of the world full of other already-arcane tools like awk and sed. And those were a decade older, but by the late 80s they weren't the only thing around to compare to.
- more_corn 11mo agoOr was it that Perl is a write only language and readability is maintainability?
- worik 11mo ago> Any requirements for more modern application patterns that are emerging in the broader web development environment, like idk.... asynchronous I/O, A good article, but there is nothing new about asynchronous I/O This is a good article, but Golly, that was a faux pas!
- nahuel0x 11mo agoPerl was a bad language, line noise. It was better than using bash and awk for complex scripting, and better than using C for CGI pages. But Python and PHP were better and more readable for those use cases, and killed Perl.
- jonathaneunice 11mo agoPerl's decline was cultural in the same way VMS's decline was. A fantastic approach and ecosystem—just one overtaken by a world that was moving on to a different set of desires and values. PHP emerged as a separate language and community and "ate Perl's lunch" when it came to the dominant growing app style of the Aughties... web pages and apps. Had PHP instead been a Rails-like extension of Perl for the web, sigils would have reigned for many years more. But there was never a WordPress, Drupal, or similar in Perl, and no reason for anyone who wasn't already highly connected to the Unix / sysadmin community to really give Perl another look. By 2005 if you weren't already deep into Perl, you were likely being pulled away to other communities. If you were into Perl, you were constantly lamenting why newbies and web devs weren't using your language, just like the DECUS and VMS crowd did a decade earlier as Unix and Windows consumed all the oxygen and growth opportunities in the room.
- panick21_ 11mo agoVMS decline was bound to a failing hardware business and company. That's a very different thing. Unix was around in the 80s and VMS did fine, its when DEC hardware business went down the tubes VMS lost out big time.
- jonathaneunice 11mo agoVAX hardware did eventually run out of steam by the early 1990s. But VMS had already failed to capture the next generation of growth. Even while DEC was still the number 2 computer company, 5–10x the size of its competitors, and growing $1B/yr in revenues. Unix (workstations first, then servers), PCs (DOS and NetWare, later Windows), packaged enterprise apps (e.g. IBM AS/400), "data warehousing," fault tolerant apps—a lot of those were not things happening on VAX or VMS or any other DEC product. The fight was already structurally lost and VMS aficionados were already bemoaning DEC's failure to pick up new workloads and user communities even when VAX was still going strong. VMS declined like almost all proprietary minicomputer environments. AOS, ClearPath, GCOS, MPE, NonStop, PRIMOS, VOS, and VMS...all fine products just ones no longer serving the high-growth opportunities. Declining investment streams hamstrung proprietary CPU/system development efforts compared to higher-volume alternatives (PC or Unix), so they got successively slower and relatively more expensive each generation. Proprietary environments weren't designed to ever escape their home fields, nor were their companies set up to profit from opening up / spreading out. A few tried, very belatedly, but... by that point, dead man walking. So from this vantage, same pattern, not a different thing. Perl and VMS were awesome in their original home fields, but were not quick to, or even able to, capitalize on the new directions and workloads customers grew to want.
- t43562 11mo agoPerl was super for little scripts hence it became popular. I think the killer feature was its fantastic regular expression language which beat everything at the time. All other languages had to do to was neutralise that one advantage and they did. Perl was horrible to build, IMO, and seemed to require 100s of options to be selected which would mean that some script would or would not run with that particular build of Perl depending on what you chose. Python had a more clunky but still excellent regexp package, it was a doddle to build and most of the things that affected compatibility were things you could install after the python executable was built and installed - i.e. users could get their code to work more reliably.
- unixhero 11mo agoIs anyone programming in Rakudo/Perl6?
- rini17 11mo agoNo mention of taint mode, you had to untaint all data coming from user. By comparing to fixed string or convert to number or filter through regexp at least. If this were more broadly adopted, would save everyone so many headaches.
- larodi 11mo agoI have experienced the decline in interest in Perl firsthand - having teached a class in Practical Perl Programming for 10 years at a local major university. First years saw 270ppl, second 150, then 100, 80, 50, and I think the last issue was 12 people. I can speculate a lot about what killed Perl, or at least what called the schism, and in general what was the cause of the schism had roots in what Perl failed to innovate on. The cultural stuff was a side-effect of it. But then also - Perl has huuuge impact on so many other languages, including JavaScript, that its place in the hall of fame cannot ever be disputed.
- water9 11mo agoPerls decline was due to poor syntax and the fact that it was a stream processing language at its core