Why Haven't Special Character Sets Caught On? 117
theodp asks: "Almost forty years after Kenneth Iverson's APL\360 employed neat Selectric hacks to implement Special Character Sets to express operators with a single symbol, we're still using clunky notation like '<>', '^=', or 'NE' to represent inequality and cryptic escape sequences like '\n' to denote a new line, even though the Mac brought GUI's to the masses more than twenty years ago. Why?"
\n cryptic? (Score:2, Insightful)
Re:\n cryptic? (Score:2)
Why? (Score:5, Insightful)
Gosh, I don't know!
Now, if you will excuse me, I need to create a local variable named <The Symbol for the Artist Formerly Known as "The Artist Formerly Known As Prince">
Re:Why? (Score:2)
Re:Why? (Score:1)
Re:Why? (Score:1)
Re:Why? (Score:1)
The space between one's ears!
Re:Why? (Score:2, Interesting)
i think you remember what happened when "they" introduced extended characters in the DNS: the only people who really used them were the phishers who could now create domain names with the new characters that looked very much the same as the names they were trying to imitate so browsers had to make a 180 for security reasons.
source code is a slightly different environment, but there it can already be different enough to visually distinguish between l and 1 in many fonts, or the various variations
Re:Why? (Score:1)
> ll1O0, l1100 and lllOO
I would argue that no programmer worth his salt willingly uses fonts that don't make those characters easy to distinguish. I certainly don't. However, unicode characters are another matter; I only care about how my fonts display safe and sane characters (i.e., ASCII characters with decimal values from 32 through 126). Unicode characters can show up as a character-sized box as far as I'm concerned, because they don
Re:Why? (Score:2)
I thought he'd changed his name to "The Artist who until recently was known as the Artist formerly known as Prince"?
(Bonus: a cookie for anyone who gets the reference.
Re:Why? (Score:1)
Re:Why? (Score:2)
Sorry, the Knights Who say Ecky Ecky patong zoooop *mumble*
Now. Where's my cookie?
Re:Why? (Score:1)
Well, most of them are, but some of them are not. It was a while since I used OS X, but if I recall correctly it only took [some modifier key] + "/=" to type the not-equals sign. Quick as well as intuitive. Just because it is possible to imagine completely useless characters doesn't mean we ought to limit ourselves to ASCII.
Not standardized in the specifications of the language.
Wasn't the original question more in the lines of "why are they not standardized i
Re:Why? (Score:2)
Apple's solution is
Re:Why? (Score:2)
Input method simplicity (Score:4, Insightful)
In general? I think it's a matter of input methods. Give me an input method where it takes only two keystrokes to type "" and I'll use it instead of "NE" or "". If I need to use a vulcan death grip, remember a code, or find it in a character map, I'm only going to bother when I have motivation: either making a point, like earlier in this paragraph, or making a polished document. Why go to the effort in a casual email, or a forum post, when it's much easier to type "" instead?
Argh! Here's another reason! (Score:5, Funny)
Re:Input method simplicity (Score:3, Insightful)
If I need to use a vulcan death grip
If you think emacs editing sequences are obscure now, imagine how much more fun they'd be with all those "special characters"...
If you're a touch typist, you really want to minimize the number of keys you have to press simultaneously to get something done, especially if you can't use hands separately to do it. Typing two or more normal characters together is much easier.
Eric
Get some stroller advice here [stroller-advisor.com]
Re:Input method simplicity (Score:2)
Realistically the control key should be used for control functions, and alt (or option) key should be somehow involved in accessing alternate characters. Doesn't the labeling make it obvious?
And if you need more control keys than you can get with just control, then maybe you need to be using a command line. Using esc from "insert mode" to get to a command line makes re
Re:Input method simplicity (Score:2)
Try one and type if(a != b), Vim will turn it into a nice \ne sign.
The dead key approach could easily be included in X (X.org doesn't seem to support making arbitrary keys dead now). The keyword approach (which I prefer) would have to be on an editor-by-editor basis.
Why haven't dvorak keyboards caught on? (Score:2)
Re:Why haven't dvorak keyboards caught on? (Score:2)
So was Betamax, but it never reached critical mass.
Re:Why haven't dvorak keyboards caught on? (Score:2)
See, for instance, http://technology.guardian.co.uk/online/comment/st ory/0,12449,881780,00.html [guardian.co.uk]
Of course, whether or not Dvorak is any better than Qwerty is open to d
Re:Why haven't dvorak keyboards caught on? (Score:1)
No, Dvorak is not better than QWERTY.
The idea that the Dvorak layout is "better" comes from the assertion (which has never been conclusively established, as far as I am aware) that it allowed for a faster typing rate, i.e., a larger words-per-minute number. That *may* have been relevant in the 1950s, when a large percentage of typing consisted of retyping existing material, because typewriters didn't have save and restore, copy and paste, or print merge capability (among
YOU might be (Score:3, Funny)
Re:YOU might be (Score:2)
Re:YOU might be (Score:1)
Take a step back and look at this question again (Score:5, Insightful)
I'd say it's more a question of 'choose your poison'. There is a learning curve whether one aims at mathematics-based notation schemes or historical computer science notations, and the market has already chosen (30 years ago) which one it prefers.
And not without cause. Human language looks a lot more like modern programming languages than mathematical notation, and a major goal of programming language design is to make it as straightforward as possible to tell the computer what you want it to do. One might object that by that argument Cobol is better than C, but humans, especially experts working in a specific domain, like abbreviations too. Cobol is hated because it doesn't allow you to abbreviate, not because it is hard to read, after all. APL or other such specialised syntaxes are hard to read and they don't fit closely enough with the way non-mathematicians think to be intuitive.
Re:Take a step back and look at this question agai (Score:2)
Try C, LISP, SmallTalk or Ruby and you start to feel that the language is helping you. Cobol & Java fell like they are getting in the way.
Persoanlly, I love ruby but that might just be me.
Re:Take a step back and look at this question agai (Score:2)
Re:Take a step back and look at this question agai (Score:2)
Re:Take a step back and look at this question agai (Score:2)
Syntax is one of the least important features of a language, and OP never said anything about them having different syntax.
OP wrote:
"Try C, LISP, SmallTalk or Ruby and you start to feel that the language is helping you. Cobol & Java fell like they are getting in the way."
One can infer that he's in favor of strongly, dynamically typed languages with the exception of C (weakly, statically typed), and against strongly, statically typed langua
Re:Take a step back and look at this question agai (Score:2)
Compare COBOL to LISP which one came first? Which one can be applied to solving the most problems? Which one provides the most abstractions to the programmer? COBOL was in no way a step forward from LISP.
Below is some history of the languages, pretty accurate IMHO.
http://en.wikipedia.org/wiki/COBOL [wikipedia.org]
http://en.wikipedia.org/wiki/LISP [wikipedia.org]
http://en.wikipedia.org/wiki/Java_programming_lang uage [wikipedia.org]
You'll see that COBOL/JAVA was designed by committe before being in general use. Most succ
Re:Take a step back and look at this question agai (Score:3, Informative)
If you had much deep knowledge of programming languages --- or had read the links you posted --- you'd also realize that Java has more in common with Smalltalk than pretty much any
Re:Take a step back and look at this question agai (Score:2)
my mistake I took you original post as having some slight oversights that I could gently point in the direction of understanding. My mistake, won't happen again with you. Apologies for wasting your time.
Re:Take a step back and look at this question agai (Score:2)
Re:Take a step back and look at this question agai (Score:2)
Perhaps more to the point, Jim Gosling has been quoted as saying that Java was based on trying to bring Smalltalk to C++ programmers.
Re:Take a step back and look at this question agai (Score:2)
The problem with Objective-C --- well, hardly the only problem, let's say a problem --- is that it loses the underlying virtual machine and thus shares C's problem that a large part of the behavior of a program can't be predicted until you know what machine its going to execute on. It's also relatiuvely hard to learn, since it has two syntaxes, C and Smalltalk-like.
Re:Take a step back and look at this question agai (Score:2)
There aren't so many of us in this thread with the background to actually do so. I learned APL when I took a calculas course at the local university because I was applying to schools out of province where calculas was taught in the terrible idea known as "grade 13". The math course allowed me access to the CS lab and I soon started to thrive on being able to write programs in APL that ran a *lot* faster (sometimes factors of 10) than any of the programs written in compiled Pascal by the CS undergraduates
Re:Take a step back and look at this question agai (Score:2)
Eh? I'm not an old fogey, so maybe C implementations back then sucked, but -32768 does indead mean the least poss
Listen to me (Score:5, Interesting)
Now it is TRUE that I once did do programming in APL. This was on an old Zenith 8088 based PC clone with 640K of memory, a CGI display, and a 20 meg hard drive. The system itself worked rather well. If you could work a line editor, the development environment was all you could want. The problem was all the little stickers that went on the keys. Every key mapped to about three other symbols besides the normal ones, and just about every key had a little sticker on it. It was NOT fun. Just because your computers can display characters that look like Chinese doesn't mean that it's a good idea.
Re:Listen to me (Score:2)
Only reason I ask is that I remember the Z-100 as having a very nice keyboard, dished like a Selectric and with a good feel to it.
Re:Listen to me (Score:1)
Re:Listen to me (Score:1)
Re:Listen to me (Score:1)
Re:Listen to me (Score:1)
I've got a working APL box right here (Score:1, Interesting)
Now, really APL is just functional programming in disguise, with a pathetic lack of flow control constructs. Now, if you're familiar with Scheme or LISP, you end up wondering just what the hell the point is of doing a bizarre sequence of keystrokes to produce a strange glyph, when you could instead ju
Re:Listen to me (Score:1)
APL on a Zenith?!?
That's the problem... APL was best on IBM terminals-- Like the 3270, or even a 5100.
Took the CS language survey course in college - APL on a Cyber 170 on ASCII terminals -- nasty three char tags in place of the operators.
Later I took a calculus course (Calculus of Vectors and Spaces, otherwise known as Magic Math) -- we used APL on a 370... much easier to understand.
Efficient (Score:2, Insightful)
Simple (Score:5, Insightful)
Display was never the issue with APL. There are implementations of APL that use keywords instead of symbols. It's just that turning everything into an operator makes for really dense, hard-to-maintain code.
I'm reminded of Forth [wikipedia.org], which lacks APL's weird symbols, but shares its reputation for dense code. In its heyday, Forth programmers justified using it by claiming it made them more productive. And that's true — if you define "productivity" as "number of lines of new code hacked out per day". But code isn't just written, it's maintained, and dense languages are not maintenance friendly.
Forth (Score:2)
There does seem to be a sweet spot for code density vs readability.
c and c++ seems to have found it for most people.
At one end you have COBOL, Pascal, and Ada.
At the other you have Forth APL.
c, c++, c#, python, java, and the other c like languages seem to be in the middle.
Re:Forth (Score:1)
Most people would agree that Java, c#, perl, and python have high level constructs that are fairly core to their langauge implementation.
C, C++, and to some extent Pascal (modern day Pascal) seem to be on a similar tier with the ability for inline code, memory management, and inline assembler. Also the generated code is fairly straight forward when compared to the assembler output.
Almost nobody uses cobol,
Re:Forth (Score:2)
Hmmm... interesting. I've never heard that division before; it sounds pretty much like an HLL/low-level language distinction.
I tend to avoid such divisions when I'm speaking to others. It is far too easy to fall into the the Blub paradox [paulgraham.com]. You tend to evaluate programming languages by going down the power scale from whatever you've learned, and therefore fail to recognize that there's a range up from what you've learned. If somebody generates a brilliant new language that has the potential to make progr
Re:Forth (Score:2)
Ada was popular in Europe and is popular enough to have a GNU compiler available.
That being said my divisions where based on the level of verboseness of the actual source code as opposed to the features of the language.
droolings of an idiot (Score:3, Interesting)
The concept that APL code is "hard to maintain" is correct to first approximation, but it's more myth than reality when one digs deeper into the question. Most of the densest lines of code I once concocted in APL were 100% maintenance free: efficient and correct over the entire usable operand range. The density of the code squeezed out many degrees of freedom for making stupid errors even before you began.
There were other factors, having little to do with code density, that made APL systems hard to mainta
Re:Simple (Score:2)
Because of old and crappy software, and laziness (Score:3, Insightful)
Because standardization of extended character sets, via Unicode, is a relatively recent development. Hence, there's a lot of software around that still doesn't handle Unicode.
For example, I switched to bash because tcsh didn't cope with Unicode. Mozilla's Unicode support is incomplete--card symbols defined in the HTML 4.01 standard don't show up properly on the Mac, even though it definitely has them in its standard fonts. Many text editors don't support Unicode. And so on.
In fact, it's only recently that Slashdot was fixed to allow us to use words like "cliché" and enter amounts of money in Pounds Sterling like £5.99, even though those 'special' characters were part of HTML 1.0. Forget about using the aforementioned card symbols on Slashdot—we got 1996's CSS a couple of months ago, maybe we'll get 1999's HTML 4 in 2008?
Next you add in the fact that most people are too lazy to even learn to spell correctly, far less learn how to type an e with an acute accent, and you have a recipe for today's state of the web.
Re:Because of old and crappy software, and lazines (Score:2)
Yep. Note that "smart quotes" didn't come into general use until Microsoft implemented them in the auto-complete features in Microsoft Word--the same ones that will do things like correct "cafe" to "café." Of course, they used non-standard characters to do it, leading to lots of Windows-only pages and programs like the Demoroniser, and they weren't quite sma
Re:Because of old and crappy software, and lazines (Score:2)
UTF was invented and used as the *only* charset in an OS before Windows 95 was even in beta
http://plan9.bell-labs.com/sys/doc/utf.html [bell-labs.com]
Re:Because of old and crappy software, and lazines (Score:2)
it is really a deep one. (Score:4, Insightful)
i've thought about this question since 1978, as i have encountered over the years since then a grand litany of different ways of describing symbols in such a way that they can be standardly used, and i have come to a very simple answer. humans are stuck on a symbol treadmill with infinitely smooth bearings.
fontography is a lesson of symbols
we haven't seen terribly wide-spread specialization of symbols because of the producer-/consumer- cults of USKEY101, and peoples unfamiliarity with alt-numkeypad chops, and Mac vs. PC, and ASCII vs. UTF-8, and XML vs.
the fact is, perhaps deep down inside we know we should be grateful for what we've got, and let the "!=" and ">=" expressions, 2 lonely bytes in a vast nasty sea, stand as testament to the human desire to at least, a little bit, get along on the same key. they may not be pretty, but pretty much everyone can get to those two bytes and use them when they need to
Re:it is really a deep one. (Score:2)
because... (Score:2)
And for non-visual characters like 'newline'.... what other idea, exactly, did you have? \n is pretty straightforward, once you know how it works. I submit that some random symbol would be worse than what we have now.
The musician Prince tried the glyph substitution trick, if you recall, and it wasn't tremendously s
Re:because... (Score:2)
Yes, it is of course completely silly to want a special character for newline, since you already have one: it is generated by the enter key. The idea of \n is that you can see that there is a linebreak without clobbering the layout of your code. If you want to have some symbol X for newline, then you will have to escape X if you want to display an X instead of a
Re: \n as newline (Score:4, Insightful)
Actually, that's the symbol for a graphic representing a newline (a slightly raised N next to a slightly lowered L, shrunk and crammed together into an area approximately a single em-space wide), so maybe that's not such a good idea (as how would you represent the graphic itself in a string?).
OTOH, a \ followed by U+2424 could better represent a newline graphically in a string.
The reason that \n seems "pretty straightforward" is that most of us are used to it.
The concept of backslash followed by a letter representing a control character started in C in the 1960s (or possibly even in earlier languages), and has been copied into dozens of other languages, along with other things like using % in printf strings to format variables (although some languages, like Ruby, are starting to offer alternative representations to %).
Note that, in Common LISP, a newline is represented by ~% and ~& in formatting strings, and #\Newline (spelled just that way) represents a newline character outside of formatting strings.
In Object Pascal/Delphi, a newline is represented by its decimal or hexadecimal equivalent, #10 or #$0A.
Some languages, like Python and sh/ksh/bash/etc., allow an actual newline in a string itself, so no representation is necessary (although Python allows \n as well, in its non-raw strings).
Other representations that I have seen in the past include ^J and ^M^J (for line feed and carriage return/line feed as control characters) and $ (for end-of-line in regular expressions (although the $ doesn't (usually) match the actual newline itself)) and in "list" mode in vi.
Re: \n as newline (Score:2)
Your observations of the alternate newline syntaxes were interesting, but I su
Re: \n as newline (Score:2)
No, I'm speculating that, visibly, it may be more indicative of an actual newl
Re: \n as newline (Score:2)
Re: \n as newline (Score:2)
It would be nice if autocommand had a mode that would fire when entering or leaving a syntactic region, so that I could map and unmap the key that way.
Oh, well; I will play with it some more when I have time.
If I can figure it out, I will also set it up so that "^I" (tab) inserts "\t", etc.
data entry (Score:3, Insightful)
Two questions: (Score:1, Offtopic)
</smartass>
Lowest common demoninator (Score:5, Insightful)
The current way is easier. (Score:1)
Troll Article? (Score:1, Offtopic)
Back to your question: What should be included in the special character sets? Do we need a set for every programming/markup language?
Which characters (Score:2)
OK, so, which constructs?
Well, we've got the basic operators of C. Java and C++ can share a lot of those. Then we've got the stuff in Ada, they have a few of their own. And ocaml has a few more. Haskell can use some of the ocaml ones, but we'll distinguish them with a diacritic to mark them as lazy...
Oh drat, someone sent me a program in Perl, and I haven't got the right font. It just l
Re:Which characters (Score:3, Funny)
Choice APL quotes (Score:2)
"APL, in which you can write a program to simulate shuffling a deck of cards and then dealing them out to several players in four characters, none of which appear on a standard keyboard." - David Given (?)
"APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums." - Edsger Dijkstra, 1968
Once upon a time... (Score:2)
Long ago, the Lisp Machines roamed the Earth. They have a pretty wide set of characters available, as well as a swath of bucky bits. When people were writing for just Lispms, they'd use the extra characters sometimes. But then the code couldn't be brought over to other machines easily, or sent to a line printer, or... well, you get the idea. When Common Lisp came out, it defined a "standard character set"... a minimal set of characters that a Lisp implementation must support, and portable programs could
Take no RISCs (Score:3, Funny)
Why you sound like youre in favor of CISC.
And music is hard to read for non-musicians (Score:4, Insightful)
Re: And music is hard to read for non-musicians (Score:2)
Not to this one, it doesn't. Maybe that's coz I'm not from the US, though. I'd've understood if you'd said 'demisemiquavers, semiquavers, quavers, crotchets, minims, and semibreves', though; would that have made sense to you?
Re: And music is hard to read for non-musicians (Score:2)
Why? (Score:1)
Special Characters (Score:2, Interesting)
I could put the keyboard in math notation and automatically the keys on the keyboard display math symbols in a standardised pattern (like QWERTY is for letters but for math). Other modes could be added later.
On slashdot a few months back there was a keyboard in which the labels on the keys are dynamic. I think that is going in the interesting direction.
It reminds me of maybe how the computers in Star Trek Next Gen might behave. Where th
Questioning the Status Quo (Score:2)
Re:Questioning the Status Quo (Score:2, Informative)
Sure, a compiler could in essense sort out a file written in a dozen different programming languages, but imagine a team of developers all with different programming backgrounds trying to figure out what each coded? Software design would cease to work.
Software language is like spoken language in general, we all need a set of syntax and grammar rules so we can simply understand each other and effectively communicate. If you write a book using a random a
No need (Score:2)
Unicode contains characters such as U+2260 (NOT EQUAL TO). Unicode has certainly caught on; all HTML documents use that character set, for instance. So why the need for a special character set?
Perhaps you are asking why people don't choose to use such characters - I guess it's just ignorance. After all, if somebody who has gone to the trouble of submitting an Ask Slashdot doesn't know about these characters, why woul
For exactly the same reason. . . (Score:2)
If there aren't enough buttons on the keyboard for all the symbols you need, it's much easier to represent the new ones as an obvious and transparent combination of the ones you already have than it is to construct complicated schemes to generate new ones.
Until we experience a revolution in computer interface design, it's going to take at least two keys to create a not-equal-to sign. If people are going to
Simple Answer (Score:1)
I don't know, but... (Score:1)
I am using expanded character sets. I've been using "≠" and friends in AppleScript for years. In Scheme, I use "λ" instead of typing "lambda". I use the native2ascii program that comes with the JDK to use Kanji or Esperanto characters in identifiers. I wrote a similar preprocessor to expand "≠" & friends in C source.
I can't tell you why it hasn't caught on, but there's nothing stopping anyone from doing it today.
(Although, it seems Slashdot doesn't like those characters.
I disagree (Score:3, Insightful)
That demonstrates a lack of vision.
MAKE A NEW KEYBOARD.
Not that hard to do. Almost all computers have function keys on top. The majority of users DON'T USE THEM.
Just print up some new keyboards that have single symbols representing the major programer stuff, such as >=, To use them, print them above the F1,F2,F3, etc. access them by typeing shift F1, etc. etc. Allow them to be over-riden by programs that want to over-ride it.
If Apple did this, it would catch on instantly. In one year, Microsoft would steal the idea.
Re:I disagree (Score:2)
If someone really wanted to do this, there is not all that much standing
Re:I disagree (Score:1)
Re:I disagree (Score:1)
Re:I disagree (Score:3, Insightful)
...Math...
Greater than or equal to
Less than or equal to.
Not equal to.
...Programming...
New line symbol.
Is it Alphabetically equal to (does not set, only used for asking. Equivelent to EQ, could co-opt the wavy equal sign)
Is it Numberically equal to (does not set, only used for asking, Equivelent
The Cost of Not Having - as a Key... (Score:1)
For crying out loud we coders have contributed a lot to computing (!) At least give us an assignment operator and a new equality operator on the keyboard. It's not as if we aren't sure we're going to need it in a few years!
Re:The Cost of Not Having <- or (Score:1)
If The Compilers Change to Accept ≠ (Score:1)
Dang slashdot won't display the ≠ properly!
Then the text editors could then gradually migrate to converting != on input to ≠ in the text and displaying it. For instance, notepad on windows will display unicode properly. Most other editors will too, like eclipse...
It gets worse (Score:2)
@list = ? 1 2 3 4 5 ?;
@list ? grep {$_ % 2}
? map {$_ ? 2}
? @newlist; # 1, 9, 25
@list3 = -? @newlist; # -1, -9,
Re:Because... (Score:2)
The key sequence to type any of the polyglyphs that we use is immediately apparent, because the keys are labelled with each of the monoglyphs that make up those polyglyphs. On the other hand, you have to take the time to teach newbies to type double-bucky cokebottle to get such-and-such a character, or you have to convince the newbie to RTFM. Ain't happenin'.
Now, if we could have some agreement on the meanings of some of these polyglyphs, that would be good.