www.nickhodge.com

microsoft, munging and on being a mercurial iconoclastic professional geek.

Languages I Have Known

with 4 comments

Explor­a­tion of a dif­fer­ent kind of multi-lingualism

At school, I spent 3 years study­ing Ger­man. Sorry Herr Niemann, but all I remem­ber are the cof­fee and cake ses­sions, and I can now under­stand parts of Ger­man speech. I’d prob­ably still get lost in Ger­many. In an effort to expand the brain a little, in 1990 Avril Hodge and I spent 3 months learn­ing Japan­ese. The last time I tried my Japan­ese was at a res­taur­ant. In Tokyo, my extremely lim­ited skills left me. Luck­ily the wait­ress spoke Eng­lish — or else I would have starved.

Pro­gram­ming lan­guages; well that’s a dif­fer­ent story.

As an exer­cise, I’ve decided to list the pro­gram­ming lan­guages I have known — and see where it leads.

AppleSoft Basic, and Logo

The first com­puter I saw, touched and used was an Apple //+ in mid 1981. In a coun­try school, com­puters were some­thing very alien. I recall our school were given a loaner Apple for 2 months.

The more nerdy of us at the school played around with the com­puter dur­ing lunch breaks — and this is where my love, awe and respect for com­puters star­ted. The school’s sci­ence and math­em­at­ics teacher was a good guy. I prob­ably owe him for get­ting me into this great industry.

Included with the Apple //+ was a spiral bound AppleSoft Basic manual — and Logo. Therein began a long love of programming.

TRS-80 BASIC

Some­how, I man­aged to con­vince my par­ents to spend money on a TRS-80. Now I was a com­puter geek, fulltime.

The TRS-80 incor­por­ated a great BASIC lan­guage in ROM.

I remem­ber pro­gram­ming a word pro­cessor, spread­sheet and a simple account­ing pro­gram. Things were slightly dif­fer­ent in the early 80’s — stor­age was a 1200baud cas­sette tape.

Oh, and now I have an aver­sion to using the back­space key whilst hold­ing down shift…

Cobol

Spent a week on work exper­i­ence in the deep-dark 1980s doing a small bit of Cobol. I am glad that its time has gone — although, if I had per­sisted I might have made mil­lions dur­ing the Y2K crisis!

Hav­ing spent many hours with SQL, I can see why I am happy that I’ve left Cobol behind

Microsoft Basic for the Macin­tosh: ver­sions 1 through 3

My memor­ies of these ver­sions of Basic are mixed. The first ver­sion of Microsoft Basic on the Mac did no Mac UI cod­ing at all. From memory, the most you could do is call up dif­fer­ent fonts and dif­fer­ent win­dows. The sub­sequent ver­sions rec­ti­fied this; but its inter­est­ing to note that Apple had some­thing called “Mac­Basic” in the wings — writ­ten by the same guy that wrote MacWrite. I remem­ber get­ting a pir­ated copy on a floppy from a user group meet­ing. The stor­ies you read in Apple his­tory books state that Microsoft and Apple were at log­ger­heads over Mac­Basic; and Microsoft would not release Mul­ti­plan for the Mac is Apple released Mac­Basic. How times have changed (?)

Pas­cal

A little expos­ure to this… also wrote a kiosk style sys­tem in 1987 I think — cus­tom­ers would come to a Mac and type in their details — and we ran some sort of com­pet­i­tion based out of the data in the kiosk. Tied into this was a simple data­base sys­tem that stored the records. The data­base sys­tem was a C-ISAM pack­age you could pur­chase in these days.

Hyper­Talk

Hyper­Card, as cre­ated by Bill Atkin­son was a pleas­ure to work with and in. I remem­ber first see­ing Hyper­Card in 1987 and say­ing “this is amaz­ing” It pred­ated the web, and whilst lim­ited, the web lacks the sim­pli­city of HyperCard.

Although AppleScript has inher­it­ied Hyper­Talks feel, was a power­ful lan­guage that Apple evolved over time. Then they went into this Pink, SK8, Tali­gent boon­dogles and never really recovered their path.

