27.06.2011 – Qual a diferença entre ciência da computação e engenharia da computação?

bcc

um cientista da computação

Essa pergunta me foi feita tantas vezes ao longo de minha formação, que ainda ressoa em minha caixa craniana, e por isso me ponho a tentar explica-la à minha maneira. Como eu sonhei em ter uma resposta simples, na ponta da língua, e compreensível a qualquer um… mas a verdade é que responder a essa pergunta exige uma elaboração um tanto complexa, como farei abaixo.

É preciso, antes de tentar fazer uma diferenciação, deixar bem definidos certos conceitos.

O que é uma ciência? Poderíamos definir ciência como todo conhecimento formal existente sobre determinado assunto. Por exemplo, química, física, biologia, sociologia, ecologia, computação… tudo isso são “ciências”. Poderíamos dizer que a biologia é uma ciência, cuja área de conhecimento é a vida. A química é uma ciência, cujo “assunto” é a matéria. E assim por diante.

O que é computação? Computação é uma ciência, tal como definido acima. E qual é o “assunto” da computação? A resposta óbvia seria “os computadores”. Errado! Computação é a ciência de computar. Ótimo, aparentemente explicou-se o 6 com um meia-dúzia, mas deixe-me terminar. Computar está mais associado a calcular, chegar a uma resposta, resolver um problema lógico. Isso pode ser feito com computadores, que são máquinas construídas exatamente para isso, ou não. Pode ser feito com calculadoras, com ábacos – que, a rigor, são também computadores, pois auxiliam a computação ou cálculo – ou com nossa massa cinzenta.

cérebro de um computeiro

Assim, caem por terra alguns mitos sobre a computação: o de que a computação estuda os computadores, e o de que a computação é uma ciência moderna. Ora, estudos sobre cálculos e resolução de problemas lógicos são tão antigos quanto a civilização! E os gregos, quando rabiscavam a areia com galhos para calcular suas coisas já estavam exercendo a computação – sem computadores, o que não tem nada de mais. Naturalmente, toda ciência evolui. Inventaram o ábaco, inventaram a calculadora, inventaram máquinas cada vez mais automatizadas e carregadas de tecnologia, até inventarem o computador. Essas máquinas são ferramentas, mas não o objeto de estudo da computação (embora beire o impossível compreender a ciência da computação hoje em dia, sem compreender ou utilizar essas ferramentas).

Então, quando se pensa em ciência da computação, a primeira palavra que deveria vir à mente de uma pessoa esclarecida deveria ser “algoritmo” (que é um método, descrito de uma maneira formalizada, de resolver um problema lógico) e não “computador” (que é uma ferramenta). Ou seja, para fazer uma comparação com astronomia, que todo mundo sabe (ou pelo menos deveria saber) o que é: a astronomia não estuda telescópios, ela estuda os “astros” ou “corpos celestes”. Mas, pelo estado avançado dessa ciência, é hoje em dia muito difícil para um astrônomo exercer sua ciência sem o conhecimento ao menos de como utilizar um telescópio e outras ferramentas.

Mas existe ainda uma terceira palavra cujo entendimento deve ficar claro. O que é engenharia?

Confesso não me veio à mente uma definição segura, que não a minha própria idéia intuitiva do que é engenharia. Mas a idéia intuitiva não corresponde exatamente ao que é engenharia. Entre as várias definições que vi, todas com o mesmo espírito, elegi a seguinte como mais simples e elegante: “Engenharia, num sentido amplo, é a aplicação da ciência de maneira econômica para as necessidades da humanidade. (Vanevar Bush)”. Ou seja, o engenheiro é um indivíduo que APLICA (usualmente uma, mas nada impede que mais que uma) ciência, de forma otimizada, ou seja, econômica, sem desperdícios, eficiente. Para o benefício da humanidade (ou de algum cliente de algum produto específico, mas que no fim das contas, é humanidade também). Ou seja, a engenharia no fim das contas é uma ciência também. É a ciência cuja área de conhecimento é a otimização.

o trabalho de um engenheiro civil

Aqui deveria cair por terra a imagem popularmente concebida de que engenheiro é algo como pedreiro “um mestre de obras diplomado”, no caso de engenheiro civil, e que as pessoas tentam aplicar a mesma idéia para as outras engenharias. Antes de mais nada, engenheiro não comanda ninguém. Aliás, em uma obra, mesmo o engenheiro deveria se submeter ao mestre de obras, ao menos no que diz respeito ao comportamento dele no local da obra. Engenheiro está, na verdade, no mesmo nível dos operários. A diferença do engenheiro e do operário é que esse faz um trabalho manual, de produção propriamente dita, e aquele faz um trabalho intelectual, de otimização da produção.

Então, agora vamos juntar as coisas. Ciência da computação, em teoria, é a ciência sobre os métodos de resolução de problemas lógicos (algoritmos). Assim, a ciência da computação está realmente mais voltada para o software. Para montar, desmontar, trocar peças, existem os técnicos. Porém, chega uma hora em um curso de computação que um certo entendimento de como o hardware funciona torna-se imprescindível. Ainda assim, isso é feito como suporte para o entendimento do software.

