A que disciplina pertence a Ciência da Computação? [fechadas]

15

Ciência da Computação é ciência, matemática aplicada, engenharia, arte, filosofia? "De outros"?

Para fornecer informações, aqui está a postagem de Steven Wartik no blog da Scientific American intitulada " Eu não sou um cientista de verdade, e tudo bem ". O artigo aborda alguns bons tópicos para esta pergunta, mas deixa em aberto mais do que responde.

Se você consegue pensar na disciplina, como a ciência da computação se encaixaria em sua definição? A disciplina de Ciência da Computação deve basear-se no que os programadores fazem ou no que os acadêmicos fazem? Que tipo de respostas você recebe de pessoas que parecem pensar profundamente sobre isso? Que razões eles dão?

Macneil
fonte
1
Sempre acadêmico que conheci que diz que Ciência da Computação é uma ciência tem uma razão completamente diferente para explicar o porquê.
Macneil
5
Ciência da Computação é Ciência Política com um pouco menos de política.
Job
1
a ciência da computação é um ramo da matemática aplicada ... "ciência" implica o uso do método científico, inexistente na ciência da computação; mas recebeu esse nome quando toda nova disciplina queria colocar a palavra ciência no final de seu nome.
red-dirt
2
@ vermelho-sujeira Isso não é verdade. Existe método científico no CompSci; você tem experimentos, provas formais, etc. A maioria dos cientistas de computação mais experientes gosta de matemática e lógica formal (veja: cálculo lambda, o problema da parada, etc, etc) e publica artigos em periódicos revisados ​​por pares. Não os confunda com pessoas que inventam "metodologias", que não são cientistas por nenhuma definição da palavra.
Andres F.
1
@ red-dirt Semelhante ao AndresF, no lado mais prático da aplicação, o método científico básico (hipótese, teste, verificação, repetição) entra em jogo durante a depuração - o que geralmente ocupa a maior parte do tempo gasto em programação.
Izkata

Respostas:

30

Existem duas disciplinas de TI distintas:

  • Ciência da Computação - é o estudo da disciplina de computadores e computação usando o método científico.

  • Engenharia de software - é a disciplina de design e implementação de software, seguindo os princípios de engenharia adequados.

Os dois se sobrepõem um pouco, mas a distinção é realmente sobre os resultados desejados da ciência versus engenharia. O resultado desejado de uma disciplina científica é o conhecimento. O resultado desejado de uma disciplina de engenharia são as coisas que funcionam.

Então, para responder sua pergunta:

Ciência da Computação é ciência, matemática aplicada, engenharia, arte, filosofia? "De outros"?

Ciência da Computação é Ciência ... quando feito corretamente. No entanto, como outras disciplinas, o CS se sobrepõe a Matemática, Engenharia, Ciências Físicas, Ciências Sociais, Filosofia e assim por diante.

Eu também acrescentaria que o que a maioria dos programadores faz não é Ciência da Computação ou Engenharia de Software. É mais parecido com o que um artesão faz.

E é triste dizer que nem a Ciência da Computação acadêmica nem a profissão de Engenharia de Software são tão rigorosas quanto as disciplinas mais antigas de ciência e engenharia. (Existem campos da Ciência da Computação que são tradicionalmente rigorosos; por exemplo, aqueles com uma forte base matemática. Mas, para muitos campos, é simplesmente muito difícil / caro fazer estudos científicos adequados sobre as questões que realmente importam.)

Stephen C
fonte
1
Há também a engenharia de hardware - alguém precisa projetar os computadores físicos para o software rodar - e essa é realmente uma (maior) sub-disciplina da engenharia eletrônica.
Donal Fellows
+1 na analogia do artesão, percebi que esse é o conceito mais exato para explicar o que faz um CS de engenheiro de software. Aqui está um link para o livro gratuito da O'Reilly sobre o assunto. apprenticeship-patterns.labs.oreilly.com/ch01.html
romeroqj
"E é triste dizer que nem a área acadêmica de Ciência da Computação nem a de Engenharia de Software são tão rigorosas quanto as disciplinas mais antigas de ciência e engenharia": discordo dessa afirmação. Entre outras coisas, se a Ciência da Computação não fosse rigorosa, não teríamos avanços nas linguagens de programação, compiladores (e toda a teoria formal da linguagem por trás deles), criptografia e assim por diante. Todas essas aplicações têm uma base sólida que foi desenvolvida principalmente na academia.
Giorgio
@Giorgio - É uma pena que você não leu o que eu escrevi imediatamente após a sentença que você citou ...
Stephen C
@ Stephen C: Eu li, e ainda não estou convencido de que a Ciência da Computação seja menos rigorosa do que outras ciências (mas posso estar errado, é claro). Ou talvez deva-se primeiro definir o que se considera "científico" e "rigoroso" e o que não, mas isso pode exigir uma longa discussão, eu acho.
Giorgio
12

