segunda-feira, 7 de março de 2011

Zond Foundation

 Para desenvolver o Zond tudo foi planejado da base até o topo. E quando se começa a pensar em tecnologia de base, começam a surgir as dúvidas sobre qual caminho tomar.
O que é melhor fazer? Utilizar uma biblioteca para foundation como STL, e as coisas que faltarem completar com código próprio?
Criar uma propria foundation library do zero?
Procurar uma solução (que não standard) para usar de foundation? [Como Qt por exemplo]

Afinal de contas, sera em cima do projeto de foundation que todo o restro do projeto irá crescer. Logo pensamos, a biblioteca de base é rápida o suficiente? Utiliza técnicas para otimização como Copy on Write? é possível reutilizá-la em qualquer ambiente? Quem utiliza? Existe algum meio de testa-la? A documentação é boa o suficiente?

No entanto para desenvolver o Zond utilizamos um aproatch um pouco mais coringa, utilizando Policy-Based design, construímos uma Foundation library "coringa", que a idéia por de trás é se aproveitar o máximo da plataforma que utilizaremos. Por exemplo, na maioria das plataformas utilizaremos o tipo string como sendo uma std::string da STL, no entanto string poderia ser mapeada em outra plataforma para um QString, ou para um PlatformSpecificWithHiPerformanceString, no entanto mantendo a interface para os cliente do tipo string da foundation library.

A idéia para construção do Zond é reaproveitar o máximo possível de peças já prontas, unindo partes muito bem consolidadas, para construção de uma parte nova que trabalha em conjunto com as demais.
Exemplo: 
Linguagem: Lua - e projetos adjacentes como KopiLua, etc (pois é uma linguagem fácil de portar entre ambientes, é fácil de embarcar em qualquer aplicação)
Frameworka: STL, uSTL, boost, POCO, cocos2d (x), QtAirPlaySDKSDL, Allegro, .NET, XNA
Plataformas: Windows, Mac, Linux, WiMo, S60, Symbianˆ3, iOS, Android, WinPhone7, woPhone, Web (Flash, NativeClient, JavaScript/HTML5, Silverlight).

Zond é um ambiente de aplicações (multi-plataforma) assim como o Java, Python, PHP..etc, então vale a pena uma olhada em alguns White Papers sobre estas plataformas.

Ambiente Java: http://java.sun.com/docs/white/langenv/
Evolução do Lua: http://www.lua.org/history.html
Oracle/Sun e STL: Standard Library, STL and Thread Safety

0 comentários: