• Categorias

  • Arquivos

O que é um Computador?

Um computador é uma máquina eletrônica ou não que recebe dados através de periféricos de entrada, processa esses dados, realizando operações lógicas e aritméticas sobre eles, transformando-os em outros dados que chamamos de informação. Tal informação é enviada aos periféricos de saída ou é simplesmente armazenada.

fluxograma de funcionamento de um computador

O primeiro computador criado pelo homem foi o ábaco, um antigo instrumento de cálculo, formado por uma moldura com bastões ou arames paralelos, dispostos no sentido vertical, correspondentes cada um a uma posição digital (unidades, dezenas,…) e nos quais estão os elementos de contagem (fichas, bolas, contas,…) que podem fazer-se deslizar livremente. Outros exemplos de computadores são: calculadora, caixas eletrônicos, máquinas de ponto, etc.

exemplo de um ábaco

Hoje podemos classificar os computadores como:

  • Microcomputador: Também conhecido como PC (do inglês Personal Computer que  significa Computador Pessoal), normalmente utilizados em residências, escritórios e comércios.

  • Mainframe: Computadores de grande porte, capazes de processar centenas de milhares de processos simultaneamente, normalmente utilizados em grandes empresas.

  • Supercomputador: Iguais aos Mainframes mas com mais poder de processamento, normalmente utilizados para fins militares.

O que é Software?

Software se trata de um programa de computador composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual (nome dado a uma máquina, implementada através de software, que executa programas como um computador real). Em um programa correto e funcional, essa sequência segue padrões específicos que resultam em um comportamento desejado.
Um programa pode ser executado por qualquer dispositivo capaz de interpretar e executar as instruções de que é formado.
Quando um software está representado como instruções que podem ser executadas diretamente por um processador dizemos que está escrito em linguagem de máquina ou  linguagem de baixo nível. A execução de um software também pode ser intermediada por um programa interpretador, responsável por interpretar e executar cada uma de suas instruções conhecido como compilador. Uma categoria especial e notável de interpretadores são as máquinas virtuais, como a Máquina virtual Java (JVM), que simulam um computador inteiro.
Atualmente, com o barateamento dos microprocessadores, existem outras máquinas programáveis, como telefone celular, máquinas de automação industrial, calculadora, etc.

A construção de um programa de computador

Um programa é um conjunto de instruções para o processador (linguagem de máquina). Entretanto, pode-se utilizar linguagens de programação, que traduza comandos em instruções para o processador.
Normalmente, programas de computador são escritos em linguagens de programação, pois estas foram projetadas para aproximar-se das linguagens usadas por seres humanos. Raramente a linguagem de máquina é usada para desenvolver um programa. Atualmente existe uma quantidade muito grande de linguagens de programação, dentre elas as mais populares no momento são Java, Visual Basic, C, C++, PHP, etc. Alguns programas feitos para usos específicos, como por exemplo software embarcado ou software embutido, ainda são feitos em linguagem de máquina para aumentar a velocidade ou diminuir o espaço consumido. Em todo caso, a melhoria dos processadores dedicados também vem diminuindo essa prática, sendo a C uma linguagem típica para esse tipo de projeto. Essa prática, porém, vem caindo em desuso, principalmente devido à grande complexidade dos processadores atuais, dos sistemas operacionais e dos problemas tratados. Somente em casos excepcionais, é utilizado o código de máquina, onde a representação numérica utilizada é colocada diretamente no processador.
O Programa é inicialmente “carregado” na memória principal. Após carregar o programa, o computador encontra o ponto inicial de entrada do programa que carregou e lê as instruções sucessivamente byte por byte. As instruções do programa são passadas para o sistema ou processador onde são traduzidas da linguagens de programação, conhecida também como linguagem de alto nível, para a linguagem de máquina, sendo em seguida executadas ou enviadas diretamente para o hardware, que recebe as instruções na forma de linguagem de máquina

.

Tipos de programas de computador

