What are you building?
I should really define my goals with the system. Even though this is
a small project compared to Office 2003, it helps if the requirements
are clearing defined.
This is a chat program that interfaces into other programming tools, including
a JavaCompilerCompiler Parser and also a Scheme dialect. Typically, writing a program involves working on different levels. At the bottom level is
machine instructions, byte-code, on the next level, assembly language,
on another level, a linker loader, above this level, a parser lexical analyzer,
a preprocessor, a C-language, a macro assembler, above that you have an IDE,
above that system tools, including MAKE and ANT and PERL, and then above that you have model diagrams and software engineering.
I want to develop another layer, this tool(hopefully) will be used to generate code
prototypes, or small snippets of code, or scripts that may interact with your
complete system. And you will interact with the system through chat or IRC.
Thats silly, bots can't write code?
Sure they can, it is just another layer on top of the tools I have already mentioned.
The tricky part is building an natural language chat interface that doesnt waste
the developers time.
There are all kinds of template based code generation tools out there, Aspect-Oriented
programming and such, but one flaw with all these interfaces is that you have to learn
the interface that interfaces to another interface. Ideally, it would be nice to develop
tools that will help the developer, but where the developer doesn't have to learn another
language. It would be nice if a programmer could start his new tool and have code
written, tested, and debugged an hour after he has jumped in the system.
Aspect-oriented technology may already do this, but not to my knowledge. I think chat is
an interesting interface into development, whether it is with another person or some heavily
script bot.
I want to go through three phases of the application, basically, what alpha version, what I can
create right now, beta version, what I might get to, full-version, that would real nice if I could
develop this.
Think about this. Typically, when I write an application or part
of an application, I scan through my folders or online CVS and try
to remember where I left a piece of code. Typically the
folder names are cryptic or even if they aren't cryptic folder
names, for example OracleDataBackup, I still am a little
vaque on what this program does or what code is in the program.
What if this chat bot can give me something more to go with, better
yet, scan a plethora of applications and see if existing code
could be used in code that I am working on now.
Basically, a fancy way of searching data.
Attack on the Deathstar[Full Version]:
A typical network may have a hundred users on it, maybe a thousand. Imagine, interacting with
diffent bots on your system through IRC. Each bot may surf your system looking for files,
copying-pasting, creating databases, running queries, interacting with other users, other bots.
It is a severe security risk, but at least interesting.
Tatooine Attack[Beta]:
Natural Language interface, not the easiest thing in the world to develop. If the natural language
interface gets built, I can imagine it to be something like this:
{Simple greeting interface}
[me]: Hello
[bot]: Hi
[me]: How are you doing?
[bot]: I am doing fine.
[me]:What were we working on yesterday?
{Let us get to work}
[bot]:We compiled several programs that interacted with the Oracle database.
[me]: How many compiles did you perform
[bot]: I compiled the application 210 times.
[me]:I need you to write a program
[bot]: Sure, tell me more
{Pattern searching and recognition}
[me]:It will be similar to a X program
[bot]: Let me search my database for similar programs
[bot]: I found an application
[me]: Could you paste some code snippets from the application
[bot]: sure
{Help response}
[bot]: Here is the url: 10.0.0.0/code
[me]: I need you to change the format of the output in this method
[bot]: ok
[me]: I need some more help
[bot]: sure
[me]: I need to write an application
[bot]: I need some more information to write this application
[me]: I want to write a simple file i/o appliction
[bot]: sure I can generate a program that reads in input from a file
...
...
...
...
Rebel Strike[Alpha]:
Scheme interface - Scheme is a simple language that can be used as the layer that interacts with the bot,
basically another layer over java. Ideally, I would use this language to build a natural language
interface to my little number game.
[me]:Hello
[bot]: Hi
[me]:What is 100
[bot]: 100 is a number
[bot]: it has 3 digits
[bot]: the binary value for 100 is X
[bot]: the hex value of 100 is X
...
...