Computer Languages
January 18th, 2012
Today I’d like to vent my frustration at the entire universe of interface languages used for communicating with computers. By “interface language”, I mean more than just programming languages; I also mean scripting languages and the complicated schemes used by various application programs to get things done. I’ll start by listing all those languages that I have learned over the years:
JOSS: an early interpretive language
ROSS: another early interpretive language
FORTRAN: an early programming language, emphasizing scientific calculation
JCL: Job Control Language, a tiny language used to initiate a program in the days of mainframe programs
???: an interpretive language that I used on a Burroughs 5500 computer
Wang: a calculation programming language used on the Wang minicomputer
“STS”?: a standardized statistical calculation package used to soup up FORTRAN
???: another little language used to control plotter devices on mainframe computers
HP-45: This didn’t have a language per se, but I wrote down long sequences of commands to perform some standard tasks
PDP: I once had to use a PDP for some work, and I learned a bit of its control command structure
TTL: this isn’t a computer language, it’s a standard for digital chips, but you’ve got to learn the standards of the system to use it.
BASIC: an early interpretive language
6502 machine language: Yes, I memorized all the opcodes for the 6502. You had to do that back in the day
6502 assembler language: maps directly to 6502 machine language, but it’s a different language
A custom development environment used to develop software for the Atari 2600. It used 8” floppies!
Atari DOS: the disk operating system for the Atari computer
TIA: the Television Interface Adapter used in the Atari 2600, which had its own little control language
CTIA: the second generation, used in the Atari 800
ANTIC: a programmable processor that controlled CTIA
RS-232: an interface protocol heavily used in the 70s and 80s
parallel printer interface: another interface protocol, used to control printers
Atari Macro Assembler: a powerful macro assembler system
IBM Selectric Interface: a code system permitting control of a digitally adapted IBM Selectric
68000 assembly language
Pascal: the programming language Apple required on the early Macintosh
Macintosh Toolbox: an immensely complex interface to the Mac operating system. Required for programming Macs.
QuickDraw: a subset of the Toolbox, handled all the screen drawing operations.
FORTH: an interpretive language
Macintosh Programming Workshop: a development environment, rather UNIX-like
Macintosh color system: when Apple equipped Mac with color capability, the early system was really hairy
C: a programming language
Metrowerks: a development environment for programming the Mac
C++: object-oriented C
BASIC STAMP: a version of BASIC used to control a single-chip computer
HTML: the language of the Web
XML: a superset of HTML for handling any data structure
Java: A programming language
Swing: a subset of Java used for drawing to the screen
Eclipse: a massive Integrated Development Environment, of which I have learned perhaps 30%
These are just the interface systems I’ve had to learn to do programming. There are also tons of applications that I’ve had to learn. In the early days, it didn’t take much effort to learn the interfaces to these applications, but as time has passed and applications have grown more complex, these applications have grown more complex, requiring much time commitment to learn. Here are some of the applications that I’ve learned (to greater or lesser degree). It’s only a partial list, because I’ve used so many over the years that I’ve forgotten most. I include only those that had a significant learning curve:
MEdit, an early text editor for the Atari 800
Visicalc, the first spreadsheet
Microsoft Word
SuperPaint: a program combining painting and drawing
Photoshop
HyperTalk, the language used to control Apple’s HyperCard system
Telecommunications software for early modem communications
Early LAN setup software (believe me, it was complicated!)
BBS software
Appleworks, an integrated office suite
Microsoft Excel
Microsoft Windows (only as much as I absolutely had to learn to get a few things done)
AppleScript
Max OS X -- yes, it has a learning curve, too!
Pixelmator, roughly equivalent to Photoshop 5
A number of website editing tools over the years, culminating in RapidWeaver, which I detest
A number of FTP programs
Microsoft PowerPoint and Apple Keynote
Network Solutions, my ISP, whose services are so vast that it’s impossible to figure out how to use them properly from their website
I’m sure that I’ve forgotten the great majority of the many applications I have used over the last thirty years, but this list should give you an idea of just how much stuff I have had to learn over the years. Just now I am contemplating learning to use WordPress, which has its own complex system to be learned. I have also been struggling with figuring out how to get Java applets working on different browsers, the technology involved in client-side versus server-side programming, and a Google programming system for adapting Java to work uniformly across the Web -- even on tablets and smartphones.
Consider how long the lists above are. Consider how many different programming languages, scripting languages, macro languages, and application languages I have learned. I hope you can understand why my brain is screaming “ENOUGH!!!” I’ve had it with all these one-night stands with computer technologies. I am sick and tired of learning some new technology, only to have it become obsolete in a few years. I realize that this is all part of the progress of technology, and the world is better off with these advances, and the languages of interaction are growing ever more compact and powerful. I don’t want to discourage anybody else from stuffing their heads full of all the complicated stuff that comprises the world of computers. But for myself, I intend to take a conservative path, casting a suspicious eye on any new technology I come across, confining my efforts to those things that truly are necessary to get things done. I think I need to enlist the aid of a coterie of young programmers who eagerly slurp up new stuff the way I did when I was their age.
Anyway, I am giving a Stinky to the entire computer industry for its poor performance in standardizing the various languages it uses. Everybody has their own custom system. Yes, it’s good to have lots of experimentation, and yes, there is some convergence in the most basic elements of computer interfaces. But no single raindrop thinks itself responsible for the flood, and so we just keep flooding people with ever more advanced and complicated stuff.
Ironically, I’m just as guilty as everybody else: the system I designed for interactive storytelling is the acme of complexity. I invented everything from scratch, and it proved too complicated for anybody to learn. I can offer a weak defense in the fact that I am tackling something that’s never been done before, and as a pioneer I have to make everything from scratch. Nevertheless, I now realize that I could have simplified the system as a whole by accepting some conventions.