An Exercise in Whimsy: Maximum Mac Leverage

| Editorial

Computers are built on the concept of abstraction. Machine language led to assembly language, which led to higher level languages. APIs organize functions. How far can we go? Have we reached the maximum leverage a Mac can give us?

This article falls under the label of an editorial, but it's really an exercise in whimsey and playful thinking. Follow me along for a minute.

MacBook Pro

MacBook Pro: CPU, about 12-16 gigaflops, GPU, about 125 gigaflops


I'm sitting here in front of a computer that can execute 100 million sines in 20 seconds. And that's in Perl. It would probably be faster if I wrote some compiled C code. A computer with that kind of speed and size, if taken back in time, would have led to World War III in 1975.

And yet, after all these years of software development, I wonder if we're really getting the maximum level of abstraction out of our personal computer, whether it's a Mac or a PC.

I mentioned in the introduction that machine language led to assembly language, then something like C, and some higher level compilers are written in C. But the process usually stops there because the current, popular language is then used for a different end. For example, a programmer comes up with a viable commercial idea and then utilizes the current tools, say Objective-C and Cocoa Frameworks, to implement the idea. The level of abstraction stops unless the author is building yet another tool, like iWeb, to construct an other level of abstraction.

The question I want to pose is:

Given the current, terrific level of hardware technology and software tools, how far can one take the levels of abstraction, for the sake of abstraction power, to build the ultimate tool? I call it Maximum Mac Leverage.

I am familiar with mind mapping tools, like TheBrain, but that's not quite what I'm looking for because that's a knowledge organizer, not a problem solver. I'm thinking about a broader, problem solving tool, that allows human beings to express a problem in an elegant way and invoke the computer to come up with a fast answer. For example,

Excel Spreadsheet is to accounting as ??? is to general problem solving.

Some might argue that ??? is best implemented in 2009 as:

  • Java
  • Microsoft Visual BASIC
  • REAL's REALbasic
  • Python

However, I'm thinking of at least one level higher of abstraction, likely more, because mastery of any of the above requires some hard-earned, detailed skills with, for example, (ycch!) CLASS_PATH, an IDE (Eclipse, Xcode) and the detailed syntax of a high level programming language.

We're not there yet

One example that comes to mind is Apple's Grand Central in Snow Leopard. Managing safe threads has been too big a challenge for programmers who are on a viciously tight ship schedule. The philosophy is that if it has all the features and compiles, QA it. If it passes QA, ship it. Grand Central allows the programmer to work at one higher level in the APIs to launch threads, but not get bogged down in the messy details of the low-level API. That will keep the programming job manageable, but extract more power from the hardware.

What if a research project went about the business of identifying all the Cocoa APIs and building a general, overlying structure on top of that as well? And then keep going, with a mind towards an eventual GUI that's useful for general problem solving? How far could that process go?

Right now, for certain classes of problems, I pull out Apple's Numbers. For others, I'd use PCalc. For yet others, I might use Perl. I have a myriad of tools, all designed to solve a special class of problems that must be nursemaided into proper form before I can construct a solution.

Is there a way to characterize a wide range of problems into a more general problem solving tool? I know I'm being vague here because I don't have the answer. I'm having a hard time just posing the question.

I'm in whimsy mode. But I'm betting someone out there is thinking along the same lines.

Sign Up for the Newsletter

Join the TMO Express Daily Newsletter to get the latest Mac headlines in your e-mail every weekday.



What you’re asking for here is software to emulate the brain. Software that learns / teaches itself. The reason you’re struggling to identify the answer is becasue the problem can’t be defined. The minute the solution becomes too generic, one struggles to define the problem and vice-versa

John Martellaro

I’m not really thinking about software that teaches itself.  I’m just fantasizing about a more clever way to define, in a broader way, the class of problems we try to solve and attack them with a higher level of abstraction.

For example, in the distant past we used flat-file databases.  Then the concept of a relational database emerged, fully-baked, which uses a higher level of abstraction to solve the database problem properly. I suppose, at one point, there were people who thought flat-files were the end of database evolution.



Well, to be honest Im really excited about Grand Central and OpenCL becasue its a step in the right direction.

Im not entirely sure there can be a “one solution fits all” approach. Having said that though, Im sure there are smarter and easirer ways to solve problems that we currently face today.

I still believe though, that ultimately well have our problems solved by neural network / fuzzy logic. Or at least it will aid us in getting to the solution a lot faster.


What no computer can give us is brains.  We will always have to use our minds to think a problem through, divide it into smaller ones, then try to solve them one at a time.

Those who try to turn computers into genies that answer their questions are doomed to get fuzzy answers, not because of the computer but of the questions asked.

Log-in to comment