The Worst Programming Language

Yesterday, while reading my RSS feeds, a post came across titled, “Perl is the most hated programming language“.  The article was referencing a Stack Overflow report that was characterized as saying: “Perl, the Old Spice of programming languages, is the most disliked by a significant margin, reports Stack Overflow. Delphi, used by children to write viruses for adults, and Visual Basic, used by adults to write games for children, are running neck-and-neck for second place. Trailing far behind are PHP, for people who still don’t care about security, and Objective-C, for people who still don’t realize they work for Apple. Coffeescript, a language designed to make Javascript more annoying, takes sixth spot; Ruby, very briefly popular among people who wanted to write web apps without actually doing any work, lurks in seventh.”

Now them’s fighting words.

I also took a look at a discussion on the subject over on Slashdot, where the comments were equally derogatory towards Perl, as well as a number of other languages. It is a amazing the hatred cluelessness out there. This is a discussion that has been going on forever about what is the most hated, the worst, the ugliest, the … programming language. I know. I’m a Compusaur — I’ve been programming since the mid-1970s, cutting my teeth on languages like BASIC, FORTRAN IV, and APL, and I’ve used even older language. I’m also — and I can say this with absolute confidence — the person who has been programming in Perl the longest with the exception of Larry, it’s author. I’m Perl’s Paternal Godparent; Larry, Mark, Jon, and I were carpooling to SDC when he wrote the first version of Perl, and I’m the person who was doing combo Perl-QMenu scripts to support the BLACKER program. I’m the one who knows that Perl would not exist without the TCSEC (Orange Book), so don’t say the NSA hasn’t given you anything.  I wrote the first version of the history section in the Camel book, fuggahdsake.

But back to the question at hand: Whenever anyone tells you that something is the worst or the most hated, you must learn context. You think Perl is bad for readability? Try reading APL or LISP, and remember that COBOL was designed to be readable.  Different languages and different editors are good for different things. Almost everything has strengths and weaknesses.

Perl is best at what it was originally designed to do: Text manipulation and report generation. It is great for easy text parsing scripts thanks to regular expressions and associative arrays, and implementing state machine parsing tools isn’t complicated. I have a large tool that at its heart is perl; it is perl that helps me generate the California Highway pages. But is perl the best language for system administration (which is what the Stack Overflow folks do)? No.

I’ve worked with loads and loads of languages, from Algol to Zed (well, I’ve looked at a little Zed — it is a formal methods language like Ina-Jo or Gypsy). I’ve written large programs in Algol 68C and PL/I (actually, both PL/C and PL/I (X)). I’ve worked in BASIC (especially RSTS/E Basic, which was a model for some Perl syntax), Fortran IV and 77 and WATFIV, COBOL, C, Ada, and APL. I’ve even done some LISP and SNOBOL, as well as MINITAB. To me, the language I had the most is Excel Spreadsheet Macro Languages, for I’ve seen difficult to find errors in that language to devastate organizations.

But most of the “kids” responding to that poll grew up in a different era. They learn Java and C++ and drink the Object Oriented Kool-Aide. They deal with PHP and Python and hosts of other new scripting languages, and complain about the old — without realizing that the newer languages are building upon the foundations of the previous ones, correcting the mistakes for a new generation.

In reality, the programming language you hate the most is the one that you’re unfamiliar with, that someone wrote bad code in, with no comments, that you have to maintain. Just as you can write easy to maintain code in any language (including APL — but in APL you can write it in one line), you can write garbage in any language.

All it takes is talent.



userpic=compusaurWorking more on the document I worked on yesterday brought up even more memories than the SYSABEND Dump. So, I went out to the garage and found my copy of OCC4CCC.HACKLIB. I’m betting most folks won’t even get these references. This is what passed for computer humor in the 1970s:


Hail 360 Child of Evil
Mary Shaw, Datamation, 4-1-1971
Hail 360, Child of Evil, for Thy misdeeds we curse Thee. Verily, do we curse and condemn Thee; We call down the Wrath of the Heavens upon Thee.

Know, Three Sickly, that we hate Thee with a Pure and White-Hot passion. May all the Microseconds of Thine Existance be eons in Misery. As Thou pushest about the Bits of Thy Programs, may the 1-bits cause chills and may the 0-bits itch, and may Thou be in continual Torment. As Thou miscomputest the problems of Thy Users may every Man’s hand be turned against Thee. May children cast Card Chad at Thee and call Thee cursed.

May Thy insulation all evaporate and Thy ROS become writeable; and may a User write his FORTRAN program all over it.

May Thy printers Rewind; and Thy tapes Unwind; and Thy memory banks grow Senile; and Thy drums be Out of Round; and Thy high-speed channel be Multiplexed with Thy reader/punch; and may Thy Channel Programs loop.

May Thy bits all have three states. May OS have 100 Releases, and may each release have 5000 APARS. May each APAR have 100 PTFs, and may each PTF be punched Off-Register on Warped Cards. May each PTF have 100 Hex patches, and may each patch grow scar tissue.

May each Release require ten SYSGENs, and cost a Shift, and may each Shift be Billed at Prime Rates.