Over­all, I loved the Hyper­Card envir­on­ment — the web is a poor replace­ment. To do any thing inter­est­ing, you have to know too many syn­taxes: HTML, CSS, Javas­cript, PHP (or sim­ilar) — and this is just to start.

Wrote a chapter for a book that was pub­lished in 1989 by The Waite Group, “Tricks of the Hyper­Talk Masters”

C

Hmm, C. Didn’t do any Unix C stuff — but around 1990/1991 did some Macin­tosh based C stuff to keep my hand in at MacOS pro­gram­ming. All I remem­ber was read­ing Inside Macin­tosh, learn­ing to con­vert this to Pas­cal stuff and all that jazz. Ahh yes, also wrote an XCMD/XFCN that appeared in the above book.

In a lull of con­sult­ing work in 1991 I star­ted to write a small Mac applic­a­tion in C.

sh, csh

Unix rocks, and these shell script­ing lan­guages are extremely power­ful. Cre­ated a simple net­work man­age­ment and report­ing sys­tem for the Aus­tralian Sub­mar­ine Cor­por­a­tion (to look at SNMP inform­a­tion from Kin­et­ics Fast­paths of all things — Loc­alTalk to Eth­er­net routers) — plus internal stuff for Ran­dom Access when they used the Unix-based account­ing system.

The integ­ra­tion of these shell script­ing envir­on­ments into the Unix envir­on­ment made it too easy to cre­ate simple “push” sys­tems. For instance, I cre­ated a sys­tem that per­mit­ted end users to design a simple report, and have it emailed to them on a daily basis. There was also a sys­tem of “watch­ers” where people could ask for noti­fic­a­tion of an event in the account­ing sys­tem (ie: an item was invoiced to one of their cus­tom­ers) — they would get noti­fied when this event occured. 1993.

AppleScript

Bas­tard­ised object ori­ent­a­tion and dynamic syn­tax. Still used today… and I have been known to cut code in it for demon­stra­tion pur­poses. Nowhere near a Guru like Shane Stanley.

Whilst I haven’t had time to work with AppleScript Stu­dio, I am look­ing for­ward to using this. The integ­ra­tion of AppleScript and the NeXT object ori­ented sys­tem is a strong combination.

User­Talk

User­Land Soft­ware, the makers of Fron­tier (and other things now) pion­eered the concept of inter-application com­mu­nic­a­tion on the Macin­tosh. The lan­guage they cre­ated to do this neatly integ­rated into their hier­arch­ical object stor­age system.

I used User­Talk to cre­ate the con­tent man­age­ment sys­tem that cre­ated the Fairfax@Atlanta (1996)site in 1996. Basic­ally, I stuck my ass on the line with this sys­tem and never looked back. Still have the code on me. Apple really owns it! Not that its worth any­thing today.

PL/SQL

PL/SQL is the lan­guage of choice when I was work­ing with Oracle. Ugly.

VICOM Script

VICOM soft­ware is a com­pany based in Bournemouth Eng­land. I first made con­tact with the then owner, Brian Mor­ris dur­ing Mac­World Janu­ary 1993. Being a “net­work­ing & con­nectiv­ity” guy in the Apple world, their ter­minal emu­lator VICOM Multiterm/Pro was a pleas­ure use. The real beauty was a pro­gram­ming lan­guage inven­ted by one of their tech­nical guys, Darko Roje.

VICOM Script was the per­fect lan­guage to cre­ate Front Ends in. It had excel­lent string pars­ing mech­an­isms and an easy way to make cus­tom Mac based front ends. Mul­tiple win­dows, lists etc — it had the lot. What’s more, if you wanted a change: you could email (AppleLink!) the designer. The lan­guage lent itself to user­int­er­face programming.

I used VICOM to cre­ate a front end to an Oracle SQL data­base. Using the com­mu­nic­a­tions cap­ab­il­it­ies of the sys­tem, I was able to front end a simple ter­minal ses­sion that called PL/SQL scripts on the backend Unix box. Today people would cre­ate web-based inter­faces. Still not as elegant.

