domingo, 4 de abril de 2010

Linguagem de Programação - Java - Aula 5

Olá olá olá galera, revendo as aulas de java, eu esqueci de postar uma delas, a referente a laços de repetição, portanto vou apresentar em resumo nesta aqui.

Nesse link postado acima, na wikipédia, há uma explicação detalhada a respeito do assunto, vale a pena conferir.

Em java, os loops são feitos da seguinte forma:

While: Enquanto i, que é uma variável inteira, for menor ou igual a 20, deve-se imprimir em tela o valor de i. O “i++” é usado para incrementar o valor, ou seja, cada vez que passar aí, fará i = i + 1;


while ( i <= 20)

{

System.out.println(i);

i++;

}

Linguagem de Programação - Java - Aula 5

For: Para i que começa valendo 1 até i ser menor ou igual a 20 deve fazer também imprimir em tela o valor de i. Note que na própria estrutura da condição, já definimos que o i deve ser incrementado.

for(i = 1; i <= 20; i++)

{

System.out.println(i);

}


Do while: O programa passará pelo menos uma vez pela estrutura e continuará até que a condição se torne falsa.


do{

System.out.println(i);

i++;

}while(i <= 20);


As estruturas de repetição são muito usados, segue um exemplo de uma tabuada feita usando o for, e é possível fazer usando qualquer tipo de loop, fica aí o desafio para tentarem de outras formas.


int valor = 0;

for (int i = 1; i <= 10; i++)

{

valor = 7 * i;

System.out.println("7 x " + i + " = " + valor);

}


Agora sim a aula 5ª aula. Nesta aula, começaremos a trabalhar realmente com o conceito de classes, atributos e métodos, usando como exemplo um cadastro. Se houver dúvidas no conceito de cada coisa, vale a pena recordar a 1ª aula onde explica claramente o que é cada detalhe.

Vamos então definir duas classe, uma classe Pessoa e a outra ExemploPessoa, na classe Pessoa vamos mostrar ao java o que é uma pessoa, que dados serão requeridos. Toda pessoa tem nome, endereço e telefone, portanto, esses serão nossos atributos. Segue então como ficará a classe Pessoa, onde o que está em itálico são os comentários de cada parte do código.

Abaixo do código, segue as imagens possibilitando um melhor entendimento e visualização da identação.

/*Essa classe não terá o método main pq a classe principal que executa e inicia o programa é que tem o main

*

* Lembrando que uma classe precisa ter atributos e métodos

*

* Atributos: nome, endereço, telefone = são privados e podem ser acessados dentro da classe

*

* Metodos: Pessoa() e Pessoa(String, String, String) = são públicos, são a forma de comunicação entre as classes */

public class Pessoa {

private String nome;

private String endereco;

private String telefone;

public Pessoa() //Métodos que possuem o mesmo nome da classe são chamados detodos construtores, sua função é definir como um objeto será criado, ele somente pode ser usado na criação de um objeto, pq a função é falar como o obj deve ser criado - instância)

{ //esse método cria um objeto vazio, pq o usuario vai digitar depois os dados,

//ainda não há valor definido, mas o objeto ja existe

}

public Pessoa(String _nome, String _endereco, String _telefone) //segundo metodo construtor

//nesse construtor é criado um objeto e ja sabe os dados do objeto, por isso foi passado com parâmetros, usar o anderline na frente (_nome) é convenção para identificar melhor e facilitar a manutenção

{

nome = _nome; //recebe os valores dos parâmetros e passa para os atributos

endereco = _endereco;

telefone = _telefone;

}

public void DefinirNome(String _nome) //o objetivo desse metodo: permite alterar o valor do atributo nome

{

nome = _nome;

}

public void DefinirEnd(String _endereco) //o objetivo desse metodo: permite alterar o valor do atributo endereco

{

endereco = _endereco;

}

public void DefinirTel(String _telefone) //o objetivo desse metodo: permite alterar o valor do atributo telefone

{

telefone = _telefone; //ele não retorna valor (void), apenas pega o parametro e atribui ao atributo

}

public String ObterNome() //metodos que retornam precisam mostrar o tipo de dado que retorna, no caso uma String

{

return (nome);

}

public String ObterEnd()

{

return (endereco);

}

public String ObterTel()

{

return (telefone);

}

// Demais métodos ...

}



