domingo, 17 de outubro de 2010

Ciência da Computação

Is the Thrill Gone?

Artigo de 2005, ainda atualíssimo. Como atrair jovens brilhantes para Ciência da Computação?

O ramo é fundamental, nele se produziu e se continua a produzir uma revolução do tamanho da Revolução Industrial ou da invenção da Imprensa ou ainda do alfabeto.

Idéias importantíssimas para a computação e para a Ciência em geral: "Universality, the duality between program and data, abstraction, recursion, tractability, virtualization, and fault tolerance are among its basic principles. No one would dispute that the very idea of computing was one of the greatest scientific and technological discoveries of the 20th century. Not only has it produced huge societal and commercial effects, its conceptual significance is increasingly felt in other sciences."

Um universo está sendo descoberto.

Como fazer bom software empresarial

3 Reasons Enterprise Software Doesn’t Have to Suck: boas considerações. Parte da diferença entre software de consumo, feito para ser desejado, e software de empresa, feito a partir de especificações, com resultado péssimo. Indicação da solução: SaaS, software como serviço, software para empresas feito para agradar aos usuários.

Data Science

Boa introdução, com referências a análise de dados, navegação na Web em bancos de dados de grande porte, apresentação e visualização:  What is Data Science.

Nota: o primeiro exemplo, CDDB database, é um caso de dados + programa+cooperação social na Web.

IDEs: precisa? Ajudam? Atrapalham?


Diz praticamente tudo sobre IDEs. Tudo de ruim. Para um programador, basta um editor de textos.

E vai mais longe. Para um programador, o importante é a abstração. É construir ferramentas à medida em que econtra problemas.

Nada de esquemas prontos, nada de preenchimento automático. Isto é para codificadores. Programador cria.

Program or be Programmed


Visão radical, mas que me parece muito correta. Análise histórica: na Antiguidade, com invenção da escrita, o poder é dos escribas. O resto do povo ouve. Continua a análise histórica, e chega à invenção da máquina universal, o computador. Programável. O poder é de quem sabe programar. O resto do povo usa programas prontos.

Instigante.

Me parece corretíssimo. Ou temos software programável, aberto, acessível, passível de evoluir. Ou seremos meros usuários.

Tem analogias com o ensaio de Vilém Flusser: Texto/imagem enquanto Dinâmica do Ocidente.

Arquitetura

Provavelmente a parte mais difícil de qualquer projeto de software. Desenhar a solução, definir abstrações. Como fazer? Partir dos requisitos? Partir da tecnologia disponível? Partir da versão anterior? Top-down? Bottom-up? Há métodos ou ferramentas para desenhar arquitetura, ou é pura e misteriosa criação?

Exemplo prático no artigo Tackling Architectural Complexity with Modeling. Bem prático, com casos reais em que o autor trabalhou, sucessos e fracassos. Mas não se trata propriamente de arquitetura de software, e sim de arquitetura de infra-estrutura. Tema também difícil, onde a complexidade impera, e onde faltam modelos abstratos. Mesmo porque para quem vende hardware, componentes, redes, sistemas de armazenamento, etc... a simplicidade não interessa.

sexta-feira, 15 de outubro de 2010

Programar é arte

Simples assim. Como disse o mestre Knuth, "The Art of Computer Programming". Arte no sentido de ofício, arte no sentido de criar algo novo, arte no sentido de construir uma arquitetura consistente, arte no sentido da satisfação com o resultado da obra, de querer mostra a obra.

Isto dito de forma clara em Putting Art Back Into the Art of Software Development.