Duas equipas de estudante da FCTUC (Faculdade de Ciências e Tecnologia da Universidade de Coimbra) obtiveram os dois primeiros lugares na Maratona Inter – universitária de Programação (MIUP) 2012. Os 3D e os DiBuggers venceram o ouro e a prata respectivamente.

A equipa “3D” composta por Daniel Lobo e Daniel Vaz, do mestrado em Engenharia Informática, e Francisco Machado, da licenciatura de Física foram capazes de resolver os problemas de programação com maior rapidez que os restantes. Um dos desafios propostos era um Braincrash, programa de tradução de caracteres, e alguns problemas de lógica que pediam solução de programação. As linguagens de C, C++ e Java eram as únicas que se podiam usar para resolver os desafios propostos, num prazo de cinco horas.

Segundo Luís Paquete, professor na FCTUC, o concurso pode funcionar como “montra” para todos os estudantes que participam. “Ter bons lugares numa MIUP é uma linha no curriculum muito importante. É a prova de que (…) o aluno consegue resolver problemas muito complexos, consegue trabalhar em grupo sob alta pressão. É por isso que as empresas, as universidades e os grupos de investigação em Portugal e no estrangeiro lhe dão tanta importância”.

Share

A empresa analista RedMonk publicou os resultados do seu ranking sobre a linguagem de programação mais utilizada, e o espanto surgiu quando apareceu em primeiro lugar o JavaScript.

Os resultados do ranking são os seguinte:

1 – JavaScript
2 – Java
3 – PHP
4 . Python
5 – Ruby
6 – C#
7 – C++
8 – C
9 – Objective-C
10 – Shell
11 – Perl
12 – Scala
13 – Haskell
14 – ASP
15 – Assembly
16 – ActionScript
17 – R
18 – Visual Basic
19 – CoffeeScript
20 – Groovy

Será que este ranking reflecte as escolhas dos programadores em Portugal?

Share

O juiz Alsup que é o responsável por dirigir o processo entre a Oracle e a Google que foi levantado acerca da propriedade intelectual do Java e Android também tem alguns conhecimentos sobre programação, sobre os quais se baseou para desqualificar o argumento apresentado em tribunal por um dos advogados da Oracle.

O juiz ainda proferiu uma frase dura ao advogado em questão: “Você é um dos melhores advogados da América, como pode apresentar este argumento?”

Toda esta questão foi levantada devido à função “rangeCheck” que é efectuada em 9 linhas de código e que segundo o juiz tem uma função trivial e que poderia ser escrita por qualquer programador sem que este necessitasse de qualificações especiais, dizendo que ele próprio já tinha programado funções similares várias vezes, discordando assim do argumento da Oracle que afirma que a Google copiou esta função propositadamente de modo a conseguir colocar o sistema operativo móvel Android no mercado um pouco mais depressa.

Share

O VRaptor foi criado em 2003 no IME-USP e tem enchido de orgulho os seus developers. O VRaptor tem como principal trunfo a simplicidade com que aborda o desenvolvimento de aplicações variadas e da manutenção do seu código fonte

Trata-se de uma framework MVC em Java que se vale de “boas práticas” como REST, Injeção de Dependências e Convenção sobre Configuração, para citar apenas algumas, que permitem a criação de aplicações de forma agradável e bastante produtiva.

A Caelum é a promotora oficial do VRaptor, e já conta com mais de 30 mil downloads da sua última versão, 3.0, lançada em 2009. Lucas Cavalcanti é um dos entusiastas do assunto e ensina uma série de truques no “hands on”.

Aqui estão alguns dos vídeos de Lucas Cavalcanti:

Aqui fica mais um dos seus vídeos:

Poderá obter mais informações sobre o projecto Aqui:

Documentação: http://vraptor.caelum.com.br/documentacao
Código-fonte: https://github.com/caelum/vraptor
Plugins e contribuições: https://github.com/caelum/vraptor-contrib
Listas de discussões: http://groups.google.com/group/caelum-vraptor
Fórum: http://www.guj.com.br/forums/show/23.java
Share

Durante a última década, os processadores multicoredominaram o mercado de PCs, Portáteis, Tablets e Smartphones. Os processadores de vários núcleos são capazes de executar várias instruções ao mesmo tempo, o que permite um aumento de desempenho das aplicações. É nos dispositivos menos poderosos, como os telemóveis, que os utilizadores percepcionam os maiores incrementos de performance, muito graças ao que ficou popularizado como o “verdadeiro” Multitasking.

O Multitasking dá aos utilizadores a possibilidade de executar várias aplicações em simultâneo. No entanto, dentro de cada uma destas aplicações quase nada mudou. As instruções continuam a ser executadas sequencialmente e não em paralelo, como seria adequado numa plataforma multicore. Por mais cores que estejam disponíveis, por mais “poderosa” que seja a máquina, um programa deste género irá executar à velocidade máxima que cada core oferece individualmente, sendo praticamente irrelevante o número total de cores que se encontram disponíveis.

Uma técnica habitual para aumentar o desempenho dos multicores sem afectar demasiado o consumo energético é aumentar o número de cores mas diminuir a velocidade de relógio que cada core oferece. Esta abordagem resulta se os programas estiverem preparados para executar de acordo com esta filosofia. Mas, se assim não for, a compra de um novo equipamento terá muitas vezes um efeito contrário ao desejado: as nossas aplicações poderão mesmo passar a executar mais lentamente. Hoje em dia, comprar equipamento mais moderno quase nunca é a solução para problemas de performance. Isto conduz-nos à nossa próxima questão “porque é que não estão todos os programas preparados para executar internamente em paralelo e fazer uso de todo o potencial computacional existente nos multicores?” A resposta é simples, embora não muito satisfatória: a programação de aplicações paralelas é um tarefa complexa, difícil e que pode potencialmente introduzir toda uma nova dimensão de problemas e erros de execução inexistentes nas aplicações sequenciais.

Uma das linhas de I&DT atuais, tanto na academia como nas grandes empresas de IT e laboratórios de investigação por esse mundo fora, consiste em descobrir novos modelos de representar o paralelismo e a concorrência de forma a diminuir a complexidade implícita na sua implementação. Este esforço personifica diferentes dimensões, ao nível das plataformas, das frameworks e da tecnologia em geral, mas também ao nível das linguagens de programação em que estas aplicações são desenvolvidas. As linguagens atuais, como por exemplo JAVA, C# e C, estão ser estendidas por meio de bibliotecas e novas propriedades (Futures, Fork-Join, Map-Reduce, Grand Central Dispatch da Apple, etc.). Por outro lado, também estão a ser criadas novas linguagens de programação claramente vocacionadas para o desenvolvimento de software paralelo. Exemplos disso são a X10 da IBM, Fortress da Oracle, Erlang da Ericsson e Scala criada no EPFL de Lausanne.

Estas linguagens estão muito longe de se tornarem tão populares como JAVA ou C# e muitas nunca passarão do domínio da investigação, no entanto parte das novidades que estas linguagens estão a introduzir irão no futuro encontrar caminho para as linguagens mais populares. É por esta razão que vale a pena olhar para elas e descobrir de que forma estão a melhorar a tarefa de escrever programas paralelos, qual será o seu impacto na performance final dos programas e até que ponto serão bem sucedidas em explorar todo o poder computacional latente nos processadores multicore. Pois estes, vieram para ficar.

Fonte:

Share