Computador é uma máquina que chaveia eletricidade.
Atualmente
os computadores mais comuns são elétricos e digitais. Parece "óbvio" ou
"desnecessário" escrever isso, mas houve muitos projetos de máquinas
antes de chegar-se ao atual.
As primeiras máquinas de
calcular eram mecânicas e o primeiro computador projetado (a máquina
analítica de Babbage, no séc. XIX: http://en.wikipedia.org/wiki/Analytical_Engine) era mecânica e era capaz de executar qualquer
algoritmo que uma máquina moderna executaria.
Antes que
os computadores digitais se estabelecessem, houve pesquisa também em
computadores analógicos. Componentes como capacitores e indutores servem
como integradores e diferenciadores, e por isso podem ser usados para
cálculos avançados (ACH2011) e também aritmética. O desenvolvimento dessa
tecnologia foi mais lento que o da digital pois dependia da construção
de componentes muito precisos e com perdas pequenas ou conhecidas
(teoricamente um computador deste tipo faria cálculos com
precisão infinita, o que os computadores atuais não são capazes de fazer).
Estreitando nos computadores atuais, (aproveitando parte do post sobre compiladores), eles chaveiam eletricidade de
forma que passe ou não corrente em condutores, ou haja (ou não) tensão
elétrica sobre componentes. Por facilidade de implementação, apenas dois
símbolos são "permitidos" sobre cada condutor ou sobre cada componente.
O ser humano atribui significado ou interpretação aos circuitos e símbolos. A utilizada: um condutor ou um componente corresponde a um dígito. Passa corrente corresponde a
"1", não passa corresponde a "0". Criou-se um dígito binário (bit).
Concatenando bits independentes formam-se sequências de bits, por
exemplo "10100111". Nota: juntando afirmações "óbvias" a conclusão pode não ser tão óbvia assim...XD
Aí entra outra
invenção humana: a matemática: Digamos que esta sequência de símbolos
representa um número na base binária. Como os bits são independentes, então todas as combinações de sequencias binárias podem ser representadas*.
Existe uma teoria que permite
converter números de uma base para outra, e outra que define operações lógicas,
aritméticas e relacionais,... inclusive operações aritméticas podem ser construídas a partir de operações lógicas (Veja aritmética na base binária).
Ao circuito podemos acrescentar um outro número, que codifica a operação. Temos três números:A Op B onde A e B são operandos e Op é uma operação: Se Op={0:soma, 1:subtração, 2: multiplicação, 3: divisão}. Por exemplo 5 2 3 é o produto de 5 por 3. Caso você queira saber como é esse circuito: http://en.wikipedia.org/wiki/74181
Sendo muito simplista, juntando a máquina elétrica, a interpretação dos sinais em números binários, aritmética e conversão entre bases temos uma calculadora que pode até ser decimal!
Sofisticando um pouco esta máquina:
Acrescente memória. Memória é um componente elétrico que armazena o sinal que foi escrito. Uma memória de 1 bit armazena ou 0 ou 1 em seu dígito. Novamente podemos concatenar bits de memória e fazê-la armazenar um número. Podemos também concatenar muitas memórias de um número e construir bancos de memória para muitos números... acessamos cada número por seu endereço (que é outro número). Esse componente suporta as operações "armazene DDDD no endereço AAAAA", e "recupere o que está gravado no endereço AAAAA".
Na memória são armazenados tanto programas quando dados. A interpretação é posicional, sendo que o número armazenado na posição zero é um comando.Supondo que o programa já está na memória, apertar um botão (convencionalmente o reset) faz a máquina começar a executar que estiver na memória a partir da posição zero. A execução é sequencial: lê o comando na posição zero, lê o operando na posição 1, lê outro operando na posição 2, executa o comando, lê o próximo comando na posição 3, ....
Acrescente comandos para testar valores armazenados na memória e "saltar" para executar a partir de outra posição de memória.
Isso é tudo o que um computador faz (e é tudo o que uma máquina precisa fazer para ser um computador). Se quiser ver que comandos foram adicionados, veja o primeiro microprocessador da intel http://en.wikipedia.org/wiki/Intel_4004 e baixe seu datasheet.
Se quiser programar em linguagem de máquina, existe um simulador chamado HIPO http://hipo.sourceforge.net/. Ele foi desenvolvido para que estudantes de ciência da computação aprendam o que é programar em linguagem de máquina e não é um 4004 (se vc conhece o brinquedo Genius, ele usa um 4004).
Um modelo (modelos são
simplificações) útil para um computador é o de Von Neumann. Nele o
computador tem três partes interligadas: O processador, a memória e o
dispositivo de entrada e saída (a maneira como esses blocos são
conectados, por exemplo os circuitos, são abstraídos nesse modelo).
http://en.wikipedia.org/wiki/Von_Neumann_architecture
O modelo de computador usado para explorar matematicamente a capacidade desse tipo de máquina é a máquina de Turing. O modelo é simples. A teoria matemática construída usando esse modelo mostra que ele é capaz de fazer tudo o que nossos computadores fazem (na verdade talvez faça mais pois tem memória infinita).
http://en.wikipedia.org/wiki/Turing_machine
A teoria da computação tem muitos resultados importantíssimos: A equivalência de Turing mostra que nossos computadores são equivalentes a máquinas de Turing e mostra que a máquina analítica também o é. Também é por essa teoria que sabe-se o que é necessário para usar todo o potencial da máquina.... o teorema da programação estruturada, que se segue.
------
* representar o conjunto todo e sem repetições é uma propriedade importante!
** demonstrar teoremas está além do escopo desta disciplina - é assunto principal de ACH2013-Matemática Discreta. Demontrar alguns teoremas em computação é assunto em ACH2043-Introdução à Teoria da Computação.
Este é o blog de relacionamento com alunos de Fábio Nakano.
Desejo testar se esta mídia facilita a comunicação e aprendizado de conteúdo.
Gostaria que vocès dessem notas mais altas para posts que ajudaram mais a entender o assunto (e não por outro critério, por exemplo o melhor escrito ou o mais "bonito")
fabionakano at usp dot br
Prédio A1, segundo andar - Sala 204E
Caso precise do mapa do Campus:http://each.uspnet.usp.br/site/mapa.php
Siga-me por email preenchendo a caixa abaixo.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário