LPL-3

Tags

, , , , , ,

I’ll pick up with the language I began describing last time in a future post. Right now I want to pick up the thread of Little Programming Languages (LPLs) and use several examples to illustrate what underlies a programming language. (And as it turns out, these are “little” only in a certain sense.)

This first example, LPL-3, is Lisp-like and, because of that, is fairly orthogonal. Even better, it’s probably actually usable, although — like Lisp — it doesn’t have the cleanest syntax (languages like Python have really spoiled me).

Continue reading

Little Programming Languages

Tags

, , , , , ,

One characteristic of the hard-core coder is a love of computer languages, programming languages in particular. Programmers of that ilk — of my ilk — collect new languages like merit badges. (I get a kick out of saying that I’ve programmed “from Ada to the Z-80!”)

The especially far gone of us also enjoy creating new languages (or in some cases, new dialects of XML). Lately I’ve been playing with a language design that follows a favorite theme: the single-syntax construction language.

Continue reading

Rule #4: Comment As You Go!

Tags

, , , , ,

There is a common tendency, as we crank out code, to think that we’ll come back later and write some really good comments — comments that future reviewers will view with admiration for their clarity, completeness, and humor. But if we’re honest we have to admit: Later never comes. We never go back and write those great comments. Often, we don’t write any comments at all other than some placeholder we might dash off at the time.

Which is why Rule #4: Comment as You Go!

Continue reading

My Ideal System v.1

Tags

, , , ,

I got into software in the late 1970s, so my first couple of decades involved lots of low-level systems and designs. My world had a lot of assembly code, interrupt handlers, and driver routines. I can’t say I miss living in that realm, but it’s still fun to revisit sometimes.

A rare place that still happens is when I get to thinking about how I might design an operating system should I ever chose to (these days a dubious and foolish choice, at best).

Continue reading

HTML is not a programming language!

Tags

, , , , , , , , , ,

A webpage is a text document written in HTML. This document may also contain CSS and/or JavaScript, but it’s basically an HTML text document. You could write one — including the CSS and JavaScript — using just a pencil and paper.

Despite not needing a computer to write, all three are computer languages — they are languages used by, understood by, computers (and trained humans). However only one of those (JavaScript) is a programming language.

This is a brief explanation of which is which and why.

Continue reading

I Have a Spelling Checker

Tags

, , , ,

These days it seems like spell checkers exist in almost everything. Word processing software has had them a long time, although in the early days you had to invoke the spell check function. These days software  handily underlines misspelled words in real-time (with sometimes an advanced function we can invoke).

It always struck me as pretty lame how people (well, let’s be honest: managers) would present PowerPoint documents in important meetings with the red jagged “you misspelled this” underline sprinkled throughout their document.  What exactly did they think that meant?

But enough about managers. It’s Friday and time for some fun, so here’s an old, old poem about spelling checkers…

Continue reading

Getting to the Next Hill

Tags

, , , , ,

Last week I took my car in for scheduled service, and when I asked how long it might take, the guy said it was specified as one-and-a-half hours of labor. He could do that because there are thousands upon thousands of data points where a competent mechanic has performed that exact service, so there is a very clear idea how long it takes.

But ask a researcher how long it will take to find what they’re looking for, and the answer is usually, “I have no idea. I’ll know after I find it.” The path a researcher follows is usually new and unexplored, so it’s impossible to predict how long the path actually is.

Creating new software is much more like research than auto service, because it involves traveling unknown ground. Despite this, software development managers often act as if new development is predictable.

It often isn’t!

Continue reading

Musical Interlude

Tags

, , , , , , , , , , , ,

It’s Friday again, so it’s time to get casual and have some fun. Today I have a pair of songs for computer programmers. These files have been occupying bits on my hard drive for many, many years. I’m releasing them to the Wild World Web so they can live free!

You know the tunes, so sing along to the new words…

Continue reading