Hoje vou falar um pouco sobre a WML, a linguagem que o TheWebMind interpreta. A Web-Mind-Language(WML) é uma linguagem baseada no conceito NLP(Natural Language Processing), que é um campo da ciência da computação que se preocupa com a interação entre linguagens de computadores e humanas(naturais).

A linguagem se assemelha muito com a natural (português, inglês, espanhol, etc.), apenas seguindo algumas regras de sintaxe.
Este padrão, chamamos de Linguagem de Programação Discreta.
Em uma linguagem de programação discreta, as instruções são totalmente variáveis podendo inclusive sofrer alterações durante seu uso, ou por conta de costumes do próprio usuário, bem como idioma, dialeto, crenças, etc.

Um dos princípios mais básicos das linguagens de programação é que “tudo aquilo que não está certo, está errado”. Já no conceito de programação discreta, nem tudo que não é reconhecido pela linguagem, está necessariamente incorreto. Esta margem de erro possibilita tanto ao desenvolvedor, adaptar-se melhor à linguagem, quanto à própria linguagem de se adaptar e evoluir.

Programar em WML é extremamente simples, observem o exemplo abaixo:

Bom, nós sabemos que cada professor pode ter um ou mais aluno
também sabemos que todo aluno possui muitos professor
nos foi passado que o aluno tem um nome:string(100)
e que o professor possui um nome:string(100)

De primeira olhando o código temos a impressão de que algo esta estranho, não?
Pois é asim mesmo que tudo funciona.
O príncipio é escrever o código de maneira natural, como se estivéssemos documentando o projeto, ou apenas escrevendo sobre ele.
Feito isso, a engine do Mind irá aplicar uma série de regras em cima do código, e interpretará o conhecimento que lhe foi passado.

Com o código acima, o Mind consegue gerar diversas saídas como Diagrama de Entidade e Relacionamento, Dicionário de Dados, Código SQL, e até mesmo gerar código usando um módulo específico.
Abaixo algumas das saídas:

Código SQL gerado pelo código feito acima:

/*######################################################
 #   Generated by Mind 02:58 11/19/2009               #
 #   Generate PostgreSQL DataBase Commands         #
 ######################################################*/

 /* DDL: table professor */
CREATE SEQUENCE professor_seq;
CREATE TABLE professor
(
 pk_professor integer default nextval('professor_seq') unique not null,
 nome varchar(100),
 PRIMARY KEY(pk_professor)
);

 /* DDL: table aluno */
CREATE SEQUENCE aluno_seq;
CREATE TABLE aluno
(
 pk_aluno integer default nextval('aluno_seq') unique not null,
 nome varchar(100),
 PRIMARY KEY(pk_aluno)
);

 /* DDL: table professor_aluno */
CREATE SEQUENCE professor_aluno_seq;
CREATE TABLE professor_aluno
(
 pk_professor_aluno integer default nextval('professor_aluno_seq') unique not null,
 fk_professor integer  ,
 fk_aluno integer  ,
 PRIMARY KEY(pk_professor_aluno)
);

 /* Adding Foreign Keys */
ALTER TABLE professor_aluno ADD CONSTRAINT professor_aluno_professor FOREIGN KEY (fk_professor) REFERENCES professor(pk_professor) MATCH FULL;
ALTER TABLE professor_aluno ADD CONSTRAINT professor_aluno_aluno FOREIGN KEY (fk_aluno) REFERENCES aluno(pk_aluno) MATCH FULL;

Por hoje é isso.

Em breve mais posts sobre esta incrível ferramenta.
Por enquanto acessem o site e a documentação:

Docs.TheWebMind.org
TheWebMind.org