May Thy Wait State ABEND; may Thy SVC’s get protection violations; may Thy SPOOL overflow, may Thy DATA UNIT cut in and out. May Thy Adder drop its seventh Bit, and may Thy Multiplier compute Cube Roots. May Thy Move-Characters instruction complement every Third Bit. May Thy Floating-Point registers be where Thy Fixed-Point registers should be.

A Pox upon Thee and upon Thy kin: upon Thy mod 44’s and upon Thy mod 91’s and upon Thy mod 67’s. Yea, upon Thy children and Thy children’s children, even unto the seventh Generation of Hardware.

Yea, 360, know that Thou shall be sorely afflicted. From this time forth shall Thy Peripherals become independent Processors and shall Thou be synchronized with the low-speed printer. And Thy Cores shall be as dust within Thee and in Sorrow shall Thou lament Thy lot.



IBM is my Shepherd; I shall not interact.
He giveth me dumps of the System Nucleus,
He maketh me Subtract in HEXADECIMAL.
He restoreth my Registers.
He leadeth me in the paths of Ambiguity for His Manual’s sake.
Yea, though I walk through the Valley of the Shadow of the Program Check, I will fear no ABEND; for OS/MVT is with me.
Thy MESSAGES and thy CODES they comfort me.
Thou preparest a Table before me in the Presence of mine Consultants.
Thou allowest me to Chain my CCW’s;
The Line Printer runneth over.
Surely the Operators will chase me all the days of my life,
and I shall Execute in KEY Zero forever.



Mine eyes have seen the glory of the coming of the NIC,
They were done upon the NETWORK, would be quicker with a BIC.
The mumblejumble and jargon are enough to make you sick.
And time goes marching on…

Glory, Glory, I’m a User
Glory, Glory, I’m a User
Glory, Glory, I’m a User
upon the ARPANET.

I started with a TTY and a manual on my knee.
They preached the TELNET gospel in a numbered RFC.
What with IMPs and TIPs and HOSTS and Hacks I learned the litany,
That Bits go marching on.

Glory, Glory, I’m a User
Glory, Glory, I’m a User
Glory, Glory, I’m a User
upon the ARPANET.

I was told it was so easy, I could hack it in a day,
But a User is a Loser if She’s 15 hops away.
The Bits clogged up the buffers; caused a terrible delay,
And time goes marching on…

Glory, Glory, I’m a User
Glory, Glory, I’m a User
Glory, Glory, I’m a User
upon the ARPANET.

Now I’ve come to face my sponsor and this stuff is hardly hacked,
If it isn’t done by Friday I’ll be tortured, whipped, and racked.
The brave new world surrounds me, but I think the deck is stacked
But I’ll keep typing on…

Glory, Glory, I’m a User
Glory, Glory, I’m a User
Glory, Glory, I’m a User
upon the ARPANET.


Ah, Memories (Sysabend Dump)

userpic=compusaurThe documents I’m currently reviewing brought this poem to mind, which was published in Datamation in their 1975 April Fools issue:

On either side the printer lie
Fat stacks of paper six feet high
That stun the mind and blur the eye.
And lo! Still more comes streaming by.
A fresh SYSABEND dump.

Ye printer clacketh merrily.
Alack! What can the matter be
That made SYSABEND dump.

My TCAM hath no MCP?
My data cannot OPENed be?
Consult my neighborhood SE?
The devil take thy dam and thee,
Thou vile SYSABEND dump.

Assemble modules on the fly
And link for yet another try.
With SUPERZAP a patch apply


On either side the printer lie
Fat stacks of paper twelve feet high
That blow the mind and blast the eye.
Gadzooks! How shrill yon varlet’s cry
As sixteen megabytes go by
In yet another dump.


Wearing Snakeskin Boots like Billy Ray Cyrus, Totin’ my Norton Antivirus…

userpic=cardboard-safeFigured I’d continue with my song lyrics. I’m sure no-one knows where that lyrics is from, but you can hear a snippet here. Today’s news chum post has to do with computers, and in particular, cybersecurity and its impacts. Well, with one exception.

But online I don’t drive in a shy way, in my big rig on the Information Superhighway….


Windows 10 Periodic Reminder

userpic=toshibaNo, this isn’t a nudge for you to install Windows 10. Rather, it is a reminder that I’m collecting all Windows 10 articles that are of interest to me in my post: “I Think I’ll Wait to Wash the Windows“. If you are using or considering Windows 10, you should look at that post. As for me, I’m still waiting. I’m still seeing reports of various problems with the Toshiba A665 and Windows 10. I think I’ll wait until I have some concentrated time to take the risk — most likely between Christmas and New Years.


They’ve Outlived Their Usefullness… Maybe

