Problems of Symbol Congestion in Computer Languages

W

Westley Martínez

Simple, it does not have a purpose. Well, that is, except to give the
*impression* that a few pseudo intellectuals have a reason to keep
their worthless tenure at universities world wide. It's window
dressing, and nothing more.


The ascii char "i" would suffice. However some languages fell it
necessary to create an ongoing tutorial of the language. Sure French
and Latin can sound "pretty", however if all you seek is "pretty
music" then listen to music. Language should be for communication and
nothing more.
Nicely said; you're absolutely right.
 
D

Dotan Cohen

You miss the canonical bad character reuse case: = vs ==.

Had there been more meta keys, it might be nice to have a symbol for
each key on the keyboard. I personally have experimented with putting
the symbols as regular keys and the numbers as the Shifted versions.
It's great for programming.
 
R

rusi

You miss the canonical bad character reuse case: = vs ==.

Had there been more meta keys, it might be nice to have a symbol for
each key on the keyboard. I personally have experimented with putting
the symbols as regular keys and the numbers as the Shifted versions.
It's great for programming.

Hmmm... Clever!
Is it X or Windows?
Can I have your setup?

One problem we programmers face is that keyboards were made for
typists not programmers.
Another is that when we move from 'hi-level' questions eg code reuse
-- to lower and lower -- eg ergonomics of reading and writing code --
the focus goes from the center of consciousness to the periphery and
we miss how many inefficiencies there are in our semi-automatic
actions.
 
X

Xah Lee

Hmmm... Clever!
Is it X or Windows?
Can I have your setup?

hi Russ,

there's a programer's dvorak layout i think is bundled with linux.

or you can do it with xmodmap on X-11 or AutoHotKey on Windows, or
within emacs... On the mac, you can use keyboardMaestro, Quickeys, or
just write a os wide config file yourself. You can see tutorials and
sample files for all these here http://xahlee.org/Periodic_dosage_dir/keyboarding.html

i'd be interested to know what Dotan Cohen use too.

i tried the swapping number row with symbols a few years back. didn't
like it so much because numbers are frequently used as well,
especially when you need to enter a series of numbers. e.g. heavy
math, or dates 2010-02-28. One can use the number pad but i use that
as extra programable buttons.

Xah
 
D

Dotan Cohen

Hmmm... Clever!
Is it X or Windows?
Can I have your setup?

It's X, on Kubuntu. I've since "destroyed" that layout, but you can
easily play around in /usr/share/X11/xkb/symbols/us or whichever
layout you prefer. I am working on another one, though, actually I
just stared working on it yesterday. It's currently broken (I'm in the
middle of troubleshooting it) but you can see what I currently have
here:
http://dotancohen.com/eng/keyboard_layout.html
One problem we programmers face is that keyboards were made for
typists not programmers.

Yes, I'm trying to solve that! Ideally in the end all the brackets
including {} won't need modifier keys. Give me some feedback, please,
on that layout.
 
D

Dotan Cohen

hi Russ,

there's a programer's dvorak layout i think is bundled with linux.

or you can do it with xmodmap on X-11 or AutoHotKey on Windows, or
within emacs... On the mac, you can use keyboardMaestro, Quickeys, or
just write a os wide config file yourself. You can see tutorials and
sample files for all these here http://xahlee.org/Periodic_dosage_dir/keyboarding.html

i'd be interested to know what Dotan Cohen use too.

You can see what I started working on yesterday, but it's far from finished:
http://dotancohen.com/eng/keyboard_layout.html

I tried reaching you on Skype yesterday, Xah, but I think that you
blocked me suspecting that I may be a bot. Try to Skype-chat with me
at user "dotancohen", I think that we can help each other.

i tried the swapping number row with symbols a few years back. didn't
like it so much because numbers are frequently used as well,
especially when you need to enter a series of numbers. e.g. heavy
math, or dates 2010-02-28. One can use the number pad but i use that
as extra programable buttons.

I don't like the number pad so I'm looking for another solution. I
wired up a spring-off lightswitch to the Shift key and I operate it
with my foot. It's great but it only works when I'm home: it is too
ridiculous to take with me. I'm wiring up two more for Ctrl an Alt,
too bad it's too cumbersome to have ESC, Enter, and Backspace there as
well.
 
M

Mark Thomas

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.
 
R

rusi

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.
 
C

Chris Jones

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
 
X

Xah Lee

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.

hi Chris,

i created a page dedicated to creating math symbol layouts for
different langs.
I linked to your post.

I wonder if you would let me mirror your X code on my site? Or, if you
place it on somewhere more permanent or dedicate page such as git, i'd
link to that. Thanks.

Xah
 
A

Albert van der Horst

You miss the canonical bad character reuse case: = vs ==.

Had there been more meta keys, it might be nice to have a symbol for
each key on the keyboard. I personally have experimented with putting
the symbols as regular keys and the numbers as the Shifted versions.
It's great for programming.

People might be interested in the colorforth solution:

This goes the other way: characters are limited (lowercase
and few special chars) to what is needed for programming.
So the fingers never need to leave the home position,
reaching about 30 chars at most.
Different uses (defining a function versus using a function)
are indicated by color, so don't use up char's.

http://www.colorforth.com

I was forced to use it (a development environment required it)
and it is not as bad as it sounds.

Groetjes Albert
 
S

Steven D'Aprano

Exercise to the reader: Combine those nine-decimal-digit and
ten-decimal-digit numbers appropriately to express exactly how many
wavelengths of the hyperfine transition equals one meter. Hint: You
either multiply or divide, hence if you just guess you have one chance
out of 3 of being correct.


Neither. The question is nonsense. The hyperfine transition doesn't have
a wavelength. It is the radiation emitted that has a wavelength. To work
out the wavelength of the radiation doesn't require guessing, and it's
not that complicated, it needs nothing more than basic maths.

Speed of light = 1 metre travelled in 1/299792458 of a second
If 9192631770 periods of the radiation takes 1 second, 1 period takes
1/9192631770 of a second.

Combine that with the formula for wavelength:
Wavelength = speed of light * period
= 299792458 m/s * 1/9192631770 s
= 0.03261225571749406 metre


Your rant against the metric system is entertaining but silly. Any
measuring system requires exact definitions of units, otherwise people
will disagree on how many units a particular thing is. The imperial
system is a good example of this: when you say something is "15 miles",
do you mean UK statute miles, US miles, survey miles, international
miles, nautical miles, or something else? The US and the UK agree that a
mile is exactly 1,760 yards, but disagree on the size of a yard. And
let's not get started on fluid ounces (a measurement of volume!) or
gallons...

The metric system is defined to such a ridiculous level of precision
because we have the technology, and the need, to measure things to that
level of precision. Standards need to be based on something which is
universal and unchanging. Anybody anywhere in the world can (in
principle) determine their own standard one metre rule, or one second
timepiece, without arguments about which Roman soldier's paces defines a
yard, or which king's forearm is a cubit.


Follow-ups set to comp.lang.python.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top