What I Do, Part I: Programming languages (Up-Goer 5 edition)

“Splasho” has has created an online text editor which checks to make sure you use only the 1000 most common English words, inspired by this recent XKCD comic. Over the past few weeks, many scientists have taken up the challenge of explaining their work using only the 1000 most common words—which is not easy! As soon as I saw this I knew I had to try it. So here’s mine. This is essentially a recap of my previous post, but this time using a severely limited vocabulary.

Suppose you want a computer to do something that no one has ever
made a computer do before. Computers are amazing because they
can do anything you want—even things that no one has ever
thought of before!—and they are very good at following
directions. But you have to tell them EXACTLY what to do.

If you want to tell a person what to do, you use human words.
But if you want to tell a computer what to do, you can not use
human words. You have to use computer words that the computer
can understand.

Sometimes it is easy to use computer words to tell a computer
what to do. But sometimes it is hard, and sometimes it takes
very many words, and sometimes you say the wrong thing so the
computer does something you did not want it to do. I think
about how to make better computer words so that it is easier to
tell a computer what to do, or so that it does not take as many
words, or so that it is not so easy to say the wrong thing.

Some people with fast brains have thought about interesting
things with numbers. But when they were thinking about those
interesting number things they were not thinking about computers
or computer words. I take the interesting things with numbers
and use them to make better computer words. It’s amazing that
the interesting number things can help make better computer
words, even though the people who first thought about them did
not imagine they could do that. This often happens with
interesting number things. People think about them just because
they are interesting, and then later other people find out that
the interesting number things help with something that no one
ever imagined.

About Brent

Associate Professor of Computer Science at Hendrix College. Functional programmer, mathematician, teacher, pianist, follower of Jesus.
This entry was posted in computation, programming and tagged , , . Bookmark the permalink.

