Projeto DeepSpec busca a criação de programas livres de erros

DeepSpecProfessores de quatro universidades dos Estados Unidos estão trabalhando em um projeto ambicioso: possibilitar a criação de programas livres de erros (bugs).

A ideia, segundo os membros do projeto, é criar especificações extremamente precisas sobre o comportamento de um software, com base em lógica formal. Assim, espera-se conseguir criar sistemas que sejam livres de erros e passíveis de verificação de suas especificações.

Especificações formais tem sido pesquisadas como forma de verificar e validar software. No entanto, o grupo de pesquisa argumenta que as lógicas são apenas para modelos de programas, e não programas em si. A ideia, então, é possibilitar uma análise mais profunda do código e das especificações, em especial considerando a aplicação desse código, bem como relações com outras especificações em uma cadeia de programas.

Mais informações sobre a pesquisa podem ser encontradas no site do projeto [1].

Referências:

[1] DeepSpec. http://www.deepspec.com. Acesso em 26 de janeiro de 2016.

Anúncios

Google, Duck Duck Go e Mariana

No dia 22 de novembro de 2015, a página no facebook do Deputado Chico Alencar [0] publicou (republicou) uma foto da página Ministério da Verdade [5]:

12243196_748439131925007_4206916744002470779_n.jpg

Logo em seguida, começaram as especulações. Reproduzindo algumas aqui, sem nomes:

  • “Tantos defensores do google… Uma empresa tão neutra no mundo atual…”
  • “Devem estar manipulando com bots para por essas imagens lá em cima.”

Em tempos “aquecidos” por escândalos e crises no país, não é de se estranhar que apareçam pessoas com conclusões sobre determinadas notícias ou acontecimentos. Quando se trata de tecnologia então, a probabilidade de aparecerem tais pessoas se torna ainda maior. Não julgo ninguém aqui como “conspirador”, “pessimista” ou qualquer outro adjetivo  negativo, e sabe o porquê? Simplesmente porque todos nós estamos sujeitos a conclusões precipitadas. Faz parte da nossa natureza (quem quiser entender mais do que estou falando, procure por Semiótica e Semiose, em especial por Charles Sanders Peirce e Umberto Eco). Em resumo, o que falta antes de tirar conclusões é mais informação. Nesse caso, sobre como sistemas de busca funcionam.

Lá nos idos de 1990, muitos mecanismos de busca utilizavam uma forma trivial de organizar links para páginas web: listagens [1]. Queria sua página aparecendo no mecanismo de busca X? Você deveria mandar um e-mail para eles pedindo a inclusão em alguma listagem (que era geralmente separado por categorias). Para uma internet com alguns milhares de links, isso não era muito problema.

No entanto, com a popularização da internet, popularizou-se outra forma de buscar por esses links: daí surgem os web-crawlers, ou robôs de busca, ou robôs indexadores (coletores de páginas). Eles quase que literalmente varrem a internet em busca de links. Hoje, eles são o “modo padrão” de qualquer mecanismo de busca.

Sergey Brin e Larry Page, lá em 1996, criaram um mecanismo de busca no qual links eram ordenados de acordo com o número de citações. Seu mecanismo de busca foi chamado na época de BackRub [2]. De lá pra frente, o BackRub se tornou o Google (desde 1998), e o PageRank até hoje é a base do mecanismo de indexação (ou seja, de coleta de páginas na internet).  De lá pra cá, muita, mas muita coisa mudou no mecanismo de busca [3][4], seja para tornar as respostas mais relevantes para o usuário (buscando resultados passados), ou então para dar mais segurança (filtrando sites que tem algum problema com vírus ou mecanismos de roubo de dados) e até para evitar “engraçadinhos” tentando burlar o algoritmo para ter resultados não relacionados a busca sempre em primeiro lugar (fato esse que motiva o Google – e qualquer outro mecanismo de busca – a não divulgar seu algoritmo de indexação de páginas). Porém, isso ainda não garante que veremos o resultado exato da busca que estamos precisando e procurando. Este, inclusive, é um dos maiores desafios que qualquer mecanismo de busca (e que, alguns acreditam, ser impossível de conseguir).

E isso não é exclusividade do Google. Qualquer outro mecanismo de busca também tem suas formas particulares de indexar conteúdo. E é por isso que vemos a diferença nos resultados do Google e do Duck Duck Go. Ambos processam a palavra “Samarco” de formas completamente diferentes. Tentando fazer um chute (já que os algoritmos não são revelados), o Google dá mais ênfase a uma relação direta dos resultados com a palavra do que o Duck Duck Go, que provavelmente dá mais relevância a fotos mais recentes relacionadas aquela palavra. Se eu estou buscando notícias relacionadas, isso é excelente. Mas se eu de fato estou buscando informações sobre a empresa, essa estratégia do Duck Duck Go não me ajuda. O Google entende que sua forma de retornar resultados é mais interessante. E eu acredito que seja, já que o Duck Duck Go tem uma política de não armazenar quaisquer informações de busca de seus usuários, o que não permite inferências sobre interesses de busca.

