Qual é a diferença entre ciência da computação e programação?

32

Eu sou novo em ciência da computação e programação, e eu queria saber, existe uma diferença entre ciência da computação e programação? e você escolhe estudar apenas um deles na universidade, ou ambos?

xXSarahXx
fonte
42
Tempo de analogia ruim.
Mike Weller
10
Qual a diferença entre arquitetura e construção?
Oded
6
eles são tão distantes como geologia e vala cavar
Steven A. Lowe
27
Ciência da computação é o que você paga para aprender. Programar é o que você é pago para fazer.
Jfrankcarr
5
A diferença é o que faz você usar a classificação suave em vez da classificação por bolha.
23412 deadalnix

Respostas:

68

A ciência da computação é o estudo do que os computadores podem fazer; programação é a prática de fazer computadores fazerem coisas.

Dê uma olhada nos cursos / programas oferecidos pelas universidades em que você está interessado para descobrir se o curso é um curso de CS, um curso de programação, outra coisa (por exemplo, Engenharia de Software) ou mesmo uma combinação dos itens acima. Muitos cursos anunciados como "ciência da computação" oferecem um componente de programação significativo, que pode ser para que você possa colocar em prática as partes teóricas do curso, ou pode ser por conta própria, para que você possa aprender a habilidade de criar programas.


fonte
1
Muito boa resposta, apesar de não responder a parte prática da questão;)
back2dos
@ back2dos OK, estendi a resposta.
É importante notar que a maioria dos cursos de Ciência da Computação também não se preocupa com CS teórico, o TCS é pelo menos tão separado do CS prático quanto o CS da programação.
Ben Brocka
3
Não acho que você deva ligar o CS (apesar do nome) muito aos computadores: em primeiro lugar, é o estudo da informação . Acontece que o termo "computador" abrange a maioria das diferentes ferramentas físicas que usamos para trabalhar com informações, portanto quase todo estudo de informações envolve a programação de um computador.
Tikhon Jelvis
A taxonomia pode se encaixar no apelido da ciência da informação. Mas isso não me parece um encaixe perfeito no CS. Útil no sentido interdisciplinar, mas o CS é inextricavelmente em parte sobre coisas que podemos fazer com computadores, IMO. Eu poderia fazer sua definição de qualquer "computador" mais geral, mas não a definição de CS.
precisa
36

Uma ressalva: 'Ciência da Computação' tornou-se um campo confuso nos tempos modernos, porque (pelo menos nos Estados Unidos) as universidades não têm formação em "programação". Isso significa que as pessoas interessadas em programação devem se inscrever nos cursos de Ciência da Computação e, como reação a isso, os programas de Ciência da Computação enfatizam cada vez mais a programação.

Dito isto, a própria Ciência da Computação é uma ciência fortemente matemática - Matemática Computacional pode ter sido um termo melhor. Envolve o estudo da teoria dos grafos, complexidade algorítmica, lógica formal, autômatos e, em geral, qualquer estrutura lógica que possa descrever uma transformação ou resposta a algoritmos de entrada. Um cientista da computação no sentido clássico poderia argumentar sobre regras que governam qualquer sistema de computação (incluindo computadores modernos) sem necessariamente conhecer os detalhes da implementação na arquitetura atual. Uma sólida formação em Ciência da Computação oferece a capacidade de desenvolver (ou recuperar) algoritmos eficientes e escalonáveis, antecipar reduções lógicas e raciocinar profundamente sobre o que é tratável.

A programação, ao contrário, é o que uma pessoa faz quando usa uma linguagem de programação para transformar um algoritmo em algo que a máquina pode fazer. (Isso deve tornar óbvia a conexão íntima com a Ciência da Computação e de onde vem grande parte da confusão.) Um programador (em relação a um ambiente e linguagem) deve ser capaz de pegar virtualmente qualquer conjunto de algoritmos e transformá-los em uma forma humana. - e legível por máquina escrevendo código. Uma sólida experiência em programação (como a maioria dos diplomas de CS fornecerá) permite que você escreva um código melhor - onde o código "melhor" é mais facilmente compreendido por outras pessoas e mais bem-sucedido em expressar o algoritmo que você está implementando.

Há uma grande quantidade de diafonia, é claro, e um alto nível de experiência em um corresponderá fortemente ao desenvolvimento de experiência no outro - como observado, um especialista em CS é quase sempre um programador competente e um programador experiente aprendeu muitos princípios de CS. Pense em Física e Engenharia.

Uma boa maneira de lembrar a diferença é esta: se ele exige que um computador veja se funciona, está programando - se você pode fazê-lo com lápis e papel, é Ciência da Computação.

