Ciência da Computação
Ciência da computação é o estudo da computação, automação e informação. A ciência da computação abrange disciplinas teóricas (como algoritmos, teoria da computação, teoria da informação e automação) para disciplinas práticas (incluindo o design e implementação de hardware e software). A ciência da computação é geralmente considerada uma disciplina acadêmica e distinta da programação de computadores, que é considerada um campo técnico.
Algoritmos e estruturas de dados são fundamentais para a ciência da computação. A teoria da computação diz respeito a modelos abstratos de computação e classes gerais de problemas que podem ser resolvidos usando-os. Os campos da criptografia e da segurança informática envolvem o estudo dos meios de comunicação segura e de prevenção de vulnerabilidades de segurança. A computação gráfica e a geometria computacional abordam a geração de imagens. A teoria da linguagem de programação considera diferentes maneiras de descrever processos computacionais, e a teoria de banco de dados diz respeito ao gerenciamento de repositórios de dados. A interação humano-computador investiga as interfaces por meio das quais humanos e computadores interagem, e a engenharia de software se concentra no design e nos princípios por trás do desenvolvimento de software. Áreas como sistemas operacionais, redes e sistemas embarcados investigam os princípios e o design por trás de sistemas complexos. Arquitetura de computador descreve a construção de componentes de computador e equipamentos operados por computador. A inteligência artificial e o aprendizado de máquina visam sintetizar processos orientados a objetivos, como resolução de problemas, tomada de decisão, adaptação ambiental, planejamento e aprendizado encontrados em humanos e animais. Dentro da inteligência artificial, a visão computacional visa entender e processar dados de imagem e vídeo, enquanto o processamento de linguagem natural visa entender e processar dados textuais e linguísticos.
A preocupação fundamental da ciência da computação é determinar o que pode e o que não pode ser automatizado. O Prêmio Turing é geralmente reconhecido como a mais alta distinção em ciência da computação.
História
Os primeiros fundamentos do que viria a ser 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, auxiliando em cálculos como multiplicação e divisão. Algoritmos para realizar cálculos existem desde a antiguidade, mesmo antes do desenvolvimento de sofisticados equipamentos de computação.
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 várias razões, incluindo o fato de ter documentado o sistema numérico binário. 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 suficientemente forte e confiável para ser usada diariamente em um ambiente de escritório. Charles Babbage iniciou o projeto da primeira calculadora mecânica automática, sua Difference Engine, em 1822, que eventualmente lhe deu a ideia da primeira calculadora mecânica programável, sua Analytical Engine. Ele começou a desenvolver esta máquina em 1834 e "em menos de dois anos, ele esboçou muitos dos recursos mais importantes do computador moderno". "Um passo crucial foi a adoção de um sistema de cartões perfurados derivado do tear Jacquard" tornando-o infinitamente programável. Em 1843, durante a tradução de um artigo francês sobre o Analytical Engine, 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; eventualmente sua empresa tornou-se parte da IBM. Seguindo Babbage, embora sem saber de seu trabalho anterior, Percy Ludgate em 1909 publicou o segundo dos dois únicos projetos de motores mecânicos analíticos da história. Em 1937, cem anos após o sonho impossível de Babbage, Howard Aiken convenceu a IBM, que fabricava todos os tipos de equipamentos para cartões perfurados e também estava no ramo de calculadoras, a desenvolver sua gigantesca calculadora programável, a ASCC/Harvard Mark I, baseado no Analytical Engine de Babbage, que usava cartões e uma unidade de computação central. Quando a máquina foi concluída, alguns a saudaram como "o sonho de Babbage tornado 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 em vez de seus predecessores humanos. Como 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 Laboratório de Computação Científica Watson na Universidade de Columbia, em Nova York. A renovada casa da fraternidade 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, a estreita relação entre a IBM e a Columbia University 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. A ciência da computação começou a se estabelecer como uma disciplina acadêmica distinta em década de 1950 e início dos anos 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 computadores práticos tornou-se disponível, muitas 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 em Communications of the ACM, em que 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. Louis justifica o nome argumentando que, assim como a ciência da administração, a disciplina é aplicada e interdisciplinar por natureza, embora tenha as características típicas de uma disciplina acadêmica. Seus esforços, e os de outros como o analista numérico George Forsythe, foram recompensados: as universidades criaram tais departamentos, começando com Purdue em 1962. Apesar de seu nome, uma parte significativa da 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, justamente para enfatizar essa diferença. O cientista dinamarquês Peter Naur sugeriu o termo datalogy, 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 Copenhague, fundado em 1969, sendo Peter Naur o primeiro professor de datalogia. O termo é usado principalmente nos países escandinavos. Um termo alternativo, também proposto por Naur, é ciência de dados; isso agora é usado para um campo multidisciplinar de análise de dados, incluindo estatísticas e bancos de dados.
Nos primórdios da computação, vários termos para os praticantes da área de computação foram sugeridos nas Communications of the ACM—turingineer, turologista, homem dos fluxogramas, metamatemático aplicado e epistemólogo aplicado. Três meses depois, no mesmo periódico, foi sugerido comptologista, seguido no ano seguinte por hipologista. O termo computics 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 freqüentemente usados, por ex. informatique (francês), Informatik (alemão), informatica (italiano, holandês), informática (espanhol, português), informatika (línguas eslavas e húngaro) ou pliroforiki (πληροφορική, 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, no entanto, a informática está ligada à computação aplicada, ou à computação no contexto de outro domínio."
Uma citação folclórica, muitas vezes atribuída a - mas quase certamente não formulada pela primeira vez por - Edsger Dijkstra, afirma que "a ciência da computação não é mais sobre computadores do que a astronomia é sobre 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 é frequentemente chamado de tecnologia da informação ou sistemas de informação. No entanto, tem havido troca de ideias entre as várias disciplinas relacionadas com a informática. A pesquisa em ciência da computação também frequentemente cruza outras disciplinas, como ciência cognitiva, linguística, matemática, física, biologia, ciências da Terra, estatística, filosofia 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 confusa por disputas sobre o que o termo "Engenharia de Software" significa e como a ciência da computação é definida. David Parnas, seguindo uma 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 computações específicas para alcançar resultados práticos. 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 se um departamento é formado com ênfase matemática ou com ênfase em engenharia. Os departamentos de ciência da computação com ênfase em matemática e com orientação numérica consideram o alinhamento com a ciência computacional. Ambos os tipos de departamentos tendem a se esforçar para unir o campo educacionalmente, se não em 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 de ciência, matemática ou engenharia. Allen Newell e Herbert A. Simon discutiram em 1975,
A ciência da computação é uma disciplina empírica. Teríamos chamado de ciência experimental, mas como astronomia, economia e 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, eles são experiências. Cada nova máquina que é construída é uma experiência. Na verdade, a construção da máquina coloca uma questão à natureza; e escutamos 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, argumenta-se que a ciência da computação pode ser classificada como uma ciência empírica, pois faz uso de testes empíricos para avaliar a correção dos programas, mas permanece um problema na definição das leis e teoremas da ciência da computação (se houver) e definir a 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 pontes na engenharia civil e 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 adequada foi encontrada na ciência da computação e, em vez disso, ela se preocupa 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 raciocinados dedutivamente 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 matemáticos axiomá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 os descreveu como o "paradigma racionalista" (que trata a ciência da computação como um ramo da matemática, que prevalece na ciência da computação teórica e emprega principalmente o raciocínio dedutivo), o "paradigma tecnocrático" (que pode ser encontrado em abordagens de engenharia, principalmente na engenharia de software), e o "paradigma científico" (que aborda artefatos relacionados à computação sob a 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 design, especificação, programação, verificação, implementação e teste de sistemas de computação feitos pelo homem.
Campos
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é questões práticas de implementação de sistemas de computação em hardware e software. A CSAB, anteriormente chamada de Computing Sciences Accreditation Board – formada 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: < i>teoria da 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, rede 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.
A ciência da computação não é mais sobre computadores do que a astronomia é sobre telescópios.
—Edsger Dijkstra
Ciência da computação teórica
ACiê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 é entender 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 está focada em responder a questões fundamentais sobre o que pode ser computado e qual a quantidade de recursos 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, é um problema aberto na teoria da computação.
Teoria de Automata | Línguas formais | Teoria da computação | Teoria da complexidade computacional |
Modelos de computação | Teoria da computação quântica | Teoria do circuito lógico | Automatização celular |
Informação e teoria da codificação
A teoria da informação, intimamente relacionada com a probabilidade e a estatística, está relacionada com a quantificação da informação. Isso foi desenvolvido por Claude Shannon para encontrar limites fundamentais em operações de processamento de sinal, 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 compactaçã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.
Teoria da codificação | Capacidade de canal | Teoria da informação algorítmica | Teoria da detecção de sinais | 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(n2) | |||||
Análise de algoritmos | Design de algoritmos | Estruturas de dados | Otimização combinada | Geometria computacional | Algoritmos aleatórios |
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 a matemática, a engenharia de software e a lingüí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 na matemática para a especificação, desenvolvimento e verificação de sistemas de software e hardware. A utilização de métodos formais para projeto de software e hardware é motivada pela expectativa de que, assim como em outras disciplinas da engenharia, a realização de análises matemáticas apropriadas 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 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 críticos de alta integridade e vida, onde a segurança é de extrema importância. Métodos formais são melhor descritos como a aplicação de uma ampla variedade de fundamentos teóricos da ciência da computação, em particular cálculo lógico, linguagens formais, teoria de autômatos e semântica de programa, mas também sistemas de tipos e tipos de dados algébricos a problemas de especificação de software e hardware e verificação.
Semântica formal | Teoria do tipo | Design de compiladores | Linguagens de programação | Verificação formal | Prova de teorema automatizada |
Ciência da computação aplicada
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 imagem e geometria computacional, e é fortemente aplicado nas áreas de efeitos especiais e videogames.
Gráficos de computador 2D | Animação por computador | Renderização | Realidade mista | Realidade virtual | Modelagem sólida |
Processamento de imagem e som
A informação pode assumir a forma de imagens, som, vídeo ou outro multimédia. Bits de informação podem ser transmitidos por meio de sinais. Seu processamento é a noção central da informática, a visão europeia da computação, que estuda os algoritmos de processamento da informação independentemente do tipo de portador da informação - se é elétrico, mecânico ou biológico. Este campo desempenha um papel importante 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 outros. 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.
Algoritmos FFT | Processamento de imagens | Reconhecimento da fala | Compressão de dados | Computação de imagem médica | Síntese da fala |
Ciências computacionais, finanças e engenharia
A computação científica (ou ciência computacional) é o campo de estudo preocupado 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 (principalmente 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.
Análise numérica | Física computacional | Química computacional | Bioinformática | Neuroinformática | Psicoinformática | Informática médica | Engenharia computacional | Música 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
A engenharia de software é o estudo de projetar, implementar e modificar o software para garantir que seja de alta qualidade, acessível, fácil de manter e rápido de construir. É uma abordagem sistemática para o 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 fabricação de um novo software, mas com seu arranjo interno e manutenção. Por exemplo, teste de software, engenharia de sistemas, dívida técnica e processos de desenvolvimento de software.
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ões, adaptação ambiental, aprendizado 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 ciências sociais. inteligência. A IA é 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 questão permanece efetivamente sem resposta, embora o teste de Turing ainda seja usado para avaliar a saída do computador na escala de 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 a intervenção em domínios de aplicativos de computador envolvendo dados complexos do mundo real.
Sistemas de computador
Arquitetura e organização de computadores
Arquitetura de computador, ou organização de computador digital, é 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 funciona internamente e acessa os endereços na memória. Engenheiros de computação estudam lógica computacional e design de hardware de computador, desde componentes individuais de processadores, microcontroladores, computadores pessoais até supercomputadores e sistemas embarcados. O termo "arquitetura" na literatura de informática pode ser rastreada até o 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.
Computação simultânea, paralela e distribuída
A simultaneidade é uma propriedade dos sistemas em que várias computações são executadas simultaneamente e potencialmente interagem umas com as outras. Vários modelos matemáticos foram desenvolvidos para computação concorrente geral, incluindo redes de Petri, cálculos de processo e o modelo Parallel Random Access Machine. Quando vários computadores estão conectados em uma rede usando simultaneidade, isso é conhecido como um sistema distribuído. Os computadores 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 computadores
Segurança de computador é um ramo da tecnologia de computador com o objetivo de proteger informações contra acesso não autorizado, interrupção ou modificação, mantendo a acessibilidade e usabilidade do sistema para seus usuários pretendidos.
A criptografia histórica é a arte de escrever e decifrar mensagens secretas. A criptografia moderna é o estudo científico de problemas relacionados a computações distribuídas que podem ser atacadas. As tecnologias estudadas na criptografia moderna incluem criptografia simétrica e assimétrica, assinaturas digitais, funções hash criptográficas, protocolos de acordo de chave, blockchain, provas de conhecimento zero e circuitos ilegíveis.
Bancos de dados e mineração de dados
Um banco de dados destina-se a organizar, armazenar e recuperar grandes quantidades de dados facilmente. 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.
Descobertas
O filósofo da computação Bill Rapaport observou três Grandes insights da ciência da computação:
- Gottfried Wilhelm Leibniz, George Boole's, Alan Turing's, Claude Shannon's e Samuel Morse's insight: há apenas dois objetos que um computador tem que lidar com a fim de representar "qualquer coisa".
- Todas as informações sobre qualquer problema computável podem ser representadas usando apenas 0 e 1 (ou qualquer outro par bistable que pode flip-flop entre dois estados facilmente distinguíveis, como "on/off", "magnetized/de-magnetized", "high-voltage/low-voltage", etc.).
- A visão de Alan Turing: há apenas 5 acções que um computador tem que executar para fazer "qualquer coisa".
- Cada algoritmo pode ser expresso em uma linguagem para um computador que consiste em apenas cinco instruções básicas:
- mover esquerda um local;
- mover para a direita um local;
- ler símbolo no local atual;
- imprimir 0 no local atual;
- imprimir 1 no local atual.
- Cada algoritmo pode ser expresso em uma linguagem para um computador que consiste em apenas cinco instruções básicas:
- A percepção de Corrado Böhm e Giuseppe Jacopini: há apenas três formas de combinar estas ações (em mais complexos) 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 mais complexos:
- sequência: primeiro faça isso, então faça isso;
- seleção: Se tal e tal for o caso, ELSE faz isso;
- repetição: Quando tal e tal for o caso, faça isso.
- Note que as três regras da visão de Boehm e Jacopini podem ser mais simplificadas com o uso de goto (o que significa que é mais elementar do que a programação estruturada).
- Apenas três regras são necessárias para combinar qualquer conjunto de instruções básicas em mais complexos:
Paradigmas de programação
As 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 elementos de programas de computador que trata a computação como a avaliação de funções matemáticas e evita dados estaduais e mutáveis. É um paradigma de programação declarativa, o que significa que a programação é feita com expressões ou declarações em vez de declarações.
- Programação imperativa, um paradigma de programação que usa declarações que mudam o estado de um programa. Da mesma forma que o humor imperativo em línguas naturais expressa comandos, um programa imperativo consiste em comandos para o computador executar. A programação imperativa se concentra em descrever como um programa funciona.
- Programação orientada a objetos, um paradigma de programação baseado no conceito de "objetos", que pode conter dados, na forma de campos, muitas vezes conhecidos como atributos; e código, na forma de procedimentos, muitas vezes conhecidos como métodos. Uma característica dos objetos é que os procedimentos de um objeto podem acessar e muitas vezes modificar os campos de dados do objeto com o qual estão associados. Assim, programas de computador orientados a objetos são feitos de objetos que interagem uns com os outros.
- Programação orientada para o serviço, um paradigma de programação que usa "serviços" como unidade de trabalho de computador, para projetar e implementar aplicativos de negócios integrados e programas de software crítico de missão
Muitos idiomas oferecem suporte para vários paradigmas, tornando a distinção mais uma questão de estilo do que de capacidade técnica.
Pesquisa
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 trabalhos em conferências é maior do que as publicações em periódicos. Uma explicação proposta para isso é que o rápido desenvolvimento desse campo relativamente novo requer revisão e distribuição rápidas de resultados, uma tarefa melhor realizada por conferências do que por periódicos.
Educação
Ciência da Computação, conhecida por seus quase sinônimos, Computação, Estudos da Computação, tem sido ensinada nas escolas do Reino Unido desde os dias do processamento em lote, marque cartões e fitas de papel sensíveis, 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 de nível GCE O (11 a 16 anos) e Ciência da Computação para alunos de nível A. A sua importância foi reconhecida e tornou-se parte obrigatória do Currículo Nacional, para o Key Stage 3 & 4. Em setembro de 2014 passou a ser direito de todos os alunos a partir dos 4 anos.
Nos EUA, 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 educacionais significativos para a ciência da computação no ensino médio. De acordo com um relatório de 2021, apenas 51% das escolas de ensino médio nos EUA oferecem ciência da computação.
Israel, Nova Zelândia e Coréia do Sul incluíram a ciência da computação em seus currículos nacionais de educação secundária, e vários outros estão seguindo.
Contenido relacionado
Disquete
Sistema de Sinalização de Rede Privada Digital
Dados Gerais Nova