Esse post é só uma pincelada nessa área. Como não conheço a fundo, não posso falar sobre pesquisas recentes relacionadas a este universo dos mecanismos de busca (que por sinal é bem interessante e passa por um monte de áreas de pesquisa em Computação). Mas espero que com essa explicação todos possamos ficar mais informados antes de achar que há uma “conspiração” a favor de uma mineradora, por parte de uma empresa americana. E por mais que existam pessoas que ainda não entendam a tecnologia e suas capacidades e limites, fico feliz ao ver as respostas no post da página que mencionei, entendendo que existe um motivo por trás daquelas respostas tão estranhas.

PS: Outra questão que apareceu e que vale a pena ser comentada é sobre SEO. “SEO ? O que é isso ? Ele pode realmente ajudar a modificar resultados de busca? R: SEO = Search Engine Optimization, ou Otimização para Mecanismos de Busca. Nessa área se estudam formas de tornar páginas mais facilmente acessíveis por mecanismos de busca, bem como estratégias para deixa-las no topo dos resultados. Sim, essas técnicas podem modificar resultados de busca, mas tenha em mente que os buscadores estão prontos para lidar com boa parte das tentativas de manipulação de resultados.

Gostou do Papo de Computeiro? Quer ficar por dentro de novos posts e comentários? Curta nossa página no facebook: http://www.facebook.com/papodecomputeiro  🙂 

Referências: 

[0] https://www.facebook.com/chicoalencar/photos/a.220261591409433.36789.184693888299537/748439131925007/

[1] http://www.wordstream.com/articles/internet-search-engines-history

[2] http://infolab.stanford.edu/~backrub/google.html

[3] http://searchengineland.com/library/google/google-algorithm-updates

[4] https://www.google.com/intl/pt-br/insidesearch/howsearchworks/algorithms.html

[5] https://www.facebook.com/ministerioverdaderiodoce

Quando o tempo conta

A história dos smartwatches já data de algum tempo. Quem não ficou maluco por ter um relógio-calculadora, ou então com agenda E controle remoto? A sensação de poder fazer mais do que simplesmente ver a hora, o poder adquirido de realizar cálculos sem uma calculadora de mão E ainda por cima saber a hora (talvez até em mais de um fuso-horário) era algo extraordinário em tempos que celulares tinham visores de uma linha e sequer enviavam SMS direto.

Relógio calculadora

“Relógio Calculadora” por Winkels. Licenciado por CC BY-SA 3.0 via Wikimedia Commons – http://bit.ly/1BaCZyd

Já em 2015, muita coisa mudou, e os smartwatches… bem, evoluíram. Falo com tanto entusiasmo pois tal evolução não foi natural, pelo menos em minha humilde opinião. O que houve foi uma verdadeira corrida do ouro para chegar a frente e abocanhar o mercado de relógios inteligentes, dada as especulações sobre um possível lançamento iminente de um relógio inteligente da Apple, em especial a partir 2013. O que vimos a seguir foi uma avalanche de lançamentos de relógios inteligentes dos mais variados tamanhos e modelos e problemas e interfaces. Em 2014, a Google lança o Android Wear, um sistema operacional para relógios inteligentes, que trouxe entre outras coisas os cards do Google para seu pulso, além de notificações, outros apps… e a hora, claro.

Nesse meio tempo, e em uma campanha de sucesso no Kickstarter, veio o Pebble. Desde sua primeira versão, em 2012, o Pebble não almejava ser o mais avançado smartwatch. Olha que estamos falando de 2012, aonde já tínhamos a possibilidade de criarmos dispositivos suficientemente pequenos para caber em um relógio. No universo de telas coloridas, multitoque e de alta resolução, o que o Pebble trouxe? Uma simples tela de LCD de 144×168 pixel (memory LCD, mais econômica) monocromática (preto ou branco meu amigo, nada de escala de cinza), espaço para pouquíssimos aplicativos, Bluetooth 2.1, 4 botões (sim, botões!), acelerômetro, watchfaces (carinhas do relógio) personalizados e só (fora o padrão : acesso a notificações e controle de música tocando no smartphone). Uau, vendo assim parece um fracasso, certo? Bom, queria ter um fracasso de 10 milhões de dólares arrecadados no Kickstarter [1].

