What happened to software? Why is there so few creative software (2010)? Are we at the end of software? What are the forces which led to this situation, looking like a bit step backward to the epoch of non-programmable accounting machines? Is there a way out of this situation? Yes, and a very simple one: make good software. With invention. Developing models and abstractions. It is difficult but absolutely possible. It this re-start of software I wish to explore here in this blog. Welcome
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
A Fundamental Duality of Software Engineering
"Once more, as elsewhere in computer science, abstraction is the key to solid results that stand the test of time".
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.
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.
sábado, 30 de abril de 2011
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.
É 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.
Assinar:
Postagens (Atom)