6 ms·
Interesting article on the history of Perl for bioinformatics. As someone who is currently a bioinformatics PhD student, Perl has become the vinyl of programmi
by sinab 5y ago
Interesting article on the history of Perl for bioinformatics.
As someone who is currently a bioinformatics PhD student, Perl has become the vinyl of programming languages. While some older folks script with Perl, most packages I’ve seen published recently use either R, python, c++, and more recently, rust.
- acomjean 5y agoI’ve been working with biology data. A lot of our older scripts are Perl. It’s really good at this stuff. The great thing is the language is super stable so we don’t have to rewrite them usually. Our new stuff tends to be in R or python though.
- throwaway984393 5y agoThe Perl scripts I wrote 20 years ago are still running on modern systems today. It's almost scary how stable the language and interpreter have been. Turns out it's not an accident, though! There were a lot of good decisions that kept the language stable, and test frameworks and code coverage have been a critical part of Perl and its modules since the 1980's. In fact, pretty much all of CPAN gets tested on a matrix of Perl versions and operating systems (ex: http://www.cpantesters.org/distro/N/Net-Amazon-EC2.html http://www.cpantesters.org/distro/N/Net-Amazon-EC2.html)
- otherme123 5y agoYes, I also was there in those years. Perl snippets were shared by everyone, but almost nobody knew how they work, much less how to tweak them to adapt to new scenarios or how to contribute to a library. I remember a snippet that read a FASTA file and counted the GC%, but it had an error somewhere that made it fail when it reached the 1001 sequence. Nobody was able to find the error, they just splitted the FASTAs in smaller files. Until someone wrote a less esoteric Python script, and the Perl snippet died.
- throwaway984393 5y agoMight be unrelated, but Perl does have a hard limit on recursion within the same function; after 100 recursions it'll die with an error and you have to unroll your loops.
- bmn__ 5y agoFalse. $ perl -Mwarnings -E'sub f { $c++; say $c if 0 == $c % 1_000_000; f() } f' Deep recursion on subroutine "main::f" at -e line 1. 1000000 2000000 3000000 4000000 5000000 6000000 7000000 8000000 9000000 10000000 11000000 12000000 13000000 14000000 15000000 16000000 17000000 18000000 19000000 20000000 Terminated You get a warning after 100 calls which almost always indicates a bug. In case it's a genuine deep recursion, the warning can be easily suppressed with `no warnings "recursion"`. On my computer, the program continues to run for about 10 seconds, consuming 9 GB virt./res. after which it is killed off by `earlyoom`.
- throwaway984393 5y agoIt might have behaved slightly differently 20 years ago when I ran into it :) or maybe I misremember!
- cutler 5y agoIn many ways Perl's testing culture was the forerunner of TDD. CPAN Testers earned a lot of respect for making the Perl ecosystem stable.
- a-dub 5y agothis. i remember silly java consultants rabbiting on about TDD and agile while dismissing oss. meanwhile, the curation of both testing and documentation as well as overall code quality on CPAN was light years beyond the best corporate code i've ever seen. i'd argue that perl (with CPAN) was the first internet native programming environment.