segunda-feira, 5 de setembro de 2011

Hardware

Introdução




Hoje, o mercado de trabalho exige conhecimentos básicos de informática, não só no que se refere aos softwares, mas ao hardware também. É importante saber, por exemplo, o que é um HD (Hard Disk), para que serve o processador, qual a função da memória RAM e assim por diante. Nada de recursos avançados, isso pode ser deixado para quem quer se aprofundar no assunto. No entanto, ter conhecimentos básicos do assunto é essencial, até mesmo para lidar com determinadas situações, como observar o reparo de seu PC por um técnico, por exemplo. Este artigo, voltado aos iniciantes ou àqueles que tiveram um "branco" no assunto, mostrará um resumo sobre cada um dos principais componentes de um computador pessoal, assim como abordará suas utilidades e suas principais funções.

Divisão do computador

Hardware: todo o equipamento, suas peças, isto é, tudo o que "pode ser tocado", denomina-se hardware. Alguns equipamentos, como monitor, teclado e mouse são também chamados de periféricos. Outros exemplos de hardware: memórias, processadores, gabinetes, disco rígido, etc.
Software: consiste na parte que "não se pode tocar", ou seja, toda a parte virtual, onde estão incluídos os drivers, os programas e o sistema operacional.

Processador

Este é o grande pivô da história. O processador, basicamente, é o "cérebro" do computador. Praticamente tudo passa por ele, já que é o processador o responsável por executar todas as instruções necessárias. Quanto mais "poderoso" for o processador, mais rapidamente suas tarefas serão executadas.
Todo processador deve ter um cooler (ou algum outro sistema de controle de temperatura). Essa peça (um tipo de ventilador) é a responsável por manter a temperatura do processador em níveis aceitáveis. Quanto menor for a temperatura, maior será a vida útil do chip. A temperatura sugerida para cada processador varia de acordo com o fabricante, com o mecanismo e com o desempenho. Procure saber com o fabricante qual a temperatura ideal para o seu processador. Se o valor estiver acima do limite, talvez seja necessário melhorar a ventilação interna da máquina. Para conhecer a temperatura, fabricantes de placas-mães costumam oferecer programas próprios para isso. Em muitos casos, também é possível obter essa informação no setup do BIOS (visto no item placa-mãe, mais adiante).
Vale ressaltar que cada processador tem um número de pinos ou contatos. Por exemplo, o antigo Athlon XP tem 462 pinos (essa combinação é chamada Socket A) e, logo, é necessário fazer uso de uma placa-mãe que aceite esse modelo (esse socket). Assim sendo, na montagem de um computador, a primeira decisão a se tomar é qual processador comprar, pois a partir daí é que se escolhe a placa-mãe e, em seguida, o restante das peças.
O mercado de processadores é dominado, essencialmente, por duas empresas: Intel AMD. Eis alguns exemplos de seus processadores: Intel Core 2 Duo, Intel Core i7, Intel Atom (para dispositivos portáteis), AMD Athlon X2, AMD Phenom II e AMD Turion X2 (também para dispositivos portáteis). Abaixo, a foto de um processador.

Disco Rígido (HD)

O Disco Rígido, cujo nome em inglês é Hard Disk (HD), serve para armazenar dados permanentemente ou até estes serem removidos. Fisicamente, os HDs são constituídos por discos. Estes são divididos em trilhas e, por sua vez, estas são formadas por setores. Os HDs podem armazenar até centenas de gigabytes. A velocidade de acesso às informações dos discos depende, em parte, da rapidez em que estes giram. Os padrões mais comuns são de 5.400 rpm (rotações por minuto), 7.200 rpm e 10.000 rpm.
Para serem usados pelo computador, os HDs precisam de uma interface de controle. As existentes são IDE (Intergrated Drive Electronics), SCSI (Small Computer System Interface) e SATA (Serial ATA).

Placa-mãe

Este componente também pode ser interpretado como a "espinha dorsal" do computador, afinal, é ele que interliga todos os dispositivos do equipamento. Para isso, a placa-mãe (ou, em inglês, motherboard) possui vários tipos de conectores. O processador é instalado em seu socket, o HD é ligado nas portas IDE ou SATA, a placa de vídeo pode ser conectada nos slots AGP 8x ou PCI-Express 16x e as outras placas (placa de som, placa de rede, etc) podem ser encaixadas nos slots PCI ou, mais recentemente, em entradas PCI Express (essa tecnologia não serve apenas para conectar placas de vídeo). Ainda há o conector da fonte, os encaixes das memórias, enfim.
Todas as placas-mãe possuem BIOS (Basic Input Output System). Trata-se de um pequeno software de controle armazenado em um chip de memória ROM que guarda configurações do hardware e informações referentes à data e hora. Para manter as configurações do BIOS, em geral, uma bateria de níquel-cádmio ou lítio é utilizada. Dessa forma, mesmo com o computador desligado, é possível manter o relógio do sistema ativo, assim como as configurações de hardware.

Placa de vídeo

Eis outro importante item em um computador. Cabe à placa de vídeo gerar tudo o que vai aparecer em seu monitor de vídeo, como imagens de jogos e de aplicações, efeitos, etc. Hoje, tem-se uma imensa variedade de placas, porém, as marcas mais conhecidas desse segmento são a AMD (após esta comprar a ATI) e a NVIDIA, duas fortes concorrentes. Na verdade, ambas produzem o chip gráfico ou GPU (uma espécie de processador responsável pela geração de imagens, principalmente em aplicações 3D). Quem produz as placas são outras empresas, como MSI, Zotac, ECS, Gigabyte, Asus, entre outras.
É possível encontrar no mercado placas-mãe que possuem placas de vídeo onboard, isto é, onde o vídeo é fornecido de maneira integrada. Essa característica permite economia de gastos, porém pode afetar o desempenho do computador, motivo pelo qual esse tipo de hardware é indicado apenas para computadores destinados a atividades básicas.

Drives de Disquete e CD-ROM/DVD

Os drives de disquete são itens que caíram em desuso, ou seja, é muito raro encontrar no mercado computadores que utilizam esse dispositivo. O disquete consiste em uma espécie de capa quadrada que protege um disco magnético que suporta até 1,44 MB. Por oferecer pouco espaço para armazenamento de dados e por sua fragilidade, esses discos perderam sua utilidade.
O drive de CD-ROM/DVD é, basicamente, o dispositivo que lê CDs e/ou DVDs. Hoje é comum ter aparelhos leitores de CDs/DVDs que também fazem gravação de dados. Tempos atrás, o mercado contava apenas com leitores e gravadores de CD. A seguir, uma lista dos diferentes tipos de drives de disco existentes:
CD-ROM: serve apenas para ler CDs. Mais informações sobre isso aqui;
CD-RW (gravador): serve para ler e gravar CD-Rs e CD-RWs. Para mais informações sobre esse tipo de mídia, clique aqui;
CD-RW + DVD (combo): serve como leitor de CD-ROM e de DVD, além de gravador de CDs;
DVD-RW (gravador): esse drive é um dos mais completos, pois lê e gravas CDs, assim como lê e grava DVDs.


Periféricos gerais

Para finalizar, falta ainda citar o teclado e o mouse. Obviamente, o teclado serve para a digitação, porém, ele também pode ser usado em jogos e em combinações de teclas para acesso rápido a determinados aplicativos. Há inclusive vários modelos de teclados que fogem ao padrão convencional e adicionam recursos extras no acesso a diversos tipos de aplicações.
Os mouses, dispositivos que servem para guiar uma seta (cursor) na tela do computador, também são itens essenciais. Há, basicamente, dois tipos de mouse: o de "bolinha", que usa uma esfera para movimentar o cursor (em desuso); e o mouse óptico, que faz a movimentação da seta por meio de laser, tecnologia que oferece mais precisão à captação de movimentos.
Mouses e teclados costumam ser conectados ao computador por meio de portas chamadas PS/2 (número 1, na imagem abaixo). Mas estas estão caindo em desuso, dando lugar às conexões USB, que também servem para conectar câmeras digitais, MP3-players, pendrives, impressorasscanners, etc. Algumas placas-mães sofisticadas oferecem também entradas FireWire, muito utilizadas para a conexão de HDs externos e filmadoras digitais. Antigamente, mouses utilizavam conectores seriais (número 3, na imagem abaixo), teclados faziam uso de uma porta denominada DIM e impressoras e scanners usavam uma entrada chamada paralela.




