Ciência da Computação

Da Wikipédia, a enciclopédia livre
Ir para navegação Pular para pesquisar

Expressão para numerais de igreja em cálculo lambda Gráfico de um algoritmo de classificação rápida
Exemplo de animação por computador produzida usando captura de movimento Circuito de meio somador
A ciência da computação lida com os fundamentos teóricos da informação, algoritmos e as arquiteturas de sua computação, bem como técnicas práticas para sua aplicação.

A ciência da computação é o estudo de processos algorítmicos , máquinas computacionais e a própria computação . [1] Como disciplina, a ciência da computação abrange uma variedade de tópicos, desde estudos teóricos de algoritmos , computação e informação até questões práticas de implementação de sistemas computacionais em hardware e software . [2] [3]

Seus campos podem ser divididos em disciplinas teóricas e práticas . Por exemplo, a teoria da computação diz respeito a modelos abstratos de computação e classes gerais de problemas que podem ser resolvidos usando-os, enquanto a computação gráfica ou a geometria computacional enfatizam aplicações mais específicas. Algoritmos e estruturas de dados são chamados de coração da ciência da computação. [4] A teoria da linguagem de programação considera abordagens para a descrição de processos computacionais, enquanto a programação de computador envolve o uso deles para criar sistemas complexos.. A arquitetura do computador descreve a construção de componentes de computador e equipamentos operados por computador. A inteligência artificial visa sintetizar processos orientados a objetivos, como resolução de problemas, tomada de decisão, adaptação ambiental, planejamento e aprendizagem encontrados em humanos e animais. Um computador digital é capaz de simular vários processos de informação . [5] A preocupação fundamental da ciência da computação é determinar o que pode e o que não pode ser automatizado. [6] Os cientistas da computação geralmente se concentram na pesquisa acadêmica. O Prêmio Turing é geralmente reconhecido como a mais alta distinção em ciências da computação.

História

Charles Babbage , às vezes referido como o "pai da computação". [7]
Ada Lovelace publicou o primeiro algoritmo destinado ao processamento em um computador. [8]

Os primeiros fundamentos do que se tornaria a ciência da computação são anteriores à invenção do computador digital moderno . Máquinas para calcular tarefas numéricas fixas, como o ábaco , existem desde a antiguidade, ajudando em cálculos como multiplicação e divisão. Algoritmos para realizar cálculos existem desde a antiguidade, mesmo antes do desenvolvimento de equipamentos de computação sofisticados.

Wilhelm Schickard projetou e construiu a primeira calculadora mecânica funcional em 1623. [9] Em 1673, Gottfried Leibniz demonstrou uma calculadora mecânica digital, chamada Stepped Reckoner . [10] Leibniz pode ser considerado o primeiro cientista da computação e teórico da informação, por, entre outras razões, documentar o sistema de números binários. Em 1820, Thomas de Colmar lançou a indústria de calculadoras mecânicas [nota 1] quando inventou seu aritmômetro simplificado , a primeira máquina de calcular forte e confiável o suficiente para ser usada diariamente em um ambiente de escritório.Charles Babbage começou o projeto da primeira calculadora mecânica automática , sua máquina de diferença , em 1822, que eventualmente lhe deu a ideia da primeira calculadora mecânica programável , sua máquina analítica . [11] Ele começou a desenvolver esta máquina em 1834, e "em menos de dois anos, ele esboçou muitas das características salientes do computador moderno". [12] "Um passo crucial foi a adoção de um sistema de cartão perfurado derivado do tear Jacquard " [12] tornando-o infinitamente programável. [nota 2]Em 1843, durante a tradução de um artigo francês sobre a máquina analítica, Ada Lovelace escreveu, em uma das muitas notas que incluiu, um algoritmo para calcular os números de Bernoulli , que é considerado o primeiro algoritmo publicado especificamente adaptado para implementação em um computador. [13] Por volta de 1885, Herman Hollerith inventou o tabulador , que usava cartões perfurados para processar informações estatísticas; por fim, sua empresa tornou-se parte da IBM . Seguindo Babbage, embora não soubesse de seu trabalho anterior, Percy Ludgate em 1909 publicou [14]o segundo dos dois únicos projetos de motores analíticos mecânicos da história. Em 1937, cem anos após o sonho impossível de Babbage, Howard Aiken convenceu a IBM, que estava fabricando todos os tipos de equipamentos para cartões perfurados e também no ramo de calculadoras [15], a desenvolver sua calculadora programável gigante, a ASCC / Harvard Mark I , baseada no mecanismo analítico de Babbage, que por sua vez usava cartões e uma unidade de computação central. Quando a máquina foi concluída, alguns saudaram-na como "o sonho de Babbage tornou-se realidade". [16]

Durante a década de 1940, com o desenvolvimento de máquinas de computação novas e mais poderosas , como o computador Atanasoff – Berry e o ENIAC , o termo computador passou a se referir às máquinas, e não aos seus predecessores humanos. [17] Quando ficou claro que os computadores poderiam ser usados ​​para mais do que apenas cálculos matemáticos, o campo da ciência da computação se ampliou para estudar a computação em geral. Em 1945, a IBM fundou o Watson Scientific Computing Laboratory na Columbia University na cidade de Nova York. A casa da fraternidade renovada no West Side de Manhattan foi o primeiro laboratório da IBM dedicado à ciência pura. O laboratório é o precursor da Divisão de Pesquisa da IBM, que hoje opera instalações de pesquisa em todo o mundo. [18] Em última análise, a estreita relação entre a IBM e a universidade foi fundamental para o surgimento de uma nova disciplina científica, com a Columbia oferecendo um dos primeiros cursos de crédito acadêmico em ciência da computação em 1946. [19] A ciência da computação começou a ser estabelecida como uma disciplina acadêmica distinta nos anos 1950 e início dos anos 1960. [20] [21] O primeiro programa de graduação em ciência da computação do mundo, o Cambridge Diploma in Computer Science , começou na Universidade de Cambridge Laboratório de Computação em 1953. O primeiro departamento de ciência da computação nos Estados Unidos foi formado na Purdue University em 1962. [22] Desde que os computadores práticos se tornaram disponíveis, muitas aplicações de computação se tornaram áreas distintas de estudo em seus próprios direitos.

Etimologia

Embora proposto pela primeira vez em 1956, [23] o termo "ciência da computação" aparece em um artigo de 1959 na Communications of the ACM , [24] no qual Louis Fein defende a criação de uma Escola de Pós - Graduação em Ciências da Computação análoga à criação de Harvard Business School em 1921, [25] justificando o nome argumentando que, assim como as ciências da gestão , a disciplina é aplicada e interdisciplinar por natureza, embora possua as características próprias de uma disciplina acadêmica. [24] Seus esforços e os de outros, como o analista numérico George Forsythe, foram recompensados: as universidades criaram esses departamentos, começando com Purdue em 1962. [26] Apesar do nome, uma quantidade significativa de ciência da computação não envolve o estudo dos próprios computadores. Por causa disso, vários nomes alternativos foram propostos. [27] Certos departamentos de grandes universidades preferem o termo ciência da computação , para enfatizar precisamente essa diferença. O cientista dinamarquês Peter Naur sugeriu o termo datalogia , [28]para refletir o fato de que a disciplina científica gira em torno de dados e tratamento de dados, embora não necessariamente envolva computadores. A primeira instituição científica a usar o termo foi o Departamento de Datalogia da Universidade de Copenhagen, fundado em 1969, com Peter Naur sendo o primeiro professor de datalogia. O termo é usado principalmente nos países escandinavos. Um termo alternativo, também proposto por Naur, é data science ; agora é usado para um campo multidisciplinar de análise de dados, incluindo estatísticas e bancos de dados.

Nos primórdios da computação, uma série de termos para os praticantes do campo da computação foram sugeridas nas Comunicações da ACM - turingineer , turologist , fluxogramas-homem , aplicada meta-matemático , e aplicada epistemólogo . [29] Três meses depois, no mesmo jornal, um comptologista foi sugerido, seguido no ano seguinte por um hipologista . [30] O termo computics também foi sugerido. [31] Na Europa, os termos derivados de traduções contratadas da expressão "informação automática" (por exemplo, "informazione automatica" em italiano) ou "informação e matemática" são freqüentemente usados, por exemplo, informatique (francês), Informatik (alemão), informatica (italiano, holandês ), informática (Espanhol, Português), informatika ( línguas eslavas e húngara ) ou Pliroforiki ( πληροφορική , o que significa informática) em grego . Palavras semelhantes também foram adotadas no Reino Unido (como na Escola de Informática da Universidade de Edimburgo ). [32]“Nos Estados Unidos, entretanto, a informática está ligada à computação aplicada, ou seja, a computação no contexto de outro domínio”. [33]

Uma citação folclórica, muitas vezes atribuída a - mas quase certamente não formulada por - Edsger Dijkstra , afirma que "a ciência da computação não trata mais de computadores do que a astronomia trata de telescópios". [nota 3] O projeto e implantação de computadores e sistemas de computador é geralmente considerado domínio de outras disciplinas além da ciência da computação. Por exemplo, o estudo de hardware de computador é geralmente considerado parte da engenharia da computação , enquanto o estudo de sistemas de computador comerciais e sua implantação costuma ser chamado de tecnologia da informação ou sistemas de informação. No entanto, tem havido muita fertilização cruzada de idéias entre as várias disciplinas relacionadas ao computador. A pesquisa em ciência da computação também costuma cruzar outras disciplinas, como filosofia, ciências cognitivas , lingüística , matemática , física , biologia , ciências da Terra , estatística e lógica .

A ciência da computação é considerada por alguns como tendo uma relação muito mais próxima com a matemática do que muitas disciplinas científicas, com alguns observadores dizendo que a computação é uma ciência matemática. [20] A ciência da computação inicial foi fortemente influenciada pelo trabalho de matemáticos como Kurt Gödel , Alan Turing , John von Neumann , Rózsa Péter e Alonzo Church e continua a haver um intercâmbio útil de ideias entre os dois campos em áreas como matemática lógica , teoria da categoria , teoria do domínio , e álgebra . [23]

A relação entre Ciência da Computação e Engenharia de Software é uma questão controversa, que é ainda mais turva por disputas sobre o que o termo "Engenharia de Software" significa e como a ciência da computação é definida. [34] David Parnas , seguindo a sugestão da relação entre outras disciplinas de engenharia e ciências, afirmou que o foco principal da ciência da computação é estudar as propriedades da computação em geral, enquanto o foco principal da engenharia de software é o projeto de cálculos específicos para atingir objetivos práticos, tornando as duas disciplinas separadas, mas complementares. [35]

Os aspectos acadêmicos, políticos e de financiamento da ciência da computação tendem a depender de o departamento ser formado com ênfase matemática ou engenharia. Departamentos de ciência da computação com ênfase em matemática e orientação numérica consideram o alinhamento com a ciência da computação . Ambos os tipos de departamentos tendem a se esforçar para construir uma ponte sobre o campo educacionalmente, se não em todas as pesquisas.

Filosofia

Vários cientistas da computação defenderam a distinção de três paradigmas separados na ciência da computação. Peter Wegner argumentou que esses paradigmas são ciência, tecnologia e matemática. [36] O grupo de trabalho de Peter Denning argumentou que eles são teoria, abstração (modelagem) e design. [37] Amnon H. Eden os descreveu como o "paradigma racionalista" (que trata a ciência da computação como um ramo da matemática, que é predominante na ciência da computação teórica, e principalmente emprega o raciocínio dedutivo), o "paradigma tecnocrático" (que pode ser encontrado em abordagens de engenharia, mais proeminentemente em engenharia de software), e o "paradigma científico" (que aborda artefatos relacionados a computadores a partir da perspectiva empírica das ciências naturais , identificáveis ​​em alguns ramos das artificiais inteligência ). [38] A ciência da computação se concentra em métodos envolvidos em design, especificação, programação, verificação, implementação e teste de sistemas de computação feitos pelo homem. [39]

Campos

A ciência da computação não trata mais de computadores do que a astronomia trata de telescópios.

Como disciplina, a ciência da computação abrange uma variedade de tópicos, desde estudos teóricos de algoritmos e os limites da computação até as questões práticas de implementação de sistemas de computação em hardware e software. [40] [41] O CSAB , anteriormente denominado Comitê de Acreditação de Ciências da Computação - que é composto por representantes da Association for Computing Machinery (ACM) e da IEEE Computer Society (IEEE CS) [42] - identifica quatro áreas que considera crucial para a disciplina de ciência da computação : teoria da computação , algoritmos e estruturas de dados , metodologia e linguagens de programação , eelementos e arquitetura do computador . Além dessas quatro áreas, a CSAB também identifica campos como engenharia de software, inteligência artificial, redes e comunicação de computadores, sistemas de banco de dados, computação paralela, computação distribuída, interação humano-computador, computação gráfica, sistemas operacionais e computação numérica e simbólica como sendo áreas importantes da ciência da computação. [40]

Ciência da computação teórica

A Ciência da Computação teórica é matemática e abstrata em espírito, mas deriva sua motivação da computação prática e cotidiana. Seu objetivo é compreender a natureza da computação e, como consequência desse entendimento, fornecer metodologias mais eficientes.

Teoria da computação

De acordo com Peter Denning , a questão fundamental subjacente à ciência da computação é: "O que pode ser automatizado?" [20] A teoria da computação concentra-se em responder a questões fundamentais sobre o que pode ser calculado e que quantidade de recursos são necessários para realizar esses cálculos. Em um esforço para responder à primeira pergunta, a teoria da computabilidade examina quais problemas computacionais são solucionáveis ​​em vários modelos teóricos de computação . A segunda questão é abordada pela teoria da complexidade computacional , que estuda os custos de tempo e espaço associados a diferentes abordagens para resolver uma infinidade de problemas computacionais.

O famoso P = NP? problema, um dos Problemas do Prêmio do Milênio , [43] é um problema aberto na teoria da computação.

DFAexample.svg Sintaxe tree.svg Classes de complexidade.svg
Teoria dos autômatos Linguagens formais Teoria da computabilidade Teoria da complexidade computacional
Interaction Net as Configuration.png Blochsphere.svg XNOR ANSI Labelled.svg Kellerautomat.svg
Modelos de computação Teoria da computação quântica Teoria do circuito lógico Autômatos celulares

Informação e teoria da codificação

A teoria da informação, intimamente relacionada à probabilidade e à estatística , está relacionada à quantificação da informação. Isso foi desenvolvido por Claude Shannon para encontrar limites fundamentais nas operações de processamento de sinal , como compactação de dados e armazenamento e comunicação confiáveis ​​de dados. [44] A teoria da codificação é o estudo das propriedades dos códigos (sistemas para converter informações de uma forma para outra) e sua adequação a uma aplicação específica. Os códigos são usados ​​para compressão de dados , criptografia , detecção e correção de erros e , mais recentemente, também para codificação de rede. Os códigos são estudados com o objetivo de projetar métodos de transmissão de dados eficientes e confiáveis . [45]

Hamming.jpg Canal simétrico binário.svg Digitalteilchen.svg H0 h1 fehler.jpg Mandelpart2 red.png
Teoria da codificação Capacidade do canal Teoria da Informação Algorítmica Teoria de detecção de sinal Complexidade de Kolmogorov

Estruturas de dados e algoritmos

Estruturas de dados e algoritmos são os estudos de métodos computacionais comumente usados ​​e sua eficiência computacional.

O ( n 2 ) Classificando quicksort anim.gif Tree (ciência da computação) .svg TSP Deutschland 3.png SimplexRangeSearching.svg Contração vertices.jpg
Análise de algoritmos Projeto de algoritmo Estruturas de dados Otimização combinatória Geometria computacional Algoritmos Randomizados

Teoria linguagem de programação e métodos formais

A teoria da linguagem de programação é um ramo da ciência da computação que lida com o design, implementação, análise, caracterização e classificação de linguagens de programação e seus recursos individuais . Ele se enquadra na disciplina de ciência da computação, dependendo e afetando matemática , engenharia de software e linguística . É uma área de pesquisa ativa, com inúmeras revistas acadêmicas dedicadas.

Os métodos formais são um tipo particular de técnica com base matemática para a especificação , desenvolvimento e verificação de sistemas de software e hardware . [46]O uso de métodos formais para projetos de software e hardware é motivado pela expectativa de que, como em outras disciplinas da engenharia, a realização de análises matemáticas adequadas pode contribuir para a confiabilidade e robustez de um projeto. Eles formam uma base teórica importante para a engenharia de software, especialmente quando a segurança ou proteção está envolvida. Os métodos formais são um complemento útil para o teste de software, pois ajudam a evitar erros e também podem fornecer uma estrutura para o teste. Para uso industrial, é necessário suporte de ferramenta. No entanto, o alto custo do uso de métodos formais significa que eles geralmente são usados ​​apenas no desenvolvimento de sistemas de alta integridade e essenciais , onde proteção ou segurançaé de extrema importância. Os métodos formais são melhor descritos como a aplicação de uma variedade bastante ampla de fundamentos teóricos da ciência da computação , em particular cálculos lógicos , linguagens formais , teoria dos autômatos e semântica do programa , mas também sistemas de tipo e tipos de dados algébricos para problemas na especificação de software e hardware e verificação.

IF-THEN-ELSE-END flowchart.svg Compiler.svg Python add5 syntax.svg Prop-tableau-1.svg Coq plus comm screenshot.jpg
Semântica formal Teoria de tipo Projeto do compilador Linguagens de programação Verificação formal Prova automatizada de teoremas

Sistemas de computadores e processos computacionais

Inteligência Artificial

A inteligência artificial (IA) visa ou é necessária para sintetizar processos orientados a objetivos, como resolução de problemas, tomada de decisão, adaptação ambiental, aprendizagem e comunicação encontrados em humanos e animais. Desde suas origens na cibernética e na Conferência de Dartmouth (1956), a pesquisa em inteligência artificial tem sido necessariamente interdisciplinar, valendo-se de áreas de especialização como matemática aplicada , lógica simbólica , semiótica , engenharia elétrica , filosofia da mente , neurofisiologia e social inteligência . A IA está associada, na mente popular, ao desenvolvimento robótico, mas o principal campo de aplicação prática tem sido como um componente embutido em áreas de desenvolvimento de software , que requerem compreensão computacional. O ponto de partida no final dos anos 1940 foi a pergunta de Alan Turing "Os computadores podem pensar?", E a pergunta permanece efetivamente sem resposta, embora o teste de Turing ainda seja usado para avaliar a produção do computador na escala da inteligência humana. Mas a automação de tarefas avaliativas e preditivas tem sido cada vez mais bem-sucedida como um substituto para o monitoramento humano e intervenção em domínios de aplicativos de computador que envolvem dados complexos do mundo real.

Renderização do cérebro humano por Nicolas P. Rougier.png Olho humano, renderizado de Eye.png Rede neural colorida.svg Markov Decision Process.svg
Teoria de aprendizagem computacional Visão computacional Redes neurais Planejamento e programação
English.png Knight's tour.svg Ackley.gif AutonomicSystemModel.png
Processamento de linguagem natural Teoria dos jogos computacionais Computação evolutiva Computação autonômica
Neuron.svg KnnClassification.svg ROS C logo.jpg Alinhamento de regra.gif
Representação e raciocínio Reconhecimento de padrões Robótica Inteligência de enxame

Arquitetura de computadores e organização

A arquitetura do computador, ou organização digital do computador, é o projeto conceitual e a estrutura operacional fundamental de um sistema de computador. Ele se concentra principalmente na maneira pela qual a unidade central de processamento atua internamente e acessa os endereços na memória. [47] Os engenheiros de computação estudam a lógica computacional e o projeto de hardware de computador , desde componentes de processadores individuais , microcontroladores , computadores pessoais até supercomputadores e sistemas embarcados . O termo “arquitetura” na literatura da computação pode ser atribuído ao trabalho de Lyle R. Johnson e Frederick P. Brooks, Jr., membros do departamento de Organização de Máquinas no principal centro de pesquisa da IBM em 1959.

ABasicComputer.gif Intel Core2 arch.svg SIMD.svg Z80 arch.svg
Unidade de processamento Microarquitetura Multiprocessamento Design do processador
Roomba original.jpg Flowchart.png Kernel Layout.svg Uarm metal wiki2.jpg
Computação ubíqua Arquitetura de sistemas Sistemas operacionais Entrada / saída
Physical computing.svg FIR Filter General.svg Dep-1.svg Linker.svg
Sistema embutido Computação em tempo real Confiabilidade Intérprete

Concorrente, paralelo e distribuído computação

A simultaneidade é uma propriedade de sistemas nos quais vários cálculos estão sendo executados simultaneamente e potencialmente interagindo uns com os outros. [48] Uma série de modelos matemáticos foram desenvolvidos para computação concorrente geral, incluindo redes de Petri , cálculos de processo e o modelo de máquina de acesso aleatório paralela . [49] Quando vários computadores são conectados em uma rede usando a simultaneidade, isso é conhecido como um sistema distribuído. Os computadores dentro desse sistema distribuído têm sua própria memória privada e as informações podem ser trocadas para atingir objetivos comuns. [50]

As redes de computadores

Este ramo da ciência da computação visa gerenciar redes entre computadores em todo o mundo.

Segurança informática e criptografia

A segurança do computador é um ramo da tecnologia da computação com o objetivo de proteger as informações contra acesso não autorizado, interrupção ou modificação, ao mesmo tempo em que mantém a acessibilidade e a usabilidade do sistema para os usuários pretendidos. A criptografia é a prática e o estudo de ocultar (criptografar) e, portanto, decifrar (descriptografar) informações. A criptografia moderna está amplamente relacionada à ciência da computação, pois muitos algoritmos de criptografia e descriptografia são baseados em sua complexidade computacional.

Bancos de Dados e Data Mining

Um banco de dados se destina a organizar, armazenar e recuperar grandes quantidades de dados com facilidade. Os bancos de dados digitais são gerenciados usando sistemas de gerenciamento de banco de dados para armazenar, criar, manter e pesquisar dados, por meio de modelos de banco de dados e linguagens de consulta . A mineração de dados é um processo de descoberta de padrões em grandes conjuntos de dados.

Computação gráfica e visualização

A computação gráfica é o estudo de conteúdos visuais digitais e envolve a síntese e manipulação de dados de imagem. O estudo está conectado a muitos outros campos da ciência da computação, incluindo visão computacional , processamento de imagens e geometria computacional , e é fortemente aplicado nas áreas de efeitos especiais e videogames .

Simx2 = transl OK.svg FWDvsINV Kinematics HighResTransp.png 5-cell.gif Hud no cat.jpg Algoritmo de rastreamento de olhos com luz visível.jpg Csg tree.png
Computação gráfica 2D Animação por computador Renderização Realidade mista Realidade virtual Modelagem sólida

Processamento de imagem e som

As informações podem assumir a forma de imagens, som, vídeo ou outra multimídia. Pedaços de informação podem ser transmitidos por meio de sinais . O seu processamento é a noção central da informática , a visão europeia sobre a computação , que estuda os algoritmos de processamento da informação independentemente do tipo de portador da informação - seja ele elétrico, mecânico ou biológico. A área desempenha importante papel na teoria da informação , telecomunicações , engenharia da informação e tem aplicações em computação de imagens médicas e síntese de fala , entre outras.Qual é o limite inferior da complexidade dos algoritmos de transformada rápida de Fourier ? é um dos problemas não resolvidos na ciência da computação teórica .

DIT-FFT-butterfly.png Padrão Bayer em sensor.svg Comparação de qualidade do Opus compatível com daltônico. Comparação de qualidade jpg vs saveforweb.jpg MeningiomaMRISegmentation.png Ætoms - Translation.svg
Algoritmos FFT Processamento de imagem Reconhecimento de fala Compressão de dados Computação de imagens médicas Síntese de fala

Informática Aplicada

Ciência da computação, finanças e engenharia

A computação científica (ou ciência da computação ) é o campo de estudo que se preocupa com a construção de modelos matemáticos e técnicas de análise quantitativa e com o uso de computadores para analisar e resolver problemas científicos . Um dos principais usos da computação científica é a simulação de vários processos, incluindo dinâmica de fluidos computacional , sistemas e circuitos físicos, elétricos e eletrônicos, bem como sociedades e situações sociais (notadamente jogos de guerra) junto com seus habitats, entre muitos outros. Os computadores modernos permitem a otimização de projetos como aeronaves completas. Notáveis ​​em projetos de circuitos elétricos e eletrônicos são SPICE, [51]bem como software para realização física de projetos novos (ou modificados). Este último inclui software de design essencial para circuitos integrados . [ citação necessária ]

Lorenz attror yb.svg Quark wiki.jpg Naphthalene-3D-balls.png 1u04-argonaute.png GalvesLocherbach - Baixa resolução.gif Plutchik-wheel.svg Raio-X da mão, onde a idade óssea é encontrada automaticamente pelo software BoneXpert.jpg Elmer-pump-heatequation.png Bachlut1.png
Análise numérica Física computacional Química Computacional Bioinformática Neuroinformática Psicoinformática Informática médica Engenharia computacional Musicologia computacional

Computação social e interação humano-computador

A computação social é uma área que se preocupa com a interseção do comportamento social e dos sistemas computacionais. A pesquisa de interação humano-computador desenvolve teorias, princípios e diretrizes para designers de interface de usuário.

Engenharia de software

Engenharia de software é o estudo de projetar, implementar e modificar o software para garantir que seja de alta qualidade, acessível, de fácil manutenção e rápido de construir. É uma abordagem sistemática do projeto de software, envolvendo a aplicação de práticas de engenharia ao software. A engenharia de software lida com a organização e análise de software - ela não lida apenas com a criação ou manufatura de um novo software, mas com seu arranjo interno e manutenção. Por exemplo , testes de software , engenharia de sistemas , dívida técnica e processos de desenvolvimento de software .

Descobertas

O filósofo da computação Bill Rapaport observou três grandes percepções da ciência da computação : [52]

Todas as informações sobre qualquer problema computável podem ser representadas usando apenas 0 e 1 (ou qualquer outro par biestável que pode alternar entre dois estados facilmente distinguíveis, como "ligado / desligado", "magnetizado / desmagnetizado", "alto -voltagem / baixa tensão ", etc.).
  • O insight de Alan Turing : existem apenas cinco ações que um computador deve realizar para fazer "qualquer coisa".
Cada algoritmo pode ser expresso em uma linguagem para um computador que consiste em apenas cinco instruções básicas: [53]
  • mova um local para a esquerda;
  • mova um local certo;
  • ler o símbolo na localização atual;
  • imprimir 0 na localização atual;
  • imprimir 1 na localização atual.
  • A percepção de Corrado Böhm e Giuseppe Jacopini : existem apenas três maneiras de combinar essas ações (em outras mais complexas) que são necessárias para que um computador faça "qualquer coisa". [54]
Apenas três regras são necessárias para combinar qualquer conjunto de instruções básicas em outras mais complexas:
  • sequência : primeiro faça isso, depois faça aquilo;
  • seleção : SE tal e tal for o caso, ENTÃO faça isso, OUTRO faça aquilo;
  • repetição : ENQUANTO tal e tal for o caso, FAÇA isto.
Observe que as três regras do insight de Boehm e Jacopini podem ser ainda mais simplificadas com o uso de goto (o que significa que é mais elementar do que a programação estruturada ).

Paradigmas de programação

Linguagens de programação podem ser usadas para realizar tarefas diferentes de maneiras diferentes. Paradigmas de programação comuns incluem:

  • Programação funcional , um estilo de construção da estrutura e dos elementos de programas de computador que trata a computação como a avaliação de funções matemáticas e evita estados e dados mutáveis. É um paradigma de programação declarativo, o que significa que a programação é feita com expressões ou declarações em vez de instruções. [55]
  • Programação imperativa , um paradigma de programação que usa instruções que alteram o estado de um programa. [56] Da mesma forma que o modo imperativo em linguagens naturais expressa comandos, um programa imperativo consiste em comandos para serem executados pelo computador. A programação imperativa se concentra em descrever como um programa opera.
  • Programação orientada a objetos , um paradigma de programação baseado no conceito de "objetos", que podem conter dados, na forma de campos, muitas vezes conhecidos como atributos; e código, na forma de procedimentos, geralmente conhecidos como métodos. Uma característica dos objetos é que os procedimentos de um objeto podem acessar e frequentemente modificar os campos de dados do objeto ao qual estão associados. Assim, os programas de computador orientados a objetos são feitos de objetos que interagem uns com os outros. [57]
  • Programação orientada a serviços , um paradigma de programação que usa "serviços" como a unidade de trabalho do computador, para projetar e implementar aplicativos de negócios integrados e programas de software de missão crítica

Muitas linguagens oferecem suporte para múltiplos paradigmas, fazendo a distinção mais uma questão de estilo do que de capacidades técnicas. [58]

Academia

As conferências são eventos importantes para a pesquisa em ciência da computação. Durante essas conferências, pesquisadores dos setores público e privado apresentam seus trabalhos recentes e se encontram. Ao contrário da maioria dos outros campos acadêmicos, na ciência da computação, o prestígio dos artigos de conferências é maior do que o das publicações em periódicos. [59] [60] Uma explicação proposta para isso é que o rápido desenvolvimento deste campo relativamente novo requer uma rápida revisão e distribuição dos resultados, uma tarefa melhor conduzida por conferências do que por periódicos. [61]

Educação

A Ciência da Computação , conhecida por seus quase sinônimos, Computing , Computer Studies , é ensinada nas escolas do Reino Unido desde os dias do processamento em lote , cartões de marcação e fita de papel, mas geralmente para alguns alunos selecionados. [62] Em 1981, a BBC produziu um microcomputador e uma rede de sala de aula e os Estudos de Computação se tornaram comuns para alunos do nível GCE O (11-16 anos de idade), e Ciência da Computação para alunos do nível A. Sua importância foi reconhecida e passou a fazer parte obrigatória do Currículo Nacional, para Key Stage 3 e 4. Em setembro de 2014, tornou-se um direito para todos os alunos com idade superior a 4. [63]

Nos Estados Unidos , com 14.000 distritos escolares decidindo o currículo, a oferta foi fragmentada. [64] De acordo com um relatório de 2010 da Association for Computing Machinery (ACM) e da Computer Science Teachers Association (CSTA), apenas 14 dos 50 estados adotaram padrões de educação significativos para a ciência da computação do ensino médio. [65]

Israel, Nova Zelândia e Coréia do Sul incluíram ciência da computação em seus currículos nacionais de ensino médio, [66] [67] e vários outros estão seguindo. [68]

Veja também

Notas

  1. ^ Em 1851
  2. ^ "A introdução de cartões perfurados no novo motor era importante não apenas como uma forma de controle mais conveniente do que a bateria, ou porque os programas agora podiam ter extensão ilimitada e podiam ser armazenados e repetidos sem o perigo de introduzir erros na configuração a máquina à mão; era importante também porque servia para cristalizar a sensação de Babbage de que havia inventado algo realmente novo, algo muito mais do que uma sofisticada máquina de calcular. " Bruce Collier , 1970
  3. ^ Veja a entrada " Ciência da computação " no Wikiquote para a história desta citação.
  4. ^ A palavra "qualquer coisa" está escrita entre aspas porque há coisas que os computadores não podem fazer. Um exemplo é: para responder à pergunta se um determinado programa de computador arbitrariamente terminará ou funcionará para sempre (o problema de Halting ).

Referências

  1. ^ "O que é Ciência da Computação? - Ciência da Computação. A Universidade de York" . www.cs.york.ac.uk . Recuperado em 11 de junho de 2020 .
  2. ^ "Pesquisa WordNet — 3.1" . Wordnetweb.princeton.edu . Recuperado em 14 de maio de 2012 .
  3. ^ "Definição de ciência da computação | Dicionário.com" . www.dictionary.com . Recuperado em 11 de junho de 2020 .
  4. ^ Harel, David. (2014). Algorithmics The Spirit of Computing . Springer Berlin. ISBN 978-3-642-44135-6. OCLC  876384882 .
  5. ^ "CIÊNCIA DA COMPUTADOR: A DISCIPLINA" (PDF) . 25 de maio de 2006. Arquivado (PDF) do original em 25 de maio de 2006 . Recuperado em 4 de janeiro de 2021 .
  6. ^ The MIT Press. "What Can Be Automated? Computer Science and Engineering Research Study | The MIT Press" . mitpress.mit.edu .
  7. ^ "Charles Babbage Institute: Who Was Charles Babbage?" . cbi.umn.edu . Recuperado em 28 de dezembro de 2016 .
  8. ^ "Ada Lovelace | Babbage Engine | Computer History Museum" . www.computerhistory.org . Recuperado em 28 de dezembro de 2016 .
  9. ^ "Wilhelm Schickard - Ein Computerpionier" (PDF) (em alemão).
  10. ^ Keates, Fiona (25 de junho de 2012). "Uma breve história da computação" . O Repositório . The Royal Society.
  11. ^ "Science Museum, Babbage's Analytical Engine, 1834-1871 (Trial model)" . Recuperado em 11 de maio de 2020 .
  12. ^ a b Anthony Hyman (1982). Charles Babbage, pioneiro do computador .
  13. ^ "A Selection and Adaptation From Ada's Notes found in Ada, The Enchantress of Numbers," por Betty Alexandra Toole Ed.D. Strawberry Press, Mill Valley, CA " . Arquivado do original em 10 de fevereiro de 2006. Recuperado em 4 de maio de 2006 .
  14. ^ "The John Gabriel Byrne Computer Science Collection" (PDF) . Arquivado do original em 16 de abril de 2019 . Recuperado em 8 de agosto de 2019 .
  15. ^ "Nesse sentido, Aiken precisava da IBM, cuja tecnologia incluía o uso de cartões perfurados, o acúmulo de dados numéricos e a transferência de dados numéricos de um registro para outro", Bernard Cohen , p.44 (2000)
  16. ^ Brian Randell , p. 187, 1975
  17. ^ A Association for Computing Machinery (ACM) foi fundada em 1947.
  18. ^ "Arquivos IBM: 1945" . Ibm.com . Recuperado em 19 de março de 2019 .
  19. ^ "IBM100 - As origens da ciência da computação" . Ibm.com. 15 de setembro de 1995 . Recuperado em 19 de março de 2019 .
  20. ^ a b c Denning, Peter J. (2000). "Ciência da Computação: A Disciplina" (PDF) . Enciclopédia de Ciência da Computação . Arquivado do original (PDF) em 25 de maio de 2006.
  21. ^ "Algumas estatísticas EDSAC" . Universidade de Cambridge . Recuperado em 19 de novembro de 2011 .
  22. ^ "O pioneiro da ciência da computação Samuel D. Conte morre aos 85" . Purdue Computer Science. 1 ° de julho de 2002 . Recuperado em 12 de dezembro de 2014 .
  23. ^ a b Tedre, Matti (2014). The Science of Computing: Shaping a Discipline . Taylor e Francis / CRC Press.
  24. ^ a b Louis Fine (1959). "O papel da universidade em computadores, processamento de dados e campos relacionados". Comunicações da ACM . 2 (9): 7–14. doi : 10.1145 / 368424.368427 . S2CID 6740821 .  
  25. ^ "História Oral da Universidade de Stanford" . Stanford University . Recuperado em 30 de maio de 2013 .
  26. ^ Donald Knuth (1972). "George Forsythe e o Desenvolvimento da Ciência da Computação" . Comms. ACM . Arquivado em 20 de outubro de 2013, na Wayback Machine
  27. ^ Matti Tedre (2006). "O Desenvolvimento da Ciência da Computação: Uma Perspectiva Sociocultural" (PDF) . p. 260 . Recuperado em 12 de dezembro de 2014 .
  28. ^ Peter Naur (1966). “A ciência da datalogia”. Comunicações da ACM . 9 (7): 485. doi : 10.1145 / 365719.366510 . S2CID 47558402 .  
  29. ^ Weiss, EA; Corley, Henry PT "Cartas ao editor". Comunicações da ACM . 1 (4): 6. doi : 10.1145 / 368796.368802 . S2CID 5379449 . 
  30. ^ Comunicações do ACM 2 (1): p.4
  31. ^ Computador IEEE 28 (12): p.136
  32. ^ P. Mounier-Kuhn, L'Informatique en France, de la seconde guerre mondiale au Plan Calcul. L'émergence d'une science , Paris, PUPS, 2010, cap. 3 e 4.
  33. ^ Groth, Dennis P. (fevereiro de 2010). "Por que um diploma de informática?" . Comunicações da ACM . Cacm.acm.org.
  34. ^ Tedre, M. (2011). "Computing as a Science: A Survey of Competing Viewpoints". Mentes e máquinas . 21 (3): 361–387. doi : 10.1007 / s11023-011-9240-4 . S2CID 14263916 . 
  35. ^ Parnas, DL (1998). "Programas de engenharia de software não são programas de ciência da computação". Annals of Software Engineering . 6 : 19–37. doi : 10.1023 / A: 1018949113292 . S2CID 35786237 . , p. 19: "Em vez de tratar a engenharia de software como um subcampo da ciência da computação, eu a trato como um elemento do conjunto, Engenharia Civil, Engenharia Mecânica, Engenharia Química, Engenharia Elétrica, [...]"
  36. ^ Wegner, P. (13-15 de outubro de 1976). Paradigmas de pesquisa em ciência da computação - Anais da 2ª Conferência Internacional sobre Engenharia de Software . São Francisco, Califórnia, Estados Unidos: IEEE Computer Society Press, Los Alamitos, CA.
  37. ^ Denning, PJ; Comer, DE; Gries, D .; Mulder, MC; Tucker, A .; Turner, AJ; Young, PR (janeiro de 1989). “A Informática como disciplina”. Comunicações da ACM . 32 : 9–23. doi : 10.1145 / 63238.63239 . S2CID 723103 . 
  38. ^ Eden, AH (2007). "Três Paradigmas da Ciência da Computação" (PDF) . Mentes e máquinas . 17 (2): 135–167. CiteSeerX 10.1.1.304.7763 . doi : 10.1007 / s11023-007-9060-8 . S2CID 3023076 . Arquivado do original (PDF) em 15 de fevereiro de 2016.   
  39. ^ Turner, Raymond; Angius, Nicola (2019). "A Filosofia da Ciência da Computação" . Em Zalta, Edward N. (ed.). The Stanford Encyclopedia of Philosophy .
  40. ^ a b "Ciência da computação como uma profissão" . Comitê de Acreditação em Ciências da Computação. 28 de maio de 1997. Arquivado do original em 17 de junho de 2008 . Recuperado em 23 de maio de 2010 .
  41. ^ Comitê nos fundamentos da informática: Desafios e oportunidades, National Research Council (2004). Ciência da Computação: Reflexões sobre o campo, Reflexões do campo . National Academies Press. ISBN 978-0-309-09301-9.
  42. ^ "CSAB Leading Computer Education" . CSAB. 3 de agosto de 2011 . Recuperado em 19 de novembro de 2011 .
  43. ^ Clay Mathematics Institute P = NP Arquivado em 14 de outubro de 2013, na Wayback Machine
  44. ^ P. Collins, Graham (14 de outubro de 2002). "Claude E. Shannon: Fundador da Teoria da Informação" . Scientific American . Recuperado em 12 de dezembro de 2014 .
  45. ^ Van-Nam Huynh; Vladik Kreinovich; Songsak Sriboonchitta; 2012. Análise de incerteza em econometria com aplicações. Springer Science & Business Media. p. 63. ISBN 978-3-642-35443-4 . 
  46. ^ Phillip A. Laplante, 2010. Enciclopédia do grupo de três volumes da engenharia de software (impressão). CRC Press. p. 309. ISBN 978-1-351-24926-3 . 
  47. ^ A. Thisted, Ronald (7 de abril de 1997). "Arquitetura do computador" (PDF) . A Universidade de Chicago.
  48. ^ Jiacun Wang, 2017. Sistemas incorporados em tempo real. Wiley. p. 12. ISBN 978-1-119-42070-5 . 
  49. ^ Gordana Dodig-Crnkovic; Raffaela Giovagnoli; 2013. Computing Nature: Turing Centenary Perspective. Springer Science & Business Media. p. 247. ISBN 978-3-642-37225-4 . 
  50. ^ Simon Elias Bibri; 2018. Cidades sustentáveis ​​inteligentes do futuro: o potencial inexplorado de Big Data Analytics e computação sensível ao contexto para o avanço da sustentabilidade. Springer. p. 74. ISBN 978-3-319-73981-6 . 
  51. ^ Muhammad H. Rashid, 2016. ESPECIARIA para eletrônica de potência e energia elétrica. CRC Press. p. 6. ISBN 978-1-4398-6047-2 . 
  52. ^ Rapaport, William J. (20 de setembro de 2013). "O que é computação?" . Universidade Estadual de Nova York em Buffalo.
  53. ^ B. Jack Copeland, 2012. Cérebro eletrônico de Alan Turing: O esforço para construir o ACE, o computador o mais rápido do mundo. OUP Oxford. p. 107. ISBN 978-0-19-960915-4 . 
  54. ^ Charles W. Herbert, 2010. Uma introdução à programação usando Alice 2.2. Cengage Learning. p. 122. ISBN 0-538-47866-7 . 
  55. ^ Md. Rezaul Karim; Sridhar Alla; 2017. Scala e Spark para Big Data Analytics: Explore os conceitos de programação funcional, streaming de dados e aprendizado de máquina. Packt Publishing Ltd. p. 87. ISBN 978-1-78355-050-0 . 
  56. ^ Lex Sheehan, 2017. Aprendendo Programação Funcional em Go: Mude a maneira como você aborda seus aplicativos usando a programação funcional em Go. Packt Publishing Ltd. p. 16. ISBN 978-1-78728-604-7 . 
  57. ^ Evelio Padilla, 2015. Sistemas de automação de subestações: Projeto e implementação. Wiley. p. 245. ISBN 978-1-118-98730-8 . 
  58. ^ "Linguagem de programação multiparadigma" . developer.mozilla.org . Fundação Mozilla . Arquivado do original em 21 de agosto de 2013.
  59. ^ Meyer, Bertrand (abril de 2009). “Ponto de vista: avaliação de pesquisa para ciência da computação”. Comunicações da ACM . 25 (4): 31–34. doi : 10.1145 / 1498765.1498780 . S2CID 8625066 . 
  60. ^ Patterson, David (agosto de 1999). "Avaliando cientistas e engenheiros da computação para promoção e estabilidade" . Computing Research Association.
  61. ^ Fortnow, Lance (agosto de 2009). "Viewpoint: Time for Computer Science to Grow Up" . Comunicações da ACM . 52 (8): 33–35. doi : 10.1145 / 1536616.1536631 .
  62. ^ Burns, Judith (3 de abril de 2016). "Estilo dos anos 1970 de nível A da ciência da computação" . Recuperado em 9 de fevereiro de 2019 .
  63. ^ Jones, Michael (outubro de 1915). "Developing a Computer Science Curriculum in England: Exploring Approaches in the USA" (PDF) . Winston Churchill Memorial Trust . Recuperado em 9 de fevereiro de 2019 .
  64. ^ "Ciência da Computação: Não Apenas uma Eletiva Anymore" . Semana da educação . 25 de fevereiro de 2014.
  65. ^ Wilson, Cameron; Sudol, Leigh Ann; Stephenson, Chris; Stehlik, Mark (2010). "Running on Empty: The Fail to Teach K – 12 Computer Science in the Digital Age" (PDF) . ACM.
  66. ^ "A é para algoritmo" . The Economist . 26 de abril de 2014.
  67. ^ "Computing at School International comparisons" (PDF) . Recuperado em 20 de julho de 2015 .
  68. ^ "Adicionando Codificação ao Currículo" . The New York Times . 23 de março de 2014.

Outras leituras

Visão geral

  • Tucker, Allen B. (2004). Computer Science Handbook (2ª ed.). Chapman e Hall / CRC. ISBN 978-1-58488-360-9.
    • “Em mais de 70 capítulos, cada um novo ou significativamente revisado, pode-se encontrar qualquer tipo de informação e referências sobre a ciência da computação que se possa imaginar. [...] ao todo, não há nada absoluto sobre a ciência da computação que não possa ser encontrado em a enciclopédia de 2,5 quilos com seus 110 artigos de pesquisa […]. " (Christoph Meinel, Zentralblatt MATH )
  • van Leeuwen, Jan (1994). Manual de Ciência da Computação Teórica . The MIT Press. ISBN 978-0-262-72020-5.
    • "[...] este conjunto é o mais exclusivo e possivelmente o mais útil para a comunidade [da ciência da computação teórica], no apoio tanto ao ensino quanto à pesquisa [...]. Os livros podem ser usados ​​por qualquer pessoa que queira simplesmente obter uma compreensão de um dessas áreas, ou por alguém que deseja estar em pesquisa em um tópico, ou por instrutores que desejam encontrar informações oportunas sobre um assunto que estão ensinando fora de suas principais áreas de especialização. " (Rocky Ross, SIGACT News )
  • Ralston, Anthony ; Reilly, Edwin D .; Hemmendinger, David (2000). Encyclopedia of Computer Science (4ª ed.). Dicionários de Grove. ISBN 978-1-56159-248-7.
    • "Desde 1976, esta tem sido a obra de referência definitiva em computação, computação e ciência da computação. [...] Organizados alfabeticamente e classificados em áreas temáticas amplas, as entradas cobrem hardware, sistemas de computador, informações e dados, software, matemática da computação , teoria da computação, metodologias, aplicativos e ambiente de computação. Os editores fizeram um trabalho louvável ao combinar perspectiva histórica e informações de referência prática. A enciclopédia continua sendo essencial para a maioria das coleções de referência de bibliotecas públicas e acadêmicas. " (Joe Accardin, Northeastern Illinois Univ., Chicago)
  • Edwin D. Reilly (2003). Marcos em Ciência da Computação e Tecnologia da Informação . Greenwood Publishing Group. ISBN 978-1-57356-521-9.

Literatura selecionada

Artigos

Curriculum e classificação

Ligações externas

Bibliografia e motores de busca académicos

Organizações profissionais

Diversos