A classe ExemploPessoa é a que realmente executará o programa, nela contém o método main, e é nela que colocaremos os dados das pessoas. Segue abaixo como ela deve ficar.


/*A classe principal, aqui é que pode usar as outras classes*/

public class ExemploPessoa {

public static void main(String[] args) throws IOException

{

BufferedReader teclado = new BufferedReader(

new InputStreamReader(System.in)); //cria o objeto teclado

Pessoa p1 = new Pessoa(); // A classe Pessoa será um modelo para mostrar o que será uma pessoa para o programa, o p1 é um objeto, o new é o operador de instancia (a partir de uma classe cria-se um objeto) e o Pessoa() é o método construtor, ele sempre vai aparecer com o new

//esse metodo é vazio, isso seria necessário pq por exemplo, num banco de dados como ele vai retornar um valor se não leu ainda o banco? Então com o metodo construtor vazio ele faz a leitura e depois ele usa um metodo

construtor para atribuir valor

System.out.println("Informe o nome: "); //obtendo valores para p1

p1.DefinirNome(teclado.readLine());

System.out.println("Informe o endereço: ");

p1.DefinirEnd(teclado.readLine());


System.out.println("Informe o telefone: ");

p1.DefinirTel(teclado.readLine());

Pessoa p2 = new Pessoa("Ana", "Rua das Flores, 100", "4532-2322"); //uma classe pode dar origem a vários objetos, cria o objeto (new) e usa o segundo construtor com os devidos parâmetros

/*Polimorfismo = uma classe pode ter vários métodos com o mesmo nome, porém, com parâmetros diferentes*/

System.out.println("Pessoa 1"); //Imprimindo os valores de p1

System.out.println("Nome: " + p1.ObterNome()); //está buscando os valores armazenados dentro do p1

System.out.println("Endereço: " + p1.ObterEnd());

System.out.println("Telefone: " + p1.ObterTel() + "\n");

System.out.println("Pessoa 2"); //Imprimindo os valores de p2

System.out.println("Nome: " + p2.ObterNome());

System.out.println("Endereço: " + p2.ObterEnd());

System.out.println("Telefone: " + p2.ObterTel());

}

}

Todos os créditos dessas aulas para o professor Claudio Luís V. Oliveira, que com muita paciência e persistência tem nos ensinado de uma forma agradável e eficiente.

Linguagem de Programação – Java – Aula 1

Linguagem de Programação – Java – Aula 2 e 3
Linguagem de Programação - Java - Vetores - Aula 4




sexta-feira, 2 de abril de 2010

Linguagem de Programação - Java - Vetores - Aula 4

Olá galera, um pouco atrasada nos posts das aulas de java, mas vamos lá, o tema de hoje é sobre vetores, também conhecidos como arrays.

Um vetor mantém uma série de elementos de dados, do mesmo tipo, cada um numa posição pré definida. Então, por exemplo, ao cadastrar 5 nomes, poderíamos usar:

  • 5 variáveis = String nome1, nome2, nome3, nome4, nome5; ou

  • 1 vetor = nome[i] , onde o meu “ i ” será incrementado determinando 5 posições distintas para cada nome


Traduzindo para java. Declaramos um vetor da seguinte forma:


String nome[] = new String[5]; = no caso de um vetor de String ou

int i[] = new int[10]; = no caso de um vetor de inteiros, o número entre colchetes [10] é onde definimos o tamanho do vetor, isso quer dizer que ele terá 10 posições.


