8 ms·
Perl's Problems
- vezzy-fnord 12y agoI've always found it funny how many of the people who decry Perl as being "line noise" will then go on to praise such languages as APL, J and K. I think it might be because of their more esoteric paradigms and the fact that they do not follow the formulaic Von Neumann architecture, making them good targets for people to assert how atypical they are, unlike those other Blub programmers.
- michaelcampbell 12y ago> I've always found it funny how many of the people who decry Perl as being "line noise" will then go on to praise such languages as APL, J and K This is not a reality with which I am familiar. I like the idea of APL; I even did some, years ago, but this feels strawman-y to me. Even in the J/K/APL crowd, the running joke is readability.
- agumonkey 12y agoFrom a distance I'd say APL* having one datastructure and many (cryptically represented) operations. Think Alan Perlis (NPI) epigram (http://www.cs.yale.edu/homes/perlis-alan/quotes.html http://www.cs.yale.edu/homes/perlis-alan/quotes.html). Perl context sensitivity with many builtin types is like combinatorial explosion of cases and is harder to parse mentally.
- nutate 12y agoOr... gulp... Haskell, which has your line noise and in addition significant white space syntax.
- imanaccount247 12y agoWhen people complain about "line noise" they do not mean "this language has operators".
- sanderjd 12y agoRepresenting "this language has operators" as the complaint about haskell is a bit disingenuous. It is that haskell has way too many operators. Operators are fundamentally unreadable, even if they are nicely writable.
- imanaccount247 12y ago>Operators are fundamentally unreadable I would suggest that is obviously false. Most languages have operators. Is 4+5 really less readable than plus(4,5)? Haskell does not have very many operators. The fact that people see 3 operators they are not familiar with and decide "this is unreadable because of so many operators" speaks rather poorly of people's desire to learn.
- michaelcampbell 12y agoOr, to quote Rich Hickey; "I can't read German; that doesn't make it unreadable." NB: I know a little German, and almost no Haskell.
- sanderjd 12y agoI think "4+5" is readable because I read it as "four plus five", and that operators become un-readable when you can no longer insert a common descriptive word in their place. The problem in haskell is not the few operators in the prelude that are unfamiliar, but the multitude defined in libraries. In fairness, there are good ways to search the documentation for those operators so at least you aren't stuck googling for line noise.
- imanaccount247 12y agoBut you can insert a common descriptive word in their place. Choosing not to learn what >>= means doesn't make it unreadable or line noise. That is like saying C++ is unreadable line noise because it has all these -> all over the place.
- codygman 12y ago
- orbifold 12y agoAPL has really well thought out notation for manipulating n dimensional tensors and even arbitraritly nested n-dimensional tensors, its more concise than what mathematicians would ordinarily use when they talk about them and certainly nicer and more expressive than explicit einstein index summation conventions. So there are good reasons to praise it. The use of symbols in perl to introduce separate name spaces for the basic types etc. is sort of orthorgonal to the use of symbols in APL, although personally I don't find anything wrong with it. It's kind of sad that functional programming lanuages have regressed and treat higher dimensional tensors so poorly. Libraries like repa for haskell are nice, but they don't approach the flexibility of APL.
- Moto7451 12y agoI agree with most of what is here save for the Perl 5/6 issue. Perl 5 needs a name change of some kind or another (Since Perl 6 isn't going anywhere or changing its name). You can't really write it off as people not "understanding how version numbering works" when the common way it works is by incrementing the major number when a new version is out.
- davorg 12y agoBut that's my point. People do understand how version numbering works. But Perl is trying to change that by saying that Perl 6 isn't the next major version of Perl - it's just another language in the Perl family. I think that just confuses people.
- cygx 12y agoPersonally, my guess is that once the performance issues with Perl6 have been solved and there's proper Perl5 and CPAN integration, the whole sister-language-instead-of-next-version thing will go away.
- rurban 12y agoPerl5 don't just needs a name change. It needs management and capable developers. Maybe the CPAN authors should take over. They keep continuing to produce quality software and updates. The number is the smallest problem they have.
- deleted 12y ago[deleted]
- Roboprog 12y agoLet's call it Sash 7.0. I can't figure out another pronunciation for $@%#. I love Perl; I hate Perl. I wish Ruby was faster...
- xorcist 12y ago... and had CPAN. And all the tests. And decent Unicode. And a working taint mode. And the functionality of Moose.
- kyllo 12y agoObligatory xkcd: http://xkcd.com/1171/ http://xkcd.com/1171/
- kraih 12y agoYou mean this one: http://xkcd.com/224/ http://xkcd.com/224/
- hapless 12y agoTo put it bluntly: The next Perl release should be 6.0. The existing perl6 projects can figure out their own branding, because it's clear they are no longer "successors" or replacements for Perl.
- davorg 12y agoOh, I agree completely. But Larry Wall has ruled out that possibility.
- justinator 12y agoI'm surprised that this wasn't cited in this article as a problem. Larry is a brilliant guy, but (like everyone, really), he's not brilliant in everything and (like most people seen as absolute geniuses, so relatively few people), what he's not good at, he finds so frustrating as to condemn it, and cry foul at the very concept. This helps no one. I don't know how to teach someone humility. Anyways beating a dead horse.
- jejones3141 12y agoSort of like Volapük?
- maxlybbert 12y agoAre people still complaining about the version number? If only there were a simple way to get people talking about Perl again. Personally, I think the best approach would be to (1) recognize that every language has a CPAN equivakent so stop using it as a unique selling proposition (or, at least make it better than everyone else's), and (2) keep implementing cool things in Perl. Prove that Perl programs that do a lot of things (1) are maintainable, and (2) don't have to be as large as the equivalent in other languages. Arguing about the version number just isn't enough.
- collyw 12y agoWhats the JavaScript equivalent? Every time I need to delve in to JavScript it seems a mess. Or Java for that matter.
- sciurus 12y ago> Is the difference between arrays and array references really necessary? This is certainly a annoyance compared to e.g. Ruby. It's getting easier to just always use references [0], but I haven't been using Perl much for a few years and am not sure if this is still considered experimental. [0] http://search.cpan.org/~rjbs/perl-5.20.0/pod/perl5140delta.pod#Syntactical_Enhancements http://search.cpan.org/~rjbs/perl-5.20.0/pod/perl5140delta.p...
- cies 12y agoThe article "addresses Perl's perceived problems" more then it tries to find what the real problems of Perl are. So here's my take on it: 1. Syntax. And how it's almost impossible to change it after a certain level of language-adoption. Perl coders knew it needed to be radically changed, understood how that was impossible, and moved on. 2. As a result of 1: the shrinking community. It is a clear red flag, no-one wants to start a project in based on (soon to be) legacy technology. 3. The existence of very suitable languages for Perl-refugees. When Perl ruled the web it was pretty much the only open source, web-focussed, runtime-typed language with a package manager fully of goodies. But with Ruby, Python (, etc.) and their very active communities around, it became very easy to switch. 4. It missed academic backing. Having programmers "schooled" in a particular language seems to be important in this world. The winners in this area seem to be Java, C-Sharp, C++, C, Python and to some extend Haskell; Perl never managed to enter this league (and does not seem very fit).
- bane 12y ago> Perl never managed to enter this league For a while at least, Perl did find a home in Linguistics. While it was because of the excellent text parsing tools, it makes a strange kind of sense as well, since Perl was designed to be a bit more like a human language and I think Linguists appreciated that. But that's such a small field that the impact was negligible. Most of the modern Computational Linguistic work is done in Java and Python these days, but for a while, many people working in Linguistics came out of their undergrad with at least a passing familiarity with Perl. For a briefer spell, I seem to remember Perl finding a home in bioinformatics for much of the same reasons. I have no idea what or if that field has moved on to. For me personally, Perl was the ultimate hacker language when people needed to get shit done and that shit involved munging lots and lots of files in text. But I think these days the world has moved onto other things that Perl isn't any better suited for than some other language (which is then conversely better suited for a bunch of other stuff than Perl).
- hibbelig 12y ago> ... Perl was designed to be a bit more like a human language ... ADD A TO B GIVING C
- vorg 12y ago> The current version of Perl (5.20.1 as I write this) is a lot different to the version that was current when Perl 6 was first announced (which was 5.6.0, I think) Wasn't "Perl 6" just a tentative spinoff from "Perl 5.6", and didn't Perl programmers start unofficially refering to subsequent versions of Perl 5.x as "Perl x", i.e. Perl 5.7 as "Perl 7" and the latest version as "Perl 20" ? Better make official how Perl programmers are speaking anyway and call the next version Perl 21.0
- cygx 12y agoWasn't "Perl 6" just a tentative spinoff from "Perl 5.6 No. Perl6 is a complete redesign of the language, unencumbered by backwards-compatibility. One of the design goals was to make it extensible on as many levels as possible (proper specification, multiple backends, meta-object protocol, pluggable syntax, macros, FFI, ...) so that another rewrite won't be necessary in the foreseeable future. didn't Perl programmers start unofficially refering to subsequent versions of Perl 5.x as "Perl x", i.e. Perl 5.7 as "Perl 7" and the latest version as "Perl 20" Not that I'm aware of, but I'm on the edge of that community.