My Life as the Thrill Kill Kult (thefowle) wrote,

perl is my gnostic language

(reposted from a comment on Randal Schwartz's perl journal)

Permit me to share my own experiences with Perl. Our company has just parted ways with a "hbase expert" who wrote primarily in Perl, & Perl has gotten quite a ribbing around here, & it's certainly not all warranted. That said-- Perl is, indeed, Post-modern. You dig your own holes. ¶

Some background-- I did 4 years of Perl, circa 1998-2002, and was fairly young at the time. I think I still am in possession of one of NIH's many copies of your Learning Perl. ¶

It's hard to guess what my coding style was a decade ago, but I'd wager than in my younger age, I was subject to flash and flourish in coding at that time, & "concise code" or a glimmering recognition of some x86 ASM I'd picked out on Phrack brought me shivers of delight. My role was often either small cgi script development (mod_ what?) or maintence script writing, and I tended to shuffle among a bunch of small projects. ¶

Picking up a Perl project, even as the vested maintainer of a script, was always an new experience-- I barely refrain from calling it a chore. There's a geography to the script, localities enforced not by constructs like inheritance or packages or modules, but by whim of authors and line number. That preference for "concise"? Understanding what special vars are bound to what at the time, and whose making implicit use of them? Challenging. There's a beauty there, but appreciation of any piece of code in such a form is attained through one means-- continued service. Yes, there is a more elegant reduced form. Yes, it will require numerous scalpel precise dives into exacting corners of perldoc to understand, and yes, the answer is there, and the question is only whether you've the will and inner being to extend yourself to the capacity required for understanding. Perl is organic, not mechanistic-- the post-modern nature, the many ways to slice it-- that's freedom, that's having control of your own destiny. Organic means each body of code is grown anew from essential scraps, not printed to pattern, and that is a very different experience from our training, from rhetoric on methodologies and engineering classes and encapsulation. ¶

I'm going to introduce some classist statements here-- the professional coder's I interact with's respect for Perl is low. Rabble, and loose they say. The enthusiasts-- they deride Perl, but with deference, respect, and tongue hopefully in cheek and grin hopefully knowing. My favorite joke is that Perl is a "write only language," and indeed, I felt that pain time and time again; even when I felt relatively proficient in the language, there were always higher heavens of understanding and personal attainment that I either never knew or had forgotten once or many times. My younger self's personal challenge revolved largely around understanding the layout of the documentation-- it was the rote required to decypher syntactic mysteries. But these mysteries, although confounding, were shallow. Perl taught me perseverance, to know to keep digging, that inner purpose of any body of code could and reveal itself and spring forth into my mind and that all I had to do was keep digging. Perl taught me appreciation for weaving understanding in: an appreciation for layout, and documentation, for using my powers for good! Restraint and form were at least as important as being concise-- a body is grown in a narrative, and making that narrative self evident in the body was capital, so that others and my own paths upwards and downwards through the code would be easier. The body had to shed it's own understanding, be it's own map, because otherwise we were left surmounting the kinds of thicketed obstacles young me had struggled so hard to map out. ¶

Perl is indeed post-modern and that comes with implicit challenges, of defining one's own nature in a destructured verse. At the time, being young, the challenge I picked up was "the answers are there." As I've continued coding, the challenge presented looks much different-- I've seen good, well designed Perl projects with 100k loc, and I've begun to understand how important judgement and framing are when coding. That notion of regional locality within a script grows and takes new forms as it becomes a series of compartmentalized scripts. Perl doesnt provide you a ready fit framework for your problem, it gives you the freedom to frame your own system, and that was an incredibly powerful and slow lesson. ¶

In accordance with the recent "The Two Things About Programming" [The Fishbowl], I'd say I've started the journey from Computer Programmer to Software Engineer. Thank you Perl for teaching me about freedom, and the consequences that come with it. Programmers, there's a challenge out there if you're game-- you have the freedom of the world, whatever language you write in-- and it's up to you to navigate the array of possibilities in front of you & distill out some essential body which is as understandable as will be required to be understood, as compartmentalized and consistent as is required for comprehension. You dig your own holes, and you grow stronger clawing and climbing your way out (p.s. stop digging). ¶

(reposting on my *cough cough ahem* [livejournal]... thank you greatly for this opportunity; I hope I havent done you wrong, misused this form overly much, and/or am not entirely amiss).

  • Post a new comment


    default userpic

    Your IP address will be recorded