Executando verificação de segurança...
5

Afinal, qual é a diferença entre programação e ciência da computação?

Eu estou abrindo uma discussão interessante e relevante para a nossa área. Como autodidata, e não tenho formação em nada, e observo outros que estão no mesmo barco buscando faculdades para se especializar em "programação".

Não é o mesmo caso, pois é possível aprender a teoria por meio de livros

A pergunta é direta, e não diz respeito uma dúvida minha, pois eu sempre tive um conceito sobre isto. Eu gostaria saber a opinião de vocês sobre este tópico que é bem interessante. Um post meramente para discutir entre nós.

Por favor, mantenha o respeito e não ataque pessoas, apenas ideias. Cada um é um mundo diferente, então vamos manter a educação e respeito.

Carregando publicação patrocinada...
3

Programação é arte.
Você melhora do mesmo jeito que melhora tocando um instrumento, desenhando ou jogando bola: fazendo. Não existe nenhum atalho que substitua horas de "bunda na cadeira".

Mas se programar é tocar um instrumento, a ciência da computação é a teoria musical.

Um é o jogo. O outro são as regras.
E saber as regras é o minímo. Mas regra nenhuma joga a partida por você. Tem gente que acha que estudar teoria basta. Não basta. Tem gente que acha que praticar basta. Também não.

1

O ponto de vista bem mais aceito até o momento. Vamos para um questionamento mais específico: A forma que que as regra da arte da programação em sua grande maioria é mais para especialização ou as regras são fundamentais para todos os programadores.

1

as regras são fundamentais para todos os programadores.

Sim.

Detalhando melhor...

De forma bem porcamente resumida, Ciência da Computação (que vou chamar de CC no restante do texto) é a teoria, programação é a prática. A relação entre elas seria como a da Física com a Engenharia: a primeira explica como uma ponte deve ser para não cair, a segunda constrói a ponte (usando os conhecimentos da primeira para garantir que não caia).

Ou ainda, CC é o estudo das coisas que um computador pode fazer, programação é botar o computador pra fazer essas coisas.

CC tem uma relação profunda com a matemática (tanto que poderia muito bem se chamar Matemática Computacional ou algo do tipo). Dentre os tópicos que ela estuda, podemos citar teoria dos grafos, complexidade de algoritmos, os próprios algoritmos em si (e como provar matematicamente que eles funcionam), estruturas de dados, etc. Geralmente são definições bem abstratas, sem se preocupar com a implementação (o foco é "o que" e não "como").

Enfim, eu acho que saber essas regras é fundamental sim. Saber toda essa "teoria chata" te torna um programador melhor, mesmo que vc não a use diretamente. Saber que um repositório do Git é um grafo me ajudou a entender melhor o que cada comando faz (já que todos eles lêem/percorrem ou manipulam o grafo). Saber complexidade (Big-O) e estruturas de dados me ajuda a saber melhor quando usar lista/array ou map/dicionário (e também quando não faz diferença). Saber como as linguagens são criadas e projetadas me ajuda a entender porque elas são feitas de determinadas formas, e como estas escolhas resultam em certas características e limitações (aí vc entende que nenhuma é perfeita e para de ser fanboy/hater de linguagem).


Por fim, tem a famosa frase de Edsger Dijkstra: "A ciência da computação está para o computador assim como a astronomia está para o telescópio".

1

Gosto muito de usar essa analogia com a música também. Tenho dois primos que cursaram música, eles dois tiveram a mesma base teórica sobre a música na universidade, mas precisavam fazer uma escolha de um instrumento para se especializarem, um escolheu o piano e o outro o violão clássico.

Tem como entrar numa orquestra aprendendo piano pela internet? Teoricamente, sim. Mas na prática o caminho mais comum é através de cursos com mais alguns níveis de profundidade.

0
2

Meus 2 cents,

