sábado, 12 de dezembro de 2020

Base numérica

Por que os circuitos eletrônicos digitais trabalham com 0 e 1?  Não seria menos complexo, para nós usuários de computador, usar a nossa própria base numérica fundamentada no sistema decimal?

Na realidade é possível usar diretamente o sistema decimal em um tipo específico de computador conhecido como computador analógico, e esse computador pode ser mecânico, eletromecânico ou eletrônico. No caso dos computadores analógicos eletrônicos os dados são representados através de uma grandeza física, e geralmente é usado uma tensão ou corrente elétrica equivalente ao dado que se quer computar. Por exemplo, -1 volt equivale ao número -1, 0 volt equivale o número 0, 1 volt equivale ao número 1, 2 volts equivale o número 2, e assim por diante. Embora seja possível correlacionar diretamente, e linearmente, uma tensão elétrica com um número isso não significa que essa forma de uso seja um padrão nos computadores analógicos. É possível usar uma correlação numérica baseada em um fator de multiplicação. Por exemplo, 0,2 volts equivale ao número 2,  0,3 volts equivale ao número 3,  0,4 volts equivale ao número 4, e assim por diante. Fica evidente que nesse caso específico o fator de multiplicação é 10 vezes.

E pra que serve um computador analógico eletrônico?

Geralmente o termo computador analógico está relacionado a circuitos específicos que realizam operações matemáticas, como o caso do circuito abaixo que extrai uma raiz quadrada. Porém, praticamente todos os circuitos baseados em eletrônica analógica poderiam ser descritos como computadores analógicos.   


Talvez você ache exagero descrever todos os circuitos eletrônicos analógicos como se fossem computadores analógicos, mas veja o que acontece no circuito abaixo.

Esse simples circuito de áudio, com um único transistor, é capaz de amplificar o sinal de entrada. Digamos que esse amplificador tenha um fator de amplificação de 10 vezes, o que isso significa? Significa que um sinal de 0,1 volts na entrada vai se transformar em um sinal de 1 volt na saída.

Ou seja, esse amplificador de áudio pode ser descrito como um computador analógico que pega o valor de entrada, processa esse sinal, e apresenta na saída esse valor multiplicado por 10 vezes !

Logo, todos os circuitos eletrônicos analógicos podem ser encaixados no tópico abrangente chamado computador analógico, pois todos eles executam algum tipo de função matemática.  

Isso significa que a eletrônica poderia ser dividida em dois tópicos básicos, os computadores analógicos e os computadores digitais. 

Mesmo que os computadores analógicos possam parecer antiquados para aqueles que adoram os modernos processadores digitais, esse tipo de tecnologia não deve ser desprezada, pois a eletrônica analógica, além de ser a base de toda a eletrônica, ainda é incrivelmente versátil e útil na atualidade, e vai continuar sendo útil no futuro. Muitas vezes é melhor usar um circuito analógico, para executar uma determinada função, do que recorrer a um circuito digital. Em determinados usos os circuitos analógicos são mais simples de serem implementados, e essa simplicidade possui, em si mesma, alta confiabilidade. 

Porém os sistemas analógicos possuem limitações quando o assunto é a generalização de operações matemáticas no processamento de dados, e a precisão numérica gerada no processamento analógico também tem limitações. Os computadores analógicos precisam de circuitos específicos para implementar cada função matemática. E embora seja possível criar um sistema analógico, capaz de ser programado, isso tornaria o projeto desnecessariamente complexo, e suscetível a falhas. A precisão dos resultados de um computador analógico deixa a desejar quando precisamos de alta precisão numérica. O computador analógico eletrônico é muito sensível em relação a diversos fatores, como as variações de tensão elétrica em sua fonte de alimentação, a temperatura ambiente, interferência eletromagnética, desgaste e tolerância de seus componentes eletrônicos, etc. Ou seja, o computador analógico eletrônico não seria adequado em sistemas que necessitam de precisão absoluta nos resultados, pois qualquer um desses fatores que citei acima poderia causar erro no processamento de dados.