Os programadores raramente "fazem ciência da computação". Eles usam principalmente resultados de "engenharia de software", que é uma disciplina de engenharia, obviamente.

Fora isso, Ciência da Computação é Matemática Aplicada. Se você comparar o CS com algo indubitavelmente pertencente à matemática aplicada, notará muita semelhança.

Os cientistas da computação projetam e estudam formas de computação (algoritmos), tirando a maior parte da teoria da matemática (lógica, teoria dos grafos, combinatória etc.) - e contribuindo para isso ao mesmo tempo. Assim como o resto da matemática aplicada.

Eles avaliam propriedades desses modelos e algoritmos teoricamente e realizam experimentos de modelagem (escrevem programas de teste). Assim como os matemáticos aplicados simulam o fluxo de líquido em tubos em aglomerados, os cientistas da computação usam computadores para experimentar implementações de seus algoritmos. Os resultados desses experimentos vão diretamente para a produção: em uma refinaria de petróleo ou em um software para análise de estoque.

Na universidade que terminei, não havia sequer um departamento especial de ciência da computação: entre outros domínios não relacionados à computação, a cátedra de ciência da computação faz parte do Departamento de Matemática Aplicada.

P Shved
fonte
mas em outras universidades, a Ciência da Computação é um departamento separado da Faculdade de Matemática, um departamento da Faculdade de Engenharia, a Faculdade de Ciências ou ... nenhuma das opções acima. São questões administrativas / organizacionais e pouco têm a ver com o material em questão.
Stephen C
@ Stephen, é por isso que eu especifiquei a universidade, em vez de dizer "na maioria das universidades" ou "em muitas universidades" :-) Esse é apenas um pequeno exemplo, não a essência da resposta.
precisa
1
com certeza é um "pequeno exemplo", mas o que quero dizer é que não é um exemplo representativo e nem sequer é particularmente relevante para o seu argumento. Para ilustrar, a Universidade em que trabalho está em processo de reestruturação das Faculdades ... não por causa de qualquer pensamento profundo sobre o que está relacionado ao que ... mas para reduzir os custos administrativos . Alguns anos atrás, as escolas CS e Elec Eng foram combinadas pelo mesmo motivo .
Stephen C
Como afirmei na minha resposta inicial, a ciência da computação é uma disciplina de matemática aplicada que lida com o design e a aplicação de autômatos computacionais. Programar não é ciência da computação. O software é um meio pelo qual implementar autômatos computacionais sem sacar um ferro de soldar (qualquer programa pode ser implementado usando lógica seqüencial e combinatória, considerando imóveis suficientes). A arquitetura de von Neumann era diferente das arquiteturas que a precederam, pois é um autômato de uso geral que serve de base para a criação de autômatos de software "soft".
bits twiddler
1
@ bit-twiddler - Sua definição é muito estreita. Exclui muitas áreas acadêmicas tradicionalmente classificadas como "ciência da computação".
Stephen C
5

Ciência da Computação é um termo que hoje cobre muitas e muitas coisas:

  • Os mestres artesãos trabalhando para os outros com base em suas experiências com suas ferramentas (e com aprendizes etc).
  • A ferramenta ferve inventando e criando novas ferramentas para os artesãos
  • Os pesquisadores desenvolvem novas ligas e outros materiais - como plástico - para os ferreiros.
  • Os cientistas teóricos descobriram como as coisas funcionam para que os fabricantes de ligas saibam como suas ferramentas funcionam.

Observe como todos os itens acima têm nomes distintos, em vez de apenas "cientistas da computação". A diferença é que a Ciência da Computação é nova demais para que os nomes se estabeleçam.


fonte
Ponto 2 é mais de uma centopéia toolsmith , mas neste exato da resposta sobre :)
ZJR
1

Primeiro de tudo, é ciência da computação . Isso lida com a matemática por trás da computação.
Existem outras disciplinas mais orientadas para a engenharia.