14 Responses to What I Do, Part I: Programming languages (Up-Goer 5 edition)

  1. Ben Smith says:

    I love this trend of using common words!!! While being limited to just 1000 is pretty drastic, it’s a push in the right direction and is far preferable to using only the 1000 most arcane and obscure words, which seems to be more the norm in academia.

  2. xander says:

    I’m not sure that I entirely agree—it depends entirely on the intended audience. The use of simpler language makes it easier to follow the general gist of a piece of writing, but it entails a cost in that clarity, brevity, and exactness are easily lost.

    In popular writing, where the intended audience is laypeople, it makes sense to use a reduced vocabulary, as you are not trying to convey the nitty-gritty of a field, but only a general idea about what is being done and why it is important. On the other hand, in academic writing, the intended audience is other experts, who can be counted upon to have the prerequisite background to follow an argument made using arcane language (or, at least, they should have easy access to further resources that can help them out).

    • Brent says:

      There is certainly great value in specialized vocabulary (which would appear “arcane and obscure” to most) in conveying ideas precisely to those in a certain field with a shared background understanding. Unfortunately, it is my experience that 75% of the academic writing I encounter is still aimed too high, even accounting for audience. That is, it could be rewritten to be understandable to a wider audience without giving up any precision or cutting any content. Towards that end, this is a valuable exercise; of course no one is seriously suggesting that we should all go around writing using only the 1000 most common words.

      • xander says:

        Oh, I agree entirely, and didn’t mean to suggest otherwise. I just wanted to point out that there is a very real trade-off between language that is clear, brief, and exact, and language that is simple. Clarity and exactness are incredibly important in academic writing, no? On the other hand, arcane language is all to often used in academic writing for the sake of brevity (because, I suppose, journal editors value brevity?). I am more than happy to sacrifice brevity for simpler language.

  3. John Baker says:

    I just facetiously, (a word off the list), suggested that my employer adopt the Up-Goer 5 approach to writing software design documents. We get a fair number of complaints about jargon. Regardless of its other merits or demerits Up-Goer speech is jargon free.

  4. dougaj4 says:

    Coincidence, I’ve just posted a “what I do” post as well.
    But to avoid lots of words I used lots of pictures (and a bit of Bach):

    • CharlieM says:

      You may think one thousand words are tough, but that exercise will give you a taste of the difficulties computer language designers face. They are limited to using only three simple words (fundamental operators) and must use structures in memory space to accomplish anything else. Physical process-control software is especially complex because it is limited to expressing all spatial, temporal, and spatio-temporal relations through the operators AND and NOT (and their combinations) and STORE.

      AND and NOT (conjunction and negation) are static (space-domain) operations, and STORE is the memory operator, also serving as time-to-space translator. AND, NOT, and STORE. That’s three words. Imagine writing a thesis (or a book) using repetitions and combinations of only three words. So few allowable words (simplistic logic) together with the tool of counting (another space-domain operation) forces structural complexity and is one of the reasons that software is troublesome. We can beautify our code by having more sophisticated (temporal) primitive operators in the foundation logic.

  5. Nancy Rooker says:

    Being a layperson, I found that when I read your Upgoer 5 edition, I was happy to track your explanation easily, but then I became frustrated by the limitations…. such as “interesting number things” and “computer words.” So, I immediately went to your earlier post and sank into a glassy-eyed stupor trying to climb over the short list of programming languages and wade through “functions which take other functions as arguments.” You begin by warning us that there are over 600 notable programming languages listed at Wikipedia, for goodness’ sake, and by giving us a short, simple example of how a computational process (aka a mathematical function or formula, or something) can be described in programming language…. this either wakes us up to something akin to night sweats or reminds us that the mail might have come by now.

    I will admit, however, that when, determined to conquer the text and press through the last bit of your earlier article, I truly appreciated Haskell (bless him… or it?) and that elegant little (+1). I’m guessing that programming language is becoming less and less complex and, thus, more accessible to future students and other adults? Is that part of the point?

    • Brent says:

      Haha, sorry to give you night sweats! That wasn’t my intention, but of course, different things will be obvious and/or terror-inducing to different people so writing is always a difficult balancing act. And you’re right of course about “interesting number things” (i.e. math) and “computer words” (i.e. programming languages). In those cases restricting to the most common 1000 words probably makes it HARDER to read, not easier! But my goal in writing this post wasn’t necessarily to write something easy to understand, it was just to have fun with a particular self-imposed constraint — though of course I hoped it would spark further conversation (as indeed it has).

      I wouldn’t say that programming languages are becoming less and less complex… in fact, rather the opposite! The point is that if the complexity is of the right sort, a more complex language can help you express complex things in simple ways. As a (somewhat silly) example, imagine that English did not have a past tense, or the concept of “before” (only “after”), and you wanted to say that you bought an orange yesterday. You would have to say something like “I buy an orange, and then 24 hours after that, it is now.” It’s complicated and long and confusing. By adding a past tense (making the language more complicated), you can now say “Yesterday I bought an orange.” (which is simpler).

  6. Charles Gilbert says:

    Brent –

    Forgive me for using this venue to comment about a different topic, one which I have not been able to get a satisfying reply from several mathematical web sites.

    Of course a large effort has been expended in the search for truly random numbers, to use in encrypting important files of all kinds.
    However as I understand it, the irrational number expansions (SQRT(2), pi, etc) are assumed by mathematicians to be normal, infinite, and truly random number arrays.
    If this is true, what is all the fuss over random number generators, when infinitely many are available at the touch of a button ? (I assume that the deterministic nature of irrational numbers is overcome by using several expansions of different irrational numbers to scramble the input point to the final array, such that defeating the final key would be impractical.)

    An important point here is that the irrational number expansions are “guaranteed” random (?) – no testing needed. I glean that a lot of the hassle over truly random numbers is testing them.

    Thanks –

    I have run Fast Fourier Transforms of the SQRT(2) and pi expansions, and found only white noise – no patterns.

    • Brent says:

      Good question! A proper reply would probably be too long for a comment, and other people will probably be interested in the answer too, so I will plan to write a blog post about this.

    • SB says:

      It’s a good question, and as Brent says, a proper answer would be difficult. But I can maybe help with a quick comment.

      Mathematicians define many different sorts of “randomness” that try to capture particular features of the intuitive, everyday idea. But randomness is strange, and the mathematical versions often don’t behave quite as you would expect. They will often capture one feature but not any of the others, so a sequence that is “random” in one sense won’t behave at all randomly in other ways. When mathematicians call a number like Sqrt(2) “random”, they’re using it in a different sense to the way the cryptographers use it.

      So we might say that one property of “randomness” is that every digit occurs equally often. We can make that our definition if we like. But then a sequence like 123456789012345678901234567890… repeated endlessly counts as “random” in this specialised sense. It’s got one of the properties of randomness, but it doesn’t have others, like that every possible consecutive pair of digits should occur equally often, too. So suppose we add that to our definition. But now we can find another sequence that satisfies our definition of “random” having all pairs occuring equally often, but where consecutive triples do not. And so on.

      We can keep adding properties. Another property of random numbers is that if you treat them as a decimal and square them, the result (apart from the first few digits) should look random too (digits occur equally often, etc.). Obviously Sqrt(2) fails that one, but it’s a legitimate property of randomness.

      When mathematicians say the decimal expansion of Pi or Sqrt(2) is “random”, they’re actually using one of these heavily cut-down definitions. Unfortunately, that sort of definition usually isn’t good enough for cryptography. Cryptographers call them “pseudorandom”. And while with the right set of carefully-selected properties you can get pseudorandom sequences that *do* work, there have been huge numbers of people fooled into thinking one of the cut-down definitions was good enough, building ciphers that cryptographers find really easy to break.

  7. Laurie Brown says:

    I must apologize ahead of time for my persnickety preoccupation with standard spelling, but I hope to amuse and enlighten, not enrage! There are a few words that begin with al- that seem like compound words – albeit, almost, always, already, although, also, aloud, altogether – but some are actually phrases with the word “all”: “all right” being one of them. I know, language is an organic thing, and perhaps “alright” will be included in the lexicon eventually, but according to most sources it is seen as a misspelling. The confusion between “all together” and “altogether” is a particular thorn in my side, as a third grade teacher who is compelled to cross out the misused “altogether” in math problems such as, “How many apples did they have altogether?” It has an entirely (altogether!) different meaning. No wonder our students . . blah blah blah. . . However, please know that you are my math HERO because of your Factorization Visualization! Did I tell you I have printed out, cut, mounted, laminated your brilliant designs, and made them into cards that my students and I call “Yorgeys”?! My kids have even created different versions of some of them, so we have full sets of the 3s, for example, with 15 made up of 3 sets of 5 and 21 made up of 3 sets of 7. Eight-year-olds totally see prime and composite when shown these simple, intuitive designs. Thank you!

  8. Great post. I’ll use it too.

Comments are closed.