Problems of Symbol Congestion in Computer Languages

Chris Jones cjns1989 at gmail.com
Tue Mar 1 18:40:17 EST 2011


On Tue, Mar 01, 2011 at 09:46:19AM EST, rusi wrote:
> On Mar 1, 6:01 pm, Mark Thomas <m... at thomaszone.com> wrote:

> > I know someone who was involved in creating a language called A+. It
> > was invented at Morgan Stanley where they used Sun keyboards and had
> > access to many symbols, so the language did have set symbols, math
> > symbols, logic symbols etc. Here's a keyboard map including the
> > language's symbols (the red characters).
> > http://www.aplusdev.org/keyboard.html

> > I have no idea if this language is still in use.
> 
> Runs (ok limps) under debian/ubuntu -- see 
  http://packages.debian.org/squeeze/aplus-fsf

> My own attempts at improving the scene 
  http://www.emacswiki.org/emacs/AplInDebian

> If anyone has any further findings on this, I'd be happy to know.

Well.. a couple months back I got to the point where I'd really had it
with the anglo-centric verbosity of common programming languages (there
are days when even python makes me think of COBOL.. ugh..) and I took
a look at A+.

At first it looks like something MS (Morgan Stanley..) dumped into the
OSS lap fifteen years ago and nobody ever used it or maintained it.. so
it takes a bit of digging to make it.. sort of work in current GNU/linux
distributions.. especially since it knows nothing about Unicode.

Here's the X/A+ map I came up with:

// A+ keyboard layout: /usr/share/X11/xkb/symbols/apl
// Chris Jones - 18/12/2010

// Enable via:
// 	$ setxkbmap -v 10 apl

default
partial alphanumeric_keys modifier_keys 
xkb_symbols "APL" {

    name[Group1]= "APL";

    // Alphanumeric section
    key <TLDE> {	[     grave,	asciitilde,     0x010000fe,	0x0100007e	]	};
    key <AE01> {	[	  1,	exclam,		0x010000a1,	0x010000e0 	]	};
    key <AE02> {	[	  2,	at,		0x010000a2,	0x010000e6	]	};
    key <AE03> {	[	  3,	numbersign,	0x0100003c,	0x010000e7	]	};
    key <AE04> {	[	  4,	dollar,		0x010000a4,	0x010000e8	]	};
    key <AE05> {	[	  5,	percent,	0x0100003d,	0x010000f7	]	};
    key <AE06> {	[	  6,	asciicircum,	0x010000a6,	0x010000f4	]	};
    key <AE07> {	[	  7,	ampersand,	0x0100003e,	0x010000e1	]	};
    key <AE08> {	[	  8,	asterisk,	0x010000a8,	0x010000f0	]	};
    key <AE09> {	[	  9,	parenleft,	0x010000a9,	0x010000b9	]	};
    key <AE10> {	[	  0,	parenright,     0x0100005e,	0x010000b0	]       };
    key <AE11> {	[     minus,	underscore,	0x010000ab,	0x01000021      ]       };
    key <AE12> {	[     equal,	plus, 		0x010000df,	0x010000ad	]	};

    key <AD01> {	[	  q,	Q, 		0x0100003f,	0x010000bf	]	};
    key <AD02> {	[	  w,	W, 		0x010000d7,	Nosymbol	]	};
    key <AD03> {	[	  e,	E, 		0x010000c5,	0x010000e5	]	};
    key <AD04> {	[	  r,	R, 		0x010000d2,	Nosymbol	]	};
    key <AD05> {	[	  t,	T, 		0x0100007e,	Nosymbol	]	};
    key <AD06> {	[	  y,	Y, 		0x010000d9,	0x010000b4	]	};
    key <AD07> {	[	  u,	U, 		0x010000d5,	Nosymbol	]	};
    key <AD08> {	[	  i,	I, 		0x010000c9,	0x010000e9	]	};
    key <AD09> {	[	  o,	O, 		0x010000cf,	0x010000ef	]	};
    key <AD10> {	[	  p,	P, 		0x0100002a,	0x010000b3	]	};
    key <AD11> {	[ bracketleft,	braceleft, 	0x010000fb,	0x010000dd	]	};
    key <AD12> {	[ bracketright,	braceright, 	0x010000fd,	0x010000db	]	};

    key <AC01> {	[	  a,	A, 		0x010000c1,	Nosymbol	]	};
    key <AC02> {	[	  s,	S, 		0x010000d3,	0x010000be	]	};
    key <AC03> {	[	  d,	D, 		0x010000c4,	Nosymbol	]	};
    key <AC04> {	[	  f,	F, 		0x0100005f,	0x010000bd	]	};
    key <AC05> {	[	  g,	G, 		0x010000c7,	0x010000e7	]	};
    key <AC06> {	[	  h,	H, 		0x010000c8,	0x010000e8	]	};
    key <AC07> {	[	  j,	J, 		0x010000ca,	0x010000ea	]	};
    key <AC08> {	[	  k,	K, 		0x01000027,	Nosymbol	]	};
    key <AC09> {	[	  l,	L, 		0x010000cc,	0x010000ec	]	};
    key <AC10> {	[ semicolon,	colon, 		0x010000db,	0x010000bc	]	};
    key <AC11> {	[ apostrophe,	quotedbl,	0x010000dd,	0x010000bb	]	};

    key <AB01> {	[	  z,	Z, 		0x010000da,	0x010000fa 	]	};
    key <AB02> {	[	  x,	X, 		0x010000d8,	Nosymbol	]	};
    key <AB03> {	[	  c,	C, 		0x010000c3,	0x010000e3	]	};
    key <AB04> {	[	  v,	V, 		0x010000d6,	Nosymbol	]	};
    key <AB05> {	[	  b,	B, 		0x010000c2,	0x010000e2	]	};
    key <AB06> {	[	  n,	N, 		0x010000ce,	0x010000ee	]	};
    key <AB07> {	[	  m,	M, 		0x0100007c,	0x010000cd	]	};
    key <AB08> {	[     comma,	less, 		0x010000ac,	0x0100003c	]	};
    key <AB09> {	[    period,	greater, 	0x010000dc,	0x010000ae	]	};
    key <AB10> {	[     slash,	question,	0x010000af,	0x0100003f	]	};

    key <BKSL> {	[ backslash,         bar, 	0x010000dc,	0x010000fc	]	};
    key <CAPS> {	[ Caps_Lock	]	};
    // End alphanumeric section

    include "level3(win_switch)"
    include "level3(menu_switch)"
};

In fine.. you fire up an xterm.. issue a ‘setxkbmap apl’ command from
the shell prompt and you're in business.

I used it daily for about a month before I switched to APLX - aka micro
APL.. and as I had zero problems.. So, I suspect it is 100% A+
compatible.

Initially, I thought of writing a python wrapper that would handle
conversion from Unicode to A+'s peculiar brand of latin1 and back (among
other things) but never had the time.

cj



More information about the Python-list mailing list