A diferença é a mesma que qualquer disciplina relacionada à ciência e engenharia. Um é sobre precisão, outro sobre precisão. A ciência da computação é teórica, outras são as ciências aplicadas aos problemas: ramos da engenharia.

CMR
fonte
1
O MIT discorda de você eecs.mit.edu
Armand
@Alison, corrija a entrada do wiki ( en.wikipedia.org/wiki/Computer_science ) também.
CMR
0

A ciência da computação é aplicada e matemática experimental .

philosodad
fonte
0

A ciência da computação é um ramo da matemática aplicada que lida com o design e a aplicação de autômatos computacionais. A engenharia de software é o subconjunto apropriado da ciência da computação que lida com o design formalizado e a construção de código para a arquitetura von Neumann. A arquitetura von Neumann é apenas uma maneira de implementar uma máquina de computação. Por exemplo, a máquina usada para decifrar mensagens codificadas pelo Enigma não era uma máquina de von Neumann.

A engenharia de software é uma disciplina profissional. A ciência da computação é uma disciplina orientada para a pesquisa. A maioria dos estudantes de graduação em ciência da computação acaba em desenvolvimento de software porque a pesquisa exige que se detenha pelo menos um mestrado, o que reforça a crença de que a ciência da computação é um certificado de programação glorificado.

bit-twiddler
fonte
3
Eu não acho que muitos cientistas acadêmicos da computação aceitariam uma definição de CS tão estreita.
Stephen C
0

A disciplina mais precisamente chamada de "Ciência da Computação" é, na maioria das universidades que verifiquei, uma ciência aplicada, semelhante às disciplinas de engenharia; se você se formar, recebe um "BS" ou "MS". O grau de CS da Texas Tech foi oferecido pela faculdade de Engenharia. A disciplina, como ensinada, é principalmente teórica; você aprende o conceito de máquinas de Turing, DAs / NDAs e outros conceitos fundamentais de que o programador "cotidiano" não precisa realmente ficar mexendo no crânio. Você também recebe um monte de matemática superior; o Texas Tech CS, e aposto que muitos outros também oferecem a você um menor de matemática. Para isso, a maioria das faixas de graduação da universidade adiciona uma pitada de aplicação prática de baixo nível; você aprende uma linguagem assembly, uma linguagem de terceira geração,

No entanto, a maioria das pessoas que codificam para viver não são "cientistas da computação"; eles são, estritamente falando, "desenvolvedores de software" ou (quando você adiciona análise / design) "engenheiros de software"; esse trabalho tem muito menos nível de hardware (embora você precise conhecer o básico), muito mais análise de sistemas, design e codificação direta. Muitas universidades têm uma trilha diferente apenas para isso; na Texas Tech, chamava-se "Gerenciamento de sistemas de informação" e era formado em administração de empresas (BBA / MBA). Essa faixa era mais leve em matemática mais alta (o que você precisava saber sobre álgebra e cálculo diferencial / integral era espremido em dois semestres de "matemática de negócios" e não incluía cálculo de vetor / tensor, álgebra linear etc.), muito mais pesado em matemática financeira (um semestre de estatísticas e finanças, com dois cada um de contabilidade e economia). Mais leve em sistemas operacionais, mais pesada em tecnologias de "pilha", como bancos de dados, servidores web, redes e administração geral de sistemas. Mais leve em idiomas de baixo nível, design de circuitos e IA, mais pesado em idiomas de 3ª e 4ª geração, análise de sistemas e gerenciamento de projetos. Eu me formei na Texas Tech e, quando saí, já tinha pelo menos um semestre de Java, VB, C # e linguagens da web (HTML / CSS / PHP), além de um ano de OOA & D e vários outros cursos no gerenciamento de projetos de TI.

Qual é o melhor no mundo real? Eu adquiri o MIS BBA, meu irmão obteve o CS BS e nós dois trabalhamos com o mesmo nível salarial (ajustando o custo de vida) dos engenheiros de software seniores. Ele teve que aprender muito do OOA & D necessário no trabalho, bem como acelerar muito rapidamente em C # / Java a partir de seu conhecimento básico em C ++. De minha parte, eu gostaria de ter os dois semestres de estudo de algoritmo conceitual que ele obteve enquanto eu estava preso em cursos de gerenciamento de negócios (sim, o MIS é um "Gerenciamento", mas descobri que 99% do meu conhecimento de como gerenciar e não gerenciar outras pessoas foi aprendido por exemplo).

KeithS
fonte