userpic=pirateWe’re continuing to swab the deck of this pesky news chum. This time, we’re making some things that might be of retirement age walk the plank. Let’s see if they sink or swim:

  • The Boeing 747. One of the books I keep rereading from the early 1970s deals with the birth of the Boeing 747. After 45 years, the old lady of aviation (of the current “models” in heavy use, only the 737 is older) may be ready to retire. It’s engineering is from the past: people are astonished when they see the analogue instruments. The flight controls are all dependent on old-fashioned mechanical linkages. A 747 captain once explained that, if hydraulic assistance on the control yoke is lost, you can still put your feet on the instrument panel, give a big tug and wrench the plane about the sky. You cannot do that on a solid-state Airbus. Airline economics have also changed: International flights can now avoid the big hubs and go directly on long, thin routes between secondary cities. The first generation of high-bypass turbofans made the original 747-100 possible, but it was only ever economical when fully loaded, its efficiency tumbling disproportionately as seats were left empty. In the 45 years since its first flight, engine reliability has so dramatically improved there is no need for four thirsty engines. In any case, the fundamental appeal of the original 747 was its range rather than its capacity. Boeing’s own efficient long-range modern twinjets, the 777 and 787 have made it redundant. And the A380 makes it look crude.
  • Quicken. If you are like me, you probably have years and years of data in Quicken. I think I started using it back in 1994, perhaps even a bit earlier, with a version running on MS-DOS. Well the markets have changed, and you and I are dinosaurs. All the cool kids use online money management, and Intuit (born of Quicken) has put Quicken on the market. Intuit has decided to focus on its small business and tax software, represented by QuickBooks and TurboTax, respectively — both have strong cloud- and subscription-based businesses — and is ditching Quicken because, as a strictly desktop product, it has neither.  Some predict Quicken to be dead in two years. After all, the three units Intuit plans to sell — Quicken, QuickBase and Demandforce — accounted for less than 6% of the firm’s fiscal 2015 revenue, and just 2% of its net income during the same period. For the last 12 months, Quicken contributed just $51 million to the company’s total revenue of nearly $4.2 billion.  They want a buyer that will keep the brand up. It will be interesting to see. I still use Quicken — and their long-retired Medical Insurance Tracking software — and it would be a pain to transition that data (and the data does not belong online).
  • Vinyl Records. On the other hand, vinyl records (which were written off for dead), are seeing a comeback. The NY Times reports that the business of record pressing is now experiencing so many orders they cannot keep up (warning: autoplay video). The problem: how to capitalize on the popularity of vinyl records when the machines that make them are decades old, and often require delicate and expensive maintenance. The few dozen plants around the world that press the records have strained to keep up with the exploding demand, resulting in long delays and other production problems. It is now common for plants to take up to six months to turn around a vinyl order. Still, vinyl is a niche market, albeit a valuable one.

Music: The Slightly Fabulous Limelighters: “Aravah, Aravah” (The Limeliters )


Older Technology Revisited: PDP/8s, Wingdings, and Space Jam

userpic=cyborgContinuing with our “clearing out of the links”, here’s a collection about older technology that is still going strong, in some way, shape or another:



Chips In The Stew: Technology News Chum

userpic=verizonIn my continuing quest to work down the saved links, here are a collection of links associated by the fact that (a) they are related to technology (and perhaps cybersecurity), and (b) they were interesting to me. Note also that I’ve added some links to my post on Windows 10.

Let’s start with everyone’s favorite operating system, Android. Here are some Android related articles:

Let’s now look at Windows and other software:

  • Evernote. Evernote is a wonderful note-keeping software than runs on your phone and your PC. Here’s how to make it more secure.
  • Libre Office.  I think in the battle of Free Office Suites, LibreOffice has won. Here’s an interesting article from a LibreOffice developer on the lesson’s learned from its success. [ETA: And if you still use OpenOffice, here’s why you should ditch it and move to LibreOffice]
  • Firefox. Although Firefox has improved greatly, it still sneaks in stuff. In this case, it is prefetching (or at least, pre-building the TCP connection) when you hover over links. Here’s how to stop the behavior.
  • Thunderbird. No article here, just some shared experience. We recently switched over to Office 365 and Exchange 365 at work. In the Lotus Notes era, I was lucky enough to have a Notes IMAP server, and happily used Thunderbird. It was a pain for calendar entries, however, saving the ical file and reloading it into Google Calendar. Here are some things that make my life easier — perhaps they will help yours. First, install the Exquilla Plug In. It is $10 a year, and allows Thunderbird to talk Microsoft Exchange. You’ll need the Outlook Web Address, and you’ll need to make the change in the URL they show. Next, at least temporarily, install the Manually Sort Folders extension. This allows you to move your Exchange account to the top and set it as the default. You can disable it when done. You should be prompted to turn on the Lighting calendar. After you have done so, add the addon Provider for Google Calendar. You can now add a new calendar and link it it to your Google Calendar. Remember to synchronize whenever you start up Thunderbird. Although you can’t accept events directly into the Google Calendar, you can accept them into your local calendar, and then drag them to Google. [EDITED TO ADD: An Update: Nevermind. This seemed to be working at work… until it wasn’t. There appears to be an interaction between Lightning and Thunderbird that causes it to (a) keep losing the folder pane, and then (b) keep crashing on startup. I had to disable Lightning and the Google Calendar Provider. Sigh.]

One last useful article: What to do when a CD or DVD is stuck in the drive.