Memórias RAM e ROM

Introdução 



No que se refere ao hardware dos computadores, entendemos como memória os dispositivos que armazenam os dados com os quais o processador trabalha. Há, essencialmente, duas categorias de memórias: ROM (Read-Only Memory), que permite apenas a leitura dos dados e não perde informação na ausência de energia; e RAM (Random-Access Memory), que permite ao processador tanto a leitura quanto a gravação de dados e perde informação quando não há alimentação elétrica. Neste artigo, o InfoWester apresenta os principais tipos de memórias ROM e RAM, assim como mostra as características mais importantes desses dispositivos, como frequência, latência, encapsulamento, tecnologia, entre outros.

Memória ROM

As memórias ROM (Read-Only Memory - Memória Somente de Leitura) recebem esse nome porque os dados são gravados nelas apenas uma vez. Depois disso, essas informações não podem ser apagadas ou alteradas, apenas lidas pelo computador, exceto por meio de procedimentos especiais. Outra característica das memórias ROM é que elas são do tipo não voláteis, isto é, os dados gravados não são perdidos na ausência de energia elétrica ao dispositivo. Eis os principais tipos de memória ROM:
- PROM (Programmable Read-Only Memory): esse é um dos primeiros tipos de memória ROM. A gravação de dados neste tipo é realizada por meio de aparelhos que trabalham através de uma reação física com elementos elétricos. Uma vez que isso ocorre, os dados gravados na memória PROM não podem ser apagados ou alterados;
- EPROM (Erasable Programmable Read-Only Memory): as memórias EPROM têm como principal característica a capacidade de permitir que dados sejam regravados no dispositivo. Isso é feito com o auxílio de um componente que emite luz ultravioleta. Nesse processo, os dados gravados precisam ser apagados por completo. Somente depois disso é que uma nova gravação pode ser feita;
- EEPROM (Electrically-Erasable Programmable Read-Only Memory): este tipo de memória ROM também permite a regravação de dados, no entanto, ao contrário do que acontece com as memórias EPROM, os processos para apagar e gravar dados são feitos eletricamente, fazendo com que não seja necessário mover o dispositivo de seu lugar para um aparelho especial para que a regravação ocorra;
- EAROM (Electrically-Alterable Programmable Read-Only Memory): as memórias EAROM podem ser vistas como um tipo de EEPROM. Sua principal característica é o fato de que os dados gravados podem ser alterados aos poucos, razão pela qual esse tipo é geralmente utilizado em aplicações que exigem apenas reescrita parcial de informações;
- Flash: as memórias Flash também podem ser vistas como um tipo de EEPROM, no entanto, o processo de gravação (e regravação) é muito mais rápido. Além disso, memórias Flash são mais duráveis e podem guardar um volume elevado de dados. É possível saber mais sobre esse tipo de memória no artigo Cartões de memória Flash, publicado aqui no InfoWester;
- CD-ROM, DVD-ROM e afins: essa é uma categoria de discos ópticos onde os dados são gravados apenas uma vez, seja de fábrica, como os CDs de músicas, ou com dados próprios do usuário, quando o próprio efetua a gravação. Há também uma categoria que pode ser comparada ao tipo EEPROM, pois permite a regravação de dados: CD-RW e DVD-RW e afins.

Memória RAM