Para obter precisão nos cálculos, e alta confiabilidade no processamento de dados, através de programas que executam uma lista de instruções, precisamos dos computadores digitais. Esses computadores operam através da numeração binário, onde cada bit representa um dígito binário, e esse bit possui apenas dois estados possíveis, o 0 (zero) e o 1 (um). Projetar circuitos eletrônicos que diferenciam apenas dois estados é mais simples e muito mais confiável. Dificilmente ocorre algum erro nos circuitos digitais, pois a separação entre os dois estados possíveis é bem definida, e cada um desses estados pode ser facilmente detectável pelo circuito eletrônico digital. Grande parte dos erros graves que podem ocorrer no hardware do computador acontecem devido a falhas de condução elétrica entre os componentes eletrônicos, o famoso mal contato.  Outras falhas que podem ocorrer, com menor frequência, é devido a defeitos de fabricação nos componentes. Mas, quando todos os componentes do  hardware estão perfeitamente conectados, e tudo esta operando dentro dos parâmetros que hardware foi projetado para funcionar, é possível afirmar que o processamento de dados ocorre com precisão absoluta. Claro, devemos sempre levar em conta que para o hardware funcionar perfeitamente o software não pode conter erros de programação.

Usualmente, como foi explicado acima, os circuitos eletrônicos digitais diferenciam duas tenções elétricas. Na tecnologia TTL, ou tecnologia lógica transistor-transistor, o número 0 é equivalente a uma tensão próxima de 0 volts, e o número 1 é equivalente a uma tensão próxima de 5 volts.  Mas outras tensões podem ser usadas, tudo depende da tecnologia em questão.

Outra forma de descrever os estados de um circuito digital é através dos termos ligado ou desligado, ou seja, o número 0 significa desligado e o número 1 significa ligado.


Abaixo podemos ver o circuito eletrônico de uma porta digital chamada porta NAND, ou, em português, porta NÃO-E.   O símbolo lógico equivalente acompanha o desenho.  



No próximo tópico vou descrever como funciona essa porta, e outras portas.

 

O que deve ficar claro é que para representar o dígito binário, nos sistemas onde se usam bits paralelos, precisamos de um sinal elétrico individual para cada bit.

 

No exemplo acima, uma porta NAND de duas entradas, podemos ver o uso de 3 bits individuais. Na entrada temos 2 bits, o sinal A e o sinal B. E na saída (OUT) temos mais 1 bit.    

 

 

Conversão binária em decimal e vice versa

 

A equivalência numérica entre a base binária e a base decimal de números inteiros, com o limite de 4 bits, pode ser vista na tabela abaixo.

 

Número binário          Número decimal

           0                                  0

           1                                  1

         10                                  2

         11                                  3

        100                                 4

        101                                 5

        110                                 6

        111                                 7

      1000                                 8

      1001                                 9

      1010                               10

      1011                               11

      1100                               12

      1101                               13

      1110                               14

      1111                               15

 

 

Na conversão de um número binário para um número decimal é só levar em conta que cada digito binário, como o valor igual a 1, possui uma equivalência de 2 elevado a posição do bit.

Vou converter o número binário 101110 em decimal para esclarecer essa conversão.

 

 Número em binário:     1   0   1    1   1   0

 

Posição do bit:              5   4   3    2   1   0 

 

Equivalência:               25  24  23  22  21  20

 

Valor em decimal (usa-se apenas os valores onde o bit é 1):    

 25 +  23 + 22  + 21  = 32 + 8 + 4 + 2 = 46

 

O número binário 101110 convertido para decimal é 46.

 

Na conversão de decimais inteiros para binário usa-se a divisão sucessiva por dois, e o resultado da conversão é visualizado através dos restos da divisão.

 

Para exemplificar o processo vou converter o número decimal 29 em binário.



Matemática binária


Em construção 



terça-feira, 22 de setembro de 2020

Conceitos básicos sobre o computador

Antes de começar deixo avisado que no fim dessa postagem criei dois anexos. O primeiro anexo é um glossário para descrever alguns termos específicos da tecnologia que aparecem em negrito no texto. O segundo anexo apresenta alguns textos extras que são apontados pelo índice numérico que está entre colchetes.




1 - Introdução: Uma breve (muito breve) história do computador

Começo essa postagem com a primeira pergunta que me vem a cabeça sobre esse assunto:

O que é um computador?

Na Wikipédia, em português, diz o seguinte:

“Computador é um conjunto de componentes eletrônicos (máquina) capaz de variados tipos de tratamento automático de informações (processamento de dados).[1] Um computador pode possuir inúmeros atributos, dentre eles armazenamento de dados, processamento de dados, cálculo em grande escala, desenho industrial, tratamento de imagens gráficas, realidade virtual, entretenimento e cultura. “

Embora essa descrição faça sentido faltou dizer algo fundamental sobre o computador, ou seja, faltou dizer que essa máquina é uma ferramenta [1].

E apesar dos computadores atuais serem compostos por componentes eletrônicos a história da evolução dos computadores possui uma lista de calculadoras puramente mecânicas ou eletromecânicas.  As operações matemáticas que essas calculadoras podiam executar dependiam do que se desejava calcular, e elas produziam os resultados numéricos através da movimentação de peças e engrenagens.

O ábaco, por exemplo, pode ser considerado como um dos primeiros instrumentos usados para contar números e realizar operações matemáticas elementares, e ele foi usado por vários povos na antiguidade, e hoje em dia ele ainda é usado.  



Mas o ábaco pode ser considerado um computador?

Recorro novamente ao termo “computador” da Wikipédia para tentar responder essa pergunta, mas dessa vez uso o artigo em inglês (traduzido pelo Google):

“Um computador é uma máquina que pode ser instruído a realizar sequências de operações aritméticas ou lógicas automaticamente por meio de programação de computador. Os computadores modernos têm a capacidade de seguir conjuntos generalizados de operações, chamados programas. Esses programas permitem que os computadores executem uma gama extremamente ampla de tarefas. Um computador "completo" incluindo o hardware, o sistema operacional (software principal) e o equipamento periférico necessário é usado para uma operação "total", e pode ser descrito como um sistema de computador. “

Se o computador realiza operações matemáticas automaticamente o ábaco não poderia ser classificado como computador, logo ele estaria mais para uma simples calculadora mecânica não automatizada.

Mas é um pouco confuso afirmar o que pode ou o que não pode ser classificado como computador, pois esse termo inclui o processamento e o resultado de operações matemáticas, portando o termo computador é suficientemente abrangente para incluir uma simples calculadora, mesmo que não seja possível programar tal dispositivo.

O cara que chegou mais próximo de construir um computador mecânico, totalmente automatizada, foi Charles Babbage [2], lá pelo século 18. Mas devido a diversos obstáculos para construir a sua máquina analítica ele não conseguiu concluir o seu audacioso projeto. Mesmo assim ele ficou conhecido como o pai do computador, pois diversos conceitos produzidos por ele naquela época se encaixam no contexto dos computadores modernos.

No século 20 Alan Turing deu origem ao conceito de programa armazenado após publicar um artigo sobre uma máquina de computação universal, conhecida como máquina de Turing universal, onde instruções armazenadas em uma fita podiam ser executadas por uma máquina eletromecânica.

Mas a arquitetura moderna de um computador é atribuída a John von Neumann [3].



Por incrível que pareça os conceitos do hardware de um computador moderno ainda são baseados no desenho acima, e esses conceitos foram criados em 1945.

O hardware de um computador é composto, genericamente, por 3 elementos fundamentais:

1) CPU (unidade central de processamento)

2) memória

3) periféricos (dispositivos de entrada e dispositivos de saída)

 

Embora o termo CPU seja amplamente usado essa parte do computador também é chamada de microprocessador, ou simplesmente processador.

Para simplificar o desenho do processador é possível visualizar apenas dois blocos principais, que são a unidade de controle e a unidade de lógica e aritmética, mas um processador moderno é bem mais complexo do que isso. Ele possuiu muitos blocos que representam as diversas funcionalidades do processador, e todos esses blocos são construídos com base em circuitos eletrônicos digitais que funcionam através de uma lógica binária. Um processador inteiro pode ser encapsulado em único circuito integrado, e nesse caso o processador opera através de um único núcleo. Mas é possível ter dois ou mais processadores no mesmo circuito integrado, ou seja, os processadores podem conter vários núcleos.

 A arquitetura von Neumann não é a única arquitetura de computador, existe também a arquitetura Harvard.