Ai entra em cena outra falácia popular, a de que se a ciência da computação é mais voltada para o software, então a engenharia da computação é mais voltada para o hardware! Parece óbvio, não? Ora, na verdade isso é absolutamente falso, pelo menos em teoria. O engenheiro de computação também é mais voltado para o software. Ora, juntando as definições acima, engenheiro de computação nada mais seria do que um sujeito que tenta aplicar a ciência da computação da maneira mais econômica possível.

Então, qual a diferença afinal de contas? Novamente, atemo-nos à teoria. A diferença teórica é que o cientista de computação é um estudioso de algoritmos (de maneira extremamente genérica), e o engenheiro é um indivíduo que se preocupa com que os algoritmos sejam aplicados da maneira mais econômica possível em benefício de seu patrão da humanidade.

Agora, entra em cena aquele velho abismo entre teoria e prática.

Existem pessoas que dão suas respostas considerando apenas o aspecto prático. E nesse tipo de respostas, já ouvi absurdos como “Engenheiro e cientista da computação, depois de formados, fazem a mesma coisa. A única diferença é que o engenheiro ficou um ano a mais na faculdade, sofrendo com matérias de engenharia totalmente desconexas de computação.” Isso é verdade algumas vezes, mas nem sempre. Ambos – cientista e engenheiro – podem trabalhar em áreas comuns. Existem, no universo empresarial (ou seja, na prática), diversos cargos dessa natureza. Se o indivíduo se embrenha por uma dessas profissões, realmente não faz muita diferença em quê ele se formou. Programadores, desenvolvedores ou engenheiros de software para as mais diversas finalidades (vale frisar que engenharia de software tem um sentido próprio, diferente de engenharia como definida acima), administradores de redes, administradores de bancos de dados, assistência técnica de informática (os famosos help desks da vida…). Nesses casos, nem é exigido do engenheiro de computação o CREA. Ele apenas está sendo contratado por seus conhecimentos de computação, não pelos seus conhecimentos de engenharia.

Assim como existem aquelas funções que o engenheiro de computação pode exercer, mas o cientista não. São aquelas em que fala mais alto a parte “engenharia” da coisa. E, para um engenheiro de computação, isso geralmente se traduz em automação. E essa área ele compete divide geralmente com engenheiros elétricos, engenheiros de automação, etc. Muitas vezes, projetos de automação precisam de algum integrante com um conhecimento mais refinado de software (ou seja, de computação) do que os engenheiros de automação possuem. É onde se pode abrir uma brecha para o engenheiro de computação entrar 😉 num bom sentido, claro.

Agora, pelo que foi dito, existe alguma função que seja privativa dos engenheiros de computação? Ou seja, há algo que somente o engenheiro de computação possa fazer, e mais ninguém? Até onde eu saiba… não! Em outras palavras… Não existe, na prática, uma profissão tal como “engenheiro de computação”. Pelo menos até onde eu saiba… quem souber de algo, por favor me avise para que eu retire essa suposta grosseria desse artigo.

Ah, mas então engenhação de computaria engenharia de computação é ruim, vou fazer outro curso, diria um idiota qualquer alguém que não soube ligar bem a realidade com as oportunidades.

A verdade é que isso é uma vantagem do engenheiro de computação. Ele não é essencial para nada, qualquer empresa sobreviveria sem engenheiros de computação, mas ele é um bom quebra galho para diversas coisas. Ele pode se intrometer no trabalho dos cientistas da computação, dos engenheiros de automação, de engenheiros elétricos e até mesmo de economistas – sendo um daqueles engenheiros genéricos que ajudam a otimizar o planejamento de instituições financeiras.

Anúncios

8 opiniões sobre “27.06.2011 – Qual a diferença entre ciência da computação e engenharia da computação?

  1. Acho que essa foi a melhor definição que eu vi sobre as diferenças dos cursos até hoje. Só há 2 pontos que eu acrescentaria:
    -Engenharia de computação não é “engenharia de computadores”. O curso não é uma engenharia eletrônica especializada em construir computadores.

    O segundo. e mais importante ponto, na minha opinião, é que há MUITAS interpretações do que um engenheiro de computação deve conhecer. Há lugares como a UFRGS onde se aprende muito sobre arquitetura de computadores, justamente o que eu falei que não é o esperado logo acima. Há lugares como a Unifei ou o Inatel onde há um foco muito maior em telecomunicações. Além destes, há os cursos que possuem mais de uma ênfase (como a Unicamp) ou cursos mais amplos (UFSCar ou ITA).

    No fim, a universidade escolhida também ajuda a moldar muito o perfil do profissional formado. Em um curso com tantas dúvidas da própria identidade, isso faz grande diferença.

    • “há MUITAS interpretações do que um engenheiro de computação deve conhecer.”

      Muito bem apontado. Acho que ai cabe ao próprio aluno se identificar com alguma área e se aprofundar nela, na medida do possível.

      Notei também que a USP não foi mencionada nos exemplos hehehe não que eu esteja reclamando, mas qual seria o ponto forte deles?

  2. muito bom o post obrigado , esclareceu todas minhas dúvidas , agora definitivamente eu quero cursar eng da computação .-.

  3. Incrível, a melhor definição que já vi.
    Estou no primeiro semestre em Ciências do Computação,
    e acho esta é a definição mais imparcial e verdadeira.

    Parabéns e meus aplausos para você!

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s