As memórias RAM (Random-Access Memory - Memória de Acesso Aleatório) constituem uma das partes mais importantes dos computadores, pois são nelas que o processador armazena os dados com os quais está lidando. Esse tipo de memória tem um processo de gravação de dados extremamente rápido, se comparado aos vários tipos de memória ROM. No entanto, as informações gravadas se perdem quando não há mais energia elétrica, isto é, quando o computador é desligado, sendo, portanto, um tipo de memória volátil.
Há dois tipos de tecnologia de memória RAM que são muitos utilizados: estático e dinâmico, isto é, SRAM e DRAM, respectivamente. Há também um tipo mais recente chamado de MRAM. Eis uma breve explicação de cada tipo:
- SRAM (Static Random-Access Memory - RAM Estática): esse tipo é muito mais rápido que as memórias DRAM, porém armazena  menos dados e possui preço elevado se considerarmos o custo por megabyte. Memórias SRAM costumam ser utilizadas como cache Memória RAM
As memórias RAM (Random-Access Memory - Memória de Acesso Aleatório) constituem uma das partes mais importantes dos computadores, pois são nelas que o processador armazena os dados com os quais está lidando. Esse tipo de memória tem um processo de gravação de dados extremamente rápido, se comparado aos vários tipos de memória ROM. No entanto, as informações gravadas se perdem quando não há mais energia elétrica, isto é, quando o computador é desligado, sendo, portanto, um tipo de memória volátil.
Há dois tipos de tecnologia de memória RAM que são muitos utilizados: estático e dinâmico, isto é, SRAM e DRAM, respectivamente. Há também um tipo mais recente chamado de MRAM. Eis uma breve explicação de cada tipo:
- SRAM (Static Random-Access Memory - RAM Estática): esse tipo é muito mais rápido que as memórias DRAM, porém armazena  menos dados e possui preço elevado se considerarmos o custo por megabyte. Memórias SRAM costumam ser utilizadas como cache
- DRAM (Dynamic Random-Access Memory - RAM Dinâmica): memórias desse tipo possuem capacidade alta, isto é, podem comportar grandes quantidades de dados. No entanto, o acesso a essas informações costuma ser mais lento que o acesso às memórias estáticas. Esse tipo também costuma ter preço bem menor quando comparado ao tipo estático;
- MRAM (Magnetoresistive Random-Access Memory - RAM Magneto-resistiva): a memória MRAM vem sendo estudada há tempos, mas somente nos últimos anos é que as primeiras unidades surgiram. Trata-se de um tipo de memória até certo ponto semelhante à DRAM, mas que utiliza células magnéticas. Graças a isso, essas memórias consomem menor quantidade de energia, são mais rápidas e armazenam dados por um longo tempo, mesmo na ausência de energia elétrica. O problema das memórias MRAM é que elas armazenam pouca quantidade de dados e são muito caras, portanto, pouco provavelmente serão adotadas em larga escala.

- DRAM (Dynamic Random-Access Memory - RAM Dinâmica): memórias desse tipo possuem capacidade alta, isto é, podem comportar grandes quantidades de dados. No entanto, o acesso a essas informações costuma ser mais lento que o acesso às memórias estáticas. Esse tipo também costuma ter preço bem menor quando comparado ao tipo estático;
- MRAM (Magnetoresistive Random-Access Memory - RAM Magneto-resistiva): a memória MRAM vem sendo estudada há tempos, mas somente nos últimos anos é que as primeiras unidades surgiram. Trata-se de um tipo de memória até certo ponto semelhante à DRAM, mas que utiliza células magnéticas. Graças a isso, essas memórias consomem menor quantidade de energia, são mais rápidas e armazenam dados por um longo tempo, mesmo na ausência de energia elétrica. O problema das memórias MRAM é que elas armazenam pouca quantidade de dados e são muito caras, portanto, pouco provavelmente serão adotadas em larga escala.


Linguagens de programação

Introdução