Os elementos de um vetor podem ser inseridos no momento da criação do mesmo conforme mostrado abaixo:


int i[] = {64, 87, 32, 07, 86};


char linguagem[] = { 'J', 'a', 'v', 'a' };


e assim por diante, colocando o tipo de dado que desejar usar.


Segue abaixo exemplos de como trabalhar com vetores. Tem o código colado aqui, com os devidos comentários em itálico , também abaixo, coloquei as imagem para que entendam melhor o código e toda a identação.

Exemplo 1:

int i[] = new int[5]; //declarando vetor com o nome i sendo inteiro
i[0] = 45; //atribuindo valor as posições do vetor, ele sempre começa do zero
i[1] = 2;
i[2] = 18;
i[3] = 61;
i[4] = 94;

//exibir o elemento que está no índice 3
System.out.println("O valor da posição 3 é " + i[3]);

//exibir o tamanho do vetor
System.out.println("Tamanho: " + i.length);

//exibir tds os elementos do vetor
for(int a = 0; a < style="font-style: italic;"> //exibir tds os elementos do vetor de forma invertida
for(int b = i.length - 1; b >= 0; b--) //coloca length - 1 pq o vetor tem tamanho 5
//mas o último elemento está na posição i[4]
{
System.out.println("O valor na posição " + b + " de forma invertida é " + i[b]);
}

//exibir o maior elemento do vetor
int maior = i[0];
for(int c = 0;c <> maior)
maior = i[c];
}
System.out.println("O maior valor é " + maior);