New­ton­Script

The script­ing envir­on­ment on the ill-fated New­ton encom­passed more than the lan­guage. All data, such as the address book, were access­ible from your code. The lan­guage and envir­on­ment was easy to get into, once you under­stood the Small­talk terms like slots and prototypes.

Java

I love Java. This is the the lan­guage that really taught me object-orient tech­niques. This means that my concept of object ori­ent­a­tion is Java-centric and not up to the level of a C++ pro­gram­mer. Never had time or a reason to do much in C++.

Most of the real world stuff comes from WebOb­jects, which puts an even stranger slant on my understanding!

JavaS­cript (ECMAScript)

JavaS­cript is some­thing I wish I had more time to delve into; and maybe I should have earlier on in my web life. Its used in two places of interest at Adobe: as the exten­sion mechansim for GoLive 5.0 and the expres­sions engine part of AfterEf­fects 5.0÷5.5.

The other small uses I have made in HTML (related to DOM work) — urgh.

More recently, this engine has been incor­por­ated into InDes­ign, Pho­toshop and Illus­trator. Newer scripts on this site use Javas­cript and it is start­ing to grow on me.

Web­Script

This lan­guage is a part of WebOb­jects that is deprec­ated. Woe­ful lan­guage, great environment.

Visual Basic

Visual Basic is a lan­guage and an envir­on­ment. The psuedo-object ori­ent­a­tion can turn you in knots. The way that Microsoft’s COM sys­tem works whilst inel­eg­ant, seems to work. Adding extra com­pon­ents or calls to applic­a­tions such as InDes­ign or Illus­trator per­mit quick cre­ation of front ends or data mun­gers. I would find it dif­fi­cult to work on a large pro­ject in VB as you could get lost very eas­ily, and the lan­guage is not very elegant.

I think that writ­ing in PHP is faster for web cod­ing as com­pared to VBScript…

PHP

Whilst some­times inel­eg­ant — there are some sim­ilar com­mands that have dif­fer­ent syn­taxes; it smells of C and Unix inside a script­ing envir­on­ment. How­ever, it is a lan­guage that makes cre­ation of web based applic­a­tions very easy. The data/text manip­u­la­tion with arrays (and keyed arrays) makes the pro­cess of tak­ing data from some­thing like MySQL and pok­ing into HTML easy.

The cur­rent ver­sion of the mun­gen­eten­gine is 100% PHP cur­rently run­ning at over 1500 lines of code. Its too easy to cre­ate pro­ced­ural style code rather than purer object ori­ented code.

Action­Script

Action­script and Flash (with a little bit of XML): hmmm, mixed emo­tions on this one. The Flash player seems to no do things you would expect such as per­mit opa­city changes on “html” text fields. Strange. The hier­archy of moviec­lips and vari­ables held in them is also inter­est­ing. Whilst the lan­guage (at least in Flash5 level plu­gins) is like Javas­cript, I find the envir­on­ment a little inter­est­ing; the scope of vari­ables etc, and the address­ing of vari­ables cool.

Python

Why did I ignore Python for so long? It has to be the easi­est lan­guage to pickup, and the easi­est lan­guage to get some­thing done.

Python is way cooler than I expec­ted. Hav­ing “wanted” to learn Python for more than 3 years, its good to get it under my belt. There are so many exten­sions to COM, wx (Win­dow­ing sys­tem), SOAP — so it was easy to cre­ate a simple client/server upload sys­tem for adding stuff to the Mun­genet sys­tem. The OO nature of Python forces you into think­ing about MVC coding.

Now get­ting into Tur­bogears and all that Ajax stuff. SQLObe­jct reminds me of NeXT’s Enter­prise Object Framework.

C#

Now work­ing at Microsoft, it is imper­at­ive that you can read and write C#. Also, listen­ing to Anders Hejls­berg in vari­ous Microsoft set­tings — makes me respect this lan­guage and the .NET plat­form immensely.

Lan­guages I wish I had known…

C++,  Perl.

Written by Nick Hodge

December 24th, 2005 at 10:00 am

Posted in mungenet