shanef22
fonte
4
Sim, essa última frase é o problema, não é? Ela evoca imagens de professores desarrumados, com cabelos crespos e dedos grisalhos, agitando um punhado de pergaminho, e traz à mente citações como "ciência da computação não é mais sobre computadores do que astronomia é sobre telescópios". Se a ciência eventualmente não se transformar em uma máquina, de que serve? Que astrônomo em sã consciência nunca olha através de um telescópio?
21813 Robert Harvey
Acho que nunca me pediram para "transformar um algoritmo em algo que a máquina possa fazer" nos últimos 30 anos. O que você está pensando não é um programador, mas um compilador.
gnasher729
2
@ gnasher729 Ok, digamos que eu tenha o algoritmo "Para cada palavra em uma lista, se ela começar com um A, mova-a para o início". Qual compilador você recomendaria?
shanef22
18

A ciência da computação lida com os fundamentos teóricos da informação, computação e técnicas práticas para sua implementação e aplicação. http://en.wikipedia.org/wiki/Computer_science

~

A ciência da computação não é mais sobre computadores do que a astronomia é sobre telescópios. Edsger Dijkstra

A programação é a arte de criar um programa de computador.

Gary Willoughby
fonte
11

Ciência da Computação é, do meu ponto de vista, suposto ser uma Ciência Rígida como a Física.

Envolve o estudo de compiladores e geradores de compiladores, conceitos de arquitetura de hardware, várias formas de sistemas numéricos, algoritmos e eficiência / desempenho algorítmico e a teoria por trás das operações aritméticas no processador. Quando fiz CS na universidade, passamos muito tempo mexendo com o assembler, aprendendo sobre a diferença entre compilar, vincular e interpretar, etc.

Muito disso foi feito através da programação - ou seja, o ato de escrever código que foi compilado ou executado por meio de um intérprete, com a intenção de gerar resultados para resolver um problema. Ou seja, Programação é o ato de resolver problemas que podem ser descritos com o conhecimento da Ciência da Computação. É uma espécie de divisão de Matemática Pura / Matemática Aplicada.

Você não precisa de um diploma em Ciência da Computação para ser um programador, mas um programador com experiência em CS provavelmente terá uma compreensão mais profunda do comportamento de programas de computador.

McFinnigan
fonte
1
Eu não acho que os estudantes de CS sejam melhores que os de outros cursos de programação.
Tjaart
5
Eu não disse melhor , disse que provavelmente teria um entendimento mais profundo.
Mcfinnigan
@mcfinnigan eu diria, mais equivocada. Os estudantes de CS que se fundamentam na teoria tendem a ter menos compreensão, porque na verdade não têm experiência para saber o que os computadores podem fazer ou como chegar lá em vários idiomas.
Izkata 27/02/12
3
novamente, você me entendeu mal. Estou dizendo que um programador que tomou o tempo para adquirir parte da teoria real de CS tem mais probabilidade de saber por que um conjunto é melhor que uma lista em determinadas situações ou por que o ponto flutuante é complicado.
Mcfinnigan
2
@TikhonJelvis: a engenharia emprega matemática, mas está a dois passos de distância. CS é um ramo da matemática.
Kevin cline #
3

Eu reformularia sua pergunta como "Qual é a diferença entre Ciência da Computação e Engenharia de Software?" Afinal, ambos envolvem programação.

Ciência da Computação é o estudo teórico sobre o que é computação e o que é e o que não é possível. Analisa coisas como o Teorema de Godels e o problema da parada.

Engenharia de software é como escrever programas que fazem o que foram projetados e que podem ser mantidos.

Jaydee
fonte
Não. Por que reformular sua pergunta? Ele perguntou o que pediu. Engenharia de Software é diferente de programação e também é controversa porque significa coisas diferentes em diferentes países (por exemplo, EUA e Canadá)
Douglas Held
2

A ciência da computação é a teoria da programação. A programação é a implementação.

Ciência da computação ... é a abordagem científica e prática da computação e suas aplicações. Um cientista da computação é especialista na teoria da computação e no design de sistemas computacionais.

Seus subcampos podem ser divididos em uma variedade de disciplinas teóricas e práticas. Alguns campos, como a teoria da complexidade computacional (que explora as propriedades fundamentais dos problemas computacionais), são altamente abstratos, enquanto campos como a computação gráfica enfatizam aplicativos visuais do mundo real. Ainda outros campos se concentram nos desafios na implementação da computação. Por exemplo, a teoria da linguagem de programação considera várias abordagens para a descrição da computação, enquanto o estudo da própria programação de computadores investiga vários aspectos do uso da linguagem de programação e de sistemas complexos. A interação homem-computador considera os desafios de tornar computadores e cálculos úteis, utilizáveis ​​e universalmente acessíveis aos seres humanos ...

Tom Squires
fonte
12
Sinceramente, acredito que a ciência da computação é mais que programação.
Ubermensch
2
@ Ubermensch: Eu honestamente acredito que a programação é mais do que ciência da computação.
Michael Borgwardt
1
@ MichaelBorgwardt Na verdade, ambos os nossos pontos de vista estão certos. Mas a ciência da computação ainda é muito maior que a programação (você também pode argumentar o contrário). Uma citação famosa de Niehls Bohr "Existem dois tipos de verdade, pequena verdade e grande verdade. Você pode reconhecer uma pequena verdade porque seu oposto é uma falsidade. O oposto de uma grande verdade é outra verdade".
Ubermensch
@Ubermensch Sua crença é verdade. A ciência da computação NÃO é apenas a teoria da programação. A ciência da computação existia antes dos computadores.
Casey Patton
1

