BLOCO
Blog dos Coordenadores ou Blog Comunitário
da
ComUnidade WirelessBrasil

Junho 2011               Índice Geral do BLOCO

O conteúdo do BLOCO tem forte vinculação com os debates nos Grupos de Discussão  Celld-group e WirelessBR. Participe!



19/06/11

• Como motivar - e ensinar - crianças e jovens no estudo de linguagens de programação? (5): Linguagem "Ruby" + Estudo inicial do "Scratch"

Nota de Helio Rosa:
Esta mensagem refere-se à este "post" anterior:
Como motivar - e ensinar - crianças e jovens no estudo de linguagens de programação? (1)

Olá, WirelessBR e Celld-group!

01.
No "post" 03 desta série registrei minha visita ao blog de Valério Farias onde anotei o texto Scratch – A Linguagem de Programação mais simples que já vi!.

No seu comentário Valério citou também a linguagem "Ruby" e indicou um outro "post": Ruby como primeira linguagem de programação!

A transcrição está mais abaixo e também uma matéria do site RubyOnbr.org sobre uma aplicação usando o Ruby.

02.
Voltando ao Scratch...

Visitei o site oficial em http://scratch.mit.edu/.
Ao clicar em "download" abriu-se uma página em português solicitando alguns poucos dados.
Feito o download para Windows, a instalação ocorreu sem problemas: no caso, a tela do Scratch contém todas as instruções e comandos em português.

E já conferi os vídeos do Prof. Michel Fabiano citados aqui.

No YouTube os vídeos estão aqui: Aula 01 - Aula 02 - Aula 03 - Aula 04. Reproduzi com sucesso os exemplos usados nas vídeo-aulas.

E já fiz um pequeno jogo original, baseado nos comando aprendidos... O Véio ficou feliz!   :-))  :-))

Estou entusiasmado!
Minha impressão inicial é que poderá ser usado realmente como iniciação à programação e lógica, com a motivação de construção de pequenos jogos.
Claro que para crianças e pessoas "não iniciadas" deve-se começar com informações mais simples do que aquelas mostradas nos vídeos.

Pelo que entendi nesta minha "iniciação" à ferramenta, as aplicações poderão ser publicadas gratuitamente no site do Scratch, onde já se encontram mais de 1 milhão e oitocentos mil projetos!

Creio que podermos abrir uma página especial no domínio WirelessBRASIL para registro dos links dos aplicativos (por mais simples que sejam!) "fabricados" pelos participantes, familiares e amigos. Penso que será uma importante motivação para os interessados, que poderão se conhecer e interagir. Fica a sugestão.

Mais informações sobre esta e outras linguagens para principiantes?
Links de outros vídeos e tutoriais?
Comentários adicionais?

Dicas sobre ferramentas para programação de aplicativos para iOS e Android?
Animação, pessoa!  :-)
Obrigado!

Boa leitura!
Um abraço cordial
Helio Rosa
Portal WirelessBRASIL
BLOCOs Tecnologia e Cidadania

--------------------------------

Fonte: Blog de Valério Farias
[23/08/07]  Ruby como primeira linguagem de programação!

Pois é, para alguns pode soar um pouco estranho, principalmente para os mais tradicionais, mas é o que estou propondo nesse post.

A minha experiência com primeira linguagem foi em 1997 com Pascal que foi uma linguagem criada em 1970 por Niklaus With com o objetivo principal de encorajar o uso do código estruturado (principalmente para o ensino).

Vamos ver um pequeno exemplo de teste lógico em Pascal:

program Testelogico;

var a,b:integer;

uses crt;

begin
clrscr;
writeln ('Digite um número para A');
readln (a);
writeln ('Digite o número para B');
readln (b);

if (a = b) then
writeln ('A é igual a B')
else
if (a < b) then
writeln ('B é maior que A')
else
writeln ('A é maior que B');
end.


Podemos perceber nesse código a necessidade de aprendizado de vários conceitos voltados para a própria estrutura da linguagem ao invés de se focar no problema. Como exemplo temos a exigência dos parênteses e o ponto e vírgula no final de bloco, além da regra clássica: antes de else não se usa ponto e vírgula, pois o ponto e vírgula é utilizado para finalizar blocos de programação.

Ruby é uma linguagem criada por Yukihiro Matsumoto, projetada para programação em grande escala unido de codificação rápida. Vamos ver o mesmo exemplo anterior feito em Ruby:

print "Entre com o valor de A:"
a = gets

print "Entre com o valor de B:"
b = gets

if a == b
print "A é igual a B"
elsif a < B
print "B é maior que A"
else
print "A é maior que B"
end


Além da quantidade de código diminuir tornando-o mais simples, a curva de aprendizado também tende a ser menor, pois agora não temos mais que garantir regras voltadas para a estrutura da linguagem. o bloco if-else faz o que tem que ser feito sem precisar está se preocupando se está faltando ou não ponto e vírgula.

Podemos ver um exemplo ainda mais convincente com estruturas de repetição com final conhecido. Vejam um exemplo em Pascal que mostra 10 vezes na tela a palavra “teste”:

Program repeticao

var
i : integer;

begin

for i:= 1 to 10 do
writeln("teste");

end


Para fazer esse exemplo simples precisei seguir a burocracia de criar o nome do programa criar a variável e só depois criar a rotina. Vamos ver no Ruby o mesmo exemplo:

10.times do
puts "teste"
end


Ou ainda:

10.times { puts “teste” }

Deu para perceber a simplificação absurda do código no Ruby?
Em algumas rotinas assemelha-se a criação de um texto em inglês (linguagem humana).
Ao invés de precisar saber que a repetição será a variação do valor de uma variável i de 1 a 10, simplesmente peço para imprimir 10 vezes a palavra “teste”.

Aliando essa simplicidade à característica de ser totalmente orientada a objetos. Além de, junto com o framework rails permitir a utilização profissional no desenvolvimento de sistemas web. Já acho que são argumentos suficientes para aposentar de vez o Pascal (ainda bastante utilizado no ambiente acadêmico e em cursos técnicos como primeira linguagem de programação complementando a disciplina de algoritmos) e seguir com uma linguagem simples, produtiva, de utilização geral e até divertida como o Ruby.

Lembrando que estou sugerindo como primeira linguagem, para depois continuar com ela ou não. Sempre que possível é muito importante aprender outras linguagens para obter outros pontos de vista.

Um grande abraço e até o próximo Pense nisso!

-----------------------------------

Fonte: RubyOn
[29/04/07]  Ruby além do usual

Muitos de nós já leram várias matérias, artigos, tutoriais, documentações sobre RoR, Ruby, já vimos as maravilhas do Ajax, REST, as bibliotecas e plugins que facilitam nossa vida, etc, etc, etc. Já vimos que o JRuby está a pleno vapor, o IronRuby e o RubyCLR sendo desenvolvidos, o CakePHP, o MonoRail, Ruby conversando com SAP… enfim… eu tenho certeza que eu estou esquecendo algum item, mas não é esse o ponto.

Vamos esquecer um pouco a Internet, o RoR como framework, o ambiente corporativo, os sistemas, os mashups, os plugins, etc. Vamos pensar somente em dispositivos eletrônicos, vamos lembrar que nossos computadores possuem interfaces USB, Firewire, e alguns mais antigos ou com a ajuda de adaptadores, portas paralelas e seriais. Agora vamos imaginar o Ruby conversando com estas interfaces, por exemplo, bluetooth, portas seriais, paralelas, ou até mesmo respondendo como um servidor UDP ou TCP.

Tudo isso é possível com a utilização de algumas bibliotecas ou até acessando diretamente as API’s do sistema operacional em uso. No Linux, esta operação é mais tranquila já que a maioria dos drivers são de código aberto, facilitando a integração com o Ruby ou com um conhecimento intermediário de C/C++ e desenvolvimento de extensões utilizando a API do Ruby. Já o Windows, é um pouco mais complicado dependendo do seu objetivo. Acessar um dispositivo bluetooth, por exemplo, passa a ser uma tarefa árdua, já que o mesmo pode ser compatível com o driver genérico do Windows (se você tiver sorte) ou, se não for, você dependerá dos drivers de terceiros e seus respectivos SDK’s.

