Ciência da Computação
Você sabia ...
Crianças SOS, uma instituição de caridade educação , organizou esta selecção. Visite o site da SOS Children at http://www.soschildren.org/
Ciência da computação (ou ciência da computação) é o estudo ea ciência dos fundamentos teóricos da informação e computação e sua execução e aplicação em sistemas de computador . Ciência da computação tem muitas sub-áreas; alguns enfatizam o cálculo de resultados específicos (como computação gráfica), enquanto outros se relacionam com as propriedades de problemas computacionais (tais como teoria da complexidade computacional). Ainda outros se concentram sobre os desafios na implementação de cálculos. Por exemplo, estudos de teoria da linguagem de programação abordagens para cálculos que descrevem, enquanto programação de computadores aplica específicas linguagens de programação para resolver problemas computacionais específicos. Um outro subcampo, interação humano-computador, concentra-se nos desafios em tornar os computadores e cálculos úteis, utilizáveis e universalmente acessível para as pessoas .
História
Os primeiros alicerces do que viria a ser a ciência da computação são anteriores à invenção do moderno computador digital . Máquinas para calcular tarefas numéricos fixos, tais como o ábaco , que já existiam desde a antiguidade. Wilhelm Schickard construiu a primeira calculadora mecânica em 1623. Charles Babbage projetou um motor de diferença na Tempos vitorianos (entre 1837 e 1901) ajudaram a por Ada Lovelace. Por volta de 1900, a IBM vendeu corporação máquinas de cartões perfurados. No entanto, todas essas máquinas foram obrigados a executar uma única tarefa, ou no melhor dos casos um subconjunto de todas as tarefas possíveis.
Durante a década de 1940, como máquinas de computação novos e mais poderosos foram desenvolvidos, o computador termo veio referir as máquinas ao invés de seus antecessores humanos. Quando se tornou evidente que os computadores poderiam ser usados para mais do que apenas cálculos matemáticos, o campo da ciência da computação ampliado para estudar computação em geral. Ciência da computação começou a ser estabelecida como uma disciplina acadêmica distinta na década de 1960, com a criação dos primeiros departamentos de ciência da computação e programas de graduação. Desde que os computadores práticos se tornaram disponíveis, muitas aplicações de computação tornaram-se áreas distintas de estudo em seu próprio direito.
Muitos inicialmente se acreditava impossível que "os próprios computadores poderia realmente ser um campo científico de estudo" (Levy 1984, p. 11), mas foi no "final dos anos cinquenta" (Levy 1984, p.11) que gradualmente tornou-se aceito entre da população académica superior. É a marca IBM agora bem conhecido que fazia parte da revolução da informática durante este tempo. 'IBM' (abreviação de International Business Machines) lançou o IBM 704 e mais tarde os 709 computadores IBM, que foram amplamente utilizados durante o período de exploração de tais dispositivos. "Ainda assim, trabalhando com a IBM [de computador] foi frustrante ... se você tivesse perdido tanto quanto uma letra em uma instrução, o programa iria falhar, e você teria que começar todo o processo novamente" (Levy 1984, p 0,13). Durante o final dos anos 1950, a disciplina de ciência da computação estava muito em seus estágios de desenvolvimento, e tais questões eram comuns.
Tempo tem visto melhorias significativas na usabilidade e eficácia da tecnologia informática. A sociedade moderna tem visto uma mudança significativa a partir de computadores a ser utilizado apenas por especialistas ou profissionais para uma base de usuários mais generalizada. Na década de 1990, os computadores passaram a ser aceitos como sendo a norma na vida cotidiana. Durante esse tempo, a entrada de dados foi um componente principal do uso de computadores, muitos preferem simplificar suas práticas de negócios através do uso de um computador. Isso também deu a vantagem adicional de eliminar a necessidade de grandes quantidades de documentação e arquivo de registros que consumiu espaço físico muito necessária dentro dos escritórios.
Principais realizações
Apesar da sua história relativamente curta como uma disciplina acadêmica formal, ciência da computação tem feito uma série de contribuições fundamentais para a ciência e sociedade . Estes incluem:
- Aplicações dentro ciência da computação
- A definição formal de computação e computability, ea prova de que existem computacionalmente insolúvel e problemas intratáveis.
- O conceito de linguagem de programação , uma ferramenta para a expressão exacta de informações metodológica em vários níveis de abstracção.
- Aplicações fora da computação
- Provocou a Revolução digital que conduziu à actual Era da Informação e da Internet .
- Em criptografia , quebrar a máquina Enigma era um fator importante que contribui para a vitória dos Aliados na Segunda Guerra Mundial.
- Computação científica habilitado estudo avançado da mente e do mapeamento do genoma humano foi possível com Projeto Genoma Humano. Projetos de computação distribuída como Folding @ home explorar dobramento de proteínas.
- Negociação algorítmica tem aumentado o e eficiência liquidez dos mercados financeiros, utilizando inteligência artificial, aprendizado de máquina e outra estatística e técnicas numéricas em grande escala.
Relação com outros campos
Apesar do nome, uma quantidade significativa de ciência da computação não envolve o estudo dos próprios computadores. Devido a isto, têm sido propostos vários nomes alternativos. Cientista dinamarquês Peter Naur sugerido o termo datalogy, de modo a reflectir o facto de a disciplina científica gira em torno de dados e os dados de tratamento, embora não necessariamente, envolvendo computadores. A primeira instituição científica de usar o termo foi o Departamento de Datalogy na Universidade de Copenhague, fundada em 1969, com Peter Naur ser o primeiro professor datalogy. O termo é usado principalmente nos países escandinavos. Além disso, nos primórdios da computação, uma série de termos para o e profissionais do campo da computação foram sugeridas na Comunicação são da ACM - turingineer, turologist, fluxogramas-man, aplicado meta-matemático, e epistemólogo aplicada . Três meses mais tarde, no mesmo jornal, comptologist foi sugerido, seguido do próximo ano por hypologist. Recentemente, os computics prazo tem sido sugerido. Informatik era um termo usado na Europa com mais frequência.
O renomado cientista da computação Edsger Dijkstra declarou: "A ciência da computação não é mais sobre computadores do que a astronomia é sobre telescópios." A concepção e implantação de computadores e sistemas de computador é geralmente considerada a província de outros do que ciência da computação disciplinas. Por exemplo, o estudo de hardware de computador é geralmente considerado parte da engenharia de computação, enquanto o estudo de comercial sistemas informáticos ea sua implantação é muitas vezes chamado tecnologia da informação ou sistemas de informação. Ciência da computação é por vezes criticada por ser insuficientemente científica, uma visão defendida na declaração "A ciência é a ciência da computação como hidrodinâmica é a canalização", creditado a Stan Kelly-Bootle e outros. No entanto, tem havido muita fertilização cruzada de idéias entre as várias disciplinas relacionadas com o computador. Pesquisa de ciência da computação também tem muitas vezes cruzou para outras disciplinas, tais como ciência cognitiva, economia , matemática , física (veja computação quântica ), e lingüística .
Ciência da computação é considerado por alguns de ter uma relação muito mais próxima com a matemática do que muitas disciplinas científicas. Ciência da computação cedo foi fortemente influenciada pelo trabalho de matemáticos como Kurt Gödel e Alan Turing , e continua a haver um intercâmbio de ideias útil entre os dois campos em áreas como lógica matemática, teoria da categoria, teoria do domínio, e álgebra .
A relação entre ciência da computação e engenharia de software é uma questão controversa, que é ainda mais enlameada por disputas sobre o que o termo "engenharia de software" significa, e como ciência da computação é definido. David Parnas, tendo um taco de a relação entre outras disciplinas de engenharia e ciência, afirmou que o foco principal da ciência da computação está estudando as propriedades de computação em geral, enquanto o principal foco de engenharia de software é o projeto de cálculos específicos para alcançar prática objetivos, tornando as duas disciplinas distintas, mas complementares.
Os, políticas e aspectos de financiamento acadêmicas de ciência da computação tendem a ter raízes quanto a saber se um departamento em os EUA formado com qualquer uma ênfase matemática ou uma ênfase engenharia. Em geral, os departamentos de ciência da computação baseada em engenharia elétrica tendem a ter sucesso como ciência da computação e / ou departamentos de engenharia. Departamentos de ciência da computação com ênfase matemática e com uma orientação numérica considerar alinhamento ciência computacional. Ambos os tipos de serviços tendem a fazer esforços no sentido de colmatar o campo educacional se não for através de toda a investigação.
Os campos da ciência da computação
Ciência da computação procura por conceitos e provas formais para explicar e descrever sistemas computacionais de interesse. Tal como acontece com todas as ciências, estas teorias pode então ser utilizada para sintetizar aplicações práticas de engenharia, que por sua vez pode sugerir novos sistemas a serem estudadas e analisadas. Enquanto o ACM Computing Classification System pode ser usado para dividir-se em ciência da computação diferentes temas de campos, uma repartição mais descritivo seguinte forma:
Fundamentos matemáticos
- Lógica matemática
- A lógica booleana e outras formas de modelagem de consultas lógicas; os usos e limitações dos métodos de prova formal.
- Teoria dos números
- Teoria das provas e heurísticas para encontrar provas no simples domínio de inteiros. Usado em criptografia , bem como um domínio de teste em inteligência artificial.
- A teoria dos grafos
- Bases para estruturas de dados e algoritmos de busca.
- Tipo teoria
- A análise formal dos tipos de dados, e o uso destes tipos de compreender as propriedades de programas, em especial programas de segurança.
- Teoria Categoria
- Categoria teoria fornece um meio de capturar todos matemática e computação em uma única síntese.
- Geometria computacional
- O estudo de algoritmos para resolver os problemas indicados em termos de geometria .
- Análise numérica
- Fundações de algoritmos em matemática discreta, bem como o estudo das limitações do ponto flutuante computação, incluindo erros de arredondamento.
Teoria da Computação
- Teoria de autômatos
- Diferentes estruturas lógicas para resolver problemas.
- Teoria da computabilidade
- O que é calculável com os atuais modelos de computadores. As provas desenvolvidas por Alan Turing e outros fornecem uma visão sobre as possibilidades do que pode ser computado eo que não pode.
- Teoria da complexidade computacional
- Limites fundamentais (especialmente tempo e espaço de armazenamento) em classes de cálculos; na prática, estudo de problemas que um computador pode resolver com recursos razoáveis (enquanto os estudos de teoria da computabilidade que os problemas podem ser resolvidos em tudo).
- Teoria computação quântica
- Representação e manipulação de dados usando as propriedades quânticas de partículas e mecanismo quântico.
Algoritmos e estruturas de dados
- Análise de algoritmos
- Tempo e espaço complexidade de algoritmos.
- Algoritmos
- Os processos formais lógicos usados para a computação ea eficiência desses processos.
Linguagens de programação e compiladores
- Compiladores
- Maneiras de traduzir programas de computador, geralmente a partir de linguagens de alto nível para os de nível mais baixo.
- Intérpretes
- Um programa que tem como entrada em um programa de computador e executa-lo.
- Linguagens de programação
- Paradigmas de linguagem formais para expressar algoritmos, e as propriedades de línguas (por exemplo, quais os problemas que eles são adequados para resolver).
E sistemas concorrentes, paralelas, distribuídas
- Simultaneidade
- A teoria ea prática da computação simultânea; segurança de dados em qualquer ambiente multitarefa ou vários segmentos.
- A computação distribuída
- Calculando o uso de vários dispositivos de computação através de uma rede para realizar um objetivo comum ou tarefa e reduzindo assim a latência envolvida em contribuições de processador único para qualquer tarefa.
- A computação paralela
- Computação utilizando múltiplas threads simultâneos de execução.
Engenharia de software
- Projeto Algoritmo
- Usando idéias da teoria algoritmo para projetar criativamente soluções para tarefas reais
- Programação de computador
- A prática de usar uma linguagem de programação para implementar algoritmos
- Os métodos formais
- Abordagens matemáticas para descrever e raciocinar sobre projetos de software.
- Engenharia reversa
- A aplicação do método científico para a compreensão do software arbitrário existente
- Desenvolvimento de software
- Os princípios ea prática de projetar, desenvolver e testar os programas, bem como práticas de engenharia adequadas.
Arquitetura do sistema
- Arquitetura de computadores
- A concepção, organização, otimização e verificação de um sistema de computador, principalmente sobre CPUs e subsistemas de memória (eo ônibus conectando-os).
- Organização de computadores
- A implementação de arquiteturas de computadores, em termos de descrições de sua específica circuitos eléctricos
- Sistemas operacionais
- Sistemas de gestão de programas de computador e fornecer a base de um sistema utilizável.
Comunicações
- Áudio do computador
- Algoritmos e estruturas de dados para a criação, manipulação, armazenamento e transmissão de gravações de áudio digitais. Também importante na aplicações de reconhecimento de voz.
- Networking
- Algoritmos e protocolos para a comunicação de dados através de diferentes meios de comunicação compartilhados ou dedicados, muitas vezes incluindo correcção de erros.
- Cryptography
- Aplica-se os resultados de complexidade, probabilidade e teoria dos números de inventar e códigos de quebrar.
Bases de dados
- Mineração de dados
- A mineração de dados é a extração de dados relevantes de todas as fontes de dados.
- Bancos de dados relacionais
- Estudo de algoritmos para pesquisa e processamento de informações em documentos e bases de dados; intimamente relacionado com recuperação de informação.
- OLAP
- Online Analytical Processing, ou OLAP, é uma abordagem para fornecer rapidamente respostas a consultas analíticas que são multi-dimensional na natureza. OLAP é parte da categoria mais ampla inteligência de negócios, que também engloba relatórios relacionais e mineração de dados.
Inteligência artificial
- Inteligência artificial
- A implementação eo estudo de sistemas que apresentam uma inteligência autônoma ou o comportamento dos seus próprios.
- Vida artificial
- O estudo de organismos digitais para aprender sobre sistemas biológicos e evolução.
- Raciocínio automatizado
- Solução de motores, tais como os usados em Prolog, que produzem passos para um resultado dado uma consulta em um banco de dados de fato e de regra.
- Visão computacional
- Algoritmos para identificação de objetos tridimensionais a partir de uma ou mais duas imagens tridimensionais.
- Aprendizado de máquina
- Criação automática de um conjunto de regras e axiomas com base na entrada.
- Processamento de linguagem natural / Linguística Computacional
- Compreensão e geração automatizada de linguagem humana
- Robótica
- Algoritmos para controlar o comportamento dos robôs.
Renderização visual (ou gráficos de computador)
- Gráficos de computador
- Algoritmos tanto para a geração de imagens visuais sinteticamente, e para a integração ou alterar a informação visual e espacial amostrada no mundo real.
- Processamento de imagem
- Determinando as informações de uma imagem através de computação.
Interação Humano-Computador
- Interação homem-computador
- O estudo da tomada de computadores e cálculos úteis, utilizáveis e universalmente acessível para pessoas, incluindo o estudo e projeto de interfaces de computador através do qual as pessoas usam computadores.
Computação científica
- Bioinformática
- O uso da informática para manter, analisar e armazenar dados biológicos, e para auxiliar na resolução de problemas biológicos, tais como dobramento de proteínas, previsão e função filogenia.
- Ciência Cognitiva
- Modelagem computacional de mentes reais
- Química computacional
- Modelagem computacional de química teórica, a fim de determinar as estruturas químicas e as propriedades
- Neurociência computacional
- Modelagem computacional de cérebros reais
- Física Computacional
- As simulações numéricas de grandes sistemas não-analíticos
- Algoritmos numéricos
- Algoritmos para a solução numérica de problemas matemáticos, tais como -finding raiz, a integração , a solução de equações diferenciais ordinárias ea aproximação / avaliação funções especiais.
- Matemática simbólica
- Manipulação e solução de expressões em forma simbólica, também conhecido como Álgebra computacional.
Didática da ciência da computação / informática
A didática subcampo da ciência da computação concentra-se em abordagens cognitivas de desenvolvimento de competências de ciência da computação e estratégias específicas para análise, projeto, implementação e avaliação das excelentes lições de ciência da computação.
Educação ciência da computação
Algumas universidades ensinam ciência da computação como um estudo teórico da computação e do raciocínio algorítmico. Estes programas, muitas vezes apresentam o teoria da computação, análise de algoritmos, métodos formais, teoria de simultaneidade, bases de dados, computação gráfica e análise de sistemas, entre outros. Eles geralmente também ensinar programação de computadores , mas tratá-lo como um vaso para o apoio de outros campos da ciência da computação, em vez de um foco central de estudo de alto nível.
Outras faculdades e universidades, bem como escolas secundárias e programas de formação profissional que ensinam ciência da computação, enfatizam a prática de técnicas avançadas de programação de computadores , em vez de a teoria de algoritmos e computação em seus currículos de ciência da computação. Tais currículos tendem a concentrar-se nas habilidades que são importantes para os trabalhadores que entram indústria de software. Os aspectos práticos da programação de computador são muitas vezes referidas como engenharia de software. No entanto, existe uma grande quantidade de desacordo sobre o que o termo "engenharia de software" significa realmente, e se é a mesma coisa que a programação.