"Pebble Original" por Pebble Technology - Licenciado por CC BY-SA 1.0 via Wikimedia Commons - http://bit.ly/1vxdpCC

“Pebble Original” por Pebble Technology – Licenciado por CC BY-SA 1.0 via Wikimedia Commons – http://bit.ly/1vxdpCC

Mas o que se sucedeu foi o que tornou o Pebble o que ele é hoje. Updates vieram, como Bluetooth 4.0, a liberação do uso de uma bússola perdida entre os componentes. Mas o que criou todo o hype em volta dele foi, em 2013, o lançamento do SDK. Com isso, desenvolvedores puderam criar watchfaces para o Pebble. Surgiu aí um fenômeno entre os relógios inteligentes. Lembre-se que isso é antes do boom dos smartwatches, antes do Android Wear. Para além disso, o Pebble também passou a permitir a execução de aplicativos em background (como monitores de atividade física), se tornando também um dispositivo de monitoramento de atividades físicas e sono.

Até hoje, este universo de relógios inteligentes me intrigava, principalmente por eu não gostar de notificações. Considero as notificações aquele amigo que não para de te interromper no meio de algo importante em sua vida (seja dormir, seja trabalhar, seja comer). Embora seja ótimo ser notificado, cada vez mais vejo que superestimamos a necessidade de notificações sobre determinadas atividades de nossos aparelhos eletrônicos. Uma mensagem de trabalho certamente é importante de ser vista o quanto antes (em horário de trabalho especialmente), ou a mensagem de um amigo. No entanto, eu não me importo em esperar uns 5 minutos para ver que meu celular está com 30% de bateria. Ou que existe tal produto baixou de preço. Ou que fulano acabou de curtir minha foto postada a 5 meses atrás. O problema com as notificações é que, em minha humilde opinião, seu comportamento padrão está errado. EU deveria escolher quais notificações me importam, quais deveriam ficar pra uma verificação posterior e quais eu não me importo.

O problema com os smartwatches atuais (ou pelo menos boa parte deles), é que tudo gira em torno de ser notificado e, por consequência algumas vezes, de responder tais notificações, não importando seu grau de importância para o momento. Eu não consigo aceitar isso. Em resumo: a interação com os smartwatches tem como ponto central as NOTIFICAÇÕES. E isso, especialmente para quem é distraído, é um tiro no pé. Por mais que eu seja entusiasta de novas tecnologias, não posso me dar ao luxo de ter um dispositivo que vai me atrapalhar (e atazanar) a vida mais do que me ajudar. Por causa disso sempre tive dúvidas quanto ao sucesso dos smartwatches enquanto dispositivos indispensáveis (embora seja uma palavra forte pra qualquer dispositivo eletrônico) em nosso dia a dia.

Hoje foi lançada uma campanha no Kickstarter para o Pebble Time [2]. Em resumo, é o Pebble com tela colorida ( embora apenas 64 cores), além de algumas surpresas, segundo os criadores. No entanto, o que mais me chamou a atenção, e o que tem sido pouco mencionado, é a nova interface, chamada simplesmente de “Timeline Interface”. A filosofia por trás da interface é bonita de se ouvir, e fica óbvia depois de ouvirmos. Pra que serve um relógio, senão para nos localizarmos no tempo? Sendo assim, um relógio fala sobre o tempo. Em um relógio normal, apenas temos o tempo avançando, segundo a segundo. E se pudéssemos olhar para o tempo em suas formas presente, passada e futura? É nessa linha que a nova interface do Pebble Time (e em breve dos outros Pebble) caminha. Por meio dos 3 botões a direita, podemos visualizar eventos passados (resultados de jogos, notas, calendários, emails, e outros), presentes (música sendo tocada, notificações de ligação), e futuros (lembretes, futuros eventos, e por aí vai). Veja que a nova perspectiva desloca o centro de atenção das notificações, para algo central ao relógio em sua concepção analógica: o tempo. Parece tão óbvio agora, não? Com isso, eu passo a ter controle sobre o que eu quero ver, e quando eu quero ver. A nova interface ainda não foi apresentada em sua totalidade, então é cedo pra tirar muitas conclusões. No entanto, fiquei muito feliz de ver esta que eu acho ser uma sacada de mestre da equipe de desenvolvimento do Pebble OS.

Visualizando eventos Futuros no Pebble - Crédito Pplware - http://bit.ly/1EOLwWD

Visualizando eventos Futuros no Pebble – Crédito Pplware – http://bit.ly/1EOLwWD

Espero fortemente que este seja o caminho dos próximos smartwatches. Vejo esta nova perspectiva mais próxima dos princípios pregados pela pesquisa de Douglas Engelbart, um dos grandes pioneiros em IHC [3], que travava do aumento das capacidades humanas, e não sua substituição (ou no caso dos smartwatches, a diminuição destas). Afinal de contas, não quero deixar de viver para responder a mil notificações, me perseguindo em meu pulso. O meu tempo conta, e muito.

