An important message for all C/C++ programmers... 25 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 want to break free, once and for all, from the MS-DOS 640K memory limit - because you'd like to forget about near pointers and far pointers, and the small, medium, compact, large and huge memory models - 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 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 feel confident about using - 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 function - because you want an integrated full-screen source-level debugger that is so easy to use and remember 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 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 as great as you might think. Try some benchmark tests. We bet you'll be surprised! - because you'd rather not clutter up your hard disk with .obj and .exe files - 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.