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!
• 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