Referências:

[1] Pebble Smartwatch (Kickstarter). Disponível em: http://www.kickstarter.com/projects/597507018/pebble-e-paper-watch-for-iphone-and-android

[2] Pebble Time (Kickstarter). Disponível em: https://www.kickstarter.com/projects/597507018/pebble-time-awesome-smartwatch-no-compromises

[3] Douglas Engelbart Institute. Disponível em: http://dougengelbart.org/

So, you’re starting a PhD?

Sempre que comento que faço um doutorado, sinto que é difícil explicar qual a extensão de comprometimento algumas vezes é necessária para fazê-lo. Quando leio artigos e reportagens que falam sobre os desafios, especialmente psicológicos e sociais relacionados à pós-graduação, vejo que não sou o único que passa por dias difíceis. No entanto é sempre importante exercitar nossas mentes a ver o lado bom desta jornada. Este post do “The Thesis Whisperer” , apesar de começar falando das dificuldades, nos convida a ver o “silver lining” do PhD. Pessoalmente, meu doutorado é um caminho para me preparar para os desafios da docência e pesquisa. Já aprendi muito nestes 5 anos de pós, tanto na área acadêmica quanto profissional. Aprendi principalmente a ter paciência e serenidade diante da vida. Muitas vezes nos veremos diante de problemas de variados tamanhos, e muitas vezes grandes “demais”. O doutorado nos ensina (ou melhor, aprender por meio dele) a sobreviver a estes “elefantes”, uma mordida por vez. Fora todo o auto-conhecimento adquirido nesta etapa, fundamental em qualquer aspecto da vida. Fica a reflexão e a recomendação de leitura àqueles que não pensam, ou aos que cogitam a pós-graduação. Como tudo na vida, tem seus prós e contras, e como em alguns momentos da vida, é importante nos lembrarmos que os prós também existem.

The Thesis Whisperer

This month, all around Australia, there will be a whole crop of PhD students starting their degree. It’s an exciting time, but a nerve-wracking one as well. Here’s another post to help you start your journey!

This post is by Erika Harris, PhD Candidate. Erika has a Master’s degree in Education, General Education and has worked in instructional design and development in both corporate and higher education settings in the U.S & Australia. Currently Erika is an educational developer, elearning, for RMIT designing online and hybrid courses working with academics in the higher education and vocational education sectors. In this post Erika reflects on the advice given about why NOT to do a PhD and why you would still give it a go anyway.

I am a new PhD student, and have been reading and conversing with current and past PhD students and have come to the sad conclusion…

Ver o post original 665 mais palavras

[ Documentário] The Queen of Code

Grace_Hopper_and_UNIVAC

Grace Murray Hopper no teclado do UNIVAC (1960)

Seguindo a onda trazida pelo filme O Jogo da Imitação [1] , deixo a dica deste documentário de 18 minutos sobre Grace Hopper [2]. Pra quem não sabe, graças a ela (e a sua equipe), programar deixou de ser um ajuste de válvulas, e bits e bytes. Graças a Grace Hopper começamos a falar de forma mais natural com o computador. Surge assim o primeiro compilador e, posteriormente, a linguagem de programação COBOL, ainda muito utilizada nos dias de hoje. “Amazing Grace”, como foi chamada,

Ao link: http://fivethirtyeight.com/features/the-queen-of-code/

H96566k

“Primeiro caso real de um bug encontrado”.

PS: Graças a ela o termo “bug” foi popularizado.

Referências:

[1] O Jogo da Imitação (IMDB):  http://www.imdb.com/title/tt2084970/

[2] Grace Hopper (Wikipedia):  http://en.wikipedia.org/wiki/Grace_Hopper

[CACM] Edição de Maio da Communications of the ACM já está disponível

ImageJá está no ar a nova edição da Communication of the ACM, revista em formato digital e impresso criado pela Association for Computing Machinery que traz artigos de diversas áreas da computação. A edição deste mês tem como capa o artigo “Comparative Analysis of Protein Networks: Hard Problems, Practical Solutions”, por Atias e Sharan. No artigo, os autores exploram a área da biologia computacional através de um survey que investiga os diferentes problemas e métodos para análise comparativa de redes de proteínas. 

A CACM também traz artigos da área de robótica, redes sociais, pontos de vista sobre a história da computação, por Anderson e a garantia do futuro dela com o ensino de programação no ensino básico, por Repenning, de uma forma diferente da qual estamos acostumados em nossas aulas de programação.

[CACM