Na arquitetura von Neumann a memória compartilha as instruções e os dados, ou seja, o processador busca na memória as instruções e os dados de uma forma sequencial, portanto as instruções e dados não podem ser lidos simultaneamente.

Na arquitetura Harvard, embora seja mais complexa, esse limite é superado. O processador pode buscar as instruções e os dados simultaneamente. Isso é possível graças a uma divisão da memória em duas partes, a memória das instruções e a memória dos dados, como mostra o desenho abaixo. 

Embora os computadores possam fazer o uso da arquitetura von Neumann grande parte dos projetos de computadores modernos faz uso de uma memória cache integrada ao processador, para aumentar o desempenho do processamento de dados. Essa memória extra, chamada memória cache, mescla conceitos da arquitetura Harvard na arquitetura von Neumann, e isso é conhecido como arquitetura modificada Harvard.

E será que é possível criar outros tipos de arquiteturas de computador?

Claro que é possível, mas é preciso levar em conta a complexidade do sistema. Criar um sistema que se torne mais complexo do que as arquiteturas von Neumann e Harvard pode tornar o projeto caro demais e desnecessariamente complicado.

E por falar em novas arquiteturas o computador quântico está em desenvolvimento, mas do meu ponto de vista essa tecnologia ainda não é capaz de executar um programa de computador. O tal computador quântico não possui uma memória para armazenar o programa a ser executado, e muito menos possui algum tipo de sistema lógico capaz de interpretar e executar as instruções contidas em um programa, ou seja, o computador quântico não é capaz de rodar um sistema operacional, por exemplo. E para piorar as coisas a indefinição do bit quântico, que pode ser 0 e 1 simultaneamente, provocaria um desastre total ao tentar executar o processamento de uma simples instrução de salto condicional. Uma instrução de salto condicional precisa, obrigatoriamente, de um bit bem definido para dar andamento ao programa que está sendo executado. Se esse bit fosse 0 e 1 ao mesmo tempo a execução de uma instrução de salto condicional ficaria presa em uma eterna indecisão no processamento, ou seja, nunca seria decidido qual o destino do salto condicional, já que o processador quântico não saberia exatamente se o resultado do bit é 0 ou é 1. Então, até onde sei, o computador quântico serve por enquanto apenas como uma calculadora.

 

Outros processadores 

Da mesma forma que existem diferentes modelos de arquitetura de computador também existem diferentes tipos de processador. O processador central do computador é um processador de uso geral, e pode realizar uma ampla gama de tarefas. Mas existem processadores especializados para uma função específica, são os processadores dedicados. O processador de áudio, por exemplo, é usado para gravar e reproduzir som. O processador gráfico, hoje chamado de GPU (Graphics Processing Unit), é usado para processar imagens. E existe também o FPU (Float Point Unit), um processador usado para realizar operações matemáticas de ponto flutuante, e ele pode estar integrado ao processador central ou pode ser um componente externo que é conhecido como coprocessador matemático.


 Processador de áudio 



Processador de vídeo (GPU)


Coprocessador matemático (FPU)

Os processadores dedicados citados acima são os mais comuns, mas existem outros, cada um com uma função especifica.

 E, dentro do contexto de processamento de dados, não podemos esquecer dos microcontroladores, que servem para aplicações especificas chamadas aplicações embarcadas. É possível descrever um microcontrolador como sendo um pequeno computador completo, ou seja, ele pode incluir o processador, a memória e os periféricos de entrada e saída em um único circuito integrado. Os microcontroladores possuem muitas aplicações e eles são usados, por exemplo, na indústria automobilística, na aviação, em equipamentos médicos, brinquedos, eletrodomésticos, periféricos de computador, etc. 

Microcontrolador de 32 bits  

 