//exibir o menor elemento do vetor
int menor = i[0];
for(int c = 0;c < menor =" i[c];" style="font-style: italic;"> //exibir a soma dos elementos do vetor
int soma = 0;
for(int d = 0;d < soma =" soma" style="font-style: italic;"> //exibir o valor da média dos elementos
int tam = i.length;
int media = soma / tam;
System.out.println("A média é " + media);

//exibir os elementos do vetor que são maiores ou iguais a média
for(int e = 0;e <>= media)
System.out.println("O valor maior ou igual a média que é " + media + " são " + i[e]);

}

Para aumentar é só clicar na imagem.


Exemplo 2 - Manipulação de Strings:

String saudacao = "Boa noite para todos";
System.out.println("Tamanho: " + saudacao.length());

//Convertendo td para Maiúsculo
System.out.println("Maiúsculas: " + saudacao.toUpperCase());

//Convertendo td para Minúsculo
System.out.println("Minúsculas: " + saudacao.toLowerCase());

//Mostrar apenas um caractere, coloca entre parenteses a posição do caractere, ex --> 5
System.out.println("Um caractere --> " + saudacao.charAt(5));

//Mostrar uma parte da String, mostrando a posição, exemplo de 4 a 9,
//ele entende que deve parar na posição 9
System.out.println("Uma parte da String --> " + saudacao.substring(4,9));

//Mostrar uma parte da String, mostrando a posição, exemplo de 10 a 14,
//ele entende que deve parar na posição 14
System.out.println("Uma parte da String --> " + saudacao.substring(10,14));


//Usando charAt exibir apenas as vogais da String
System.out.print("Apenas vogais: ");
for (int i = 0;i < letra =" saudacao.charAt(i);" letra ="=" letra ="=" letra ="=" letra ="=" letra ="=">


E a imagem:



É isso aí, espero que seja de ajuda, caso tenham alguma dúvida, deixe aqui nos comentários ou me mande por e-mail, auxilio no que for possível.


Desejo aproveitar e dar todos os créditos dessas aulas para o professor Claudio Luís V. Oliveira, que com muita paciência e persistência tem nos ensinado de uma forma agradável e eficiente.


Linguagem de Programação – Java – Aula 1

Linguagem de Programação – Java – Aula 2 e 3


Bons estudos ;-)


terça-feira, 30 de março de 2010

Mulheres também presentes no mundo da tecnologia

Nesse mês de Março, foi comemorado o dia internacional das mulheres, com muitos movimentos em prol da defesa dos seus direitos e igualdade, principalmente se tratando do mercado de trabalho. Mesmo com o grande avanço na conquista por seu espaço, as mulheres ainda “trabalham mais e ganham menos”, ainda que tenham mais ou o mesmo grau de formação profissional que os homens.
Ao longo da história, muitas mulheres fizeram à diferença no progresso da tecnologia, mesmo que tenham sido omitidas da história, pois como afirma Light, “A omissão da mulher na história da computação perpetua o mau entendimento da mulher como desinteressadas ou incapazes nesta área”. - Light, estereótipo desenvolvido devido às características femininas como cooperação, empatia e sentimento.
A primeira pessoa a desenvolver um programa foi uma mulher. Augusta Ada King, Condessa de Lovelace é principalmente conhecida por ter escrito um programa que poderia utilizar a máquina analítica de Charles Babbage, ela desenvolveu os algoritmos que permitiriam à máquina computar os valores de funções matemáticas, além de publicar uma coleção de notas sobre a máquina analítica.
Outra mulher cujo trabalho foi muito importante para o progresso foi Grace Murray Hopper, que criou a linguagem de programação Flow-Matic, hoje extinta. Esta linguagem serviu como base para a criação do COBOL. E há muitas outras mulheres que fizeram a diferença exercendo papéis importantes ao longo da história.
Atualmente, as áreas que envolvem tecnologia e informática continuam sendo predominada por homens, embora a participação feminina sempre foi muito importante.
De acordo com Lubar, quando os primeiros computadores começaram a ser utilizados parecia óbvio que esta seria uma área feminina, uma vez que as mulheres tradicionalmente realizavam a atividade de “computar”, realização de cálculos para os cientistas. Assim, seria natural que elas continuassem a realizar essa atividade, agora com a ajuda dos computadores. Por isso, muitas das pioneiras, além de serem mulheres, eram formadas em matemática e ciências, com doutorado em matemática, e participação ativa nas ciências exatas.
Muito já foi conquistado, mas há muito ainda a se fazer, homens e mulheres podem e devem trabalhar lado a lado, as características e personalidades de cada um complementam um bom trabalho e um bom ambiente de trabalho.

Revista Espírito Livre - Ed. nº 12 - Março 2010


Olá galera, novamente venho indicar o lançamento da edição de Março da Revista Espírito Livre. É incrível como vontade realmente move barreiras, e com essa edição, a revista completa 1 ano de vida, transmitindo muita informação, de forma interessante, agradável, moderna e com muita, muita qualidade.
O tema da capa já chama a atenção, é algo que envolve todos nós, a liberdade na internet. Recentemente foi divulgada a notícia de o google deixar de prestar serviços diretos a China justamente por não aceitarem mais os bloqueios impostos pelo governo Chinês. Polêmicas relacionadas a esse assunto são constantes, discussões acaloradas acontecem, mas definições reais estão longe de serem elaboradas e implantadas.
Outros assuntos me chamaram a atenção, como "Desenvolvimento do OpenSource. Por que alguns softwares despertam interesse e outros não?". Matérias que tratam diretamente sobre educação também são muito atrativas.
Enfim, da pra perceber que novamente a equipe da revista caprixou, e quão bom é sabermos disso. A revista está disponível para download aqui.

Boa leitura ;-)

quarta-feira, 3 de março de 2010

Revista Espírito Livre - Ed. nº 011 - Fevereiro 2010


