Data: October 20th, 2010 | Autor: marquito
Hoje visitamos a Semana Estadual de Ciência e Tecnologia, que tá acontecendo no ginásio do Sesi de Jardim da Penha, em Vitória.
Lá, além do trabalho de empresas querendo mostrar seu potencial, conhecemos projetos interessantes para a sociedade de modo geral, como novas alternativas para materiais que são normalmente descartados:
Outra ótima oportunidade foi conhecer o trabalho do museu de anatomia e conhecer o Carlos, bolsista do museu, e a professora Verônica Devens Costa, coordenadora do Centro para o Desenvolvimento do Potencial e Talento (CEDET/Vitória).
Enfim. Vale a pena visitar. Ou você já foi?
http://www.semanaestadualct.es.gov.br/
Categoria: Pesquisas, Sustentabilidade, Tecnologia | Comentários: Sem comentários »
Data: October 10th, 2010 | Autor: hugocristo
Estamos começando a estudar Smalltalk no NIC. A linguagem foi planejada originalmente por Alan Kay e Adele Goldberg no Xerox Parc, ainda nos anos 70. Se as interfaces gráficas significaram a facilidade de uso dos computadores, o Smalltalk era a facilidade de programação deles.
O Scratch, linguagem que estamos utilizando na disciplina de Design Computacional, é um descendente direto do Smalltalk, escrito numa implementação mais recente chamada Squeak. Alan Kay esteve diretamente envolvido no desenvolvimento do Squeak desde o início do projeto.
Experimentei várias implementações e a que parece ter o maior número de webcasts e atualizações é a Cincom Smalltalk. É uma versão gratuita, acompanha vários componentes para produtividade, e o mais bacana é a quantidade de vídeos com walkthroughs e tutoriais disponíveis no blog do fabricante.
Certamente os conceitos experimentados com o Cincom servirão para as demais implementações – Squeak, Pharo, GNU Smalltalk etc. Vamos aos conceitos iniciais, traduzidos da introdução do programa:
Tudo em Smalltalk é um objeto: um número, uma cadeia de caracteres (string), um retângulo etc.
A comunicação com objetos é sempre feita por meio do envio de mensagens: 2+2 significa que o objeto ’2′, número inteiro, recebe a mensagem ‘+’ com o argumento ’2′, que também é um objeto do tipo número inteiro.
Mensagens podem ser unárias, binárias ou palavras-chave. A diferença está na estrutura da mensagem (seu seletor):
- mensagens unárias: compostas por uma única “palavra” (o identificador), não possuem argumentos. Ex: 2 squared (literalmente, 2 ao quadrado);
- mensagens binárias: um ou mais caracteres especiais para o seletor (+ – / \ @ &…), seguido de um argumento. Ex: 2+2;
- mensagens com palavras-chave podem ter qualquer número de argumentos e cada um deles é precedido por uma palavra-chave. O seletor consiste em uma ou mais palavras-chave (um identificador seguido de dois pontos ‘:’), e cada palavra-chave é seguida de um argumento. Ex: 3 between: 5 and: 10
OBS: Para um exemplo completo de um programa em Smalltalk verifique o Exemplo 1 abaixo.
Identificadores começam com letras minúsculas e contêm apenas letras e dígitos. Podem ter qualquer comprimento e são case sensitive, ou seja, asUppercase e asUpperCase são identificadores diferentes.
Toda mensagem retorna um objeto e portanto podem ser combinadas. Ex: ‘testando’ asUppercase reverse.
As mensagens retornadas como objetos podem ser utilizadas como argumentos de outras mensagens de estrutura binária ou palavra-chave. Ex:
3 raisedTo: 5 squared
ComposedTextView open: ‘abc’ asText allBold asValue
O uso de parênteses para separar partes das expressões também é válido. Os exemplos a seguir são equivalentes:
5 factorial between: 3 squarred and: 3*5*9
(5 factorial) between: (3 squared) and: (3*5*9)
No entanto, vale lembrar da Lei de Demeter, que faz algumas recomendações sobre concatenações sucessivas.
Mensagens são executadas da esquerda para a direita, com expressões entre parênteses primeiro, mensagens unárias em seguida, palavras-chave por último. Ex:
5 + 3 * 4
equivale a
(5+3) * 4
Mesmo desejando escrever 5 * 3 + 4, que terá o mesmo resultado de (5*3) + 4, o ideal é usar a segunda forma. Não há perda de performance e a leiturabilidade é preservada.
Uma sequência de expressões em Smalltalk é chamada fragmento de código (os ‘scripts’) e seus componentes são chamados declarações. Declarações são separadas por ponto final. Ex:
3 squared.
5 factorial
Declarações consecutivas podem ser escrita na forma em cascata, com o mesmo resultado (ver Exemplo 2 abaixo).
Após avaliar a mensagem, o Smalltalk descarta automaticamente o objeto retornado a menos que você o atribua a uma variável. Esse conceito chama-se coletor automático de lixo. A declaração das variáveis em Smalltalk deve ser feita antes do seu uso e não é necessário atribuir tipos.
| price tax total | ”variáveis separadas por espaços”
price := (Dialog request: ‘Please enter price’ initialAnswer: ’100′) asNumber.
tax := (Dialog request: ‘Please enter price %’ initialAnswer: ’10′) asNumber.
total := price + (price * tax / 100).
Transcript clear;
show: ‘price: ‘, price printString; cr;
show: ‘tax: ‘, tax printString; cr;
show: ‘total: ‘, total printString
Em Smalltalk, as variáveis apenas apontam para os objetos. O sinal ‘:=’ é o operador de atribução e pode ser escrito com o atalho CTRL+g (Windows). Originalmente, uma seta representava o operador de atribuição no Smalltalk e em algumas implementações esse símbolo ainda é aceito. Utiliza-se o underscore (sublinhado) para exibir a seta de atribuição.
Este é o fim da primeira parte dos posts sobre Smalltalk. No próximo discutiremos objetos e classes, conceitos fundamentais da programação orientada a objetos. A seguir são listados os exemplos de código mais longos para demonstrar o potencial e facilidade de uso da linguagem.
Exemplo 1:
Dialog
choose: ‘Which line do you want?’
fromList: #(‘first’ ‘second’ ‘third’ ‘fourth’)
values: #(1 2 3 4)
lines: 4
cancel: [#noChoice]
for: Dialog defaultParentWindow
Exemplo 2:
Transcript clear.
Transcript show: ‘Alô mundo”.
Transcript cr.
Transcript show: ‘Primeiro programa em Smalltalk’
O código acima poderia ser escrito no formato cascata:
Transcript clear;
show: ‘Alô mundo’;
cr;
show: ‘Primeiro programa em Smalltalk’
Para executar os códigos, basta selecionar as linhas e selecionar Print it ou Do it com o botão direito ou CTRL+P (Windows).
Atualização em 10/10
Existe um tutorial interativo que apresenta os mesmos conceitos apresentados neste post na nova versão do Pharo, chamado Profstef. Como a intenção dessa série é apresentar a linguagem de maneira geral, abordaremos vários ambientes de desenvolvimento além do Cincom.
Para utilizar o ProfStef, baixe o Pharo, abra um novo Workspace (botão esquerdo do mouse -> Workspace) e digite:
ProfStef go
Categoria: Smalltalk | Tags: cincom, programação, smalltalk, tutoriais | Comentários: 6 Comentários »