Independente destes empecilhos, é interessante pensar que o Ruby não é só uma linguagem de script, ou de manutenção de sistema ou a linguagem escolhida pelo David Hansson para contruir o RoR. É, sim, uma ferramenta totalmente capacitada e amadurecida para interagir com dispositivos externos. Sim, o Python também é, o Perl, o C#, o Java, o C/C++, e não esquecendo do velho, porém respeitadíssimo, Assembly. Mas a diferença do Ruby para estas linguagens é, como todos nós sabemos, a facilidade, agilidade e seriedade que o Ruby nos proporciona. Como diz meu amigo de muitos anos, Bruno Mosconi, “Ruby é uma linguagem que joga no seu time”. Acho que essa frase representa a alma e a essência do Ruby.

Sei que isso tudo é “lindo e maravilhoso”, mas como tudo não sobrevive de teoria, a prática tem que ser colocada a prova. E a pergunta é: já fizeram esse tipo de coisa?
A resposta é: SIM! Já fizemos aqui no Brasil e, claro, já fizeram lá fora.

Temos um caso MUITO real, e é bem provável que você, que está lendo este artigo, tenha visto, mas não desconfiou nem por um segundo que por trás de toda traquitana o controle central era comandado pelo Ruby!

Vamos voltar há exatamente 1 ano atrás. Skol Beats 2006, Av. Faria Lima esquina com Av. Juscelino Kubitschek, esquina do posto Ipiranga (o que têm o McDonald’s).
Aquele painel eletrônico gigante, que ficou por 2 semanas, funcionava da seguinte forma:

Você escolhia a tenda que iria “bombar” no Skol Beats
Cada tenda tinha um código
Você enviava esse código para um número SMS
O seu voto era computado e você recebia de volta uma outra mensagem SMS que continha um endereço WAP fornecendo um ringtone exclusivo para seu celular.
Em tempo real, o painel computava o seu voto com um delay de no máximo 10 ou 15 segundos (dependendo to tráfego)

Veja o vídeo:
http://www.youtube.com/watch?v=iGLfN7iLopY
O Ruby tinha as seguintes tarefas:

Monitorar/controlar a interface PCMCIA (modem GPRS) e a conexão via API
Comunicar-se com o sistema da integradora de SMS
Sincronizar um banco de dados local com os dados coletados remotamente
Comunicar-se com o software que controlava os painéis de LED, fornecendo os dados no protocolo estabelecido

Após 2 semanas, o mesmo painel foi removido para dentro do evento (Sambódromo de São Paulo) e passou a ter, além do comportamento de enquete, um comportamento de sorteador de camisetas para que as pessoas votassem de dentro do evento. A cada sorteio, de 1 em 1 hora, o painel mostrava parcialmente o número de celular sorteado e o script enviava um SMS para a pessoa avisando que ela havia ganhado e deveria comparecer ao estande para retirar a mesma. Este projeto gerou uma grande repercussão na imprensa, representando um ótimo exemplo de Mídia Alternativa, sendo considerado o primeiro painel interativo do Brasil!

Sim, acredite, tudo isso controlado pelo Ruby!

Além deste case profissional, já me aventurei também com outros dispositivos mais comuns e outros com fins de pesquisa. Um exemplo interessante é um protótipo de um leitor de RFID que enviava os dados lidos através de uma rede Ethernet e que era recebido por um servidor UDP feito em Ruby em conjunto com o MySQL e o ActiveRecord que, no final, era atrelado com outras informações através de uma aplicação RoR.

Além destes exemplos, existem vários outros que podem ficar para uma versão 2.0 deste artigo.

Acho que deu pra ter uma idéia do poder que o Ruby é capaz de entregar em nossas mãos e como também, atualmente, é possível sonhar com futuras implementações da comunidade, bem como na evolução que a linguagem tem tomado nos últimos meses.

O objetivo deste artigo foi de estimular a comunidade a pensar de uma forma diferente na utilização do Ruby no seu dia-a-dia. Espero que tenham gostado!

Thiago Avancini (http://www.thiagoavancini.com)
 


 [Procure "posts" antigos e novos sobre este tema no Índice Geral do BLOCO]            ComUnidade WirelessBrasil