"Carnaval. Um período que agrada a alguns e desagrada a outros. São momentos de alegria, descontração e até bastante culturais, desde que vividos com sabedoria e responsabilidade. Nessa edição do mês da folia, praticamente não traremos muita coisa referente a festividades, aliás, nada. Entretanto, para alegria da galera, esta edição está recheada de muita informação em matérias inéditas e exclusivas."
A matéria de capa é referente a computação gráfica, e dentro há vários assuntos envolvendo softwares relacionados, muito interessante. As entrevistas também estão demais. Uma matéria que achei interessante foi a visão do Cesar Taurion sobre a (des)Organização do modelo de desenvolvimento Open Source, vale a pena conferir. Também, Carnavalesco, de Roberto Salomon é uma auto análise bem interessante, expondo muito o dilema que vários desenvolvedores enfrentam, conciliar os projetos de Software Livre com soluções proprietárias fornecidas pelas empresas onde trabalham.


Download

Enfim, uma porção de matérias interessantes, boa leitura a todos ;-)

sexta-feira, 26 de fevereiro de 2010

Linguagem de Programação – Java – Aula 2 e 3

Um pouquinho atrasada para postar o conteúdo da segunda e terceira aula de java, mas vamos lá. Na segunda aula, fomos finalmente ao laboratório aplicar os conceitos que havíamos aprendido, que você pode conferir aqui .
Na aula anterior, ficou um exercício pendente, onde deveríamos fazer uma classe chamada Matematica que realize as 4 operações básicas(+ - * /) sobre 2 números float. E depois, utilizando a classe Matematica, escreva uma classe chamada programa que realize as seguintes operações: 5.3 + 4.7. É possível construir esse programa? Por que?

Bem, vamos a classe Matemática então, vou colocar o código por inteiro, mas também colocarei uma imagem de como ele ficou, para que tenham uma melhor visualização da identação e vejam melhor os comentários:

package calculadora;

public class Matematica {

private float num1; //definir atributos sempre como private
private float num2;
private float resultado;


public void somar(){ //definindo métodos
resultado = num1 + num2; //realizando as operações
}
public void subt(){
resultado = num1 - num2;
}
public void mult(){
resultado = num1 * num2;
}
public void div(){
resultado = num1 / num2;
}
public float mostrar(){ //metodo que retornará o resultado, por isso não deve ser void,
//e precisa ser do mesmo tipo do atributo, no caso retornará
//um float
return(resultado);
}
}

o código acima é o mesmo da imagem abaixo:




Continuando o exercício, utilizando a classe Matemática, escreva uma classe chamada programa que realize as seguintes operações: 5.3 + 4.7. É possível construir esse programa? Por que?
Não, não é possível pois os atributos são privados e não há métodos que permitam a entrada de valores na classe, para resolver isso, ou cria um método entrada(), ou, programando de forma porca, coloque os atributos como públicos. Faremos acrescentando um novo método:

public void entrada (float n1, float n2){ //entre parenteses está a definição de parametros
//este método será usado como forma de enviar dados para dentro da classe
num1 = n1;
num2 = n2; //atributos recebendo parametros
}

Portanto ficará assim:



Pronto, agora é possível resolvermos aquele problema. Continuando, vamos fazer a classe onde realmente realizará as operações, a chamei de classe CalculadoraSimples:

package calculadora;
/*A classe realizará as seguintes operações:
* 5.3 + 4.7 e apresentar o resultado */

public class CalculadoraSimples
{
public static void main(String[] args)
{
Matematica calc = new Matematica();//instanciando a classe Matematica,calc é um objeto
//Somar
calc.entrada(5.3f, 4.7f); //atribuindo valores para os parametros n1 e n2
//sempre que passa um numero com casa decimal, ele acha que é double, mas haviamos
//definido que ele seria float, por isso, colocar o f na frente do numero para
//forçar ele entender que é float

calc.somar();

System.out.println("Resultado = " + calc.mostrar());

//Multiplicação

calc.entrada(3, 1.5f);

calc.mult();

System.out.println("Resultado da multiplicação = " + calc.mostrar());
}

}

imagem:


Beleza, continuando, na aula de ontem aprendemos realizar a entrada de dados com o teclado e a converter valores.

Entrada de dados:
Inicialmente deve-­se realizar a importação do pacote java.io, pois, ele contém as classes necessárias que permitirão a entrada de dados através do teclado. A utilização dessas classes requer que o tratamento de exceções seja habilitado, neste exemplo, isso será realizado através da palavra reservada throws.
O próximo passo consiste em criar um objeto pertencente a classe BufferedReader, o qual permitirá receber os dados da System.in que representa o acesso ao dispositivo de hardware teclado. Concluindo este exemplo, o método readLine() obtém o conteúdo digitado até que o usuário pressione a tecla Enter.
É importante salientar que toda entrada de dados é recebida pela linguagem como um objeto pertencente a classe String sendo que, quando necessário, devemos realizar aconversão para o tipo de dados desejado.

Exemplo:

package entradaDeDados;
import java.io.*; //importando pacote para habilitar entrada de teclado

//pacotes em java são conjuntos de classes, esse pacote cuida de classes responsáveis
//por entrada e saida de dados

public class EntradaDeDados
{
public static void main(String[] args) throws IOException
{
String nome, sobrenome, idade; //declarando a variavel nome e idade do tipo String

BufferedReader teclado = new BufferedReader(
new InputStreamReader(System.in)); //cria objeto teclado

System.out.print("Informe o seu nome:"); //saida na tela

nome = teclado.readLine(); //onde pega os valores do teclado, sempre recebe
//em String, caso precise de outros dados, tem que
//converter
System.out.print("Informe seu sobrenome:");
sobrenome = teclado.readLine();

System.out.print("Informe sua idade:"); //o print serve para escrever na frente
idade = teclado.readLine();

System.out.println("Olá, " + nome + " " + sobrenome + " , você tem " + idade + " anos" + "."); //saida em tela
}
}




Conversão de tipos de dados:
A conversão é realizada em dois passos, primeiro é criado um objeto a partir da classe que receberá, como parâmetro, o objeto da classe String, isso porque um dado sempre é recebido como String. Em seguida o método é usado para retornar um valor do tipo de dados inteiro para a variável saída. Exemplo: Convertendo String para int:

String entrada = “12”;
int saida = new Integer(entrada).intValue();

Outro exemplo, convertendo String para double:

String valor = "125.7";
double saida = new Double(valor).doubleValue();

Segue o exemplo de aplicação na classe Soma:

package entradaDeDados;
import java.io.*;

public class Soma
{
public static void main(String[] args) throws IOException
{
String num1, num2; //variaveis
int resulSoma;

BufferedReader teclado = new BufferedReader(
new InputStreamReader(System.in)); //cria objeto teclado

System.out.print("Informe o primeiro valor:"); //mensagem ao usuario
num1 = teclado.readLine(); //pegando valor do teclado

System.out.print("Informe o segundo valor:");
num2 = teclado.readLine();

int valor1 = new Integer(num1).intValue(); //convertendo valores

int valor2 = new Integer(num2).intValue();

resulSoma = valor1 + valor2; //efetuando a operação

System.out.println("O resultado entre " + num1 + " e " + num2 + " é " + resulSoma);

}

}



Agora um Exercício para testar e se divertir:

Efetuar o cálculo da qtde de litros de combustíveis gasta em uma viagem, utilizando um automóvel que faz 12 Km por litro. Para obter o calculo, o usuário deve fornecer o tempo gasto na viagem e a velocidade média.Desta forma, será possível obter a distância percorrida com a fórmula Distancia = tempo * velocidade . Tendo o valor da distancia, basta calcular a quantidade de litros de combustivel utilizada na viagem com a fórmula: Litros_usados = Distacia / 12. O programa deve apresentar os valores da velocidade média, tempo gasto, a distancia percorrida e a qtde de litros utilizados na viagem. Dica: trabalhe com valores reais

package exercicios;

import java.io.*; //para fazer uso do teclado
import java.text.*; //para formatar casas decimais
public class Exe4a {
public static void main(String[] args) throws IOException
{
String sTempo, sVelocidade;
double dDistancia, dDistPercorrida, dLitros;

NumberFormat mascara = new DecimalFormat("###.00"); //para formatar as casas decimais

BufferedReader teclado = new BufferedReader(
new InputStreamReader(System.in)); //cria objeto teclado

System.out.println("Informe o Tempo de Viagem: ");
sTempo = teclado.readLine();

System.out.println("Informe a Velocidade: ");
sVelocidade = teclado.readLine();
//converter as variaveis
double dTempo = new Double(sTempo).doubleValue();
double dVelocidade = new Double(sVelocidade).doubleValue();

dDistPercorrida = dTempo * dVelocidade; //calculo de distacia percorrida
dLitros = dDistPercorrida / 12;

System.out.println("Velocidade Média = " + sVelocidade +
"\nTempo Gasto = " + sTempo +
"\nDistância Percorrida = " + dDistPercorrida +
"\nQuantidade de Litros = " + mascara.format(dLitros));
}
}


Pronto, por enquanto é só, mas os estudos continuam ao longo da semana, agora é melhor eu me concentrar na aqui na aula ;-)

Ahh uma dica, achei um material muito bom para servir de base de estudos, o curso de Java do Jedi, que por sinal, estou aproveitando também, é só conferir aqui.

Bons estudos para todos nós ;-)







domingo, 14 de fevereiro de 2010

Inproprietário: O Mundo do Software Livre


Segue abaixo a reprodução integral do post a respeito do documentário "InProprietário" do blog Verruga do Cérebro

"Todos que amam o software livre já devem ter visto ou ouvido falar de filmes e documentários como Revolution OS e The Code Linux, que são dois dos mais conhecidos exemplos de documentários que abortam o Linux e o software livre, mas poucas pessoas ainda conhecem o ótimo documentário nacional que foi feito como trabalho de conclusão de curso de Comunicação Social Habilitação em Jornalismo curso do Centro Universitário FIEO | UNIFIEO pelos jornalistas Daniel Bianchi e Jota Rodrigo.

O documentário Inproprietário: O Mundo do Software Livre, com duração de 32 minutos, conta com a participação de Richard Stallman e outros amantes de software livre e aborda desde a história da criação do Unix que teve durante um breve período de vida o seu código aberto e que tornou assim a sua derivação e larga utilização em universidades nos EUA possível em meados da década de 70, mas que foi fechado pela AT&T e que fez nascer assim a ideia do software livre e o surgimento do movimento GNU e mais adiante o kernel do Linux.

De forma muito simples e clara o filme tornou possível de ser explicada inclusive para as pessoas não ligadas a área de tecnologia o conceito de software, como ele é escrito e o que é o código fonte de um programa, diz ainda o que é um sistema operacional.

A obra ainda mostra a utilização do software livre e Linux não como uma alternativa tecnológica mas como uma reação de mercado e uma filosofia por diversos profissionais de tecnologia e por diversos setores do governo e forças armadas mostrando através de relatos de algumas pessoas diretamente ligadas a projetos de implementação de software livre como o software livre é viável tecnicamente e economicamente.

Em sua participação Richard Stallman fala sobre a idéia de software livre e os pilares sobre os quais foram fundadas o conceito de software livre.

Como não poderia ficar de fora também foi incluído e demonstrado o conceito de software proprietário, seu custo, suas limitações e sua pesada concorrência com o software livre.

Fica demonstrado nesse filme com clareza a importância do conceito do software livre e do compartilhamento livre e total ao conhecimento humano.

Pessoalmente falando, eu diria que esse documentário está entre os melhores já produzidos com esse assunto, não devendo em nada à produções como as acima citadas, eu particularmente parabenizo ao Daniel e Jota pelo maravilhoso trabalho de divulgação do software livre.

A obra que está licenciada sob a Creative Commons Atributo 2.5 Brasil"


Download