Skip to main content


I think I am 50% done finding a quadrafecta : a simultaneous hit piece against #Perl #clang #fortran & #rstats.

This one only manages to trash talk #perl and #rstats, so it has some ways to go.

https://stefanoborini.com/why-r-is-the-new-perl/

PS 1Gotta admit that the point about the object systems in R is somewhat spot on
PS 2 #php gets a dishonorable mention
PS3 I will continue to find ways to continue using all 4 of the aforementioned languages, as they are all performant and deliver in complementary ways.

in reply to Bill Ricker

I want a really good hate speech piece though, not a moderate one. The challenge is to do those well, a task complicated because of the inferiority complex of your average computer language troll against #fortran (too mathsy) and the bona fide superiority of the portable assembly language we known as #clang for many tasks. To clarify #cplusplus bashing does not qualify as #clang trashtalking.
in reply to Christos Argyropoulos MD, PhD

the easy route to trash any 4 at once is to invoke "Greenspun's Tenth Rule" that
«Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp» which is commonly understood to apply to programs in other languages implemented upon C and F as well (which of course includes Perl and R).
in reply to Bill Ricker

(Would be inaccurate of course for your requested set of 4 since modern Perl5 has a fairly decent nearly-complete CL that just misplaces the brackets.)
in reply to Bill Ricker

(I'm old school, i can critique the original sins of K&R C as well as the sins of ANSI C++ ... and the semantic gap between ANSI C and ANSI C++ as it widens. Happy to say i was NOT our office's rep to Ansi C++ committee; he cursed pretty good.)
in reply to Bill Ricker

OMG this is perfect. There is a counter argument in the book '21st century C' in which Ben Klemens trashes functional languages for being stateless and even runs an informal competition about how long it takes a functional programming text to mention the word "state" (the rant is complete with references to botu Church and Turing)
in reply to Christos Argyropoulos MD, PhD

FWIW, while CommonLisp supported what was then called a functional style, it was not in the misnomer ^stateless^ functional FP class; it had ability to set variables other than at function binding and reset variables at need.
in reply to Bill Ricker

If Ben K's point is that ^stateless^ programs have state just as ^serverless^ systems need servers, they just relegate all their state into the call frame as a single paradigm to rule them all, well yes. If the FTC had any guts they'd have all the ^stateless^ vendors up on fraud charges 😁
in reply to Bill Ricker

I think Ben K's issue was with the religious fervor of the lambda calculus folk, which is why he started off the salvo by discussing the equivalence between Church and Turing. These wars kind of remind me of procedural MD colleagues who will trash talk sets of instruments in favor of their own preferred tools, which are despised by other surgeons. I am more of a Deng Xiaoping person: "It doesn't matter whether a cat is white or black, as long as it catches mice"
in reply to BobOHara

Some examples of Larry taking the piss:

“I’m reminded of the day my daughter came in, looked over my shoulder at some #Perl 4 code, and said, 'What is that, swearing?”

"Perl is worse than #Python because people wanted it worse.”

"Guilty as charged. Perl is happily ugly, and happily derivative.”

"The camel has evolved to be relatively self-sufficient. On the other hand, the camel has not evolved to smell good. Neither has Perl.”

Mark Gardner reshared this.

in reply to Christos Argyropoulos MD, PhD

By "happily derivative," Larry meant that #Perl intentionally resembles other languages and tools.