Tenho ainda na mente a definicao que existia na minha epoca (anos 80/90):

  • Ciencia da computacao (a graduacao), envolvia conhecer hardware E software. Tinha materias que envolviam eletronica, design de chips entre outras coisas. Tinha tambem materias sobre software, como programacao, mas tambem tinha materias mais "cascudas" como compiladores. O granduando podia tanto sair dali para uma area mais de pesquisa (universidade ou institutos particulares) ou para o mercado coorporativo. Era muito puxado para engenharia (inclusive com materias de calculo 1 e 2 - as vezes 3)

  • Programacao (p.ex. ADS): Aqui o foco era um pouco diferente - olhando com mais cuidado para a questao de negocios. Ainda envolvia logica e programacao, mas sem se preocupar com o hardware da coisa (e sem materias mais ligadas a engenharia - nunca vi um curso destes com calculo ou semelhante)

Pode ser que esta visao seja oldschool demais e esteja muito defasada - mas eh o que visualizo quando ouco falar neste tipo de coisa.

Confesso que tenho um pouco de saudade de ver um mercado com ciencia de computacao mais raiz, onde quem se forma entende com um pouco mais de amplitude o que eh computacao: me doi um pouco ver pessoas trabalhando como DEV mas sem fazer ideia de como o computador ou uma rede funciona (OK, estou suavizando um pouco aqui, me sinto horrorizado mesmo, como pode cargas d'agua um pau d'egua trabalhar com TI e nao saber como funciona TCP, OSI, etc - reclamando que o localhost:3000 funciona na maquina dele mas na do lado nao).

Saude e Sucesso !

1

Gostei bastente do teu ponto de vista. Como mencionei, não sou formado,e por isso tem bastante coisa que eu não sei, mas sempre busco programar criando projetos para aplicar a teoria que eu aprendeu através de livros.

O Mundo da computação é realmente muito vasto, e muitos não conseguem contemplar o quão interessante é!

2

Bom, vou falar o q sei, mas pode ser achismo meu, kkkkk.

Ciência da computação é a parte teórica da nossa area. Ela foca em conceitos, funcionamento, conhecimento. Tanto q eu recomendo mto q todos pudessem fazer o curso de ciências de computação, pois é mto mais além do q vemos no mercado de trabalho. Se olhar nosso mercado de trabalho, eu chuto q são poucas pessoas q entendem como funciona um compilador por trás, pois é algo q é pouco útil no mercado de trabalho. Normalmente ele já vem pronto e é só usarmos ele. A ciência de computação explica isso, como funciona o compilador, por exemplo.

Já programação eu chuto q seria a parte braçal, ou seja, usar os softwares q temos para construir outros. Por exemplo, linguagem de programação, algoritmos, frameworks. Usando essas ferramentas, a gente aprende a construir um software. E isso é bastante requisitado no mercado de trabalho, pois é onde vem a grana, pois construímos software para facilitar a vida deles. Se olhar para o exemplo do compilador, a programação focaria em ensinar a usar o compilador.

1

Eu concordo com a tua visão, mas não considera tudo que podemos programar como parte da teoria que aprendemos? Por exemplo, um pedreiro pode levantar uma casa sem formação, e isto é um trabalho braçal. No entanto, o pedreiro com formação ainda faz trabalho braçal, mas é capacitado. Em ambos os casos exigiu a prática, que seria o trabalho braçal. Você não acha que Ciência da computação é tão íntimo com a programação a ponto de um não pode existir sem o outro? Ou seja, não há trabalho "Braçal", mas sim a teoria na pratica?

2

Hum, não vejo motivos de separar um do outro. O q citei foi mais o foco msm de cada um. pq imagina o seguinte. não dá pra desenvolver um software se não souber o q é if, else, classe, um pouco de POO, arquitetura, estrutura de dados, etc, q são coisas teóricas. E tbm não dá pra aprender a teoria se não escrever código e puder comprovar o funcionamento. Um sem o outro é meio q estranho existir.

O q vc questionou é a diferença entre eles, e o q vejo é q ciência é mais teórico e programação é mais prático. Eu fiz bacharel de ciencias de computação e lá eu aprendi como funciona um compilador por trás. Mas no dia-a-dia eu nem preciso saber disso, basta saber usar. Então um curso de programação, imagino q o foco é ensinar como usar (não fiz ADS e cursos parecidos, mas sei q o foco é mercado de trabalho), e não como ele foi construído. Seria isso a diferença entre ambos.

0
1

Nisso eu vou ter que descordar.

Vamos lá, Ciências da computação é o estudo da computação em si, como em outras ciências. No mundo acadêmico, você vai aprender/estudar computação no nosso contexto, programar seria uma consequência. Até porquê você pode fazer todo o curso de Ciências e não "virar um programador", mas você têm agora o conhecimento para estudar computação.

Ao contrário de um programador sem formação, ele só vai saber programar, como sua analogia do pedreiro.

O pedreiro ele sabe levantar uma casa, mas ele não têm a ciências por trás, ele não sabe como o cimento é feito, como o cálculo estrutural é feito, ele aprendeu a fazer (com projetos e estudos dos cientistas/engenheiros), mas não tem a base acadêmica por trás.

Ambos podem co-existir sem nunca se tocarem.

Mas ainda complemento, o conceito pode existir sem nunca a prática se materializar.

Mas acredito que você esteja tentando associar um programador aos talentos de um cientista que têm como objetivo aprender/estudar/pesquisar.

Mas pense assim, o cientista é o literário, o pensador, o estudioso. E o programador é a ponta do uso do conhecimento. Manja The Big Bang Theory?

Existem físicos, os teóricos e os práticos.

Essa parte responde sua pergunta, um físico teórico pode existir (cientista) sem existir um fisico prático (programador).

2

Eu imagino como um diagrama de Venn: ciência da computação é o superconjunto que contém programação, pois lida tanto com os conceitos fundamentais de computação, inclusive a nível de hardware, bem como as técnicas utilizados para traduzir algoritmos para algo que o humano escreva e a máquina saiba compilar.
Também não sou formado, mas queria bastante estudar ciência da computação para ter um entendimento maior a nível acadêmico.

1
1

Programação (provavelmente paradigma procedural/POO) é uma das ferramentas da Computação. Ciência da Computação é o estudo de um grande arsenal de ferramentas, não restrito apenas ao uso, mas toda matemática que a suporta.
Um programador é um cara de curso técnico e o Cientista é um Engenheiro. O cientista pode programar, mas ele consegue projetar novas ferramentas, embasadas em um teoria sólida.
Outras respostas dizem algo parecido e computar não é restrito ao computador PC. Todo mundo computa (e programa) todos os dias, mas com computadores e formas diferentes. A ciência da computação explica e embasa tudo isso.

1
  • Significado de computação: ação ou efeito de computar.
  • Significado de programação: ação de criar programas de computador.

Um cientista computacional se especializa na arte de computar, não necessariamente usando um computador.

Um programador se especializa na arte de programar, necessiariamente usando um compudador.

1

O que seria "computar" e como alguém poderia se especializar na arte de computar sem um computador?

Outro ponto é que, a arte de programar não involve a arte de computar também?

1

Lembra do The Big Bang Theory. Um programador sempre vai usar a base da computação, as regras os estudos tudo elaborado pelo cientias, o resultado do estudo de um cientista. Um programador em tese nunca será um cientista, mas um cientista pode ser um programador.

Levando pra área da construção civil para analogia.

Um engenheiro cívil ele tem todo o estudo para projetar, elaborar. Ele tem a parte intelectual.

Agora o pedreiro, ele tem as destrezas de fazer.

Um engenheiro pode ser um pedreiro, mas um pedreiro não pode ser um engenheiro. (Filosoficamente falando)