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 fully understand 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 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 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.