Projetos Funcionais — A Colaboratividade.
Janeiro 26, 2009
Projetos Funcionais — A Colaboratividade.
Escrevi esse artigo de modo mais conciso possível, partindo do pressuposto de que tens em mente algum projeto utilizando linguagens como C/C++ e que espera portabilidade do seu programas á outras plataformas, o que pode ser um pouco trabalhoso devido a demasiada quantidade de passos a serem gerenciadas por apenas uma pessoa, hipoteticamente falando é claro.
Acredito que nos dias de hoje, pela complexidade que um projeto funcional exige, fica um pouco difícil você focar seu tempo em apenas um aspecto do programa, já que na elaboração de um programa existem vários outros fatores a serem levados em consideração, dentre esses, posso citar alguns:
* Preocupação com as plataformas alvo.
* Em uma linguagem como C++, por exemplo, é preciso tomar muito cuidado com a tipagem de métodos, variáveis, e do código em geral (isso se quiser como resultado final um código legível e organizado), já que C++ é uma linguagem de tipagem fortíssima o que exige bastante cautéla por parte do programador nesse quesito.
* Preocupação com os algoritimos a serem utilizados no programa, se é um programa ligado a banco de dados (entende-se aqui como linhas e colunas) assim sendo, um objeto bidimensional e consequentemente é importante o entendimento de vetores do mesmo tipo (vetores bidimensionais, mais há quem use como denominação pra esse tipo de vetor o termo matriz).
* Conhecimentos de API’s e frameworks, bibliotecas.
* Experiência com uso de debuggers, compiladores, ferramentas de construção de projeto como o autotools da GNU (caso você for desenvolver sobre Unix) e outros tipos de ferramentas para criação de documentações, criação de bibliotécas estáticas, dinâmicas, monitoramento de links quebrados, detecção de problemas e necessidades extras, então por isso é um pouco complexo você sair fazendo um projeto sozinho na garantia de que todas as partes de seu programa terão maturidade suficiente a ponto de se tornar apresentavel. Em termos gerais, assim como existirão muitas partes intrínsecas e essenciais no funcionamento de alguns métodos no programa, há de haver colaboradores especialistas nessas partes, partes essas estarão articulados aos demais módulos inerentes ao programa — vide programação modular.
* Conhecimentos de idiomas: periodicamente você irá precisar de apoio em termos de documentação, hora durante a pesquisa se deparará com sites e fóruns franceses, por exemplo (não é regra, claro :D), a última documentação, que por acaso, foi excepcional ao meu ponto de vista no qual precisei consultar, foi em um site de taiwan cujo o artigo estava escrito em inglês (uffa!, não me vejo lendo coisas escritas com aqueles caracteres malucos descendentes japoneses, ou chineses, sei lá :-) ).
Então uma dica que eu daria, é: antes de começar a desenvolver o projeto, analise bem com o que irá lhe dar ao longo do desenvolvimento do programa, crie especificações, ao invés de sair escrevendo o código e confiar na sorte que certamente não estará contigo, escreva os passos em português claro (ou sua linguagem nativa :P) que deverá tomar até chegar a um resultado, só assim você entenderá melhor o problema no qual está lidando, e por conseguinte, a resolução se tornará mais simples (a comunidade também é grande).
E isso tudo possuí grande relevância, como já dito, principalmente pela escolha de uma linguagem nativa de máquina como C/C++ ou mesmo o Assembly (no qual o programador deixa de se concentrar no algoritimo em si, e tem de levar em consideração as peculiaridades da linguagem e da máquina). Por esse motivo há quem prefira o uso de Python para projetos do tipo Desktop (não se limitando apenas a isso), o E. Reymond é um, e é claro, como todos já estão carecas de saber, em um programa de missão crítica, ou que exija desempenho, no entanto, de jeito maneira é desenvolvido em linguagens interpretadas como Python que abstrai bastante o conceito de manipulação das questões relacionadas ao baixo nível da máquina e dos algoritimos, entretanto, Python ainda consegue manter um nível relativamente bom e consistente de velocidade em comparação a outras linguagens do mesmo tipo, enfim, como diz o ditado popular — e, por favor, não tome como regra :D, “Se quer ser valorizado, saiba C/C++ fluentemente, no entanto, se prefere ganhar sua grana e viver mais (“mais” exatamente no sendo de aproveitar melhor a vida :-)) aprenda Python” (lembrando que Python, assim como uma gama de outras linguagens foram desenvolvidas em C e concedida como “programação para todos” ao público, vide CPython — implementação original de Python em C); E C, por sua vez, é uma linguagem histórica com um teor mais alto de ascenção entre Hackers e escovadores de bits.
Sem contar que o mundo Linux tá saturado (e quando digo saturado, não me refiro a quantidade de programas já criados, pois nesse quesito C ganha disparado, mas me refiro aqui de perda de performance por decorrencia da utilização de linguagens interpretadas para criação de projetos desktop — sim, admito que as máquinas estão em um processo contínuo e rápido de evolução e por isso alguns segundos a menos para processar um programa não fará lá muita diferença, pra alguns, mas, temos de pensar em todos, nem todo mundo tem um Multicore rodando na máquina … ).
E são muitos outros pontos a serem levados em consideração que poderia citar aqui fazem-nos perder o foco, de uma maneira geral em um aspecto específico do programa (é necessário colaboradores, nesse ponto, estou precisando de colaboradores para o desenvolvimento do projeto Lambda, caso estejam interessados, podem me contactar pelo meu email: felipecatojoªgmail°com, sem contar que também é uma boa oportunidade de aprendizado, e isso serve pra mim também :D).
Entry Filed under: Programação. .
2 Comments Add your own
Leave a Comment
Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackback this post | Subscribe to the comments via RSS Feed
1.
Leandro | Janeiro 27, 2009 at 11:26 am
Tem razão amigo. Muito interessante o artigo.
Mais quanto ao convite no projeto, talvez se eu soubesse C++ eu ate ajudaria.
To te add no gtalk.
2.
RIDDICK | Janeiro 27, 2009 at 12:04 pm
Eh Felipe legal o artigo, gostei das comparações e descrições sobre o fato da elaboração e execução de um projeto…
Ja ouvi falar em Lambda no mundo do GNU/Hurd ou PLAN9 não me lembro bem, faz tempo ….
quando possivel conversamos mais !!!!!!
Abraços e boas nerdiadas…. pois já voltei a ter minha dose diaria de nerdismo aqui !!
Abraços brother !!