4 ms·
Your opinion on Perl is based on one code base you worked at on one job?
by ugexe 6y ago
Your opinion on Perl is based on one code base you worked at on one job?
- w0m 6y agoHonestly that's more than most I think. I've written tens of thousands of lines of perl professionally and I generally share the same opinion.
- nchelluri 6y agoI've been writing (Modern) Perl for about 3.5 years and I disagree that Perl necessarily tends to unreadable code. I really don't think that's true at all. To quote myself from a recent discussion: I think some languages do make it easy to write convoluted code, but through judicious use of coding standards (including a helping of common sense [don't be clever where you can at all avoid it, which IME is ~~almost~~ all the time], code linters, and so on) I think how you use a language plays a huge part in code maintainability. For instance, I've heard PHP get shit on pretty badly all around the web, but I've worked at PHP shops that had nice, clean codebases, and my current Perl codebase is, in many ways, nicely structured. That's not to say there aren't some hairy codepaths that could use refactoring, but I really think that kind of thing, again, can happen in almost any language.
- aeontech 6y agoStrongly agreed. It’s much more about the team, the conventions used, the organization of the codebase, and the coding culture of the team, than it is about a specific language.
- jimbokun 6y agoTrue, but the cultures that grow up around a specific language tend to encourage certain conventions, standards of organization, and team coding cultures.
- ed25519FUUU 6y agoUnder that standard it’s true, but it’s also true for virtually any language and is therefore not a good defense of whether or not a language lends itself to unreadable code.
- nchelluri 6y agoThere are a couple of points in there: 1. You can use virtually any language to write clean code Not sure if I agree with this, though it may well be true. I just know there are some things like Brainfuck where it's designed to be impossible. I realize that language is created specifically for the purpose of making a coder say "WTF", but perhaps there are other languages that are not designed to be so that are really nearly impossible to write good code in. 2. Perl lends itself to unreadable code If you stick to Modern Perl you still might end up with things like `wantarray` in your code so I guess this is kind of true. You need to be judicious in your use of code. Some languages lend themselves more easily to writing clean code, like I feel about Go or if you hate the Go type system, Ruby. Even in Ruby I feel like metaprogramming is ripe for misuse. It's a tough thing to talk about. I don't feel like I wholeheartedly disagree with your sentiment which seems to be "some languages lend themselves to bad code" and subsequently that Perl lends itself to bad code but there is plenty of ambiguity in these thoughts.
- hpcjoe 6y agoIn my 30 years (yes) working with Perl (4->5.32), I have never, once, used wantarray. Perl does not lend itself to bad code. Bad coders, people whom cannot use or articulate good practice in coding or documentation, lend themselves to write bad code, in any language. I used it for automation of my calculations in grad school. For data analysis. For monitoring. In my subsequent day jobs, I used it to develop shipping products. No one really should care what language something is written in, if it does the job well. Most recently (a few weeks ago), I used it as the driver for creating and submitted 10's of thousands of jobs for COVID19 research the team I am working with[1][2]. For the above project, I had to forward port 12 year old C++ code to make use of modern C++ based boost libraries. Took a bit of time to fix this. But the perl code, ran perfectly, and quickly[3]. Anyone trying to portray things otherwise, likely has a longstanding axe they like to grind. Language advocacy can be done without attempting to tear down other languages. Though those who argue against perl often bring up the same, old, tired, and incorrect points. I'll keep using perl thank you. And Julia. And C. Each has their domain of applicability. Most people know and understand this. [1] https://community.hpe.com/t5/advantage-ex/how-my-supercomputer-journey-led-me-into-the-covid-19-fight/ba-p/7090516 https://community.hpe.com/t5/advantage-ex/how-my-supercomput... [2] https://community.hpe.com/t5/advantage-ex/the-story-of-how-i-got-to-fight-covid-19-on-an-hpe-cray/ba-p/7091601 https://community.hpe.com/t5/advantage-ex/the-story-of-how-i... [3] https://scalability.org/2020/04/fun-and-topical-hpc-project-at-the-dayjob/ https://scalability.org/2020/04/fun-and-topical-hpc-project-...
- lmm 6y agoI think a useful concept is that a project will have a "discipline budget", just like the "language strangeness budget". Yes, if you're careful with your self-restraint and code reviews, you can write good, clean, maintainable code in a language that doesn't give you a lot of support for that. But if you do that then you're expending your limited supply of discipline, and will have less to spend on other aspects of the project like not scaling prematurely, not using cool-but-unnecessary tech...
- nchelluri 6y agoVery interesting thought! I think I'll steal it.
- jschwartzi 6y agoYeah, I've got a Perl codebase that's conservatively tens of thousands of lines, and it's honestly a struggle to write anything in it that isn't a big ball of mud. There's about 50 different ways to do anything in the language, the syntax is infuriatingly obtuse, and you can't rely on any documentation because it will recommend doing things that experts don't recommend doing. The system is from like 2013 and still going, but I really wish I could rewrite it in a language I can actually train people on in a reasonable amount of time. It took the one junior I have about 6 months to get to the point where he could read the syntax without tearing his hair out. It's not really built to create maintainable structures. The libraries and stuff are full of opinionated little "gotchas." As an example, the Test::Simple module will throw errors if you use a number to title a test which is infuriating when you're writing a test which tests all the numbers in the space of acceptable or possible inputs.
- benbristow 6y agoPerl's syntax is really confusing. Especially for example how variables have symbols for different types ($ for scalars, % for hashes, @ for arrays). And if you want to for example pass an array to a function you have to send it manually referenced with like method(\@myArray) which then inside the method is contained in a $scalar. Compared to Python for example where you'd literally just pass the array to the method like method(array).
- mfontani 6y ago> Compared to Python for example where you'd literally just pass the array to the method like method(array). How does one tell Python to pass the contents of said array as distinct parameters to the function, instead of as a lone array parameter? In Perl, that's the difference between foo(@bar) and foo(\@bar) or foo(1, 2, 3) vs foo([1, 2, 3]).
- cesarb 6y ago> How does one tell Python to pass the contents of said array as distinct parameters to the function, instead of as a lone array parameter? With an asterisk: method(*array)
- briansteffens 6y agoHow much and what kind of experience do you think someone should have with a language before beginning to form an opinion?
- runamok 6y agoThey mention aws library support as another major concern too.