APe is needed to fill a void that I (the initial author) see in the world of software development. “What void?” you ask. “Don't we have a development tool for every need?” you ask? “I mean, honestly – what is missing?” you ask.
Well, I'm glad you asked.
Let me describe to you a development tool that I cant seem to find that I think is what most software developers really want.
From Java, I want full featured Objected Orentedness. Easy strings manipulation. Cross platform support (not necessarily compile once, run anywhere- really just write once, compile anywhere would do). And I want it be free (really free not just free to get started). I also want a predictable, uniform syntax. I want standardized coding conventions. I want community based, open source tools (like Eclipse). I also want manageable multi threading. I want to be able to write services (not just applications). I want to be protected from memory leaks.
From VB, I want easy WYSIWYG forms design, simple syntax, functions that do the job (instead of part of the job), and script level efficiency (as far as lines of code needed per task) Easy string manipulation, background compilation that makes for powerful auto completion. I want edit and go debugging. I want the editor to be built in to the language (or the other way around, however you want to look at it). I want enums of constants that act somewhat like their own new type. I want events that are easy to catch, and easy to understand, and optional to handle. I want case insensitivity with auto capitalization fixing so all instances of a particular word are capitalized the same way. I want it to be easy to create and use COM Objects.
From C, I want the ability to create an exe that runs without any runtime dlls. I only want code included in the final exe from the libraries that I request. I want a debug build of my project (larger and more talkative), and a release version (smaller, faster, and more optimized). I want inline assembly support. And the ability to interface directly with the API of the underlying OS. I want constants that don't take up any memory in the final exe. I also want an open standard that is regulated by an independent standards committee (not owned by some company who dictates the rules). I want to be able to listen to windows messages without stepping outside of the “recommended” limits of the language.
From C++ I want to be able to use the Object Oriented methodology or the Procedural methodology. I want support for templates to create definitions for standard data structures. I want to be able to overload operators, and functions.
From Eiffel, I want “Code by Contract(TM)” (which they trademarked). And, I want syntax created to catch errors at compile time as much as possible rather than runtime. And for errors that make it into the compiled code, I want it to point out abnormalities as soon as possible rather than manifesting problems with obscure bugs.
From .NET I want a huge library of available “get-er-done” objects. I want to take the roll of code design, sort of “dictate” organization, not develop the internals. I want easy objects for everything from networking to forms control, so that I can write only the code that is specific to my project and let all the underlying headache be handled by the underlying “framework” of objects. (but I don't want to have to install a framework if I don't want to.) I also want the error messages that tell me what was going on when I crashed.
I want well behaved code that doenst encourage poor programming practices. I want the language to be a good language to use to teach new programmers how to correctly build software (by the book).
I want built in support for “popular” databases. From PostgreSQL, MySQL, and SQLite, to Access, dbase, btrieve, Fox Pro, to ODBC, Oracle, DB2, Sybase, Pervasive, and Microsoft SQL. I want them all to follow support the same standardized database interface and recordset interface, but each have their own specific implementations that can take full advantage of their “special features” should I choose to do so.
I want objects for built in CD Burning, file zipping and unzipping, CD ripping and encoding. Protocol objects that make it easy to just use existing standardized protocols from code like users do with interfaces. I want easy POP3, SMTP, FTP, HTTP, objects, XML parsers, ...
I want project types for “Application”, “Library”, “DLL”, “Console Application”, “Screen Saver”, “Windows Service”, “Apache Module”, “WinAmp Plug In”, “Adobe Photoshop Plugin”, you get the picture. I want an easy way to declare new project types and write the skeleton code for each type of project once, and then hide the implementation in a precompiled library and just respond to events applicable to the project type.
If such a program exists, I do not know of it, so to add one last requirement, it has to be something that you can find. That rules out everything else, because I have been looking and I cant find what I am looking for.
Am I asking too much? I mean, honestly, that is one big “I want, I want, I want” grocery list. Well, maybe that is more than I should be allowed to ask for, but, if EVERYONE wants the same basic thing then it isn't asking too much, is it. If everyone wants all those same things, then why don't we write our own language and leave all the rest of them behind. None of these requests are at odds with the other requests. I dont want both sides of the same coin here, I just want everything to be done right. I dont want to be forced to accept the "least bad" option. I want to be allowed to choose the "best" option.