No artigo onde mostramos os principais paradigmas de programação, você já teve uma prévia de como eram os primeiros computadores, bem como, já consegue perceber que há uma evolução natural de hardware e, ao mesmo tempo, há um esforço no sentido de adequar as linguagens de programação a cada nova geração. Sem dúvidas, esses aspectos são muito importantes. Você precisa conhecer como um computador funciona. Sabe como os programas funcionam, são questões elementares. Observe que a partir de agora, vou deixar os textos um pouco mais técnico para você ir se acostumando com a escrita e leitura. Ok?
O que define que um computador é um computador?
Muito antes dos computadores digitais serem construídos, em 1936, um matemático britânico chamado Alan Turing, criou um dispositivo teórico conhecido como máquina universal, que tem como finalidade, mostrar logicamente e conceitualmente a abstração de um computador.
A ideia era a seguinte: ele definia que um dispositivo deveria ser capaz de manipular símbolos em uma fita de acordo com uma série de regras para guardar informações. A lógica por trás da máquina de Turing pode imitar qualquer algoritmo de um computador.
A máquina de Turing pode ser vista como um sofisticado leitor de fitas, com uma fita extensível. A fita é marcada nas seções, cada seção contém ” 1 “, ” 0 ” ou ser vazio, em branco. Além dessa fita, existe uma cabeça que fica verificando sessão a sessão. Algo como mostra na figura a seguir:
A cabeça pode efetuar apenas três ações:
- Escrever na fita (ou apagar da fita), mas apenas na seção que está a ser verificada.
- Alterar o estado interno.
- Mover a fita com 0 ou 1 ou espaços, para a esquerda ou direita.
Acredito que esse modelo já lhe parece familiar, não é? Ainda não kkkk? Então vamos continuar…. Pouco tempo depois, entrou na jogada outro modelo, criado por Von Neumann. Todos os projetos de computadores atuais são fundamentados nos conceitos desenvolvidos pelo matemático John Von Neumann, no Instituto de Estudos Avançados de Princeton. Esse projeto, conhecido como Arquitetura Von Neumann é baseado nos seguintes componentes:
- Uma memória
- Uma Unidade Lógica e Aritmética(ULA)
- Uma Unidade de Controle, cuja função é a mesma da tabela de controle da Máquina de Turing universal: buscar um programa na memória, instrução por instrução, e executá-lo sobre os dados de entrada.
Agora sim! Esse é o modelo que já explicamos em artigos anteriores. Se não lembra, dá uma olhadinha no artigo “O mínimo que você precisa saber para iniciar em programação – Parte 2”. Vai refrescar sua memória kkkkk. Mas, o que quero que você foque agora é na palavra “estado”. O que vem a ser estado em computação?
Na ciência da computação o estado é um termo técnico para todas as informações armazenadas. Observe que desde a concepção abstrata de o que é um computador, até como funciona um programa, tudo vai estar relacionado com memória, ou seja, armazenamento e recuperação de dados.
Memória são todos os dispositivos que permitem a um computador guardar dados, temporariamente ou permanentemente.
Nas décadas de 1980 e 1990 o termo memória era mais usado para identificar um tipo específico de memória, a memória RAM. Anos mais tarde, com a chegada das câmeras digitais o termo “cartão de memória” também se popularizou. Enfim… Existem vários tipos de memórias, mas vamos focar nossa explicação nas partes que influenciam diretamente o seu aprendizado de programação. Vou focar em memória RAM que é a memória principal e ao disco rígido(HD) que faz parte das memórias secundárias, que já foi explicado em outro artigo.
Memória principal: Memória RAM (Random Access Memory)
Memória RAM significa memória de acesso aleatório. Para agora memorize apenas que memória RAM é um espaço temporário de informações do sistema operacional e de programas em uso, e quando a tarefa destes for concluída, os arquivos são movidos e podem ser mantidos permanentemente no HD ou simplesmente descartados quando o computador for desligado.
A anatomia de uma memória é formada por um conjunto de células (cell) com seus respectivos endereços (address) e cada célula tem o mesmo número de bits.
Só olhar para essa imagem que representa espaços na memória do computador, já dá aquele frio na barriga, não é? kkkkkk Não se preocupe se não entender tudo o que está escrito nesse artigo. Foque nos conceitos fundamentais, você precisa saber como tudo isso funciona, pelo mesmo de forma “superficial”. Mas lembre-se: se você não aprender de forma profunda esses termos, futuramente vai fazer muita falta quando você estiver construindo sistemas complexos. Como programador ou programadora, você precisa saber sobre esses tipos de notações como exemplo, os Bits e Bytes.
O que são Bits e Bytes?
O termo Bit, que vem das palavras dígito binário, ou “BInary digiT”, é a menor unidade de medida de transmissão de dados usada na computação e informática. Os computadores “entendem” impulsos elétricos, positivos ou negativos, que são representados por 1 ou 0. A cada impulso elétrico damos o nome de Bit.
A quantidade de dados que temos hoje em dia é gigantesco. Então, ficaria impossível ter que ficar memorizando números como 146446516454612121 bits kkkkkkk. Para isso, criaram um agrupamento de bits, que geram outro tipo de notação com o Byte. Que nada mais é que, um conjunto de 8 Bits. Ou seja, 1 byte = 8 bits.
Veja uma coisa interessante…. Os Bytes representam todas as letras (maiúsculas e minúsculas), sinais de pontuação, acentos, caracteres especiais e até informações que não podemos ver, mas que servem para comandar o computador e que podem inclusive ser enviados pelo teclado ou por outro dispositivo de entrada de dados e instruções. Sabe como isso é feito? Internamente os computadores têm uma tabela, com vários valores padrões definidos através de uns conjuntos de Bytes. O nome dessa tabela é ASCII (American Standard Code for Information Interchange).
Tabela ASCII
Quando você aperta a tecla do teclado do computador, o processador vai buscar nesta tabela ASCII qual é o seu respectivo “símbolo”. Isso é muito interessante! Imagine aqui comigo o seguinte… Tudo, no final das contas, tudo se trata de impulsos elétricos, que são representados por zeros(0) e uns(1), aí é feito o agrupamento desses zeros e uns, que por sua vez, podem representar algo, como exemplo, os símbolos das letras do alfabeto. Agora tudo fica mais claro, não é? Além dos Bits e Bytes, temos outros termos que representam agrupamentos de Bytes maiores. São eles:
- 1 byte = equivale a 8 bits
- 1 kilobyte (KB ou Kbytes) = equivale a 1024 bytes
- 1 megabyte (MB ou Mbytes) = equivale a 1024 kilobytes
- 1 gigabyte (GB ou Gbytes) = equivale a 1024 megabytes
- 1 terabyte (TB ou Tbytes) = equivale a 1024 gigabytes
- 1 petabyte (PB ou Pbytes) = equivale a 1024 terabytes
- 1 exabyte (EB ou Ebytes) = equivale a 1024 petabytes
- 1 zettabyte (ZB ou Zbytes) = equivale a 1024 exabytes
- 1 yottabyte (YB ou Ybytes) = equivale a 1024 zettabytes
Caso tenha curiosidade sobre a tabela ASCII, veja o link a seguir, dê uma olhada na coluna “bin” e na coluna “symbol” como se dá a reprensentação dos bytes em zeros e uns com os seus respectivos simbolos: https://www.ascii-code.com/
Só a título de curiosidade, essa tabela ASCII surgiu em outubro de 1960 através dos estudos do Instituto Americano de Padrões Nacionais (ANSI – American National Standards Institute), que na época se chamava American Standards Association (ASA).
Inevitavelmente, a medida em que vamos evoluindo os conceitos voltados ao mundo da computação. Alguns assuntos são mais difíceis que outros para memorizarmos ou assimilarmos. Não desanime! Vamos em frente!!! Se tiver dúvidas, deixe aqui seu comentário!
Esse tema de hoje é parte fundamental para levar você para o próximo nível. O que espero que você aprenda é que tudo se resume a input, process, storage e output. Que todos os dados no final das contas se transformam em zero e uns e que existem notações que representam esses zeros e uns, e que a medida que os computadores forem evoluindo, vão surgindo novos artefatos como a tabela ASCII que armazenar um conjunto de dados de símbolos úteis e comuns em várias linguagens de programação. Além disso, esses agrupamentos de números, quanto maior o seu volume, vão ter outras notações para os representar. Enfim… tudo isso é de grande importância para sua formação como programador ou programadora.
Como você já percebeu, existem várias outras formas para se representar um sistemas de numeração. Naturalmente você já utiliza o Decimal e agora está conhecendo o sistema binário. No próximo artigo vamos conhecer as principais diferenças entre os sistemas de numeração Decimal, Binário, Octal e Hexadecimal que também é parte fundamental para você entender como se dá a organização de um computador e o que você vai poder utilizar em seus algoritmos quando estiver desenvolvendo os seus programas. Sacou? Até o próximo artigo!.
Confiança Sempre!!!
Fontes:
- https://pt.wikipedia.org/wiki/M%C3%A1quina_de_Turing
- https://webpages.ciencias.ulisboa.pt/~ommartins/seminario/vonnewman/NetMenu/maquina_de_turing.htm
- https://www.comp.uems.br/~chastel/analise/modelo_ram.pdf
- https://pt.wikipedia.org/wiki/Estado_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
- https://www.dell.com/pt-br/shop/o-que-e-memoria-ram/ab/o-que-e-memoria-ram
- http://www.ecivaldo.com/IFSP/disciplinas/2013.2/pronatec/FC-02-SistemaNumeracao.pdf
Seja o primeiro a comentar