O Google nos faz mais inteligentes

Surfando hoje na web li um artigo da época negócios que fala como o autor de diversos livros Nicholas Carr percebeu que o uso constante do Google deixou ele cada vez com menos paciência para ler artigos longos e que depois de algumas linhas ele se cansa da leitura e vai para outro texto, de fato segundo Carr esta nova forma de leitura molda nossas mentes limitando nossa capacidade de leitura. Alguns sites depois estava lendo um artigo sobre como Linus Torvalds odeia C++ este sentimento dele ficou registrado em uma lista de email que ele participa. Em determinado ponto Linus fala que o programador C++ tem uma mentalidade que ele acha inadequada a um desenvolvedor de software.

Logo foi fácil criar a relação entre estes assuntos tão dispares entre Carr e Linus Torvalds , ambos estavam falando da mesma coisa que o meio que é utilizado para efetuar a comunicação de ideias molda a forma como penssamos. Eu consegui identificar esta correlação principalmente através do google que em vez de se tornar um limitador, na verdade, ampliou a minha capacidade cognitiva.

De fato Carr tem razão quando diz que o google altera a forma com penssamos entretanto esta não é a primeira vez que isso ocorre na história. Quando o homem iniciou o uso da escrita para registrar suas histórias em vez da tradição oral ele criou um novo tipo de mentalidade que , aparentemente, reduziu nossa capacidade de transmitir o conhecimento de forma oral, por outro lado, a escrita ampliou em muito as nossas capacidades cognitivas. O mesmo acontece agora com o google que nada mais é do que um ator nesta revolução que são as tecnologias de informação e comunicação.

Que grande revolução nós vivemos.

Comments

Checklist para escrever padrões de projeto

Este é o checklist para escrever padrões de Doug Lea:

  1. Descreva um único tipo de problema
  2. Descreva em que o problema ocorre
  3. Descreva a solução como uma entidade de software passível de ser construida
  4. Descreva os passos do projeto ou regras para construir a solução
  5. Descreva as forças que conduzem para a solução
  6. Descreva evidências que a solução é ótima para resolver as forças
  7. Descreva detalhes que são permitidos variar e quais não são
  8. Descreva ao menos uma instância de uso
  9. Descreva evidências que a solução resolve de forma ótima o problema
  10. Descreva os detalhes que são permitidos variar e os que não são
  11. Descreva ao menos um instância atualmente em uso
  12. Descreva evidências de generalidades através de diferentes instâncias
  13. Descreva ou referêncie as variantes e subpadrões
  14. Descreva ou referêncie outros padrões que se relacionam com este padrão
  15. Descreva ou referêncie outros padrões que este padrão faz referência
  16. Relacione com outros padrões com contexto similares, problemas e soluções

Comments

Estudando Arquitetura de Software

A muito tempo atrás , indo para banca de revista para comprar a primeira edição de uma revista recem lançada chamada Java Magazine, estava conversando com um amigo desenvolvedor de software sobre o futuro do desenvolvimento de software e chegamos a conclusão que o futuro seria das máquinas virtuais, e portanto do Java, no entanto tinha uma questão que eu não conseguia responder : “Eu não entendo para que é necessário um arquiteto de software.” Quando iniciei a desenvolver em Java entendi o porquê. Ao contrário do Delphi que vem com uma arquitetura “pronta” no Java você precisa definir a sua.

Embora nos anos subsequentes eu tenha efetivamente criado algumas arquiteturas para atender aos meus clientes eu o fazia de uma forma ad-hoc sem notar como esta área crescia. Ao ler o paper de Kruchten The Past,Present, and Future of Software Architecture observei esta evolução. Após ler este artigo me dei conta de como tinha evoluido a área e iniciei de imediato o processo de estudo, afinal : “nós(desenvolvedores de software) como os tubarões precisamos sempre nadar(aprender) para não morrermos afogados”[1].

Eu tenho um método para estudar um assunto. Inicio lendo um tutorial ou um paper sobre o assunto e depois passo para um livro sobre o assunto depois começo a fazer alguns projetos exploratórios na área. No caso do estudo de Arquitetura de Software fiz o mesmo só que tive a ajuda do excelente artigo sobre The Past,Present, and Future of Software Architecture. Que possui uma excelente lista de referências.

Os principais papers são:

  1. An Introduction to Software Architecture - neste paper é apresentado os estilos arquiteturais
  2. Foundations for the Study of Software Architecture é lançado a formula Software Architecture={elements, forms, rationale}
  3. 4+1 view architecture - uma única visão não é suficiente explana as 4+1 visões, excelente
  4. A Field Guide to Boxology - explana os trade offs entre os diversos estilos arquiteturais
  5. A Field Guide to Boxology(tabela)

Após ler os papers, você pode ler os livros:

  • Software Architecture , Perspectives on an Emerging Discipline, que repete muito do que eu já tinha lido nos papers
  • Software Architecture in Practice ,espetacular
  • Documenting Software Architectureestou atualmente lendo

Espero que este blog seja útil para aqueles que querem iniciar em arquitetura de software. Caso este seja seu caso deixe seu comentário.

  • 1. Sandro Alves[Escovador de bits]

Comments

O que é Arquitetura de Software?


Esta imagem de Escher ilustra bem a arquitetura de software. Atualmente estou lendo o livro Software Architecture in Practice que na página 23 define:

A arquitetura de software de um programa ou sistema de computador é a estrutura ou estruturas do sistema, que compreende os componentes de software, as propriedades externamente visíveis destes componentes e as relações entre eles.
[Bass 98]

Pretendo escrever um resumo do livro em breve.

Comments

Duck Type



Tirado de pythonlogia :

Ao contrário do que muitas pessoas pensam duck typing não é um mecanismo disponível em linguagens de programação que usam tipagem dinâmica mas sim uma técnica (ou prática) de desenvolvimento. Essa técnica é explicada da seguinte forma:

Se um objeto anda como um pato e faz quack como um pato então ele é um pato.

O problema dessa explicação é que ela não fornece muitos elementos úteis para que as pessoas possam entender exatamente como isso funciona então irei recorrer à outra citação extraída do livro Design Patterns:

Program to an interface, not an implementation. (Programe para uma interface, não para uma implementação).

Duck Typing é uma técnica que funciona com qualquer linguagem de programação com suporte ao paradigma OO e diz basicamente que se o seu objeto responde à uma determinada mensagem (chamada de método) característica de um determinado tipo de objeto então esse objeto também pode ser considerado do mesmo tipo.

Acredito que esta técnica seja mais fácil de ser utilizada em linguagens dinâmicas como Python, Ruby e Smalltalk mas como fazer em Java? Em Java para que usemos um determinado comportamento de um objeto é necessário que ele defina previamente que usa a interface com o comportamento desejado.

leia mais

Comments