📄 An important message for all C/C++ programmers...
24 Reasons Why You Are Going to Write Your Next Program in Euphoria!
because you are tired of having to re-invent dynamic storage allocation
for each program that you write
because you have spent too many frustrating hours tracking down malloc
arena corruption bugs
because you were once plagued for several days by an on-again/off-again
"flaky" bug that eventually was traced to an uninitialized variable
because no matter how hard you try to eliminate them, there is always
one more storage "leak"
because you are tired of having the machine "lock up", or your program
come crashing down in flames with no indication of what the error was
because you know that subscript checking would have saved you from
hours of debugging
because your program should not be allowed to overwrite random areas in
memory via "wild" pointers
because you know it would be bad to overflow your fixed-size stack area
but you have no idea of how close you are
because one time you had this weird bug, where you called a function,
that didn't actually return a value, but instead fell off the end and
some random garbage was "returned"
because you wish that library routines would stop you from passing in
bad arguments, rather than just setting "errno" or whatever (who looks
at errno after every call?)
because you would like to "recompile the world" in a fraction of a
second rather than several minutes -- you can work much faster with a
cycle of edit/run rather than edit/compile/link/run.
because The C++ Programming Language 3rd Ed. by Bjarne Stroustrup is
911 very dense pages, (and doesn't even discuss platform-specific
programming for DOS, Windows, Linux or any other system).
because you have been programming in C/C++ for a long time now, but
there are still a lot of weird features in the language that you don't
because portability is not as easy to achieve as it should be
because you know the range of legitimate values for each of your
variables, but you have no way of enforcing this at runtime
because you would like to pass variable numbers of arguments, but you
are put off by the complicated way of doing it in C
because you would like a clean way of returning multiple values from a
because you want an integrated full-screen source-level debugger that
is so easy to use that you don't have to search through the manual each
time, (or give up and recompile with printf statements)
because you hate it when your program starts working just because you
added a debug print statement or compiled with the debug option
because you would like a reliable, accurate statement-level profile to
understand the internal dynamics of your program, and to boost performance
because very few of your programs have to squeeze every cycle of
performance out of your machine. The speed difference between Euphoria
and C/C++ is not that great, especially when you use the Euphoria to C
Translator. Try some benchmark tests. We bet you'll be surprised!
because you'd rather not clutter up your hard disk with .obj and .exe
because you'd rather be running your program, than wading through
several hundred pages of documentation to decide what compiler and
linker options you need
because your C/C++ package has 57 different routines for memory
allocation, and 67 different routines for manipulating strings and
blocks of memory. How many of these routines does Euphoria need?
Answer: zero. In Euphoria, memory allocation happens automatically and
strings are manipulated just like any other sequences.