Para deixar essa lista de processadores ainda mais completa podemos incluir também o ASIC (Application Specific Integrated Circuits), ou circuito integrado de aplicação específica. Um ASIC pode ser descrito como um sistema em um único chip, ou seja, ele tem uma certa semelhança com o microcontrolador, que também pode conter tudo em um único chip. A diferença é que o ASIC possui um circuito eletrônico interno personalizado para algum tipo de uso específico, logo ele não pode ser reprogramado como um microcontrolador. O custo para produzir um ASIC é alto, pois ele é detalhadamente projetado no nível mais básico de um circuito integrado, o nível dos transistores. Projetar um ASIC requer mais tempo e mais esforço por parte dos projetistas, mas essa atenção especial que o projeto de um ASIC recebe permite algumas vantagens como melhor desempenho, alta confiabilidade, menor dissipação, menor custo por peça, etc. E geralmente o ASIC é produzido em larga escala, e isso significa baratear o preço de cada chip.  

Um ASIC pode conter a complexidade de um microprocessador inteiro, ou pode ser menos complexo, como um chip de um aparelho telefônico fixo, por exemplo.

Porém, se você me perguntar o que é ou o que não é um ASIC confesso que não consigo responder isso facilmente, ou seja, se você pesquisar sobre o assunto vai descobrir que a definição de um ASIC é um tanto confusa, pois existem ramificações e outras siglas usadas dentro desse contexto.

Particularmente, do meu ponto de vista, qualquer circuito integrado que funcione apenas no nível de hardware, e que não possa ser programado posteriormente por algum software, poderia ser considerado um ASIC. Logo qualquer circuito integrado não programável pode ser considerado um ASIC, mas como isso é uma opinião pessoal e não algo consensual sugiro que busque mais informações sobre esse assunto,  caso queria se aprofundar sobre o que é ou não é um ASIC.

 

Antes de aprofundar e tornar inteligível diversos conceitos sobre o computador é melhor conhecer um pouco sobre as bases numéricas e a lógica binária, e isso é descrito nos tópicos seguintes.

 

Por enquanto é só, estou escrevendo o resto do artigo.

 

Tópicos

 

2 - Base numérica

 

3 - Lógica binária

 

4 - Barramentos

 

5 - Processadores

 

6 - Memórias

 

7 - Periféricos & Interfaces

 

8 – Inicialização 

































 

 

___________________________________________________________________________________

Anexo I - Glossário

FDD – Floppy Disk Drive. O disquete, que já caiu em desuso, era uma forma de armazenamento de dados através de uma mídia magnética. Cheguei a usar os tais disquetes na década de 90, e no início dos anos 2000, mas confesso que não sinto nenhuma saudade dos disquetes, pois eles não eram muito confiáveis, e sempre davam problemas. Eles ainda são vendidos hoje em dia, inclusive ainda tenho uma caixa com disquetes novos. Os dois tipos de disquetes mais comuns eram o disquete com o tamanho 5¼, que tinha uma capacidade máxima de 1,2Mbytes, e os disquetes 3½, com capacidade máxima de 1,44Mbytes. Os disquetes 3½, de densidade estendida, podiam armazenar 2,88Mbytes, mas esse tipo de disquete não vingou. Muitos equipamentos ainda fazem uso de disquete, mas é possível modernizar esse aspecto através de um emulador de disquetes, capaz de substituir a mídia magnética do disquete por uma pen driver. Uma curiosidade sobre as tais mídias magnética é que existiam fitas magnéticas, chamadas fitas K7, que foram originalmente criadas para gravar áudio. Mas essas fitas também foram usadas para gravar programas e dados de computador. Nos anos 90 usei fitas K7 para carregar jogos no meu MSX!    


HDD – Hard Disk Driver. Acho que essa mídia magnética dispensa longas explicações. É uma memória que permite armazenar grandes quantidades de dados. O HD é consideravelmente seguro, mas obviamente pode falhar, justamente porque armazena dados através de um sistema eletromecânico. Desde de que o HD não sofra choques mecânicos, ele pode durar e ser usado por muito tempo.  

Hardware – é a parte física do computador. É composto por componentes eletrônicos, placa de circuito, conectores, fonte de alimentação, etc

