Qual é a definição de Ciência da Computação e qual é a Ciência na Ciência da Computação?

39

Estou cursando um Bacharelado em Ciência da Computação, mas estou no início e tenho certeza de que ficarei feliz com minha escolha, pois parece uma educação acadêmica e profissional flexível.

Dito isto, parece haver uma variedade de definições sobre o que a Ciência da Computação realmente é em relação à academia, ao setor privado e à "Ciência" real em "Ciência da Computação". Gostaria muito de ter respostas (ou ponderação compartilhada). quanto à amplitude das coisas às quais uma educação em Ciência da Computação pode ser aplicada e, finalmente, à variedade de caminhos que a Ciência da Computação adotou.

Rafael
fonte
1
Onde está a ciência em ciência da computação? : cacm.acm.org/magazines/2012/10/…
avi
ver também cs meta que é a informática
vzn

Respostas:

38

A ciência da computação é um termo impróprio - na verdade não existe "ciência" na ciência da computação, uma vez que a ciência da computação não se refere à observação da natureza. Em vez disso, partes da ciência da computação são engenharia e partes são matemáticas .

As partes mais teóricas da ciência da computação são puramente matemáticas. Por exemplo, o que é um bom algoritmo para classificação? Como definimos a semântica das linguagens de programação? Como podemos ter certeza de que um sistema criptográfico é seguro?

Quando a ciência da computação é aplicada, ela se torna mais parecida com a engenharia. Por exemplo, qual é a melhor maneira de implementar um algoritmo de multiplicação de matrizes? Como devemos projetar uma linguagem de computador para facilitar a criação de programas grandes? Como podemos projetar um sistema criptográfico para proteger o banco on-line?

Em contraste, a ciência trata de leis da natureza e, de maneira mais geral, de fenômenos naturais . Os fenômenos envolvidos na ciência da computação são feitos pelo homem. Alguns aspectos da ciência da computação podem ser vistos como experimentais nesse sentido, por exemplo, o estudo empírico de redes sociais, o estudo empírico de redes de computadores, o estudo empírico de vírus e sua disseminação e a educação em informática (ensino de ciência da computação e uso de computadores) para ensinar outras matérias). A maioria desses exemplos é de ciência da computação fronteiriça e é mais adequadamente multidisciplinar. O mais próximo que se chega do método científico em ciência da computação é talvez o estudo de redes e outros dispositivos de hardware, que são comuns na subárea, conhecidos não oficialmente como "sistemas".

Não obstante esses exemplos, a maior parte do núcleo da ciência da computação não é de todo. Ciência da computação é apenas um nome - não precisa fazer sentido.

Quanto ao escopo da ciência da computação, talvez as melhores definições sejam: as que os cientistas da computação fazem. A ciência da computação, como todas as outras disciplinas acadêmicas, é uma área ampla e difícil de traçar completamente. Se você quiser uma amostra do que as pessoas consideram ciência da computação, você pode examinar as áreas de pesquisa do seu corpo docente.

Yuval Filmus
fonte
4
Este é um dos comentários mais honestos de cientistas da computação que já vi. Obrigado.
Scaaahu 15/10
21
Isso é mais sobre filosofia do que sobre ciência da computação - mas eu discordo dessa resposta. A ciência da computação é um termo impróprio para a ciência da computação , e a ciência da computação é uma ciência da mesma maneira que, digamos, a mecânica. Há uma base matemática forte, mas essa base está sujeita à validação empírica - nos concentramos na computabilidade de Turing porque é assim que o mundo parece funcionar, e estudamos outras noções porque a computabilidade de Turing não modela todos os fenômenos de computação do mundo real.
Gilles 'SO- stop be evil'
3
Penso que a ideia de que apenas aquilo que observa fenômenos naturais é ciência real é uma emanação do pensamento materialista, algo com o qual muitas pessoas discordariam. Etimologicamente, a ciência é a coleta de conhecimento e, embora alguns digam que toda a matemática é tautologia, duvido que algum deles classifique a matemática como "não conhecimento".
G. Bach
2
@ Gilles Você não pode estar falando sério. Além de pessoas que fazem hipercomputabilidade, ninguém está contestando a noção de computabilidade de Turing. Um argumento melhor pode ser feito em relação à noção de computabilidade eficiente (como em polytime significa eficiente), mas ninguém está mais tentando capturar eficiência dentro de modelos computacionais razoáveis ​​- teoricamente, as pessoas ignoram os problemas com o modelo e praticam as pessoas ignoram o modelo .
Yuval Filmus 15/10
2
@YuvalFilmus Para dar apenas dois exemplos, as máquinas de Turing não são suficientes para modelar sistemas distribuídos ou síncronos.
Gilles 'SO- stop be evil'
11

Comecemos com uma citação de um dos pais da moderna Ciência da Computação: “Ciência da Computação não é mais sobre computadores do que astronomia é sobre telescópios” - Edsger Wybe DIJKSTRA

Então, na realidade, se você está interessado em computadores e programação, não está realmente interessado em ciência da computação :-)

Acho que a Wikipedia tem uma das melhores descrições: "Ciência da Computação (CS ou CompSci) é a abordagem científica e prática da computação e suas aplicações. É o estudo sistemático da viabilidade, estrutura, expressão e mecanização dos processos metódicos. (ou algoritmos) subjacentes à aquisição, representação, processamento, armazenamento, comunicação e acesso à informação, se essa informação é codificada em bits e bytes na memória do computador ou em motores transcritos e estruturas de proteínas em uma célula humana. é especialista na teoria da computação e no design de sistemas computacionais "

Mas, na realidade, como Yuval afirmou, a maioria das universidades / faculdades se afastou da ciência da computação teórica / pura e a ciência da computação agora é uma mistura de ciência, matemática e engenharia. Ensinando-nos não apenas a pura ciência da computação, mas também as habilidades práticas para resolver esses e outros problemas usando computadores modernos, linguagens de programação, sistemas operacionais e aplicativos de software.

AquaAlex
fonte
3
você diz que se afastou , mas eles já foram puramente teóricos?
Agos 15/10
@Agos Eu concordo com você que nunca houve um período verdadeiro de ser puramente teórico, mas eu diria que, à medida que o tempo passa e os negócios precisam de mais programadores e menos cientistas da computação, os diplomas passaram mais da teoria para a prática. Não estou dizendo que um é melhor que o outro, apenas fazendo uma observação.
AquaAlex
1
@AquaAlex Acho que é possivelmente a melhor maneira de descrever a grande diferença entre a ciência da computação antiga e a ciência da computação, como é pensada hoje: mudou radicalmente para uma aplicação prática para se alinhar às demandas da indústria.
Por que a ciência da computação "pura" seria apenas teoria? Até onde eu sei, essa nunca foi uma boa descrição do que é ciência da computação; preocupações práticas sempre informaram o campo.
Raphael
@ Rafael Tudo depende do que você considera o "prático". Escrever programas de computador não é a aplicação prática do CS. A maioria das ciências usa a teoria para resolver problemas práticos / reais e muitas ciências usam computadores e programação para fazer isso.
AquaAlex
11

Vale a pena mencionar que o termo alemão para "Ciência da computação" é Informatik , que derrete Infomation e Mathematik . Eu acho que é uma descrição curta e agradável do que é a Ciência da Computação. (o termo italiano é informatica e tenho certeza de que existem mais alguns idiomas que seguem a mesma linha).

john_leo
fonte
O artigo da Wikipedia sobre ciência da computação tem uma seção sobre os diferentes nomes en.wikipedia.org/wiki/Computer_science#Name_of_the_field - Eu, por minha parte, não gosto mais da parte "computador" do que da "ciência". Ainda não encontrei um campo científico que use computadores muito menos hoje em dia do que eu.
Linux #
2
@linac: Outros campos usam computadores para estudar outra coisa. A ciência da computação acaba usando computadores para estudar computação. Nos dois casos, podemos remover os computadores e ainda fazer o trabalho, apenas mais devagar. Lembre-se de que é realmente uma idéia moderna de que "computador" se refira apenas a uma caixa real implementando algum hardware capaz de executar computação, e o "Computador" na ciência da computação esteja realmente se referindo à idéia de computação em si.
Phoshi 15/10
Talvez essa derivação do nome "Informatik" esteja errada. O wiki alemão menciona "Informações und Automatik", mas talvez seja simplesmente "Informações + -tik"
miracle173
@ miracle173 De fato, há muito sobre "Information und Automatik", também no Wiki em francês e italiano que eles mencionam. Não me lembro onde li a "Informação und Mathematik" derivação do primeiro tempo, mas tenho certeza de que eu não inventei isso sozinho ...
john_leo
6

Você pode estar interessado em uma discussão que tivemos sobre a meta. Em particular, mantenho minha resposta, reproduzida aqui:

Ciência da Computação é a ciência da computação; isso parece claro. Menos claro é como definir ciência e computação de uma maneira útil e significativa.

Geralmente, podemos dividir a ciência de acordo com duas classificações: formal versus empírica e pura versus aplicada. Enquanto a ciência formal (como a matemática e grande parte da ciência da computação) se apóia no raciocínio dedutivo das verdades assumidas, a ciência empírica (como a física e a química) se apóia no raciocínio indutivo dos fenômenos observados. Enquanto o objetivo da ciência pura é promover o estado do entendimento científico, o objetivo da ciência aplicada é usar esse entendimento para aproveitar as forças da Natureza (no sentido mais amplo possível da palavra) para alcançar outros objetivos.

Podemos definir computação como uma transformação aplicada a uma informação. No sentido mais amplo possível, a computação é, então, qualquer processo que causa uma mudança no universo. Não há necessidade de fornecer uma definição mais detalhada que essa.

A Ciência da Computação, então, consiste na parte do esforço humano que satisfaz os seguintes critérios:

  • É ciência, ou seja:

    • É (1) formal ou (2) empírico:

      1. emprega raciocínio dedutivo a partir de verdades assumidas
      2. emprega raciocínio indutivo a partir de fenômenos observados
    • É (1) puro ou (2) aplicado

      1. procura avançar o estado da compreensão científica
      2. procura aplicar o entendimento científico para aproveitar as forças naturais
  • Estuda computação, ou seja:

    • Estuda (1) transformações ou (2) informações
      1. processos que mapeiam informações de um formulário para outro
      2. entidades sujeitas a transformações
Patrick87
fonte
obrigado por trazer à tona o lado empírico , que também participa da pesquisa avançada da TCS! por exemplo, resultados empíricos em artigos de CS
vzn 15/10
5

Quero acrescentar uma perspectiva sobre a palavra "ciência" que é muito longa para um comentário.

As pessoas dizem que a ciência da computação não é uma ciência da maneira tradicional, já que (simplificando aqui) fazemos matemática ou engenharia. Isso não é bem verdade. Podemos aplicar o método científico - sem dúvida a pedra angular da ciência - que é

observação sistemática, medição e experimento, e formulação, teste e modificação de hipóteses.
(Dicionário Oxford de Inglês via Wikipedia )

De fato, alguns dos primeiros trabalhos em algoritmos aderem a esse princípio. Alguns dos métodos foram "perdidos" por várias razões, mas ainda podemos empregá-lo.

O processo básico¹ ficaria assim:

  • Observe um problema que queremos resolver com um computador.
  • Crie um algoritmo.
  • Analise (um modelo matemático) do algoritmo.
  • Com base em sua análise, preveja o tempo de execução (esperado) do algoritmo (em um determinado conjunto de entradas e em uma determinada máquina).
  • Confirme ou falsifique sua previsão com experimentos.

O

A propósito, não aceite minha palavra. Robert Sedgewick e Philippe Flajolet têm trabalhado para colocar a ciência de volta na ciência da computação , principalmente desenvolvendo a estrutura formal da combinatória analítica que permite hipóteses testáveis. Você pode encontrar vídeos e MOOCs da Sedgewick que lhe dirão o mesmo.

Toda a esperança não está perdida.


  1. Obviamente, isso é apenas algoritmos wrt formulados. Você também pode estudar se os modelos de gráficos se encaixam na realidade (feita, por exemplo, em redes sociais, embora muitas vezes mais empiricamente do que cientificamente) ou se o rendimento da rede ocorre como previsto, ou qualquer outra coisa.
Rafael
fonte
“Toda esperança não está perdida.” - seria uma coisa ruim se a ciência da computação não fosse ciência (exceto pelo nome impróprio)?
25416
@ k.stm Na minha opinião, sim. Por que se contentar com menos?
Raphael
A matemática não é ciência, mas nunca sofreu por não ser uma. E certamente, nem a matemática nem a ciência da computação são "menos" que a ciência por não serem ciência. Talvez você quis dizer "menos" de maneira quantitativa, como em "ciência da computação não é menos que matemática, engenharia e ciência"? Mas mesmo assim eu não veria nenhum ganho herdado em ser ciência adicionalmente. Por que teria? Existe uma necessidade de abordar o raciocínio computacional cientificamente?
k.stm
@ k.stm Sim. Nem todos os CS podem ser matemáticos, e nem todos podem (ou querem) ser de engenharia. As partes que não são nem atualmente nem sempre são (lidas: geralmente não são) científicas. Esse é um grande problema. Exemplo: algoritmos experimentais. As análises matemáticas são intratáveis, os princípios de engenharia não se aplicam. Então, estamos essencialmente realizando experimentos científicos em programas - mas geralmente não usamos princípios científicos. (Quantas CSists sabe estatísticas mais básicos?)
Raphael
Ok, então você está dizendo "precisamos abordar o raciocínio computacional também cientificamente, porque isso funciona melhor (ou de todo) em algumas situações", estou entendendo corretamente? Se é assim, entendo seu ponto - ainda assim, isso não significa que haja um benefício herdado para a ciência da computação ser verdadeiramente uma ciência. Ele só descobriu-se que seria melhor ...
k.stm
3

é provável que essa seja uma questão antiga debatida há muito tempo, que remonta às próprias origens da ciência da computação. uma maneira natural de estudar / responder a isso é através da literatura publicada sobre o assunto. suspeito que existem muitas referências boas sobre isso, enterradas na literatura que ainda não foram citadas. Além disso, as respostas / pontos de vista sobre isso provavelmente mudaram ao longo do tempo, também conhecidas como mudanças kuhnianas, que foram um tanto comuns no campo, possivelmente mais do que em outros campos científicos. outro ângulo para estudar isso é como o assunto foi ensinado na academia e como se encaixou nas estruturas departamentais existentes, que também mudaram ao longo do tempo.

Aqui estão alguns trabalhos / ensaios de Denning, autoridade no campo, que abordam essa questão diretamente e são um bom ponto de partida para mais referências. ambos publicados na revista da principal sociedade acadêmica do campo, CACM .

Os processos de informação e computação continuam a ser encontrados em abundância nas estruturas profundas de muitos campos. A computação não é - de fato, nunca foi - uma ciência apenas do artificial.

A ciência da computação atende a todos os critérios para ser uma ciência, mas possui um problema de credibilidade autoinfligido.

vzn
fonte
Denning define 'computação' como, efetivamente, 'o estudo da computação'. Claramente, o estudo de algo não é o mesmo que algo. Sempre me surpreendi com a extensão em que os erros básicos da categoria são aceitos sem piscar neste campo.
Reinierpost
Não exatamente concordar com tudo nos jornais, no entanto acho que você está citando fora do contexto
vzn
2

trabalhando a partir da definição de ciência

  1. um ramo do conhecimento ou estudo que lida com um conjunto de fatos ou verdades sistematicamente organizados e mostrando o funcionamento das leis gerais: as ciências matemáticas.
  2. conhecimento sistemático do mundo físico ou material obtido através da observação e experimentação.
  3. qualquer um dos ramos da ciência natural ou física.
  4. sistematizado em geral.
  5. conhecimento, a partir de fatos ou princípios; conhecimentos adquiridos por estudo sistemático.
  1. a ciência da computação está intimamente ligada à matemática e envolve pesquisas significativas (por exemplo, estudo).

  2. a ciência da computação é ampla e intimamente ligada à física de várias maneiras. por exemplo, física / termodinâmica da computação, computação quântica , P =? NP como lei física , transições de fase etc.

  3. é conhecimento sistematizado.

  4. é submetido a estudo sistemático, isto é, pesquisa.

a terminologia "ciência da computação" enfatiza que o campo não se refere apenas à aplicação de princípios conhecidos, como na engenharia. há bastante incógnita em torno da ciência da computação, muitas questões básicas em campo são abertas / sem resposta . é difícil estimar o número de pesquisadores em todo o mundo, mas números além dos milhares ou dezenas de milhares.

no entanto, observe que os aspectos mais científicos da ciência da computação não são realmente ensinados / expostos tanto no nível de graduação, talvez levando a alguma perplexidade. também parece não haver muitas encarnações / celebrações / proponentes / defensores de destaque como ciência, por exemplo, em contraste com outros campos como o LHC e a descoberta do bóson de Higgs etc. [apesar de o CS ter um papel importante em sua discovery!] ou uma famosa figura populista de Carl Sagan ou Hawking. no entanto, por exemplo, veja livros de ciências populares que inspiram CS

vzn
fonte
1
Ou, dependendo do subcampo da ciência da computação, qual é a diferença realmente para a matemática? :-)
Juho 15/10
outro fator é que a ciência da computação tem aspectos interdisciplinares muito fortes. um exemplo / cada vez mais área de alto perfil que tem forte sabor científico, big data
vzn
outro aspecto a refletir. Como principal objeto de estudo de CS, a máquina de Turing é referida como máquina e é um cruzamento quimérico entre um dispositivo teórico e um dispositivo físico.
vzn
Máquinas de Turing são dispositivos ideais. Eles não existem na realidade. Mesmo como modelo, não é muito próximo do modo como a computação é "realmente" feita.
Yuval Filmus