quinta-feira, 30 de dezembro de 2010

Turing

Programa da TV France Culture sobre Turing. Considerações interessantes de três cientistas sobre Turing, o homem que introduziu a escrita na matematica. O movimento. A máquina.

sábado, 25 de dezembro de 2010

Editores de texto e programabilidade

Programabilidade significa ser uma linguagem universal. Turing complete.

Há editores de texto programáveis, assim como planilhas programáveis. Não é o caso das impropriamente chamadas "macros" que permitem uma programação limitada, não universal. Exemplo de editor de texto totalmente programável: Emacs, com seu ELisp.

MarkCC (do excelente blog Good Maths, Bad Maths) está desenvolvendo um editor de textos programável, Apex. Com referências a Teco (de onde vem Emacs), Sam e Acme.

Pista a seguir: programas de uso geral, com interface familiar ao usuário - editores de texto, planilhas - com programabilidade.

domingo, 19 de dezembro de 2010

Visualizações

Alguns links sobre visualização:

50 Great Examples of Data Visualization

Scientific Designs and Tutorials That Will Inspire You

A Tour through the Visualization Zoo

O livro de referência sobre o assunto é Tufte, E. 1990. Envisioning Information. Graphics Press.

E uma dica de Courtnay Guimarães, não é tanto visualização, é como apresentar idéias business:  Dan Roam, The Back of the Napkin, ed. Portfolio

http://www.simplediagrams.com/ faz exatamente o que o nome diz

Dica de Warley Reis (contribuição da Silvia):  "O Portugues chama-se Manuel Lima. O projeto dele é o http://www.visualcomplexity.com/vc/"


Não esquecer do "homem das bolinhas": http://www.gapminder.org/ e http://updateordie.com/blog/2010/11/30/the-joy-os-stats-hans-rosling-bbc2010/

Série da O'Reilly sobre visualização, Visualization deconstructed: New York Times "Mapping America"

sábado, 11 de dezembro de 2010

Spreadsheets: looking around

Spreadsheet OS: the idea of user interacting with a spreadsheet, and the multiple dependencies of the spreadsheet are maintained dynamically. This to be extended to an operating system.

Org as a spreadsheet system: Org is an Emacs with several features to organize outlines, agendas, documents and spreadsheets. Spreadsheets can use standard formulas or Lisp expressions. To explore and to possibly use some of the ideas.

VisiCalc-like development in Lisp: Cells extension to CLOS in Common Lisp that allows one to code Lisp applications that dynamically react to changes in slot values, much like the way spreadsheet cells behave) and Cello (a GUI framework built on top of Cells). Good ideas but looks like development stopped in 2004.

Free Spreadsheets running on Linux: several interesting products/projects: SIAG, Disaml, Esheet and SES, Gnumeric... Doc and sources for Linux spreadsheets. 

Siag Office, a free Office Package for Unix with an X-based spreadsheet written in C and Scheme, extensible using Scheme. SIAG is Scheme based. Fast and small, for light Unix distributions. Permit extensions in several languages. Is a complete office suite. Based on SIOD, Scheme in One Defun.  Manual here.

Dismal, a spreadsheet for Emacs written in Lisp.

Esheet and SES, also running on Emacs: Simple Emacs Spreadsheet (SES, ses-mode or SesMode) is major mode in Emacs that mimics traditional SpreadSheet software, and uses EmacsLisp formulas


Oleo seems pretty weak. Lightweight free software under GNU.

Abacus student project at Portuguese university. See files at abacus-0.9.13


Spreadsheets under BSD, comparison and evaluation, part 1 anda part 2.


Resolver, a Python based spreadsheet. Approaches very closely the idea of a functional spreadsheet: the read-eval-print loop, the program containing cell. See First look at Resolver for the concepts. In Resolver each cell formula is dynamically translated to its Python equivalent. It's “a somewhat pathological but entirely new way of programming using a spreadsheet.”


XXL is an  interesting project of spreadsheet development.
. Author Vincent Granet ideas on the numerical errors in spreadsheets: "... Writing a spreadsheet is an error-prone activity. A very interesting study by R. Panko (see Resources) shows that a significant error rate exists in the production of computing sheets of various sizes, even when done by experienced developers. He also demonstrates the frequent lack of validation methods for building computing sheets and the scarce use of a posteriori checking tools. It is also surprising to learn that many companies use simple spreadsheets for developing large accounting applications instead of using more reliable software products that are better suited to handling a large amount of data".
. And considerations on spreadsheet as a programming model: "A computing sheet is a set of values linked by references, which constitute a sort of graph. The formula denotations of most spreadsheets, based on cells which refer to other cells, provide very low-level semantics for describing the spreadsheet structure. Mutatis mutandis (the necessary changes having been made), this is similar to the programming languages of the early 60s, with the goto statement used as the main means for structuring code. This analogy with programming languages is not fortuitous. Building a computing sheet is similar to building a program. For at least three decades, work in the programming world has been done in order to offer numerous tools and methods for building programs that are structured, reliable, extensible, etc. Apparently, such work has not yet been done in the area of spreadsheets or at least has had no visible effect in most software products."

