It is impossible to create a language that is 100% perfect because different
programmers want different things from the languages they use; which is why
programmers are so stubborn about their prefered language being the
best.On the whole, Euphoria is an excellent language. It takes a little while to
come to grips with its concept of sequences, atoms and other
fundamental types and its overall syntax but, once grasped, it is a very
nicely thought out language.
Even so, it doesn't stop the Happy Hippy thinking that there are ways in which
he would improve the language ...
Identifier naming
It should be possible to use characters such as dollar ( $ ) and percent ( % )
within identifier names. This would allow a programmer to identify those
variables and so on that store sequences ( or strings ) or integers which
would make the transition from BASIC to Euphoria much simpler by allowing
statements such as ...
A$ = "Goodbye World !"
B$ = A$ &"\n"
C$ = Left$(A$,4)
N% = Instr(A$," ")
A strings.e library of string handling functions for the ex-BASIC
programmer would be very welcome - Left$(), Right$(), Mid$(), Ucase$(),
Lcase$(), Ltrim$(), Rtrim$(), Trim$(), Str$(), Len(), Instr() etc.
Keyboard input handling
When allow_break(FALSE) has been specified; a Ctrl-C ( or
Ctrl-Break ) shouldn't echo a ^C to the screen automatically
and the Ctrl-C / Ctrl-Break character ( decimal value 3 - it would
be nice if Ctrl-Break returned its own unique value ) should
be placed in the internal, run-time, keyboard buffer so it can be extracted by
simply using a get_key() function call. This would simplify processing
where Ctrl-C is one of the keys that should be handled just like all
the others ...
char = get_key()
if char = CTRL_BREAK then Abort_Program()
elsif char = CTRL_A then Add_A_Line()
elsif char = CTRL_B then GoTo_Beginning_Of_File()
elsif char = CTRL_C then Clear_Entries()
elsif ...
The get_key() doesn't handle Ctrl-S and Ctrl-P
before MS-DOS gets a chance to respond to these key presses.
This means that Ctrl-S doesn't always get returned ( it pauses output )
and Ctrl-P can cause
a Print Screen that can bring down a PC if a printer isn't actually
attached ( due to a nasty MS-DOS feature that doesn't easily allow a Print
Screen to be cancelled in the usual Abort, Retry, Fail error
handler ). Correcting this problem would be a godsend.
A keycodes.e file should be included in the installation that defines
all the possible keys and their values ( returned by get_key() ) as
constant definitions. This would save everyone the effort of trying to work out
what values get_key() returns for particular keyboard presses such as
Alt-X.
Comment definitions
The use of double-minus ( -- ) is tolerable for indicating the
start of a comment but this is unique to Euphoria. Also allowing comments to
start with double-slash ( // ), as with C, C++, Java and JavaScript,
would make the transition to Euphoria easier for users of those languages.
I also like the use semicolons ( ; ) to indicate the start of
comments ( and an astrix ( * ) as the first non-white-space character ) -
which discloses a lifetime of assembly language programming I suppose.
Abnormal program termination
When an MS-DOS based Euphoria program terminates abnormally, usually due to some
run-time error; it is not uncommon for the screen to be left in some funny
mode - no cursor, cursor appears on the wrong line when text editors are
later used and so on. It would be nice if the interpretor restored the screen
mode to its original format.
Despite these niggles with the implementation; the Happy Hippy is using
Euphoria quite happily and has no reservations in recommending Euphoria for
general use - it is an amazing language that delivers amazing results.