Exploration of a different kind of multi-lingualism
At school, I spent 3 years studying German. Sorry Herr Niemann, but all I remember are the coffee and cake sessions, and I can now understand parts of German speech. I’d probably still get lost in Germany. In an effort to expand the brain a little, in 1990 Avril Hodge and I spent 3 months learning Japanese. The last time I tried my Japanese was at a restaurant. In Tokyo, my extremely limited skills left me. Luckily the waitress spoke English — or else I would have starved.
Programming languages; well that’s a different story.
As an exercise, I’ve decided to list the programming languages I have known – and see where it leads.
AppleSoft Basic, and Logo
The first computer I saw, touched and used was an Apple //+ in mid 1981. In a country school, computers were something 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 computer during lunch breaks — and this is where my love, awe and respect for computers started. The school’s science and mathematics teacher was a good guy. I probably owe him for getting 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
Somehow, I managed to convince my parents to spend money on a TRS-80. Now I was a computer geek, fulltime.
The TRS-80 incorporated a great BASIC language in ROM.
I remember programming a word processor, spreadsheet and a simple accounting program. Things were slightly different in the early 80’s – storage was a 1200baud cassette tape.
Oh, and now I have an aversion to using the backspace key whilst holding down shift…
Cobol
Spent a week on work experience in the deep-dark 1980s doing a small bit of Cobol. I am glad that its time has gone – although, if I had persisted I might have made millions during the Y2K crisis!
Having spent many hours with SQL, I can see why I am happy that I’ve left Cobol behind
Microsoft Basic for the Macintosh: versions 1 through 3
My memories of these versions of Basic are mixed. The first version of Microsoft Basic on the Mac did no Mac UI coding at all. From memory, the most you could do is call up different fonts and different windows. The subsequent versions rectified this; but its interesting to note that Apple had something called “MacBasic” in the wings – written by the same guy that wrote MacWrite. I remember getting a pirated copy on a floppy from a user group meeting. The stories you read in Apple history books state that Microsoft and Apple were at loggerheads over MacBasic; and Microsoft would not release Multiplan for the Mac is Apple released MacBasic. How times have changed (?)
Pascal
A little exposure to this… also wrote a kiosk style system in 1987 I think – customers would come to a Mac and type in their details — and we ran some sort of competition based out of the data in the kiosk. Tied into this was a simple database system that stored the records. The database system was a C-ISAM package you could purchase in these days.
HyperTalk
HyperCard, as created by Bill Atkinson was a pleasure to work with and in. I remember first seeing HyperCard in 1987 and saying “this is amazing” It predated the web, and whilst limited, the web lacks the simplicity of HyperCard.
Although AppleScript has inheritied HyperTalks feel, was a powerful language that Apple evolved over time. Then they went into this Pink, SK8, Taligent boondogles and never really recovered their path.
Overall, I loved the HyperCard environment – the web is a poor replacement. To do any thing interesting, you have to know too many syntaxes: HTML, CSS, Javascript, PHP (or similar) – and this is just to start.
Wrote a chapter for a book that was published in 1989 by The Waite Group, “Tricks of the HyperTalk Masters”
C
Hmm, C. Didn’t do any Unix C stuff – but around 1990/1991 did some Macintosh based C stuff to keep my hand in at MacOS programming. All I remember was reading Inside Macintosh, learning to convert this to Pascal stuff and all that jazz. Ahh yes, also wrote an XCMD/XFCN that appeared in the above book.
In a lull of consulting work in 1991 I started to write a small Mac application in C.
sh, csh
Unix rocks, and these shell scripting languages are extremely powerful. Created a simple network management and reporting system for the Australian Submarine Corporation (to look at SNMP information from Kinetics Fastpaths of all things – LocalTalk to Ethernet routers) – plus internal stuff for Random Access when they used the Unix-based accounting system.
The integration of these shell scripting environments into the Unix environment made it too easy to create simple “push” systems. For instance, I created a system that permitted end users to design a simple report, and have it emailed to them on a daily basis. There was also a system of “watchers” where people could ask for notification of an event in the accounting system (ie: an item was invoiced to one of their customers) – they would get notified when this event occured. 1993.
AppleScript
Bastardised object orientation and dynamic syntax. Still used today… and I have been known to cut code in it for demonstration purposes. Nowhere near a Guru like Shane Stanley.
Whilst I haven’t had time to work with AppleScript Studio, I am looking forward to using this. The integration of AppleScript and the NeXT object oriented system is a strong combination.
UserTalk
UserLand Software, the makers of Frontier (and other things now) pioneered the concept of inter-application communication on the Macintosh. The language they created to do this neatly integrated into their hierarchical object storage system.
I used UserTalk to create the content management system that created the Fairfax@Atlanta (1996)site in 1996. Basically, I stuck my ass on the line with this system and never looked back. Still have the code on me. Apple really owns it! Not that its worth anything today.
PL/SQL
PL/SQL is the language of choice when I was working with Oracle. Ugly.
VICOM Script
VICOM software is a company based in Bournemouth England. I first made contact with the then owner, Brian Morris during MacWorld January 1993. Being a “networking & connectivity” guy in the Apple world, their terminal emulator VICOM Multiterm/Pro was a pleasure use. The real beauty was a programming language invented by one of their technical guys, Darko Roje.
VICOM Script was the perfect language to create Front Ends in. It had excellent string parsing mechanisms and an easy way to make custom Mac based front ends. Multiple windows, lists etc – it had the lot. What’s more, if you wanted a change: you could email (AppleLink!) the designer. The language lent itself to userinterface programming.
I used VICOM to create a front end to an Oracle SQL database. Using the communications capabilities of the system, I was able to front end a simple terminal session that called PL/SQL scripts on the backend Unix box. Today people would create web-based interfaces. Still not as elegant.
NewtonScript
The scripting environment on the ill-fated Newton encompassed more than the language. All data, such as the address book, were accessible from your code. The language and environment was easy to get into, once you understood the Smalltalk terms like slots and prototypes.
Java
I love Java. This is the the language that really taught me object-orient techniques. This means that my concept of object orientation is Java-centric and not up to the level of a C++ programmer. Never had time or a reason to do much in C++.
Most of the real world stuff comes from WebObjects, which puts an even stranger slant on my understanding!
JavaScript (ECMAScript)
JavaScript is something 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 extension mechansim for GoLive 5.0 and the expressions engine part of AfterEffects 5.0/5.5.
The other small uses I have made in HTML (related to DOM work) — urgh.
More recently, this engine has been incorporated into InDesign, Photoshop and Illustrator. Newer scripts on this site use Javascript and it is starting to grow on me.
WebScript
This language is a part of WebObjects that is deprecated. Woeful language, great environment.
Visual Basic
Visual Basic is a language and an environment. The psuedo-object orientation can turn you in knots. The way that Microsoft’s COM system works whilst inelegant, seems to work. Adding extra components or calls to applications such as InDesign or Illustrator permit quick creation of front ends or data mungers. I would find it difficult to work on a large project in VB as you could get lost very easily, and the language is not very elegant.
I think that writing in PHP is faster for web coding as compared to VBScript…
PHP
Whilst sometimes inelegant – there are some similar commands that have different syntaxes; it smells of C and Unix inside a scripting environment. However, it is a language that makes creation of web based applications very easy. The data/text manipulation with arrays (and keyed arrays) makes the process of taking data from something like MySQL and poking into HTML easy.
The current version of the mungenetengine is 100% PHP currently running at over 1500 lines of code. Its too easy to create procedural style code rather than purer object oriented code.
ActionScript
Actionscript and Flash (with a little bit of XML): hmmm, mixed emotions on this one. The Flash player seems to no do things you would expect such as permit opacity changes on “html” text fields. Strange. The hierarchy of movieclips and variables held in them is also interesting. Whilst the language (at least in Flash5 level plugins) is like Javascript, I find the environment a little interesting; the scope of variables etc, and the addressing of variables cool.
Python
Why did I ignore Python for so long? It has to be the easiest language to pickup, and the easiest language to get something done.
Python is way cooler than I expected. Having “wanted” to learn Python for more than 3 years, its good to get it under my belt. There are so many extensions to COM, wx (Windowing system), SOAP – so it was easy to create a simple client/server upload system for adding stuff to the Mungenet system. The OO nature of Python forces you into thinking about MVC coding.
Now getting into Turbogears and all that Ajax stuff. SQLObejct reminds me of NeXT’s Enterprise Object Framework.
C#
Now working at Microsoft, it is imperative that you can read and write C#. Also, listening to Anders Hejlsberg in various Microsoft settings — makes me respect this language and the .NET platform immensely.
Languages I wish I had known…
C++, Perl.