Qualquer computador moderno tem uma variedade de programas que fazem diversas tarefas.
Eles podem ser classificados em duas grandes categorias:
Software de sistema que incluiu o firmware (O BIOS dos computadores pessoais, sistema de software que controla a placa mãe, por exemplo), drivers de dispositivos, o sistema operacional e tipicamente uma interface gráfica que, em conjunto, permitem ao usuário interagir com o computador e seus periféricos. Exemplo Windows, MacOS, Linux, etc.
Software aplicativo, que permite ao usuário fazer uma ou mais tarefas específicas. Aplicativos podem ter uma abrangência de uso de larga escala, muitas vezes em âmbito mundial, nestes casos, os programas tendem a ser mais robustos e mais padronizados. Programas escritos para um pequeno mercado têm um nível de padronização menor. Exemplo: Word, Windows Media Player, Internet Explorer, etc.
Ainda é possível usar a categoria Software embutido ou Software embarcado, indicando software destinado a funcionar dentro de uma máquina que não é um computador de uso geral e normalmente com um destino muito específico. O sistema embarcado (ou sistema embutido) é um sistema microprocessado no qual o computador é completamente dedicado ao dispositivo ou sistema que ele controla. Diferente de computadores de propósito geral, como o computador pessoal, um sistema embarcado realiza um conjunto de tarefas predefinidas, geralmente com requisitos específicos já que o sistema é dedicado a tarefas específicas, Exemplo: celulares, MP3 players, semáforos, etc.
Atualmente temos um novo tipo de software. O software como serviço, que é um tipo que roda diretamente na internet, conhecido popularmente como cloud computing ou em português computação em nuvem, não sendo necessário instalar nada no computador do usuário. Geralmente esse tipo de software é gratuito e tem as mesmas funcionalidades das versões desktop. Exemplo: Google Docs, YouOS, etc.

Licenças de Softwares

Uma licença de software é uma definição de ações autorizadas (ou proibidas) no âmbito do direito de autor de um programador de software de computador concedidas (ou impostas) ao usuário deste software. Entende-se por usuário qualquer entidade legal, empresas ou um “usuário final (doméstico)”, origem da expressão end user license agreement (EULA).
Quando uma licença acrescenta restrições para além das existentes no direito de autor, o usuário tem normalmente de aceitar que lhe sejam impostas estas restrições para poder sequer utilizar o software. Aqui reside a principal diferença entre uma licença de software livre e uma licença de software não-livre: as licenças de software livre acrescentam direitos face aos já concedidos pelo direito de autor, deixando apenas para o ato de redistribuição as únicas regras que impõem.
A maioria do software é publicado sob uma licença de software. Essa licença define e restringe qual a forma que se pode utilizar o software define também a quantidade de licenças, modificações entre outros.
Exemplos de licenças:
GPL: General Public License, em portugês Licença Pública Geral, é a designação da licença para software livre, ou seja, o software que pode ser usado, copiado, estudado, modificado e redistribuído sem restrição. Idealizada por Richard Matthew Stallman em 1989, no âmbito do projeto GNU da Free Software Foundation (FSF).
A GPL é a licença com maior utilização por parte de projetos de software livre, em grande parte devido à sua adoção para o projeto GNU e o sistema operacional GNU/Linux.
Licença BSD: É uma licença de código aberto inicialmente utilizada nos sistemas operacionais do tipo Berkeley Software Distribution (um sistema derivado do Unix). Apesar dela ter sido criada para os sistemas BSD, atualmente vários outros sistemas são distribuídos sob esta licença.
Os proprietários originais da distribuição BSD eram os “Regentes da Universidade da Califórnia”, devido ao fato da BSD ter nascido na Universidade de Berkeley. A licença oficial BSD tem sido revisada desde a sua criação, e inspirou inúmeras variantes utilizadas por outros desenvolvedores de software
Esta licença impõe poucas restrições quando comparada aquelas impostas por outras licenças, como a GNU General Public License ou mesmo as restrições padrão determinadas pelo copyright, colocando-a relativamente próxima do domínio público. De fato, a licença BSD tem sido chamada de copycenter, ou “centro de cópias”, em comparação com o copyright padrão e o copyleft da licença GPL: “Leve até o copycenter e faça quantas cópias quiser.”
Licença Apache: A Licença Apache (Apache License em inglês) é uma licença para software livre (open source, ou código aberto) de autoria da Apache Software Foundation (ASF). Todo software produzido pela ASF ou qualquer um dos seus projetos e sub-projetos é licenciado de acordo com os termos da licença Apache. Alguns projetos não pertencentes à ASF também utilizam esta licença. A licença Apache (versões 1.0, 1.1 e 2.0) exige a inclusão do aviso de copyright e disclaimer, mas não é uma licença copyleft – ela permite o uso e distribuição do código fonte tanto no software open source como no proprietário.
Licença comercial: O termo licença comercial é normalmente associado a contratos de licenciamento de uso de software. Os softwares chamados comerciais são aqueles pelos quais o usuário paga uma taxa de licenciamento para poder utilizar.
É importante observar que, de acordo com o modelo de licenciamento de software comercial, o que o usuário adquire quando paga pelo software é o direito de utilizá-lo segundo as regras definidas por seu contrato de licenciamento de uso. Uma analogia pode ser feita com livros: quando se compra um livro está se adquirindo a mídia impressa, mas o direito autoral do conteúdo é do autor ou da editora.
As duas restrições mais comuns nas licenças comerciais são:
O direito de redistribuição, por exemplo, realizar uma cópia dele e repassá-la para outro usuário. A cópia de softwares em desacordo com sua licença comercial é considerada uma cópia ilegal e esta prática é conhecida pelo termo pirataria.
O direito de alterar o funcionamento do software, adaptando-o para um fim específico. Como o software comercial raramente é distribuído com seu código fonte, para alterá-lo seria necessário utilizar a prática da engenharia reversa, o que costuma ser terminantemente proibido por esse tipo de licença.
A Licença comercial define também, em muitos casos, os serviços que a empresa que vende o software disponibiliza para os usuários que adquirem seu direito de uso, tais como suporte, correção de erros de funcionamento, atualização periódica e acesso a documentação de uso e outros materiais – normalmente via Internet.

