Mostrando postagens com marcador Abstracão. Mostrar todas as postagens
Mostrando postagens com marcador Abstracão. Mostrar todas as postagens

segunda-feira, 24 de dezembro de 2012

Is abstraction the key to computing?

Yes! But the examples in the article (Matisse, Underground map) are not really examples of abstraction and the use of Piaget theory doesn't apply directly. How about teaching Mathematics as a royal path to abstraction?

sábado, 8 de dezembro de 2012

domingo, 24 de julho de 2011

Some thoughts on programming, buliding solid systems, functional programming, abstraction

Gerald Jay Sussman paper, Building Robust Systems: "The digital computer is a break-through of this kind, because it is a universal machine that can simulate any other information-processing machine."

Lisp: A language for stratified design, Harold Abelson and Gerald Jay Sussman, AIM-986: "Lisp encourages one to attack a new problem by implementing new languages tailored to that problem".

PicoLisp, A Radical Approach to Application Development, Alexandre Burger, radical.pdf:

   - Deal with constant application change
   - Develop through an iterative process
   - Have a fully functional systema at each iteration
   - Lightweight and fast language
   - Compiled Lisp is not Lisp
   - Lisp is fast because it is a tree of executable nodes
   - On top of PicoLisp Burger built an application server which includes a Database and a Lisp based markup language
   - Information kept in one place
   - Abstracted library of functions

Check Pico-Lisp here.

domingo, 17 de outubro de 2010

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.

domingo, 12 de setembro de 2010

Abstração


Tema forte, provavelmente a mais importante de todas as considerações sobre como fazer software: abstração.

É a chave para arquitetar - no sentido de projetar, elaborar, desenhar, design, criar - software.

Historicamente, desde que se programa computadores, houve várias tentativas para formalizar a abstração. Que me parece não ser formalizável.

Do lado programação, tivemos a programação modular, a programação estruturada, a organização de programas e subprogramas em bibliotecas, programação orientada a objetos e correndo em paralelo a todas estas, a programação funcional.

Do lado modelos, tivemos sucessivamente as máquinas abstratas, como Turing ou Von Neuman, precedendo o computador. O computador como o conhecemos até hoje (2010), que é uma máquina de Von Neuman. A linguagem de máquina e linguagem Assembler, passagem essencial do hardware para o software: desaparece a eletronica, surge um modelo de como programar. E depois linguagens de alto nível, procedurais. E de novo, em paralelo, linguagens funcionais.

Muito a dizer e a pensar sobre abstração. Ai vão 2 posts que valem como depoimentos práticos de desenvolvedores de software:

Programming with reason: observem a regra número 1, Abstraction, or "Just Wrap it!". E o tema da simplicidade, outro tema fundamental em programação, "simplicity equals elegance".

So long and farewell to the IDE: não é somente uma crítica, forte e correta, das IDEs. É uma receita de como fazer abstração na prática, no dia a dia do programador.