Se a programação é carpintaria, então a ciência da computação é arquitetura / design.

Editar

Mais informações: em carpintaria, você está interessado em coisas como em que ordem construir as coisas (estrutura, sub-piso, paredes internas, drywall etc.). Como você o constrói para que leve menos tempo para ser construído, mas pode ser modificado posteriormente.

No caso da arquitetura (a parte dela como a CS de qualquer maneira), você se preocupa com coisas como quais são as capacidades dos materiais, qual o tamanho de uma viga que você precisa para suportar essa extensão de parede / teto?

Da mesma forma, o CS trata das capacidades teóricas dos computadores, onde a programação trata da aplicação prática desse conhecimento.

Scott Whitlock
fonte
3
Má analogia. Se a programação é carpintaria, o design de software é arquitetura / design. A ciência da computação é mais parecida com a dendrologia a esse respeito, ou talvez a biologia em geral.
back2dos
Ok, talvez eu não tenha clareza, então deixe-me explicar por que acho que sua analogia não funciona. Estar preocupado com as capacidades do material é ciência dos materiais, e a estabilidade da estrutura é estática. Nenhum deles é realmente o que é design, apenas o restringe. O design (software ou edifícios ou qualquer outra coisa) trata de atender a todos os requisitos e restrições (técnicas, financeiras, psicológicas, ...) e arquitetar uma solução que atenda a eles.
back2dos 27/02/12
1

A ciência da computação é a programação, assim como a física é a engenharia mecânica.

A ciência da computação é teórica, é necessária uma abordagem científica e matemática da informação e sua computação.

A programação de computadores é prática, é o processo de projetar, escrever, testar, depurar e manter o código fonte dos programas de computador.

São campos diferentes, mas relacionados. Ambos se beneficiaram um do outro.

bbb
fonte
0

A graduação em ciência da computação é muito mais abrangente e abrange a teoria por trás da computação. A licenciatura em programação de computadores , por outro lado, está focada no desenvolvimento das habilidades de codificação ou programação dos alunos, treinando-os em diferentes linguagens de programação. Se você estiver confuso, poderá navegar pelos detalhes de ambos os programas no California College San Diego. Isso pode fornecer alguma clareza sobre o escopo desses diplomas!

user45390
fonte
0

Ciência da Computação : É o estudo da resolução de problemas com computadores / métodos computacionais.

Programação por computador: é a parte desse processo de solução de problemas que compõe o campo da ciência da computação. A programação de computadores é apenas um pequeno subconjunto da ciência da computação.

ramneet
fonte
-1

A programação é sobre pessoas. As pessoas leem, escrevem e mantêm código. A ciência da computação trata de matemática - eles implementam e descrevem algoritmos.

DeadMG
fonte
3
@ SK-logic e DeadMG. Eu apaguei todos esses comentários. Se você deseja ter uma discussão (ou mesmo um argumento), leve-a para outro lugar.
ChrisF
1
Isso é um pouco estreito. No mínimo, o laboratório "Algoritmos, máquinas e pessoas" da minha universidade gostaria de discordar :). E esse laboratório contém alguns dos principais pesquisadores de CS, ponto final. Também todas as pessoas da HCI em todos os lugares. Estou sendo um pouco ridículo, mas o CS é realmente mais amplo do que apenas algoritmos e matemática.
Tikhon Jelvis
-1

Programar (desenvolvimento) é ganhar dinheiro. A ciência é descobrir novas coisas.

pap
fonte
7
Alguém esqueceu de informar a comunidade de código aberto.
Webbiedave 27/02/12
2
@webbiedave - bem, pode haver um ou dois verdadeiros altruístas por aí, mas no final o código-fonte aberto é sobre ganhar dinheiro também. Ouso dizer que a maioria das pessoas envolvidas em projetos de código aberto o faz para aprimorar suas habilidades e / ou currículos: e aumentar seu potencial de renda futura. Muitos projetos de código aberto também geram versões comerciais / corporativas para gerar receita com o projeto. Assim, a comunidade de código aberto é muito no laço quando se trata de fazer dinheiro;)
pap
E o mesmo não é verdade para a ciência? ;)
webbiedave 28/02
@webbiedave - Não, não concordo que seja. Embora o dinheiro possa ser um produto biológico da ciência, não é (e não deveria ser) o objetivo principal. A ciência é sobre descoberta por si mesma. As empresas fazem pesquisa e desenvolvimento, mas não se trata de descobrir coisas novas, mas de monetizar as coisas já descobertas.
29412 pap
A única razão pela qual a maioria dos cientistas quer mais dinheiro é para que eles possam fazer mais pesquisas. Eu acho que a mesma coisa vale para o código aberto. Fazer código aberto para melhorar seu currículo parece um caminho para o fracasso para mim. Deve ser sobre curiosidade, descoberta e coceira.
Tjaart