Monday, March 29, 2010

First Love (continued) - Programming and Pilgrimages

I still cannot get my mind round those amazing 16K SDS 920's we used for telemetry processing at NASA's Tracking Stations during the 1960's. So much achieved by so little! They were lean, mean machines! It was there too that I was first introduced to computer programming. Following on my previous post I need to share and document  my own indebtedness to the various computer programming languages that were undoubtedly, subtle, transforming agents in my life. In many respects a programmer's life is affected and effected by the languages he engages with.

At the Tracking Station we didn't have dedicated programmers. By virtue of the critical nature of the work, engineers and technicians responsible for the maintenance and repair of equipment also needed to know how to program and operate the computers. My initial exposure to programming was somewhat elementary. This evolved. Later, on entering the ministry with no access to computers I went into a barren digital wilderness for almost ten years. Then came the advent of the personal computer. A past professional interest became an enduring pastime. It progressed from low level to high level "Fourth Generation Language" (4GL) programming. Then I was suddenly thrust once again back, full time, into software development. It was a major transition from a pastoral charge to computerised accounting, a field I knew nothing about.  Much of life evolves that way too, from the simple to the sophisticated, from the known to the unknown, from the exoteric to the esoteric. Transitions!
Programming languages are really just vehicles to supply abstractions to programmers. People think of programming languages as being good or bad for a given purpose, but they are really criticizing the abstractions that a language embodies. The progress in programming languages has been incredibly slow because new programming languages are difficult to create and even more difficult to get adopted. When you have a new programming language, the users have to rewrite their legacy code and change their skills to accommodate the language. So, basically, new programming languages can come about only when there is an independent revolution that justifies the waste of the legacy, such as Unix which gave rise to C, or the Web which gave rise to Java. Yet it's not the languages that are of value, but only the abstractions that the languages carry. - Charles Simonyi (The Edge) quoted "Philosophy of Programming Languages", http://pcs.essex.ac.uk/pls.html

Some of my friends are interested in the history of computing so a brief introduction to each is not out of place here. Those not technically minded may skip to the foot of the blog!

Machine Code http://en.wikipedia.org/wiki/Machine_code
This was the most fundamental and primitive means of programming to which I was first introduced, manually coding in binary instructions on a 24 button and display console. No monitor. Just a bank of buttons and lights into which one could punch in code and values step by step and then run it. Even this was tedious for the simplest routine. This was eased somewhat by other input/output devices such as a typewriter or punch tape but these were relatively primitive compared to modern peripheral devices. As technician my objective was simply diagnostic, programming for fault finding.

Symbol http://en.wikipedia.org/wiki/Assembly_language
"SYMBOL  is a  two-pass  assembler language for  the  SDS 900  series  and  9300  computers.   It was  designed to  operate on  a  minimal  4K  computer with  at least one  symbolic  input device  and at least one  output  device" (SDS 900 Series Symbol Technical Manual, SDS 900688A March 1965). This gave us the capability to do a little more than just diagnosis. One was enabled to be more versatile and analytic.

FORTRAN http://en.wikipedia.org/wiki/Fortran
One of the earliest computer languages, FORTRAN (an acronym for FORmula TRANslator) was designed to handle mathematical operations especially in scientific and engineering fields. It was ideally suited for our field of work.  Initially FORTRAN was unable to handle text manipulations of any sort, and could just barely place quoted text in its printed output. It also ran on a 4K SDS. With its mathematical functions one was now able to move from investigation to real-time application and data interpretation. Naturally this meant a paradigm shift as well.

Then came the period of my "Digital Doldrums". I had left the tracking station to enter pastoral ministry. However, with the advent of the IBM PC and later Desktop computers, I had access to computers once again. I graduated to more user friendly developers:

BASIC http://en.wikipedia.org/wiki/Basic_programming_language
The Beginner's All-purpose Symbolic Instruction Code, BASIC, was the first interpreted language made available for general use on PCs. It is now in such widespread use that most people see and use this language before they deal with others. It has changed over time, and is now most commonly seen as Visual Basic in a Windows environment.

