Re: Spell Checking for Non European Languages, and for Conlangs
From: | Mark J. Reed <markjreed@...> |
Date: | Wednesday, March 31, 2004, 0:03 |
On Tue, Mar 30, 2004 at 06:38:31PM -0500, Nokta Kanto wrote:
> C++ is popular because it builds on C, which was very popular because it
> was a clean, simple language that was speed-competitive with assembly.
"C. All the power and speed of assembly, with the legibility of . . .
assembly."
:)
The problem with C is that it is too low-level; it really is just
a thin veneer over assembly. Which means that all of the safety checks
that prevent malicious input from exploiting your program to do mean and
nasty things are wholly the responsibility of the programmer; the
language runtime is no help. This fact is the source of just about every
virus, worm, and other security exploit on the 'net.
At this point, with fast CPUs and just-in-time compiling, languages
like C no longer offer enough of a speed advantage to be worth the
safety tradeoff, IMHO. (In general purpose environments; embedded
real-time systems are another matter. C is certainly a better
choice than assembly, which is the usual alternative there).
> My limited experience suggests that Haskell is very suited to parsing and
> the kind of rule-based processing that would be done for spell-checking.
C is a poor choice for anything that involves manipulating character
strings, and C++ isn't really much better. I think Perl, Python, or
Ruby. Or JavaScript if it's going to be embedded in a web page, or if it's
going to use the Windows Script Host to automate other programs on a
Windows PC.
There are plenty of other options, of course. Heck, SNOBOL wouldn't
be a bad choice. But less practical to know. :)
A quick look at the last language-comparison project I did finds my
sample program written in Algol-68, Ada, APL, Awk, BASIC, Bash, bc(1),
Befunge, Brainf*ck, Common Lisp, COBOL, dc(1), Eiffel, Emacs elisp,
Fortran, Forth, INTERCAL, Java, JavaScript, MIXAL, ML, MMIX, Oberon,
Mumps, Occam, Pascal, PHP, Perl, PL/I, PostScript, Python, Ratfor, Ruby, REBOL,
REXX, Scheme, SIMULA-67, SNOBOL, SmallTalk, TCL, varaq, VBScript, and
Z-80 assembly (assuming a CP/M system); that means that compilers or
interpreters for all of the above are freely available for Linux or
Windows.
-Mark