quinta-feira, 23 de abril de 2009

Do que trata a Ciência da Computação.

Acredito que o título desse artigo é a principal dúvida da maioria das pessoas quando se depara com as palavras "Ciência da Computação". Afinal, o que essa ciência estuda? A que ela se propõe? Quem se forma nisso é o quê?

Seria muita prepotência da minha parte esgotar o tema. Por outro lado, como membro dessa área e educador, me sinto na obrigação de tentar esclarecer um pouco as dúvidas ou, pelo menos, indicar os caminhos.

"Vamos por partes" - como diria René Descartes e não Jack, o estripador.

O que essa ciência estuda?


O principal foco da Ciência da Computação é o estudo de Algoritmos e suas aplicações. Algoritmos são sequências de instruções, finitas, bem definidas, para a solução de um problema. Quando codificados em uma linguagem de programação, os algoritmos se transformam em programas de computador.
Parece trivial, não é? Afinal, até quando estamos escrevendo uma receita de bolo, estamos escrevendo um algoritmo.

Bom, na verdade, não é tão trivial assim. Afora essa sequência de passos, a Ciência da Computação estuda as estruturas de dados, ou seja, formas de armazenar os dados que os programas tratam na memória. As estruturas de dados podem influenciar na velocidade de execução do programa e no tamanho de memória que o programa necessita para execução. Por isso, saber como criar estruturas de dados na memória é essencial para um bom programa de computador.

Além dos algoritmos, a Ciência da Computação também estuda as plataformas onde esses algoritmos são executados. Entende-se por plataforma a combinação entre hardware e software básico. Em outras palavras, a Ciência da Computação também estuda a arquitetura dos computadores (como combinar os circuitos para fazer as operações básicas de lógica e matemática, para implementar a memória etc), os sistemas operacionais (um conjunto de operações básicas para gerência do computador) e as redes de computadores.

Há ainda as técnicas de engenharia de software que define e aplica práticas para o desenvolvimento de software e gerência de projetos nessa área. Essas prática englobam práticas englobam linguagens e técnicas de programação, modelos, processos, bancos de dados e várias outras técnicas para desenvolver software de qualidade.

Também não se pode esquecer das aplicações desses algoritmos. Entre essas aplicações estão as técnicas de computação gráfica, inteligência artificial, etc.

Enfim, como se pode notar, a Ciência da Computação é uma área bastante abrangente e muito interessante.

A que ela se propõe?


Toda ciência se propõe a explicar fenômenos através de formalismos e linguagens próprias. A Ciência da Computação não é diferente. O fenômeno que tenta explicar é o da transformação ou processamento da informação.

Importa ressaltar que transformação da informação não significa adulteração. Transformar ou processar nesse sentido significa obter novas associações ou relações entre informações e com isso obter outras novas informações.

Para ilustrar melhor, imagine um banco de dados simples com informações sobre nomes e notas de alunos. Se esse banco de dados puder fornecer informações sobre quantos alunos obtiveram notas acima da média, isso é uma nova informação obtida através do processamento das informações que já estavam no banco de dados.

É um exemplo bem simples, mas ilustra o fato que o processamento de informações pode gerar novas informações.

Quem se forma nisso é o quê?

Quem se forma em Ciência da Computação é Bacharel em Ciência da Computação. Não é analista de sistemas, nem programador, nem tampouco "computeiro". Aliás, é importante ressaltar que essa profissão não é regulamentada. Em outras palavras, não existe um conselho regional de computação, nem nenhum outro órgão de classe de classe que estabeleça normas para o exercício da profissão.

A falta de um órgão de classe tem vantagens e desvantagens. A meu ver, a principal desvantagem é que qualquer um pode se dizer analista de sistemas. Mesmo que não tenha sido formado para isso. Ou seja, matemáticos, engenheiros, administradores, físicos, programadores, técnicos em computação, enfim, qualquer um pode dizer que é um analista de sistemas.

Por outro lado, nenhum órgão de classe vai exigir que se pague a anuidade para poder exercer a profissão, como acontece com engenheiros e arquitetos. Enfim, um profissional da computação é livre para desenvolver software ou hardware da forma que desejar. É claro que existe uma questão ética envolvida nisso que gostaria de discutir em outro post.

Por ora, é necessário afirmar que o bacharel em Ciência da Computação é um profissional que pode atuar em um grande número de áreas diferentes, pois é uma atividade-meio. Em outras palavras, a Ciência da Computação dá suporte às atividades que compõem os objetivos da instituição. Por exemplo, em uma produtora de Cinema, o bacharel em Ciência da Computação pode desenvolver algoritmos que façam a animação de personagens.

Portanto, Ciência da Computação é uma área muito interessante e lida basicamente com o tratamento de informações em qualquer contexto. Afinal, em um mundo onde informação é poder, que tem informações está com a faca e o queijo nas mãos.

Para saber mais dê uma olhada nos artigos "Research evaluation in computer science" e "Is Computer Science Science?"

terça-feira, 7 de abril de 2009

Crise na Computação.

A Computação está em crise?
Segundo o Ministério da Educação, em reportagem publicada pela Folha (saiba mais aqui), os estudantes de ciências da computação, matemática e administração estão entre os que mais abandonam o ensino superior. A evasão média nessas áreas é de 28%. Entre as razões está a complexidade do curso de Ciência da Computação.

De fato, os conhecimentos da área de Computação não são triviais. Exige-se muito raciocínio lógico e abstrato - que também é exigido em Matemática, diga-se de passagem. No entanto, o estudante da área de Computação - seja ciência, engenharia ou tecnologia - tem expectativas que nem sempre são alcançadas nos primeiros semestres de curso.

Conversando com alguns estudantes ingressantes na universidade que leciono, percebi que alguns querem ser hackers, desenvolvedores de games ou desenvolver outras habilidades que consideram mais interessantes. No entanto, o que eles eles não consideram é que, para desenvolver essas habilidades, é necessário construir conhecimentos básicos principalmente na matemática, na lógica e em outros fundamentos. Depois dessa iniciação é que eles terão as credenciais para entrar na parte "interessante" da Computação.

Por outro lado, o mercado de trabalho também fomenta essa crise de uma forma muito paradoxal. Explico melhor: como o setor de TI está precisando de mão de obra, o pouco conhecimento acumulado nessa área já é suficiente para a contratação. Por isso, as vezes, nem é necessária uma formação completa no nível superior para ter um salário razoável (Veja aqui uma tabela de salários). Por isso, muitos estudantes, quando adquirem um certo nível de conhecimento, acabam evadindo, pois já atingem uma faixa salarial que julgam suficiente. Aí está o paradoxo: o mercado necessita de uma formação melhor, mas acaba encurtando o tempo de formação porque contrata logo. Esse paradoxo acaba fomentando a crise na área.

Inauguração

Inauguração do blog Computação e Ciência.

Hoje (7 de Abril de 2009), inicia-se o blog Computação e Ciência. Entre os objetivos desse blog estão:
  • Servir como plataforma para publicação de textos relevantes na área da Computação.
  • Discutir o papel da Computação no âmbito das Ciências de modo geral.
  • Discutir o papel do profissional em Computação na sociedade, em particular na brasileira.
São poucos objetivos, mas muito assunto para tratar.

Sejam bem vindos!