RAM – Random Access Memory. A memória de acesso randômico é uma memória que permite leitura ou escrita, mas ela é uma memória volátil, ou seja, ela perde os dados que foram armazenados quando a energia elétrica é desligada. Os dois tipos de RAM são a DRAM (Dynamic Random Access Memory), e a SRAM (Static Random Access Memory). A DRAM mantém os dados armazenados nela por apenas alguns milissegundos, então é necessário incluir um sistema de reavivamento, ou refrescamento. Em inglês esse sistema é chamado de refresh, e ele evita que a memória DRAM perca os dados. A SRAM é mais simples e não precisa de um sistema refresh, uma vez que os dados são escritos na memória SRAM eles não serão perdidos enquanto a energia elétrica estiver ligada.

ROM - Read-Only Memory. A memória somente de leitura é uma memória não volátil, ou seja, ela não perde os dados quando o computador é desligado. Como o próprio nome diz, ele pode apenas ser lida. O tipo de ROM mais conhecida é a PROM (Programmable Read-Only Memory), que só pode ser gravada uma única vez e não pode ser regravada. Mas existem outros tipos de memórias não voláteis que podem ser regravadas. A EPROM (Erasable Programmable Read-Only Memory), pode ser apagada com radiação ultravioleta e pode ser regravada. A EEPROM (Electrically Erasable Programmable Read-Only Memory), pode ser regravada eletricamente. E a memória flash, que é um tipo de EEPROM mais rápida e mais barata, permite armazenar grandes quantidades de dados, e ela é muito usada em pen drivers e SSDs.

É, eu sei, esses termos são contraditórios, pois se uma memória pode ser apaga e regravada então ela não é, de fato, uma memória apenas de leitura! Mas não é minha função modificar essas esquisitices da informática.

 

SSD - Solid State Drives. Essa mídia, composta por memórias flash, é extremamente segura, e extremamente rápida quando comparada com o HD.  E ela é mais resistente a choques mecânicos. A única desvantagem é que ela possui um número limitado de ciclos de escritas, Ou seja, quando o SSD alcançar o limite de ciclos de escritas o detestável erro chamado bad block vai corromper os dados contidos nesse dispositivo de armazenamento. Mas, dependendo de como se usa um SSD, isso pode levar alguns anos para acontecer, então não vejo motivo para se preocupar. Mas é bom sempre manter um back-up externo dos seus dados mais importantes.



___________________________________________________________________________________

Anexo II -  Filosofadas a parte  

O foco principal da postagem é explorar o funcionamento de um computador, mas quando estou escrevendo as vezes costumo filosofar sobre certos assuntos que não fazem parte do contexto, e então o texto pode acabar ficando prolixo e sem foco. Para evitar esse tipo de divagação textual criei o anexo Filosofadas a parte. Nesse anexo posso liberar alguns momentos de criatividade que surgem quando estou pensando sobre um assunto, são como ramificações exploratórias produzidas pela escrita livre.

Esse anexo também pode incluir outros contextos explicativos além das minhas filosofadas a parte.   

 

 


[1] Filosofadas a parte, palavra chave: Ferramenta

Vale lembrar que o uso de ferramentas não é um privilégio humano, outros animais na natureza também são capazes de criar ferramentas com o mesmo objetivo que nós. E qual é esse objetivo? Antes de responder essa pergunta primeiro faço uma pergunta paradoxal: se fossemos seres ilimitados precisaríamos de ferramentas? Provavelmente não, e é aí que está a reposta sobre o objetivo das ferramentas. Para transcender as nossas próprias limitações biológicas fazemos o uso de ferramentas, e outros animais também seguem essa mesma lógica. Enfim, as ferramentas ampliam o nosso poder de muitas formas diferentes, pois estendem as nossas capacidades para além de nossos limites biológicos.

Porém, apesar das maravilhas que as ferramentas podem criar, acho que é sensato não ser demasiadamente otimista sobre o poder destrutivo das ferramentas. Não tenho dúvidas de que perder o controle sobre a ferramenta pode provocar um desfecho trágico, é terrível quando o poder da ferramenta se volta contra nós. Isso já aconteceu comigo, mas por sorte apenas me machuquei superficialmente. Então sugiro cautela e sensatez no uso das ferramentas, para que elas não se transformem em um algoz, no estilo Exterminador do Futuro.

