Search This Blog

Sunday, March 13, 2022

Pugofer → Pug → ?

It was a rainy July day of 1993. My just-graduated student, Anuradha strode into the — at that time — ramshackle PU building with a mischievous twinkle in her eyes.

A: Sir!!!
Me: Yeah??
A: I've got a functional language for you!!!And she waved one (or was it 2?) 360 K floppies in front of my face
Me: Awww... We're a poor department we don't have fancy machines like Sun workstations to run these. In short FPLs are beautiful but only for the rich
A: It runs on PCs – Come see!!


Incredulously I followed her to a PC-XT as she inserted the floppy. And started a build. The build lasted what seemed like a good half hour. After that there was a gofer executable lying there.

Still incredulous we started Mark Jones' miraculous baby:

C:> gofer

And after a while laboriously printing each '.' in


 there was a quiet little


waiting to be commanded.

I soon discovered that it was a full scale FPL, quite like Miranda.

My concerns were very immediate. For CS101, so far the best possibility I could could come up with — or pragmatically even imagine — was Think in Bird & Wadler Miranda, write actual code in Scheme by hand translating. This is what I had done the previous year.

And now… Had to start teaching CS101 ... in 3 days!!

Here was what certainly looked like my dream CS101 language. Was I going to let the chance go by???

Yet... to adopt it I had to learn a new language in 3 days!!!

Frankly I did not think then that FP as Haskell would become Real World in the next 20 years. Or that 30 years later gofer would still be a thing!

About those 30 years… I must write separately about the encourag-ers, supporters and adopters of that intervening time…

2. But for now…

Prof. Aamod Sane, HOD Flame Univ CSD, is the most recent enthusiastic (and vociferous!) adopter.

In that context its time to reflect on the project and…

3. The Name

Yeah… in '93 I used gofer for CS101.

And by '94 my changes had become visible enough that it needed to be distinguished from the Mark Jones' original. Without putting too much imagination into it that 'other gofer' that my students used was called pugofer after Pune University where I was at that time.

But times have changed.

  • FP is not in 2022 what it was thirty years ago
  • All of us have moved on from PU years/decades ago
  • PU itself is now SPPU
  • And pugofer continues to be used in a small number of places for CS101 and other such educational purposes

What should it be today??

4. Idea vs Artifact

It is natural for not just students but faculty, researchers and FP-ers to identify Functional Programming with Functional Languages. To a certain extent this is fine. But carried too far it's a mistake.

Taking again a leaf from (animate!) discussions with Prof. Sane, I believe its important to distinguish idea from artifact.

  • The ideas, philosophy, methodology, habits, culture we (still) call Pugofer which can be read as Platonic Universe that's GOod For Equational Reasoning or the original Pune University's — GOod For Equational Reasoning
  • The executable that's its most standard interface, is now shortened to pug.
    Which reads Platonic Universe for Geeks.

Of course pug also means a cute small dog

As it happens Wikipedia says this about pugs


Pugs are often described by the Latin phrase multum in parvo, or "much in little" or "a lot of dog in a small space", alluding to the pug's remarkable and charming personality, despite its small size. Pugs are strong willed but rarely aggressive, and are suitable for families with children. The majority of the breed is very fond of children and sturdy enough to properly play with them. Depending on their owner's mood, they can be quiet and docile but also vivacious and teasing. Pugs tend to be intuitive and sensitive to the moods of their owners and are usually eager to please them. Pugs are playful and thrive on human companionship. Pugs are often called "shadows" because they follow their owners around and like to stay close to the action.

This, for many of us, is a fairly accurate description of what pug is and how its intended to be used.

Stay tuned for some more posts! I need to write on

  1. More on the last 30 years
  2. Prospects for the next 30
  3. Why Platonism is so key...
  4. the future of FP
  5. ... and programming-education in general

No comments:

Post a Comment