Freeware: Software gratuito ou freeware é qualquer programa de computador cuja utilização não implica o pagamento de licenças de uso ou royalties. É importante não confundir o free de freeware com o free de free software, pois no primeiro uso o significado é de gratuito, e no segundo de livre. Um programa licenciado como freeware não é necessariamente um software livre, pode não ter código aberto e pode acompanhar licenças restritivas, limitando o uso comercial, a redistribuição não autorizada, a modificação não autorizada ou outros tipos de restrições. O freewareshareware, no qual o usuário deve pagar para acessar a funcionalidade completa ou tem um tempo limitado de uso gratuito.

diferencia-se do Um software é gratuito ou freeware quando possui suas funcionalidades completas por tempo ilimitado sem custo monetário. A licença pode restringir o tipo de uso, como uso para fins não lucrativos, não comerciais, uso acadêmico, entre outros. Dessa forma a licença pode ser “gratuito para uso não comercial”
Shareware: Shareware é um programa de computador disponibilizado gratuitamente, porém com algum tipo de limitação. Sharewares geralmente possuem funcionalidades limitadas e/ou tempo de uso gratuito do software limitado, após o fim do qual o usuário é requisitado a pagar para acessar a funcionalidade completa ou poder continuar utilizando o programa. Um shareware está protegido por direitos autorais.
Esse tipo de distribuição tem como objetivo comum divulgar o software, assim os usuários podem testá-lo antes da aquisição.
Demo: Considera-se uma versão de demonstração ou demo qualquer material promocional que é uma fração de um produto maior, lançado com a intenção de dar a oportunidade de o produto ser avaliado por possíveis clientes. O termo é bastante usado nos contextos da música e dos jogos.
Trial: é um programa semelhante aos programas demo com a diferença de ter as funcionalidades disponíveis por determinado período de tempo.

Software Livre e Software em Domínio Público