Além disso, outro efeito nocivo que as ferramentas podem causar é o conceito de que seremos substituídos pelas ferramentas. Considero esse conceito errôneo, e estúpido, e acredito que ele é gerado a partir de um complexo de inferioridade perante a ferramenta. Francamente, não é a ferramenta que se torna mais inteligente que o usuário, é o usuário da ferramenta que fica burro a ponto de ser substituído pela ferramenta. Então, por exemplo, se algum dia a Inteligência Artificial nos dominar e nos substituir é por que nos tornamos meros idiotas tecnológicos que esqueceram das próprias capacidades evolutivas e adaptativas. Nunca devemos nos esquecer que as ferramentas são criações humanas, e portanto, hierarquicamente, servem aos nossos propósitos. Enfim, pra mim uma ferramenta será sempre uma ferramenta, e não algo que vai substituir quem eu sou.

 

 

[2] Charles Babbage pode ser considerado o pai do computador, mas o crédito pelo primeiro programa é atribuído Ada Lovelace, a mulher que escreveu o primeiro algoritmo para ser processado na máquina analítica de Babbage.


 

 

[3]  A disputa pelo crédito da arquitetura do computador moderno

O EDVAC foi um dos primeiros computadores eletrônicos que usava o sistema binário, e ele foi desenvolvido por John Mauchly e J. Presper Eckert, e outros projetistas.   

John von Neumann se juntou ao projeto do EDVAC em função de uma consultoria, e então publicou um rascunho sobre o EDVAC, que ficou conhecido como o Primeiro Rascunho (First Draft). Esse rascunho tinha 101 páginas, e embora estivesse incompleto, ele foi o primeiro documento a descrever o desenho lógico de um computador que utilizava o conceito de programa armazenado, que controversamente é conhecido como arquitetura de von Neumann.

O problema é que o conceito de programa armazenado foi bastante discutido na Escola de Engenharia Elétrica Moore, na Universidade da Pensilvânia, antes de von Neumann se tornar um consultor nessa Universidade.

Ou seja, von Neumann, que era fluente na linguagem da lógica, pegou os conceitos de programa armazenado, que já tinham sido discutidos na Universidade da Pensilvânia, e transformou isso no Primeiro Rascunho. Obviamente ele adicionou, nesse documento, a sua própria visão sobre como a lógica de um computador deve operar. Mas, como ele não listou nesse documento os nomes de diversos autores que estavam envolvidos na concepção do computador moderno, todo o crédito sobre a arquitetura de um computador foi atribuído a ele.  

E J. Presper Eckert não ficou feliz por John von Neumann ganhar todo o crédito pela concepção da arquitetura do computador. Para Eckert o termo “arquitetura von Neumann” deveria ser substituído por “arquitetura Eckert”.

Enfim, não vou entrar no mérito sobre quem realmente deveria levar o crédito sobre a arquitetura do computador moderno, pois o que aconteceu de fato foi que muitas mentes trabalharam para que o computador eletrônico se tornasse uma realidade.


sexta-feira, 18 de setembro de 2020

Sobre o blog, e sobre o autor do blog

O propósito desse blog é bem simples, pretendo compartilhar o conhecimento que adquiri ao longo de décadas de estudos e experimentos nas áreas de eletrônica e programação.

A um tempo atrás já tive um blog que falava sobre esses assuntos, mas por diversas razões não consegui levar adiante a manutenção do blog, então apaguei esse primeiro blog. As razões que me levaram a apagar o meu primeiro blog não são importantes, apenas reconheço que me faltou maturidade e disciplina para manter o meu primeiro blog atualizado.

É preciso levar em conta que manter um blog atualizado não é uma tarefa fácil, todo blogueiro sabe que é preciso gastar tempo e energia para publicar as informações que serão compartilhadas no universo virtual da Internet. E na grande maioria dos casos é um trabalho voluntário, e portanto, gratuito.  Evidentemente é possível ganhar dinheiro com um blog, vendendo serviços ou produtos, ou até mesmo recebendo doações, mas esse blog não é voltado para fins comerciais.

