Why numbering should start at one

Should collection/sequence/array indices start with zero or one? Most current languages choose zero. ForĀ flux, I am choosing one. This choice is orthogonal, meaning that I can easily change it if it turns out to be wrong. The reason to discuss such a trivial issue is that it is an example of how choices that made sense in the early days of programming need to be reexamined. It also frames some principles of language design: Abstract Datatypes, and Conservatism.
Read More »

Posted in General | Comments closed

Still Alive

Hey, long time. Having a snow day here, which is a good day to catch up. My son got sick this summer, which knocked me out of commission for a while, but I am back to work now. As promised last June, I have defined the formal semantics of a core language that captures the key ideas of side-effects in a tree-structured heap without sequential programming. I have formulated confluence and soundness theorems that seem plausible (though I haven’t tried to prove them). So I don’t think it will collapse under me like Coherence did. One of the next steps is to build a reasonably usable textual syntax that can be compiled into the core language. By reasonably usable, I mean usable for expressing small examples up to a hundred lines of code, which is the minimum I need to communicate the idea to others. The working title of the language is flux.
Read More »

Posted in General | Comments closed

Pay no attention to that strange old man on Channel 9

Here. I actually haven’t watched it yet because it is just too freaky to see myself on video. I’ll wait till Edward Norton plays me in the movie version.

Posted in General | Comments closed

Emerging Languages Camp Wrapup

I meant to write this earlier, but I have been occupied with a family medical emergency. The EL camp was a great experience, and I hope they do it again. I met more interesting people, and heard more interesting ideas, than at any other conference I have attended. Naturally there were ups and downs. There were some me-too languages with no purpose other than to entertain and glorify the author. But there were also quite a few serious efforts to try out new ideas and advance the state of the art. I would like to thank the organizers, Alex Payne and Brady Forrest, for perceiving the need and making this event happen. Read More »

Posted in General | Comments closed

Emerging Languages Camp

Slides are at [PPT][PDF]. I will probably only have time to present a subset of these slides.

Posted in General | Comments closed

Vulcans vs. Apes

The biggest problem with programming is that we don’t agree on what the problem is. The comments on the previous posts reveal fundamentally incompatible views. I am equally shocked by the opinions held by some distinguished academics and leading practitioners. Our views of programming are so at odds that it’s almost as if we were from different planets. Wait – that’s it! It all makes sense now… Read More »

Posted in General | Comments closed

Mea Culpa

Reflecting upon my previous post, I am wondering why LISP triumphalists like Paul Graham annoy me so much? Perhaps it is because I used to be one myself, in spirit if not in syntax. And also because I now see them as a major symptom of what ails programming. Read More »

Posted in General | Comments closed

The Myth of the Super Programming Language

I just read yet another recycling of the old myth of how some esoteric programming language (often Lisp or Haskell) is the secret weapon that allowed a team to outperform expectations by an order of magnitude. Paul Graham has strongly encouraged this myth (see Beating the Averages), but it has been circulating for ages. It is totally false. Worse, it reinforces the intellectual elitism that is the bane of our field. Read More »

Posted in AgitProp, General | Comments closed

The Greater Apple Co-Prosperity Sphere

Much has been written lately about Apple restricting iPhone and iPad apps to only use Apple programming languages and libraries. This is indeed an alarming development for the future of programming.

Opinion is split as to whether this decision shows Steve Jobs to be a visionary hero seeking only to improve the quality of the user experience, or that he is a megalomaniac Fascist. But I think people are missing what this is really about. It’s about the money. The Ad money.

App Ads are potentially a Google-scale cash flow, and Jobs wants it. He wants to sell ads and inject them into apps on the iPhone/iPad/iDesk, just like Google injects ads into web pages. He can’t do that unless all the apps are using his libraries. If he lets Flash apps in, then Adobe would be able to sell the ads instead. That is why section 3.3.9 of the new developer agreement says “the use of third party software in Your Application to collect and send Device Data to a third party for processing or analysis is expressly prohibited”. Like, for example, Ad networks.

Help me, Google; you’re my only hope.

Posted in General | Comments closed

Coherent Binding

Abstract for my talk at Emerging Languages Camp:

We cannot evolve beyond imperative programming until we solve the problem of coordinating changes to state. Functional programming and transactions segregate the problem, but don’t solve it. I am exploring a new kind of language, inspired by modern “Model-View-Binding” application frameworks. The language uses bidirectional data binding as its fundamental mechanism, generalized into arbitrary change-triggered actions. Bindings propagate changes coherently: execution order is determined automatically based on the interdependencies between bindings. The programmer does not have to worry about execution order. A side benefit is the automatic discovery of parallelism. Unfortunately coherence doesn’t work in a conventional heap of objects with arbitrary dynamic pointers to each other. I propose a data model in which objects and collections of objects are nested to form trees. Pointers are replaced with cursors constrained within a collection. This richer structure permits coherent and deterministic execution of bindings. Coherent binding offers the simplicity of declarative programming while maintaining complex dynamic state.

Comments? The idea is to use data binding as a metaphor that many programmers are already familiar with. Can I assume people will get what “Model-View-Binding” is, even though I just invented the term?

Posted in General | Comments closed

Haskell damage

Per Vognsen suggests a Haskell version of the damage function from my Schematic Tables talk:

data Attack = Magic | Melee
hit surprise defense attack = damage
  where effectiveness = power * (if surprise then 3 else 2)
      (power, damage) = case attack of
                        Magic -> (5, max 0 (effectiveness - defense))
                        Melee -> (4, 2 * effectiveness / defense)

This passes pairs of values (power, damage) through conditionals. That allows the conditionals to multiplex more than one value, rather than being repeated. I suspect I could stymie that approach with more complex data flows, but I am happy to acknowledge that Haskell does OK on this example. Thanks, Per.

Posted in General | Comments closed

Emerging Languages Camp

I have been invited to the Emerging Languages Camp. Sounds like fun. Let’s meet up.

Posted in General | Comments closed

Code Bubbles

Check out the cool demo of Code Bubbles. This is some very nice, fresh thinking. As Gilad Bracha says, standard IDE’s look like the console of a B-52. I look forward to reading the details, which they are embargoing until their papers are presented. I wonder what UI they used? I see zooming, transparent overlays, and animation. I am guessing Silverlight.

Posted in General | Comments closed

Typed Subtext

The last several months I have been trying to make coherence deterministic, using what PL theoreticians call a type and effect system. The effect system is telling me to return to the tree data model of Subtext (which I had set aside as too complex), but with static types. Therefore I am redefining Subtext as a statically typed language, with classes and inheritance and so on. I have sketched this out, and it seems to magically resolve many of the complexities that were stumping me before. Read More »

Posted in General | Comments closed

Call for Onward workshops

I am chairing workshops at the Onward conference this year.

The Onward! conference is dedicated to new ideas at the frontier of knowledge about software and programming. Onward! workshops are located a day’s ride past the frontier. They are where groups can explore uncharted ideas. They are an ideal base for intellectual insurrections. Workshops proposals are welcome on all topics related to software and programming, especially topics unacceptable at mainstream Computer Science conferences.

Details here.

Posted in General | Comments closed


Bad news: co-action is incomplete. Read More »

Posted in General | Comments closed

NEPLS slides up

Here are the slides from my NEPLS talk. People seemed to enjoy it, and I got a bunch of laughs. Positive comments afterwards. Mitch Wand couldn’t stay for my talk, but I got a few minutes to talk with him, and he gave me a promising suggestion for the completeness theorem. Overall a good experience, though as usual I am relieved now that it is over.

Posted in General | Comments closed

NEPLS submission

I submitted the following to NEPLS: Read More »

Posted in General | Comments closed

OOPSLA report

Back from OOPSLA, with mixed feelings. This was the smallest OOPSLA ever, and there are some big changes coming next year: they are renaming the conference SPLASH (Systems, Programming, Languages, Applications: Software for Humanity). OOPSLA becomes a colocated conference within the SPLASH umbrella, along with Onward and Dynamic Languages. The Onward program was perhaps the best ever this year, with some interesting preliminary work that was more than just metaphors and hand waving. Jonathan Aldrich’s Plaid language is worth following. Read More »

Posted in General | Comments closed

Onward talk

Here is a video of my Onward talk.

Posted in General | Comments closed
  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.