4 ms·
I was a Perl lover once. And now it seems I understand the haters. Just don't use Perl. The language seems fine, productive, even sublime at first but you wi
by prollyignored 13y ago
I was a Perl lover once.
And now it seems I understand the haters.
Just don't use Perl.
The language seems fine, productive, even sublime at first but you will encounter some horrible design features.
Just read the following,
http://markmail.org/message/h2spyi5za4qheuft http://markmail.org/message/h2spyi5za4qheuft
-- Perl's data structure serialization is leaky. Thought you made an int ? Whoa ... serialized as a string.
http://blogs.perl.org/users/rurban/2013/02/no-indirect-considered-harmful.html#comment-370624 http://blogs.perl.org/users/rurban/2013/02/no-indirect-consi...
-- A language feature causing a burnout ? Well fuck me !
That's just a tip of the iceberg.
PHP, a fractal of bad design ?
Perl, a quantum bomb, waiting to tick off.
The Modern Perl movement is like saying "I'll close my eyes and crime ceases to exist."
No best practices will save you from broken language features.
The people who maintain Perl source code, are not a _fan_ of Modern Perl. They won't make "strict" the default or introduce signatures or better OOmodel.
The people who proclaim "Modern Perl" won't fork.
Even this release shows how clueless Perl maintainers are !
* They released a switch statement long long back
* And now they mark it even as "experimental" because of the leaky "my $_" scope.
Oh God ! I will never emotionally invest in another tool.
EDIT: Neutral language.
- hahainternet 13y agoI downvoted you because of a) The poor formatting of your post as a stream of conciousness b) The condemnation of a language based on a single relatively minor bug c) The unsupported assertions and unrelated criticisms like not enabling strict by default
- prollyignored 13y agoI use points as I am a bad writer. * Don't use $a, $b for variable names, affecting sort * Don't use each for iterating over hashes * Global effects of .. * next operator is dynamic sub foo() { next; #breaks while loop } while(defined (my $e = shift @items)) { # "0", 0 is false foo(); } * http://www.perl.com/doc/FMTEYEWTK/versus/perl.html http://www.perl.com/doc/FMTEYEWTK/versus/perl.html * Exception model based on $_ and $@ * print "$foo's fun!"; * `use constant` is broken * my $a, $b ... declares a global $b. Not DWIM at all. These language features are not worth the debugging time. Regarding c) I am not a fan of use strict. If the community's priority is introducing more features like "my $_" than sane exception handling, I don't want to be a part of it and I won't recommend that language to my boss or the next FOSS project. Did I mention XS bugs ?
- kamaal 13y agoYou seem to have to magically figured out the art of creating software without bugs. Its time for you to produce your magical programming language and claim your fields medal. Till then, there are people who are using and will be using Perl with endlessly growing user base for three decades. As a side note and talking of bugs, Perl easily has the best testing culture in the entire open source language scenario.
- peteretep 13y agoWhat modern language do you use that doesn't also have a laundry list of warts?
- prollyignored 13y agoHonestly, AFAIK only PHP comes with a bigger laundry list. The only python wart I know is no block scope for i in [1,2,3]: print i print i # still visible Only functions introduce lexical scope in Python/JS. JS has the ===, this, undefined The only ruby wart for me is the difference between block/lambda/Proc and perly features. Java/Go/Lua don't turn you into a omlette, with their language features. Nor do they leak memory in XS like perl. C++ is a differnt story. EDIT: Added JS
- sigzero 13y agoThen you don't know anything about Ruby and Python warts. Take yourself out of the conversation please or at Google before you blather.
- hello3 13y agoWhy doesn't he know anything about Python or Ruby warts? I think his complaint about Python is valid. The other wart I would add is Python having a default empty list in a method signature. In successive calls to the function if you modify the list it retains it's value. (The solution is to have it set to None in the method signature). Read http://docs.python.org/3/tutorial/controlflow.html#function-annotations http://docs.python.org/3/tutorial/controlflow.html#function-... section 4.7.1 if you're curious Generally though I'd say Perl has hundreds (or maybe thousands) of warts for every one Python or Ruby has.