Os computadores são funcionários quase perfeitos. Fazem tudo o que mandamos, não reclamam, não se importam de trabalhar até tarde da noite, não cobram hora extra nem tiram férias. Mas, em compensação também não pensam. Para que façam qualquer coisa é preciso explicar tudo com os mínimos detalhes e na língua deles.
Considerando que tudo o que os computadores conseguem entender são seqüências intermináveis de números binários, fornecer estas "instruções" pode ser muito penoso para um ser humano. Você consegue se imaginar lendo um manual de 5.000 páginas e decorando um a um centenas de códigos binários que representam as instruções do processador?
Se os programadores precisassem programar diretamente em binários, decorando seqüências como 10111011101101101110110011001010 para cada instrução do processador e para cada endereço de memória a ser acessado, provavelmente não teríamos mais programadores... já estariam todos loucos.
Para facilitar as coisas, começaram a ser desenvolvidas as linguagens de programação, que diferem na sintaxe e recursos, mas tem um ponto em comum, que é a existência de umcompilador. Seja programando em C, ou seja em Kylix, você usará um editor para escrever seu programa, respeitando as regras da linguagem escolhida e em seguida rodará o programa compilador, que interpretará os comandos que inclui no programa e os transformará embinários, as instruções que são entendidas pelo processador.
A vantagem é que você poderá trabalhar com instruções como if, else, etc. além de todas as facilidades oferecidas pela linguagem ao invés de gigantescos endereços binários. Sem dúvida muito mais simples.
Existem diversas linguagens de programação, meu objetivo é dar algumas noções básicas sobre as peculiaridades e utilidade de cada uma.
Para começar, existe uma linguagem "básica" para quem quer aprender a programar, ensinada nos cursos de lógica da programação, o pseudocódigo. Ele não e uma linguagem "de verdade", mas e uma maneira mais simples para aprender os fundamentos usados em todas as linguagens de programação.
Podemos começar com um exemplo simples. Vamos fazer um programa capaz de tomar uma decisão fácil. Ele pergunta a nota do aluno e diz se ele passou ou não. Para um ser humano isso seria um problema muito elementar, mas para o computador as coisas não são tão simples assim. Lembre-se que ele e burro e precisa ser orientado passo a passo. Nosso programinha em pseudocódigo poderia ficar assim:
escreva: "Qual é a nota do aluno?"
leia nota
se nota maior ou igual a sete
então:
escreva "Ele passou"
senão:
escreva: "Ele foi reprovado"
fim do se
fim do programa
Este programinha perguntaria a nota e com base no numero que for digitado avisaria se o aluno passou ou não.
Ele poderia ser escrito em qualquer linguagem, mas a lógica seria a mesma. De acordo com os recursos oferecidos pela linguagem escolhida ele poderia ter uma interface simples em modo texto, uma interface gráfica mais trabalhada, aparecer no meio de uma pagina web e assim por diante.
As linguagens de programação são conjuntos de padrões e comandos que você pode usar para dar ordens para nossos amigos burros.
Assim como nas línguas faladas, existem diferenças de sintaxe, gramática e existem linguagens mais simples ou mais complicadas de aprender e linguagens mais adequadas para tipo de tarefa a realizar. Veja alguns exemplos de linguagens de programação:
Assembly
O Assembly foi provavelmente a primeira linguagem de programação da história, surgida na década de 50, época em que os computadores ainda usavam válvulas. A idéia do assembly é usar um comando em substituição a cada instrução de máquina.
No assembly, cada uma destas instruções, equivale a uma instrução do processador. Ao invés de usar instruções como 10101011 você pode usar outras bem mais fáceis de entender e de memorizar, como add, div, mul, and, or, not, etc. Você também pode criar variáveis, que são pequenos espaços na memória RAM reservados para guardar algum tipo de dado, que o programa precisará mais tarde. Você pode usar aquelas instruções que citei para lidar com elas. Por exemplo, a instrução "add" faz com que o processador some duas variáveis; "add x, y" por exemplo, soma os valores de x e y.
Apesar de ser exaustivamente trabalhoso, você pode perfeitamente desenvolver pequenos programas em assembly, para isso só vai precisar de um compilador e bastante paciência para aprender. Você pode baixar um gratuíto em http://www.web-sites.co.uk/nasm nesta mesma página você vai encontrar alguns manuais que podem ajudar bastante.
O compilador transforma o código escrito em assembly em linguagem de máquina, que finalmente poderá ser entendida pelo processador.
Existem também os decompiladores, que fazem o trabalho inverso, de transformar um programa já compilado, em um código em linguagem assembly. Este recurso é chamado de engenharia reversa. É assim que conseguem crackear programas, quebrar códigos de proteção (como o do DVD), etc. Claro que para isso, é preciso alguém que conheça muito de assembly e que tenha disposição para ficar estudando o código até encontrar o que procura.
Por causa desta característica de permitir trabalhar diretamente com as instruções do processador, o assembly é chamado de linguagem de baixo nível. Existem também linguagens de alto nível, como C++ ou Pascal, onde é possível usar várias funções já prontas ou mesmo ferramentas visuais, como o Kdeveloper ou o Kylix, que são ainda mais fácies.
Fortran
O Fortran foi uma das primeiras linguagens de alto nível da história. Enquanto o Assembly é chamado de linguagem de baixo nível, por nele utilizarmos diretamente as instruções e endereços do processador e memória, numa linguagem de alto nível temos várias funções prontas, o que facilita muito a programação, mas em compensação torna em muitos casos o programa maior e mais pesado, já que o compilador jamais conseguirá gerar um código tão otimizado quanto um programador experiente conseguiria.
Fortran é a contração de "Formula Translator". A primeira versão do Fortran foi criada no final da década de 50, mas a linguagem começou a ser usada em larga escala apartir da metade da década de 60, quando surgiram várias versões diferentes. Atualmente o Fortran é pouco usado, mas existe um ícone mágico para instalar o compilador no Kurumin.
Pascal
O Pascal é outra linguagem de alto nível, criada durante a década de 60. O Pascal é uma linguagem bastante estruturada, com regras bastante rígidas, o que a torna difícil de usar. Hoje em dia o Pascal original é pouco usado, mas seus descendentes diretos como o Free Pascal evoluíram muito. O próprio Kylix (unto com o Delphi) é uma evolução do Pascal.
Cobol
Cobol significa "Common Business Oriented Language". Esta linguagem foi desenvolvida no final da década de 50, com o objetivo de ser uma plataforma de desenvolvimento para aplicações bancárias e financeiras em geral. Comparado com o Pascal e o Assembly, comuns na época, o Cobol é uma linguagem bastante amigável, o que garantiu uma grande aceitação. Até hoje esta linguagem é usada em muitos sistemas bancários, o que explica a grande procura por programadores experientes nesta linguagem na época do bug do ano 2000.
C
O C foi desenvolvido durante a década de 70, mas ainda é largamente utilizado. A grande vantagem do C é permitir escrever tanto programas extremamente otimizados para a máquina, como seria possível apenas em assembly, e ao mesmo tempo vir com várias funções prontas, como uma linguagem de alto nível, que podem ser utilizadas quando não for necessário gerar um código tão otimizado.
A maior parte dos programas Linux e o Kernel quase todo foram escritos em C, o que explica o por que do sistema ser tão rápido em algumas tarefas.
C++
O C++ mantém os recursos do C original, mas traz muitos recursos novos, como recursos orientados a objetos, sendo também bem mais fácil de utilizar. O C++ é bastante usado atualmente para desenvolver muitos programas para várias plataformas, ele é por exemplo a linguagem oficial do KDE (a interface gráfica usada por padrão no Kurumin) e da maioria dos programas para ele.
Python
O Python é uma linguagem de programação com uma sintaxe muito simples e intuitiva e ao mesmo tempo bastante poderosa, que pode ser usada por toda classe usuários. É uma boa opção de linguagem para quem está começando a programar.

quinta-feira, 1 de setembro de 2011

Oração do empregado


Oração do Bom Funcionário

-Chefe nosso que estais, zangado,
multiplicada seja a vossa Bondade.
Venha a nós a vossa compreensão

-Seja feita a vossa vontade,
assim na seção como na promoção.

-O serviço fácil de cada dia nos dai hoje e sempre

-Perdoai as nossas faltinhas e atrasos

Assim como nós perdoamos as vossas impertinências

-Não nos deixe cair na vossa marcação
e livrai-nos da demissão,
Amém