Monday, January 31, 2011

The keyboard bows out

Does Apple have it in for the keyboard? I think it might. All of it's recent success have been devices without keyboards. (Physical keyboards, that is.) And I think that this may be a good thing for programmers and especially programming languages.

I can see several possibilities for the elimination of the physical keyboard. Apple could use today's virtual keyboards of the iPod and iPad. Or they might use a small Kinect-like device to capture gestures and interpret them as keystrokes. Apple may include USB ports and Bluetooth for wired and wireless keyboards, as separately purchased accessories. Physical keyboards might be welcomed by a subset of users: secretaries, authors, programmers, and old-timers who refuse to give up the old ways.

The first step in the elimination of the physical keyboard is a transition to a similar representation in virtual form. Apple already does this. But it won't be long before people start flexing this new virtual keyboard. Look for Dvorak configurations and then custom configurations that change not only the key sequence but also the key positions. I expect people to experiment with different layouts, moving keys out of straight rows and into arcs and clumps. And why not? When the "keys" are just bits on a screen, let users move them to convenient positions.

Virtual keyboards will change more than just the layout. They will change the way we program. The hardware we use governs our ideas of programming languages.

The last big change to programming languages was caused by the transition from keypunch machines to terminals. The invention and use of Teletypes, Decwriters. and VT-52s made possible new programming languages. (I omit the venerable IBM 3270 terminal here, since in my opinion they did *not* help users perceive code as text. The IBM hardware and supporting software operated in modes that mimicked punch cards or displayed text in field-structured form. It was the non-structured Teletype that allowed the creation of new languages.)

I'm convinced that the "new hardware" of terminals with upper and lower case letters and full-screen addressability allowed us to create the full-screen editor and also languages that viewed programs as flowing text and not as 80-column chunks. Languages such as Algol, C, and Pascal were possible once we started thinking of code as "statements" and not as "lines". The continuation character and reserved columns in FORTRAN were a result of punch cards, not language design.

Virtual keyboards will be the first step towards a new technology set, just as Teletypes were the first step into the world of text terminals. This new world will have new ideas about programming languages and code. Probably graphical, possibly geometrical. I don't know the nature of the new languages, but they will be different from today's C# and Ruby as those languages are different from FORTRAN and COBOL.

No comments: