Ciência da Computação - Computer science

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 . 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 .

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 o coração da ciência da computação. A teoria da linguagem de programação considera abordagens para a descrição de processos computacionais, enquanto a programação de computadores 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 . A preocupação fundamental da ciência da computação é determinar o que pode e o que não pode ser automatizado. 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".
Ada Lovelace publicou o primeiro algoritmo destinado ao processamento em um computador.

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. Em 1673, Gottfried Leibniz demonstrou uma calculadora mecânica digital, chamada Stepped Reckoner . 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 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 iniciou 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 . 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". "Um passo crucial foi a adoção de um sistema de cartão perfurado derivado do tear Jacquard " tornando-o infinitamente programável. 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. 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 o segundo dos únicos dois 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 de cartão perfurado e também no ramo de calculadoras, a desenvolver sua calculadora programável gigante, a ASCC / Harvard Mark I , baseada no Analítico de Babbage Engine, 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".

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. À medida que 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. Em última análise, o relacionamento próximo 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. Ciência da computação começou a ser estabelecida como uma disciplina acadêmica distinta em década de 1950 e início de 1960. O primeiro programa de graduação em ciência da computação do mundo, o Cambridge Diploma in Computer Science , começou no University of Cambridge Computer Laboratory em 1953. O primeiro departamento de ciência da computação nos Estados Unidos foi formado na Purdue University em 1962. Desde que os computadores práticos se tornaram disponíveis, muitos aplicações de computação tornaram-se áreas distintas de estudo em seus próprios direitos.

Etimologia

Embora proposto pela primeira vez em 1956, o termo "ciência da computação" aparece em um artigo de 1959 na Communications of the ACM , 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 da Harvard Business School em 1921, justificando o nome por argumentar que, como a ciência da gestão , a disciplina é aplicada e interdisciplinar por natureza, embora tenha as características próprias de uma disciplina acadêmica. Seus esforços, e os de outros como o analista numérico George Forsythe , foram recompensados: as universidades continuaram a criar esses departamentos, começando com Purdue em 1962. 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. 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 , 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 . Três meses depois, no mesmo jornal, foi sugerido um comptologista , seguido no ano seguinte por um hipologista . O termo computação também foi sugerido.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 frequentemente 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 ). “Nos Estados Unidos, entretanto, a informática está ligada à computação aplicada, ou seja, a computação no contexto de outro domínio”.

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". O projeto e a implantação de computadores e sistemas de computador são geralmente considerados 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 freqüentemente cruza 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. 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 lógica matemática , categoria teoria , teoria de domínio e álgebra .

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. 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, tornando as duas disciplinas separadas, mas complementares.

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. Os 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 fazer esforços para construir uma ponte sobre o campo educacionalmente, se não através de todas as pesquisas.

Filosofia

Epistemologia da ciência da computação

Apesar da palavra "ciência" em seu nome, há um debate sobre se a ciência da computação é ou não uma disciplina da ciência, matemática ou engenharia. Allen Newell e Herbert A. Simon argumentaram em 1975,

A ciência da computação é uma disciplina empírica. Nós a teríamos chamado de ciência experimental, mas, como a astronomia, a economia e a geologia, algumas de suas formas únicas de observação e experiência não se encaixam em um estereótipo estreito do método experimental. No entanto, são experimentos. Cada nova máquina construída é um experimento. Na verdade, construir a máquina coloca uma questão à natureza; e ouvimos a resposta observando a máquina em operação e analisando-a por todos os meios analíticos e de medição disponíveis.

Desde então, foi argumentado que a ciência da computação pode ser classificada como uma ciência empírica, uma vez que faz uso de testes empíricos para avaliar a exatidão dos programas, mas um problema permanece em definir as leis e teoremas da ciência da computação (se houver) e definir o natureza dos experimentos em ciência da computação. Os defensores da classificação da ciência da computação como uma disciplina de engenharia argumentam que a confiabilidade dos sistemas computacionais é investigada da mesma forma que as pontes na engenharia civil e os aviões na engenharia aeroespacial . Eles também argumentam que enquanto as ciências empíricas observam o que existe atualmente, a ciência da computação observa o que é possível existir e enquanto os cientistas descobrem leis a partir da observação, nenhuma lei apropriada foi encontrada na ciência da computação e ela está preocupada em criar fenômenos.

Os defensores da classificação da ciência da computação como uma disciplina matemática argumentam que os programas de computador são realizações físicas de entidades matemáticas e os programas podem ser dedutivamente raciocinados por meio de métodos matemáticos formais . Os cientistas da computação Edsger W. Dijkstra e Tony Hoare consideram as instruções para programas de computador como sentenças matemáticas e interpretam a semântica formal para linguagens de programação como sistemas axiomáticos matemáticos .

Paradigmas da ciência da computação

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. O grupo de trabalho de Peter Denning argumentou que eles são teoria, abstração (modelagem) e design. Amnon H. Eden descreveu-os 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 na engenharia abordagens, mais proeminentemente na engenharia de software), e o "paradigma científico" (que aborda artefatos relacionados à computação a partir da perspectiva empírica das ciências naturais , identificáveis ​​em alguns ramos da inteligência artificial ). A ciência da computação se concentra nos métodos envolvidos no projeto, especificação, programação, verificação, implementação e teste de sistemas de computação feitos pelo homem.

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. O CSAB , anteriormente denominado Comitê de Acreditação em Ciências da Computação, composto por representantes da Association for Computing Machinery (ACM) e da IEEE Computer Society (IEEE CS), identifica quatro áreas que considera cruciais para a disciplina de ciência da computação: teoria de computação , algoritmos e estruturas de dados , metodologia e linguagens de programação e elementos e arquitetura de 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 homem-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.

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?" A teoria da computação concentra-se em responder a questões fundamentais sobre o que pode ser calculado e a quantidade de recursos necessária 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 , é 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

Teoria da informação e 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 sinais , como compactação de dados e armazenamento e comunicação confiáveis ​​de dados. 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 .

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 da 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 baseada em matemática para a especificação , desenvolvimento e verificação de sistemas de software e hardware . 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 meios formais que eles geralmente só são utilizados no desenvolvimento de alta integridade e sistemas de risco de vida , onde a segurança ou a 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 computador 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 da década de 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 e organização de computadores

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. 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

Computação simultânea, paralela e distribuída

A simultaneidade é uma propriedade de sistemas nos quais vários cálculos estão sendo executados simultaneamente e potencialmente interagindo uns com os outros. Vários 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 . Quando vários computadores estão conectados em uma rede usando 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.

Redes de computadores

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

Segurança e criptografia de computador

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 mineração de dados

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.

Gráficos e visualização de computador

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 ocular 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 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

Ciência da computação 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 ​​no projeto de circuitos elétricos e eletrônicos são o SPICE, bem como o software para a realização física de projetos novos (ou modificados). Este último inclui software de design essencial para circuitos integrados .

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 :

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:
  • 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.
  • O insight 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".
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.
  • Programação imperativa , um paradigma de programação que usa instruções que alteram o estado de um programa. 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.
  • 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.

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. Uma explicação proposta para isso é que o rápido desenvolvimento desse campo relativamente novo requer rápida revisão e distribuição dos resultados, uma tarefa mais bem executada por conferências do que por periódicos.

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. Em 1981, a BBC produziu um microcomputador e uma rede de sala de aula, e os Estudos de Computação tornaram-se comuns para alunos do nível GCE O (de 11 a 16 anos) e de Ciência da Computação para alunos do nível A. A sua importância foi reconhecida, e tornou-se uma parte obrigatória do Currículo Nacional , para os Estágios Chave 3 e 4. Em setembro de 2014, tornou-se um direito para todos os alunos com mais de 4 anos.

Nos Estados Unidos , com 14.000 distritos escolares decidindo o currículo, a oferta foi fragmentada. 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.

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

Veja também

Notas

Referências

Leitura adicional

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, aplicações 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ências 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

Currículo e classificação

links externos

Bibliografia e motores de busca acadêmicos

Organizações profissionais

Misc