Confesso que não me considero uma pessoa altruísta. Com raras exceções, não costumo fazer trabalho voluntário e gratuito. Admito que sou um capitalista e gosto do lucro, e portanto gosto de ser remunerado pelo meu trabalho. Porém não me considero um capitalista selvagem, cujo o único objetivo de vida é focado no dinheiro.

Mas se não sou um altruísta então por que diabos estou criando um blog sem fins comerciais?

Gosto de escrever para expressar e organizar os pensamentos. Além disso a escrita é uma ótima ferramenta para você ensinar a si mesmo novas habilidades, e permite criar uma fonte de referência para consultas posteriores. Isso quer dizer que não vou apenas compartilhar o que aprendi com a tecnologia, também pretendo aprender coisas novas. Recentemente iniciei os meus estudos sobre os microcontroladores de 32 bits da família STM32, e portanto vou compartilhar as minhas experiências e estudos sobre esse assunto.

 

E quem sou eu? Francamente não considero essa informação importante, já que esse blog não é um blog autobiográfico. Apenas deixo claro que sou um autodidata fascinado pelo universo da eletrônica e da programação.

Iniciei os meus estudos em eletrônica na década de 80. Meu falecido pai, um professor de Física e Matemática, financiou o material didático, e deste então me tornei um explorador assíduo de diversos ramos da tecnologia. 

Além de montar diversos dispositivos eletrônicos, como amplificadores, osciladores, transmissores, receptores, circuitos baseados em portas lógicas, fontes, e muitos outros dispositivos, também me envolvi com a ciência da computação. No início dos anos 90 aprendi a programar em linguagem BASIC, e também aprendi a linguagem ASSEMBLY, através de um computador de 8 bits da linha MSX. Era um computador fabricado pela Gradiente chamado Expert, baseado no processador Z80. Depois entrei em contado com o PC e aprendi a programar em C. E mais adiante comecei a estudar e programar microcontroladores de 8 bits da família 8051. 

Enfim, apesar de não ter uma formação acadêmica, sou perfeitamente capaz de projetar circuitos eletrônicos e programador dispositivos eletrônicos.

E espero continuar aprendendo sobre essa área até o dia em que eu bater as botas.

Bem vindo ao meu blog ! 

Ah, mais uma coisa, deixa eu esclarecer o título do blog.  Eu queria usar o termo império da eletrônica, mas esse termo já estava sendo usado, então optei por reino da eletrônica.

Graças a eletrônica, e muita programação, foi possível conceber essa ferramenta de comunicação que chamamos de Internet. Porém a Internet, e sua gigantesca rede global de computadores, é apenas mais uma ferramenta no vasto e fantástico território onde a eletrônica reina.   

Os mais pessimistas sobre a tecnologia argumentam que a Internet pode provocar caos e coisas terríveis, incluindo a manipulação dos usuários, disseminação de fake news, doenças psíquicas relacionadas aos vícios em tecnologia, etc.

Realmente isso acontece, mas a tecnologia não é culpada pelo mau uso que os humanos fazem dela. É preciso reconhecer que o sofrimento que a tecnologia pode nos causar, na grande maioria dos casos,  vem da própria natureza humana.

A tecnologia apenas reflete os nossos desejos, para o bem e para o mal.

Obviamente a tecnologia pode falhar, ou não funcionar quando submetida a situações incomuns ou eventos extraordinários.  Mas, quando tudo funciona perfeitamente, e usamos a tecnologia de forma sensata, é evidente que ela pode nos beneficiar de várias formas diferentes.

E eu, particularmente, tenho observado muitos benefícios na retroalimentação de informações da Internet. A possibilidade de ler, ou ver, as experiências e estudos dos usuários, seja através de blogs, ou através de vídeos, é algo impressionante, e permite acelerar o aprendizado em qualquer área do conhecimento.

Apreendi muitas coisas interessantes e legais através da Internet, e espero poder fazer a minha contribuição com esse blog. 

Base numérica

Por que os circuitos eletrônicos digitais trabalham com 0 e 1?   Não seria menos complexo, para nós usuários de computador, usar a nossa pró...