Original Post
Introduction: This topic was created in the footsteps of ApochPiQ's "A pragmatic language for the future" with a slightly different approach to the problem. This is meant to be the preliminary steps to a new and better language. This project requires a significant, and growing, effort, but will eventually begin to grow on its own. Essentially, this will begin a snowball effect to collect and focus the efforts of the different programming scenes, and join with the digital art scenes, to improve the environment for both. This project is created to solve one problem, programming and art is spread across many languages and many programs. There are a number of languages, and in them engines, which split the community into much smaller pieces. This has advantages in that there are many different ways to go toward your goal, but it causes the capabilities of each language and engine to be spread and specific, limiting what one can do, and the support one can get. This is meant to collect people for a joint project, which will lead into what was discussed in "A pragmatic language for the future". Instead of starting with a new language, we start with the old languages, build up, and then build backward to a better language based on what we have learned. “Our goal is not to develop the "perfect" language, or to build anyone's "dream language." Rather, we accept the reality that any language will have to have some ugly, rough edges. At some point, a language must disappoint someone. We are not here to make the ultimate language for everything. However, we do believe that a language can be developed which is both a major improvement on existing tools, and is also suitable for a very wide variety of problem domains. Whereas many highly elegant languages are, realistically speaking, only used in narrow problem spaces, we intend to devise an elegant, rich, and powerful language that is suitable for many problem domains, and is appealing to programmers working in those domains.” Project Outline: The project is still a loose concept, but these are the current directions.
- Develop the authoritative IDE for the most common languages. First, we need to bring everything we already know and have into one place. Essentially, we build a program which is designed to switch easily between many languages, and is designed to be able to be edited, and then rebuilt repeatedly so the functionality is endless. We want it to be the most customizable, capable, quick, and well built IDE so far built. Firefox had a similar idea in some ways, build the best browser possible, and then improve on it continually. First, we need to perfect everything we have now. This part may start with simply a basic IDE, which will then be improved and improved until it encompasses our goal. It may begin with one language, and end up with hundreds. The more languages, the better we can understand the possibilities. This will actually snowball, so once set it motion, it be continually be improved by the community. NOTE: As Emmanuel said, this pretty well describes Eclipse. It might be advantageous to use Eclipse as the basis of this project. We could either merge with Eclipse, or take it in our own direction. Both have advantages.
- Develop the most capable engine we can create with present languages. Next, we need to figure out the fastest, most efficient, and most smooth ways to handle most common programming. Then, we compile this into the best engine we can make. Basically, we figure out the best ways to make applications, games, databases, or any sort of program, and come up with the most logical and efficient ways to code it. This is the first step of creating a new language, though the new language is built inside other languages. This too will snowball, once set in motion, the people interested will continue to improve it. The integral part here is to find a balance between ease of use and flexibility, it needs to be both extremely flexible and simple to command. Finally, it is important that this engine is completely open to change, so that it can be modified to suit your needs.
- Build backward into a better language. Finally, we take what we have learned from the engine we have created and figure out the easiest and most efficient ways to tell the computer what it should do. These won’t be perfect, of course, but they can be improved. Here, the ideas mentioned in “A pragmatic language for the future” will finally begin to truly emerge. Those who have advanced enough knowledge can build a new language to handle many of the programmer’s common problems. If the previous projects are successful, we get the publicity and support of the rest of the project, as well as what we have learned from our past work. This too will snowball. Best of all, this language can be used to improve the engine, where we can then build backward again to improve the language. (Though standardization is important, which we have to take into account.) Finally, we rebuild the IDE and engine to best use this new language, to complete the family.
- Develop a powerful, and more importantly, flexible, way of creating art and content. Will Wright himself has pointed out the importance of flexibility and the ability to quickly and powerfully make something with great results. In the area of visuals, .kkrieger is a First Person Shooter that is only 96k, and it looks quite decent. (http://produkkt.abraxas-medien.de/) To improve development of projects, and allow more features to be quickly thrown into code, (to create more feature-rich programs) we need to then make it easy to both create and integrate art and features, and even allow this art and these features to be created for you. This will allow more time to be spent in the more important areas, while simple things can be automatically taken care of. Also, it spreads the powers of the few more widely to allow fewer people to do more. (Though, of course, you can’t eliminate the need for artists and specialized coders.) By offering it in open-source, we provide help and the opportunity for the community to contribute. This too, will of course snowball.