Software livre é uma expressão formalizada pela primeira vez por Richard Stallman, na sequência do início do Projecto GNU, e seguidamente da Free Software Foundation como braço legal do Projecto.
Refere-se a todo e qualquer programa de computador cuja licença de direito de autor conceda ao utilizados as seguintes 4 liberdades:
A liberdade de executar o programa, para qualquer propósito.
A liberdade de estudar como o programa funciona, e adaptá-lo para as suas necessidades. Acesso ao código-fonte é um pré-requisito para esta liberdade.
A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo.
A liberdade de aperfeiçoar o programa, e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie. Acesso ao código-fonte é um pré-requisito para esta liberdade.
As licenças de software livre também se popularizaram, por darem a garantia jurídica aos utilizadores de que não estão cometendo atos de infração de direito de autor ao copiar ou modificar o software.
A remoção de qualquer uma destas quatro liberdades descaracterizaria sua condição de software livre.
A liberdade de executar o programa significa a liberdade para qualquer tipo de pessoa física ou jurídica utilizar o software em quantas máquinas quiser, em qualquer tipo de sistema computacional, para qualquer tipo de trabalho ou atividade, sem nenhuma restrição imposta pelo fornecedor.
A liberdade de redistribuir o programa compilado, isto é em formato binário, necessariamente inclui a obrigatoriedade de disponibilizar seus códigos-fonte. Caso o software venha a ser modificado e o autor da modificação queira distribuí-lo, gratuitamente ou não, será também obrigatória a distribuição do código fonte das modificações, desde que elas venham a integrar o programa. Não é necessária a autorização do autor ou do distribuidor do software para que ele possa ser redistribuído, já que as licenças de software livre assim o permitem.
Para que seja possível estudar ou modificar o software (para uso particular ou para distribuir) é necessário ter acesso ao código-fonte. Por isso a disponibilidade desses arquivos é pré-requisito para a liberdade do software. Cada licença determina como será feito o fornecimento do código fonte para distribuições típicas, como é o caso de distribuições em mídia portátil somente com os códigos binários já finalizados (sem o fonte). No caso da licença GPL, a fonte deve ser disponibilizada em local de onde possa ser acessado, ou deve ser entregue ao usuário, se solicitado, sem custos adicionais (exceto transporte e mídia).
Para que essas liberdades sejam reais, elas devem ser irrevogáveis. Caso o desenvolvedor do software tenha o poder de revogar a licença, o software não é livre.
A maioria dos softwares livres é licenciada através de uma licença de software livre, como a GNU GPL, a mais conhecida.
As licenças de software livre permitem que eles sejam vendidos, mas estes em sua grande maioria estão disponíveis gratuitamente.
Uma vez que o comprador do software livre tem direito às quatro liberdades listadas, ele poderia redistribuir este software gratuitamente ou mediante remuneração. As versões pagas geralmente são acompanhadas de algum tipo de serviço adicional, como direito a assistência técnica por determinado período e manuais, por exemplo. Muitas vezes comprar o software é mais vantajoso para o cliente final que não tem muita experiência em programação, poupando tempo.
Software livre é diferente de software em domínio público. O primeiro, quando utilizado em combinação com licenças típicas (como as licenças GPL e BSD), garante a autoria do desenvolvedor ou organização. O segundo caso acontece quando se passam os anos previstos nas leis de cada país de proteção dos direitos do autor e este se torna bem comum. Ainda assim, um software em domínio público pode ser considerado como um software livre, desde que atenda aos quatro tipos de liberdade para os usuários do software definidas pela Free Software Foundation, citados acima.
Licenças como a GPL contêm um conceito adicional, conhecido como Copyleft, que se baseia na propagação dos direitos. Um software livre sem copyleft pode ser tornado não-livre por um usuário, caso assim o deseje. Já um software livre protegido por uma licença que ofereça copyleft, se distribuído, deverá ser sob a mesma licença, ou seja, repassando os direitos.
Associando os conceitos de copyleft e software livre, programas e serviços derivados de um código livre devem obrigatoriamente permanecer com uma licença livre (os detalhes de quais programas, quais serviços e quais licenças são definidos pela licença original do programa). O usuário, porém, permanece com a possibilidade de não distribuir o programa e manter as modificações ou serviços utilizados para si próprio.