In context, he was responding in 1992 (Perl's current version was 4.035) to @bduncan whinging, “It's sorta like #sed, but not. It's sorta like #awk, but not.” https://groups.google.com/g/comp.unix.shell/c/J8fGo0oGUCk/m/LhF4pSEaOMwJ

in reply to Mark Gardner

I think it was a deliberate choice to make it easier for people to transition to Perl.

People were using sed, awk, and other tools until Perl came along and could do many jobs all by itself.

I think Randall Schwartz got in trouble on Usenet for popping in with a Perl solution to problems when someone was expecting sed, awk, or something in shell instead.

in reply to Edwardsmoon

Yes, #Perl deliberately borrows familiar things from #Unix culture, including #C, #shell, #sed, and #awk. The goal isn’t necessarily to replace them, but to remove friction when combining their capabilities.

@randalschwartz's Perl solutions to #Usenet Unix questions usually demonstrated such reductions.

in reply to Edwardsmoon

sed and awk are now being taught as a cool skill for bioinformatics, which is kind of nuts because in the 90s #perl was the cool kid.
#perl
in reply to Christos Argyropoulos MD, PhD

It seems like a step backward to go from #Perl to squeezing everything through pipelines of text and forests of escaped #shell metacharacters. Am I missing something?
in reply to Mark Gardner

It is a step backwards, likely explained by people migrating to #bioconductor (in #rstats) or #biopython and wanting to break from clean from #perl. However neither R nor python provided the facilities that perl has to deal with features in text and flat text files.
in reply to Christos Argyropoulos MD, PhD

So… fashion and received wisdom traced back to the turn-of-the-century boom in shitty #Perl, supported by the belief that they're protected from building a shitty melange of #shell, #sed, #awk, #Python, and #Rstats?
in reply to Mark Gardner

I guess so. One of the more technical reasons is that most applications in this domain are built as Unix filters that communicate to each other via stdout, so one liners with sed/awk provide an easy way to do throwaway programming. Encouraged by the need to innovate (for fame and grants),ppl are then forced to extremely heavy DSLs and frameworks to control dataflows. The writing for such approaches is already on the wall IMHO (but I will stop rambling nos)
in reply to Christos Argyropoulos MD, PhD

That could have been published twenty years ago with zero changes.

Note the final paragraphs on @GNU_Parallel, a tool written *in* #Perl.

in reply to Mark Gardner

they’re just following the natural progression from shell to awk, with Perl being the inevitable next iteration. Biologists do like to say that ontogeny recapitulates phylogeny
in reply to AN/CRM-114

The fact that a sigil language overtook another sigil language is an exercise in psychology
in reply to Christos Argyropoulos MD, PhD

And ecosystems. #PHP said, “Here’s an #Apache httpd module so you sysadmins can let your users run web apps.” #Perl said, “Here’s ours, it lets your users go nuts with the entire httpd API including changing your configs at runtime. Encapsulation is left as an exercise for you.”

Which looked like a safer bet?

This entry was edited (8 months ago)
in reply to Mark Gardner

@bduncan

The php module was just to run PHP code faster in Apache.

Mod_perl was a better solution than writing your custom module in C.

Saw a few really interesting solutions implemented in mod_perl.

Perl never making a successful transition to a Perl 6 and Redhat shipping a broken beta mod_perl module in their distribution (for years) put the kibosh to people discovering the amazing things they could have done with mod_perl.

in reply to Edwardsmoon

It turns out nobody wanted to do amazing things or write custom modules. They just wanted their sites to run faster.
in reply to Mark Gardner

Bingo. This is why my "portable assembly" aka as C will continue doing well.
in reply to Mark Gardner

Isn't there a joke in the documentation or source code somewhere, I think about how $/ can't be a regex, where Larry says "I had to let sed still be better at SOMETHING!"
in reply to Mark Gardner

That's the one, thanks! Perfect example of Larry having a sense of humour about how much he borrowed.
in reply to Negative12DollarBill

I think we can actually credit @gnat or Tom Christiansen for that quip: https://github.com/Perl/perl5/commit/3c10ad8e31f7d77e71c048b1746912f41cb540f0#diff-bb127a770020549fbf3c749635a1fb356fffc1c0d7ba76c59dd6ef510435ff3b

It used to be in https://perldoc.perl.org/perlfaq6

This entry was edited (8 months ago)
in reply to Christos Argyropoulos MD, PhD

We got it. You hate #Rstats. However, your opinion is based on a poor knowledge of the ecosystem. But more important, you were irrespective to the thousands of @rstats developers to devote their time to open source software.
in reply to Josep Pueyo-Ros :rstats:

Dude, 99.9% of my scientific work is using R. I just enjoy lang wars and I am in my quest for the quadrafecta
in reply to Christos Argyropoulos MD, PhD

In that case, I would recommend using {renv} to create virtual environments, and {box} for importing modules and packages preserving namespace. Also {targets} for your pipelines. With this you will overpass some of the shortcomings you mentioned in your post.
in reply to Josep Pueyo-Ros :rstats:

I think you should read Christos toot again. The blog post he linked was written by someone else. Christos seemed to be amused that he found an article that talks thrash on two languages he uses...
in reply to Josep Pueyo-Ros :rstats:

No problem! But I am looking for a quadrafecta. The fellow #perl enthusiast @BRicker has come up with a general template on how to trash many languages at once in a rigorous way, but someone has got to write the piece https://fosstodon.org/@BRicker/111729508056113560


the easy route to trash any 4 at once is to invoke "Greenspun's Tenth Rule" that
«Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp» which is commonly understood to apply to programs in other languages implemented upon C and F as well (which of course includes Perl and R).

in reply to Christos Argyropoulos MD, PhD

Won't be me, since I agree with you & Deng on mice catching.
And while I can critique K&R with hindsight (optimistic buffer management has a lot to answer for to this former INFOSEC researcher), I'm not going to publicly attack several of my favorite things (queue Trapp Family harmony) even for lols.
(I haven't committed Fortran in a LONG time, but it has a cherished niche in my memory&career arc. )
in reply to Bill Ricker

( My favorite thing about R is that CRAN makes CPAN look organized. 🤣
Been a decade since I did anything half-serious with R, but it was decent.
https://ema.arrl.org/field_day/history/analysis2.html )