. good short history of spreadsheets
. project divided in spreadsheet and graphical interface. 4 students.
. Language STk, implementarion of Scheme with the Tk graphical toolkit. STk superseeded by STKlos. Implemented R5RS Scheme standard.
. Xxl is written in STK: STk is a free software Scheme implementation, adhering to the R4RS standard. STk is now succeeded by STklos. It has bindings for the Tk graphical toolkit and is supported by SLIB, the portable Scheme library.
. tkTable widget for dynamic table update and presentation.
. LaTex for printing.
. Review:  several hints at other developments like Oleo, Gnumeric and Siag
. Project description:   downloaded
. STK homepage
. XXL Spreadsheet, several non-working links (dec/2010)
. Reference 



The Gnumeric spreadsheet is part of the GNOME desktop environment: a project to create a free, user friendly desktop environment.
"The goal of Gnumeric is to be the best possible spreadsheet. We are not attempting to clone existing applications. However, Gnumeric can read files saved with other spreadsheets and we offer a customizable feel that attempts to minimize the costs of transition". (Wikipedia) 
Gnumeric source code available.
[Downloaded at  Gnumeric source\install_moduleG9qzXv\gnumeric-1.10.15\src ]


Spreadsheet example in Susman Scheme book. A good starting point:  ssch25.pdf


Look at Excel, 123, and Google Docs:

- Google Docs: simple, practical, good visual, lot of fucntions, import-export, Javascript/HTML gadgets


Tools for spreadsheets:


How to automate Microsoft Excel from Microsoft Visual C# .NET

10 Useful Google Spreadsheet Formulas You Must Know – woorkup.com


Ultimate guide to table UI patterns

Excel Reporting Samples for Microsoft .NET, ASP.NET, C#, VB.NET, XLS and Microsoft Visual Studio .NET 


Scripting Google with Google Apps Scripts - Enterprise Applications from eWeek

Creating Flash Charts From Google Spreadsheets

How to use Pivot Tables for Google Docs

Miscellaneous:



(This is more on cloud computing... to put the spreadsheet in the cloud) PiCloud | Cloud Computing. Simplified.

A general reference on spreadsheets, Wikipedia. 


Centro de Excelencia em Planilhas - Cursos de Excel

Spreadsheets FAQ

List of spreadsheet software - Wikipedia, the free encyclopedia

Wikicalc

ZK Spreadsheet is an Ajax spreadsheet component

slsc: this is a much modified version of the public domain spread sheet sc, posted several years ago by Mark Weiser as vc, originally by James Gosling.

To look carefully, the idea of spreadsheet central for apps development: Excel Document-Oriented Database with Python Map & SQL Reduce | Gobán Saor

Why the interest in spreadsheets?  Look at
    https://sites.google.com/site/gcoendeposito/sicp-discussao-ideias-planilh
    You will find the first reference on my idea of a functional spreadsheet. And a discussion full of ideas to develop.
    The idea of a functional spreadsheet comes first with the observations that it is very easy to write a spreadsheet in a functional language. Just eval each cell and that is it. You may have numbers (atoms) or expressions (in functional notations). Just evaluate it. You are done.
    This idea can be carried a step further with each spreadsheet cell being a full functional program. We can even think of it as parallel programming framework since spreadsheets usually have a logic to detect dependencies between cells.
    It is also a developper/programmer framework, observing that a spreadsheet works on a typical REPL cycle.

Computadores são previsíveis?

“Informática não é ciência exata, não é ciência humana... É ciência oculta”
Conversa com Warley Reis, citando Angelo.

Esta frase, e variantes comuns nas conversas sobre TI, mencionando defeitos intermitentes, bugs imprevisíveis, problemas impossíveis de reproduzir, mostra que se perdeu na prática uma característica da máquina universal: a total previsibilidade. O contrôle completo que se tem em uma máquina que executa um algoritmo.

Como recuperar este controle? Programabilidade é uma parte da resposta. Programas corretos é outra. E principalmente não entrar nos caminhos que levam a situações não reproduzíveis, como multitarefa com programas não 100% encapsulados.

Programabilidade é fundamental

It is no exaggeration to regard this as the most fundamental idea in programming:

The evaluator, which determines the meaning of expressions in a programming language, is just another program.
 
To appreciate this point is to change our images of ourselves as programmers. We come to see ourselves as designers of languages, rather than only users of languages designed by others.

Structure and Interpretation of Computer Programs, Harold Abelson and Gerald Jay Sussman, The MIT Press, 2nd edition, 1996, p.297

domingo, 5 de dezembro de 2010

Padrões: falta de

A explorar, muito, o impacto dos padrões - falta deles - sobre a evolução do uso de software.

Desde o começo das linguagens de alto nível: Algol 60, um dos primeiros padrões internacionais, não foi adotado, provavemente por ser europeu e não americano.  Só 20 anos mais tarde é que começaram a aparecer as linguagens estruturadas, Pascal, C, mais recentemente Java, etc.  20 anos perdidos com linguagens como Cobol ou Basic.

Exemplo contrário: Cobol 60, padrão adotado, por pressão do DOD americano. Padrão infeliz, que até hoje pesa na programação comercial, com sua decisão desastrada de não formalizar a linguagem e sim procurar imitar linguagens naturais.

Lógica linear

A explorar: Lógica Linear chega à maturidade, abre perspectivas novas em linguagens de programação, redes de demonstração e aplicações em segurança. Ver Linear Logic, Alex Wright, CACM oct 2010, vol.53, n.10

Ver também:




E o artigo inicial de Jean-Yves Girard: Linear Logic, Theoretical Computer Science, London Mathematical 50:1, pp. 1-102, 1987