Algoritmos, Programas e Máquinas
O que é Computação?
- Computação não é sobre computadores, mas sobre processamento de informação
- A Computação é a ciência de resolução de problemas
- A ferramenta universal que usamos para resolver esses problemas é a máquina de processar informação, os computadores.
O que é Ciência da Computação
- Estudo sistemático e teórico dos processos algorítmicos que descrevem e transformam a informação
- Abrange a teoria da computação, o projeto e a arquitetura de sistemas de computação e o desenvolvimento de software e hardware.
- Em termos simples:
- É a arte e a ciência de resolver problemas através da criação de algoritmos (sequências lógicas de passos) e da programação de máquinas (computadores) para uma execução rápida e eficiente.
O que são Sistemas de Informação?
- Sistemas de Informação (SI) são muito mais do que apenas softwares ou computadores
- Representam um campo do conhecimento e um conjunto de componentes essenciais para o funcionamento e a estratégia de qualquer organização moderna.
- Numa definição mais abrangente, um Sistema de Informação é um conjunto organizado de elementos inter-relacionados que trabalham juntos para coletar, processar, armazenar e distribuir dados e informações, apoiando as operações, a gestão e o processo de tomada de decisão dentro de uma organização.
Resumo
- A chave para o processamento da informação reside em três conceitos interligados:
- Algoritmo: A ideia de como resolver. (O "o quê" e "como").
- Programa: A tradução dessa ideia para a máquina. (O "código").
- Máquina: O executor da tradução. (O "hardware").
Foco Principal
- Enquanto outros campos de TI (Tecnologia da Informação) podem focar em aspectos práticos (como sistemas de informação ou engenharia de hardware), a Ciência da Computação possui um forte embasamento teórico e matemático.
- Seus principais focos incluem:
- Teoria da Computação: Estudo dos limites e possibilidades da computação (o que pode ou não ser resolvido por um computador).
- Algoritmos e Estruturas de Dados: O desenvolvimento de receitas eficientes para processar informações.
- Linguagens de Programação: A criação e o estudo de linguagens que permitem a comunicação com o computador.
- Arquitetura de Sistemas: Entendimento de como o hardware e o software se organizam para formar sistemas funcionais.
O Conceito Fundamental: O Algoritmo
- O algoritmo é a base de tudo
- É uma receita, um passo a passo finito e não ambíguo para resolver um problema.
- Definição:
- É uma sequência finita e ordenada de passos que resolve um problema específico.
- Analogia:
- Instrução
- Cada passo do manual
- Ex: "Prenda a peça 'A' na peça 'B' usando o parafuso '1'"
- Uma instrução clara e não ambígua
- Ex: "Prenda a peça 'A' na peça 'B' usando o parafuso '1'"
- Cada passo do manual
- Ordem
- A ordem sequencial dos passos
- Se você prender o puxador antes de montar a gaveta, o resultado será um erro
- O algoritmo deve ser seguido na ordem exata para ser correto
- Se você prender o puxador antes de montar a gaveta, o resultado será um erro
- A ordem sequencial dos passos
- Finitude
- O manual tem um número limitado de passos
- A montagem tem um fim
- Um algoritmo não pode ser um processo infinito
- A montagem tem um fim
- O manual tem um número limitado de passos
- Entrada (Input)
- A caixa de peças, parafusos, porcas, etc
- Os dados brutos que o algoritmo deve processar
- Dados de entrada serão processados
- Os dados brutos que o algoritmo deve processar
- A caixa de peças, parafusos, porcas, etc
- Saída (Output)
- O móvel montado e funcional
- A solução correta e esperada do problema
- O resultado final é o que se esperava no início.
- A solução correta e esperada do problema
- O móvel montado e funcional
- Instrução
Abstração
- Algoritmos não precisam de computadores. Eles existiam na matemática (Euclides) muito antes da eletricidade. Eles são uma entidade abstrata e universal.
- De Algoritmos a Programas
- Se o algoritmo é uma receita, o programa é a receita escrita em uma linguagem que o cozinheiro (a máquina) entende.
- Definição:
- Um programa é a implementação formal de um ou mais algoritmos, escrita em uma linguagem de programação específica.
- O Papel da Linguagem:
- Pense em traduzir a receita de bolo do português para o "linguajar" da sua máquina (Python, Java, etc.). Cada linguagem tem suas regras (sintaxe).
- Instruções e Dados:
- O programa manipula dados (ingredientes) seguindo instruções (passos da receita).
A História das Máquinas de Processar Informação
- Como a Máquina evoluiu para executar nossos Programas?
- Níveis e Funções
- Aplicação/Usuário
- Resolver o problema final do usuário
- Um aplicativo de streaming
- Spotify, Netflix
- Um aplicativo de streaming
- Resolver o problema final do usuário
- Software de Sistema
- Gerenciar recursos e fornecer serviços ao software de aplicação.
- Sistema Operacional
- Windows, Linux, iOS
- Sistema Operacional
- Gerenciar recursos e fornecer serviços ao software de aplicação.
- Linguagens de Máquina
- Conjunto de instruções binárias diretas (0s e 1s) que o processador entende
- Código binário bruto
- Conjunto de instruções binárias diretas (0s e 1s) que o processador entende
- Hardware
- Executar fisicamente as instruções binárias
- CPU (Processador), Memória (RAM), Placa- Mãe.
- Executar fisicamente as instruções binárias
- O Loop Fechado:
- Você usa um Programa (Aplicação).
- O Sistema Operacional traduz as requisições em comandos.
- O Hardware (CPU) executa esses comandos como operações elétricas.
- O resultado, correto e eficiente, retorna ao usuário.
- Ponto-chave: Um bom cientista de computação entende que precisa de um bom algoritmo (ideia), traduzido em um bom programa (código) para ser executado em uma boa máquina (hardware/sistema operacional). A falha em qualquer nível (como vimos nos casos de corretude, confiabilidade ou eficiência) compromete a qualidade final.
- Conclusão
- Computação é Engenharia de Abstração: Você aprende a transformar uma ideia abstrata (algoritmo) em uma solução concreta (programa) que é executada por física pura (máquina).
- Questões:
- Qual é a diferença mais crucial entre um Algoritmo e um Programa?
- Qual invenção tecnológica vocês consideram o ponto de virada definitivo na história da computação?
