Supersonic Man

June 19, 2014

the Swift programming language(s)

Filed under: Hobbyism and Nerdry,thoughtful handwaving — Supersonic Man @ 9:52 pm

So Apple is regretting the corner they painted themselves into by having their core development language be Objective-C.  This language is a horrid mashup made half of Smalltalk and half of traditional unreconstructed C.  Compared to C++, the modern half is more modern, but the primitive half is more primitive.  Steve Jobs used it for NeXT during his time away from Apple, and brought it back with him.  But what looked cool and exciting in 1986 is looking awfully outdated today.

The trend in the industry is clearly moving away from these half-and-half languages, toward stuff that doesn’t inherit primitive baggage from the previous century.  Microsoft has had great success by stripping all the old C-isms out of C++ to make C#, and Java — the oldest and crudest of this new generation of programming languages — may still be the world’s most widely used language, even though most people probably now see it as something that’s had its day and is not the place to invest future effort.

Now Apple has announced a nu-school language of their own, to replace Objectionable-C.  They’re calling it Swift.  It’s even more hep and now and with-it than C#. There’s just one problem: there’s already another computer language using the name.  It’s a scripting language for parallel computing.  Its purpose is to make it easy to spread work over many computers at once.  And this, to me, is far more interesting than Apple’s new me-too language.  (Or any of the other new contenders coming up, like Google’s Go or the Mozilla foundation’s Rust.)

See, massive parallelism is where the future of computing lies.  If you haven’t noticed, desktop CPUs aren’t improving by leaps and bounds anymore like they used to.  Speeds and capacities are showing a much flatter growth curve than they did five years ago.  You can’t keep making the same old CPUs faster and smaller… you run into physical limits.

And this means that if we want tomorrow’s computers to be capable of feats qualitatively beyond what today’s can do — stuff like understanding natural language, or running a realistic VR simulation, or making robots capable of general-purpose labor — the only way to get there is through massive parallelism.  I think that in a decade or two, we’ll mainly compare computer performance specs not with gigahertz or teraflops, but with kilocores or megacores.  That is, by the degree of parallelism.

One problem is that 95% of programming is still done in a single-tasking form.  Most programmers have little idea of how to really organize computing tasks in parallel rather than in series. There’s very little teaching and training being directed toward unlearning that traditional approach, which soon is going to be far too limiting.  Promulgating a new language built around the idea — especially one that makes it as simple and easy as possible — strikes me as a very positive and helpful step to take.  I’m really disappointed that Apple has chosen to dump on that helpful effort by trying to steal its name.

June 12, 2014

getting through the Dumb Layer

Filed under: Rantation and Politicizing,thoughtful handwaving — Supersonic Man @ 1:38 pm

I am defining a new term, “the dumb layer”.  What I mean by the term is, any layer of human interface which is designed to deal quickly, or at low cost, with simple issues and questions that do not (or which someone assumes should not) require an intelligent response.  Some examples of Dumb Layers are:

  • voice menu systems that answer telephones, which you have to navigate through (or even actively outwit) in order to speak to a live person
  • software user interfaces which hide their more complex features behind some kind of gateway where you have to select “advanced settings” or “expert mode”
  • scripts which tell customer service workers to answer all incoming queries initially with a canned response covering basic common issues, so that you never get a relevant or thoughtful reply until you send in a followup query
  • bureaucracies which routinely reject legitimate requests for action until you show persistence in nagging them, or which ignore you until you submit lots of “required” paperwork
  • software which has a simple GUI to make it easy to use, but also a command-line or script-based interface which is more powerful
  • anything that appears when you click a Help button
  • anything that provides premade style templates as an alternative to manual styling
  • the Check Engine light in your car

There are lots more types.  A lot of times, a Dumb Layer is a feature of a machine, with the goal being ease of use for the majority, but there are lots of human institutions that also have a Dumb Layer, implemented formally as a set of rules that employees are instructed to follow in dealing with the public, or informally as an attitude of lackadaisicalness toward anyone who they think they can safely ignore.

Dumb Layer design wasn’t very common when I was young.  Nowadays, Dumb Layers seem to be everywhere.  And if you want good service, getting it depends on how adroit one becomes at penetrating through the Dumb Layer to reach someone who is empowered to think about what they’re doing.  This becomes annoying if one has to have an extended back-and-forth over several days, particularly over the phone, as you may have to redundantly re-navigate the Dumb Layer on each new call.

Sometime, designers and authorities are seduced into believing that the Dumb Layer should be able to do everything, and there’s no need to let anyone through to anything smarter.  This makes economic sense if you’re providing some service at a super low price and can’t afford to give interactive support.  But it can also afflict systems and institutions that really don’t have any excuse.  Such systems can gradually become acutely dysfunctional, even as superficially most business goes on normally with no problems.

Note: sometimes what appears to be a Dumb Layer is actually a security layer, and needs to be there to limit unauthorized access.  And sometimes it’s a safety feature, like traction control and antilock brakes.  (A Harley-Davidson has no dumb layer.)

I wrote a post here a while back about how Google and other search engines seem to actually be getting less useful as they “improve”.  I think this is an instance of the dumb layer taking over.  The smart layer of Google is getting more and more inaccessible, and Bing and the others don’t seem to be any better.

Lastly, I just want to applaud some organizations which have chosen to have no Dumb Layer.  Wikipedia is one: you search for advanced quantum mechanics or unsolved problems in mathematics, and you get the whole enchilada plopped down right in front of you, not filtered or simplified in any way — just as the ability to add new content is right there with no filter, as long as you don’t abuse it.  To me, this makes it not just the largest and most accessible encyclopedia ever assembled, but also the most genuinely useful.  People may put in facetious stuff, such as describing Solange Knowles as “Jay-Z’s 100th problem”, but every other encyclopedia loses far more value because of all the detail that the editors decide has to be left out as not of broad enough interest.

I don’t use Photoshop, but as I understand it, it has no dumb layer.  This is one reason people consider it the definitive tool.  (I use less expensive competing software such as DxO, which does have a bit of a dumb layer, but you can quickly un-hide all the smart bits.) Photoshop is an example of something common in many fields: the cheap products have thick dumb layers, and the expensive elite products lack them. Cameras, for instance: the more you pay, the fewer controls and options are hidden in “helpful” menus. The same applies to music gear: keyboards and mixers and production software get de-dumbed as you pay more. The ultimate undumb musical tool is, like, a Stradivarius violin: pay millions and it doesn’t even come with a chinrest.

One reason people often prefer Android to iOS is because its dumb layer is more permeable.

Anything that is shared as “open source” is a counterstrike against dumb layers.

Blog at WordPress.com.