In my current job I've been doing development at the front end of a web application. This has involved getting a lot more involved with technologies like CSS, HTML, Javascript, AJAX and plugins. This is on top of the requirement of developing in Java using Struts, Hibernate and database technologies. This tower of babel we have built for ourselves in computer science is one of the most bizare things to come out of the new milinium. To make matters worse, it is not just the large number of different technologies that is difficult to learn and put together. The technologies themselves change from browser to browser; css, javascript and ajax all have their idiocincrocies. There are complete books devoted to helping understand how to make web sites work on multiple browsers. This is not where I thought software development would end up.
The question I ponder is when is this pain going to end? A developers job is supposed to be to solve commercial problems and create competitive advantage for companies. I think we spend more time just trying to keep up with the latest methods and languages and in particular understand how they can come together and actually work.
I believe Argot holds a key in reducing this tower of babel. At the core of all programming and mark up languages is a text description of what is trying to be achieved. Argot is designed to record complex data structures to disk in a form that is quick and easy for programmers to read and write. The result is that the structures we describe in CSS, HTML, Javascript, Java, etc all become part of the one structure. This has some huge implications for how we develop systems and languages.
The most important aspect of applying argot to development is that it reduces each concept in all our languages to indivdual structures (words) in a dictionary. We have the ability with Argot to add or remove words when ever we like which allows the whole system to evolve. So where's this most awesome solution you might ask? It requires a lot more work than I have time to accomplish right now. If you're interested in throwing in a few lines of code, please let me know. Maybe together we could reduce this tower of babel to rubble.
The plan is reasonably straight forward. The most important aspect to be solved initially is creating an Argot editor. To accomplish this Argot requires an Abstract model which can read any argot data and allow it to be manipulated. The initial editor is likely to be written in Java and use a basic tree view to get started. From their the tree view can be replaced with a text representation and editor. This provides the language with a structure that more developers understand and are happy to work with.
After an editor is built it comes back to building the language. The most important aspect of an Argot based language is the words in the dictionary. It must be created so that it can be flexible and be open to change. Developing the initial set of words and a basic engine to execute them is likely to be achieved incrementally. It is likely that the language will have some basis in scripting or object oriented languages such as small talk. However it must also combine this with concepts from HTML and CSS to allow easy methods of defining look and feel for user interfaces.
If this language can be created the final part of the puzzle is to add communications. Argot was designed for communications and it is likely to be where the new language will find its biggest advantages over current systems. Using Argot objects and data structures can be transfered between peers with ease. Communications will be in effect written into the core of the language.
I suspect this would take me a couple of years to develop alone. There are many issues that will arise along the way. However, I think the goal is a realistic and smart one. The tower of computer babel we have created needs to be replaced with something new and well thought out. Argot offers a underlying key concept in achieving this.