Pascal http://en.wikipedia.org/wiki/Pascal_Programming_Language
Named after Blaise Pascal (http://en.wikipedia.org/wiki/Blaise_Pascal), a French Catholic theologian and philosopher, mathematician, and physicist, Pascal was specifically designed as a teaching language. Its object was to force the student to correctly learn the techniques and requirements of structured programming. It was a process of conditioning, to think in a particular way.

The shift from a scientific to an ecclesiastical environment also meant a shift to database related languages with a focus on people both as a collective, the ecclesia, as well as seeing persons as individually unique and special. BASIC and Pascal complimented my hobbies in astronomy and amateur radio whereas the database languages opened up new application areas in church membership management and genealogical related programs:

dBase http://en.wikipedia.org/wiki/DBase
Interestingly, dBase had its roots at the Jet Propulsion Laboratories too. It was developed by C. Wayne Ratliff who was a contractor at the Jet Propulsion Laboratory. dBase II became the first most popular database management system (DBMS). My first dBase applications involved Scottish IGI birth and marriage family records and library management.

Clipper http://en.wikipedia.org/wiki/Clipper_%28programming_language%29
Clipper was a programming language and compiler for the widely used dBase III database systems. As with other DOS based languages Clipper and dBase evolved from a sequential to Objected Oriented Programming languages.

SQL http://en.wikipedia.org/wiki/SQL
Structured Query Language or SQL was developed by IBM and by the late 1970s a version was available for the IBM PC. It has become a popular database management language.
SQL Queries for Mere Mortals(R): A Hands-On Guide to Data Manipulation in SQL (2nd Edition)

Interested in Artificial Intelligence (http://en.wikipedia.org/wiki/Artificial_Intelligence) and Information Theory (http://en.wikipedia.org/wiki/Information_Theory) led to new avenues. These were interests engendered already during my early years at the Tracking Station. So for a while when opportunity allowed, I also dabbled with:

Prolog http://en.wikipedia.org/wiki/Prolog
A very popular logic, artificial intelligence programming language. My interest was limited mainly to interrogating birth, marriage, and death registers for finding genealogical and family tree relationships. But the pursuit was short lived as new demands fell upon me.
Programming in Prolog: Using the ISO Standard
Finally, after fifteen years in pastoral administration, when I was deployed to our denominational head office where a conversion from a Unix, COBOL based system to a Novell/DOS platform was underway I had to acquaint myself with the newly implemented Clarion for DOS and eventually Clarion for Windows Rapid Application Developers (RAD). At the same time programming technology was moving from structured to Object Oriented Programming (OOP) methodologies  (http://en.wikipedia.org/wiki/Object-oriented_programming). Clarion for windows provided for both. This meant for me a major shift in programming approach and thinking processes.

Clarion http://en.wikipedia.org/wiki/Clarion_Programming_Language
Clarion was implemented at our denominational headquarters in 1991. It is one of the more sophisticated dedicated business application, large database developers available today. One of Clarion's unique features was its pioneering work in template methodologies. The language continues to keep abreast with new technologies. Whether Clarion will maintain this role or whether it goes the way of past languages yet remains to be seen. But it cannot be discounted just yet. I was intrigued by its longevity and ability to evolve and incorporate new advances compared to some of the older dinosaurs. Sadly my own sixteen year professional relationship with Clarion came to an end once I went into retirement but the language itself continues to live on.
Developing Clarion for Windows Applications/Book and DiskClarion 6 Tips & Techniques
Each new programming language represents a stage not only in technological development but also, for the programmer, a stage in personal development and psychological growth. That gives programming languages, as with human languages, a spiritual and psychic dimension! For instance, the transition from structured to object orientated programming represented for me a transition from an Aristotelian to a Platonic worldview.  Discrete functions and routines were now in a way seen to be manifestations of platonic ideas, forms and archetypes. Initially programming for me, involved engaging hands on with man-made machines which later developed into the stewardship of records and relationships with living human beings. Interestingly Clarion embodies both models, "loud and clear" and accommodates happily with SQL, for instance. This journey has been a progression from the material to the spiritual, from task to abstractions, from the profane to the sacred. I pay tribute to the languages so formative in my life. Every journey is a pilgrimage. Therefore the Scallop Shell!

See also:
"Philosophy of Programming Languages, Online and offline resources", http://pcs.essex.ac.uk/pls.html
"Ancient Philosophy and Programming Languages" by cyocum (Curate), http://www.perlmonks.org/?node_id=349593


©Colin G Garvie
HomePage: http://www.garvies.co.za

No comments:

Post a Comment