Ciência vs. Engenharia da Computação

Esse tema é sempre recorrente na vida de quem é engenheiro da Computação. Todo engenheiro da Computação ouviu pelo menos uma vez na vida essa afirmação: “Ahh, então o curso que você fez é mais focado em hardware do que software…”. Vou tentar colocar no blog minha visão, que é diferente apesar de óbvia.

De maneira geral, a quantidade de nomes de cursos de nível superior em Computação e TI é absurdamente grande. Em 2009 o MEC havia levantado um total de 26000 cursos cadastrados, muitos na área de Computação, pelo menos 7000 deles com nomes diferentes apesar do mesmo conteúdo curricular. São nomes como “Sistemas de Informação”, “Engenharia de Sistemas”, “Engenharia de Software”, “Análise de Sistemas”, etc., cujos termos são usados para se fazer uma mistureba de conceitos, normalmente para demonstrar atualidade e criatividade, mas que no fim das contas cria a maior confusão semântica.

Pois bem, vamos ao que (me) interessa. Para criar um paralelo, vamos tomar como exemplo a Física. Um cientista físico trabalha para gerar novos conhecimentos, teóricos ou experimentais, que ajudam na compreensão da natureza. Esses conhecimentos dizem muito respeito à especialidade do físico, e digamos que no nosso exemplo os conhecimentos são em Mecânica. Estes novos conhecimentos em Mecânica, fundamentados em um processo de pesquisa básica, serão postos à prova de sua utilidade para a sociedade em processos de pesquisa aplicada. Quando o conhecimento se mostra útil para a humanidade, pode-se empreender um processo de pesquisa tecnológica, que transformará o conhecimento em artefato tecnológico útil. Ops, já estamos falando de… Engenharia. No nosso caso, trata-se de Engenharia Mecânica.

Mas temos outros exemplos na Física: Engenharia Elétrica, Engenharia Civil, Engenharia de Telecomunicações, etc. Enquanto uma Ciência se preocupa com os processos de pesquisa básica, uma Engenharia se preocupa com pesquisa tecnológica. A pesquisa aplicada é campo comum de interação, a ponte entre os dois mundos.

O ponto é que no último século surgiu como ramo da Matemática a Ciência da Computação, que está fundamentada em uma Teoria da Computabilidade. A Ciência da Computação pode ser definida como o corpo de conhecimentos teóricos e experimentais que formalizam o processo de computação em máquinas, bem como estruturas de dados e algoritmos implementáveis nestas máquinas. Antes que alguém venha associar estas máquinas com máquinas físicas, adianto que estamos falando em um domínio beeemmmm abstrato. Estas máquinas são modelos matemáticos (portanto formais) que tentam explicar processos de computação artificiais ou (e principalmente) naturais. O comportamento da Natureza, sua evolução enquanto máquina de computação, é domínio da Ciência da Computação.

Não estamos a falar de qualquer problema real da humanidade. Não estamos de jeito nenhum falando de informática ou ferramentas computacionais, como o computador, ou linguagens de programação, ou compiladores de código de máquina. Estamos falando de Computação, o ramo da Matemática que tenta descobrir se “a Natureza consegue executar em uma máquina de Turing ou autômato celular”. Quando essas coisas todas se tornam ferramentas, tecnologia em benefício da humanidade, estamos falando de Engenharia da Computação.

O fato é que do jeito que os cursos de Ciência da Computação estão organizados atualmente, a maioria deles se encaixa no perfil de curso de Engenharia. Algumas universidades colocam o departamento de Computação dentro da escola de Engenharia. É bastante adequado. Mas algumas pessoas bastante criativas inventaram que Engenharia da Computação é uma espécie de fusão entre Engenharia Elétrica/Eletrônica e Ciência da Computação, como se isso fosse equivalente a uma fusão de nomes, tipo, eu pego “engenharia” da primeira e “computação” da segunda, ignorando os termos “eletrônica” e “ciência” . Quanta bobagem!

Nova definição: Engenharia da Computação é a aplicação da Ciência da Computação para o desenvolvimento de tecnologia útil na resolução de problemas reais da sociedade. Como engenheiro da Computação, me sinto melhor compreendido assim.

Vamos esperar ainda surgir nas escolas de Ciência da Computação verdadeiros cientistas da Computação. Por ora, esses estão vindo da Matemática. Os nossos “cientistas” estão dando uma de engenheiros sem base em engenharia, e o que é pior, sem igual base científica para se qualificarem de facto como cientistas. O mundo, e em especial o Brasil, precisa amadurecer nisto.

Anúncios

6 comentários

    • Olá Matheus,

      Que bom que esclareceu!

      Só tome cuidado para tomar minha opinião como verdade. Digo isto porque o que vai valer para você é o direcionamento dado para o curso que você pretende fazer, e isto muda de escola para escola.

      Espero que tenha êxito na sua escolha. Abraço!

      Curtir

  1. Ótimo texto mas discordo em algumas questões como o fato de vc dizer que ciencia da computaçao seria o estudo para construção de equipamentos e quando isso acontecesse seria engenharia, temos que lembrar que a maioria dos softwares sao feitas por profissionais que optaram por esse curso.

    Curtir

    • Obrigado pelo comentário, Jonathan.

      O desenvolvimento de software é atividade de engenharia. Tanto que é chamado de engenharia de software. 🙂

      Há um sério problema de identidade nos nossos cursos de Computação. Infelizmente as coisas não vêm já organizadas. Elas se organizam com o tempo e se definem por uma série de fatores. Um desses fatores é o mercado. No caso de Computação, o mercado age pesado.

      Mas temos que ter em mente que a prática de mercado nem sempre é conceitualmente correta. Projeto de software é atividade de engenheiro, assim como seu desenvolvimento é uma atividade técnica. O que acontece é um monte de cientista da computação, sendo chamados de engenheiros de software, trabalhando como técnicos em informática.

      Abraço!

      Curtir

      • voce faz engenharia da computaçao certo?
        Entao se desenvolver softwares fosse atividade de engenheiro, o curso que eu faço ( ciencia da computaçao ) sequer ia existir. Deixando para a engenharia de software todo o trabalho. os engenheiros do ramo da informatica, tem sim uma grande formaçao em criaçao e manutençao de software, mas ficam restritos ao modo como eles interagem com o hardware para o qual foram criados.

        Curtir

        • Olá Jonathan,
          Eu já cursei Graduação e Mestrado em Engenharia da Computação.
          Você não entendeu o que eu disse. Estou apenas dizendo que os cursos de Computação hoje estão com um problema de identidade, e estão sendo rotulados com nomes que tradicionalmente nos remetem a outros conceitos que não condizem com a prática.
          Não se preocupe, seu entendimento sobre a área em que atua ainda vai mudar muito ao longo da graduação, e além dela. 😉
          Só te alertando sobre alguns erros comuns: (i) você está subestimando seu curso de ciência da computação – o escopo dele vai muito além de desenvolvimento de software; (ii) engenharia da computação é diferente de engenharia de software; (iii) engenharia da computação não está “mais voltado para o hardware”, como muitos dizem; (iv) nem ciência da computação “mais para software”.
          Boas reflexões. Grande abraço!

          Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s