terça-feira, 25 de dezembro de 2012

IT in 2018: From Turing’s Machine to the Computing Cloud

Nicholas Carr again. He has a point, but when we says software substitutes hardware, it should be universal machines (Turing machines) substitute particular machines.

OCaml: execellent example

of functional programming applied to a real practical situation, algorithmic trading. With great results. Author explains why, tells the story, shows why OCaml was chosen over Java and previous alternatives. With examples:

   Why the next language you learn should be functional

(Article comments are full of useful references, Example: Lisp in Small Pieces by Christian Quiennac

And here is a more recente reference to OCaml, same situation.

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?

The Lisp Curse

thought-provoking essay. Good ideas. "Lisp's expressive power is actually a cause of its lack of momentum."

Mathematics and programming

Discrete mathematical structures form the foundation of computer science"": Article on translating math into code. See comments in this blog.

Okasaki's Purely Functional Data Structures is the reference (in library)

For the implementation, see Small Data Structures by Weir

Lambda Calculus and Functional Programming references


ebooks in \Library\Lambda

Many books references sent by Abraham Popovich


The Implementation of Functional Programming Languages, Simon L.P. Jones, Prentice-Hall. Lambda Calculus in chapter 2: practical tutorial, short explanation, bBibliography on page 23. Little confusing is the Beta-reduction explanation. The book is oriented to implementation and the Miranda language.

Addison-Wesley - Haskell - The Craft of Functional Programming, 2nd ed - Simon Thompson (1999) 

Wrox - Functional Programming in C# Classic Programming Techniques for Modern Projects (Jun 2011)

[Apress, 2010] Real-World Functional Programming – with Examples in F# and C#

Springer - Drawing Programs - The Theory and Practice of Schematic Functional Programming - 2nd Edition - Jan 2010: to explore, the idea of the failure of visual programming, and use of schematica functional programming the way engineers draw blueprints 

Springer - Advanced Functional Programming Edition 2009 (Elements) Haskell, Proceedings of a Symposium

Bird, Wadler. Introduction to Functional Programming.1ed. Good practical introduction, with Miranda examples

Dynamic Programming - Foundations And Principles 2Nd Ed - M Sniedovich (Crc, 2011): nothing to do with functional programming. This is about optimization techniques.

Cambridge - Steps  in .Scala An Introduction to Object Functional Programming 2010, RETAiL.EBook-DiGiBook

Introduction To Functional Programming (Lambda Calculus) - Mike Gordon - Lecture Notes: too terse, difficult, good history with references for further study in chapter 1 page 1. Introduction to the ML language with examples.

A Tutorial Introduction to the Lambda Calculus Raul Rojas 1997. Short and painless. With the definition of numbers, arithmetic and recursion.

Type Theory and Functional Programming, Simon Thompson 1999. Tough, rigorous, abstract, not practical. Touches on fundamental logic topics like type theory, model theory, logics. Bibliographic references page 31.

Springer - Functional and Logic Programming -Jul 2004 Symposium. Note the use of functional - and imperative - programming in quantum computing.

[O'Reilly] Functional Programming for Java Developers. Short and sweet. Full of teaser to the main ideas in functional programming.

Loverdos & Syropoulos - Steps in Scala - An Introduction to Object-Functional Programming

A Functional Approach to Data Structures and its Use in Multidimensional Searching, Bernard Chazelle, 1988: good example of mathematics development of a data structure useful in functional programming 

ebooks in \Library\Lambda

Many books references sent by Abraham Popovich

Why Functional Programming Matters, John Hughes, very good, goes to the point on why using functional programming, with detailed examples and concepts for the development of complex systems. Idea of modularity explained and detailed.

Introduction to Lambda Calculus, Henk Barendregt Erik Barendsen, Revised edition, December 1998, March 2000, detailed explanation of Lambda Calculus concepts, with complete description, definition, theorems.

See in the reference to Omega language a presentation by Tim Sheard on Lambda Calculus, LambdaCalculator.

Church’s Thesis and Functional Programming, David Turner, Middlesex University, UK: excellent, complete, short, with references, mentionned Miranda language.
From Lambda the Ultimate:David Turner gives a condensed summary of the lambda calculus and functional programming in this paper on Church’s Thesis and Functional Programming.The lambda-calculus, which Church developed during the period of convergence from which the Thesis emerged, has influenced almost every aspect of the development of programming and programming languages. It is the basis of functional programming, which after a long infancy is entering adulthood as a practical alternative to traditional ad-hoc imperative programming languages. Many important ideas in mainstream programming languages—recursion, procedures as parameters, linked lists and trees, garbage collectors — came by cross fertilization from functional programming. Moreover the main schools of both operational and denotational semantics are lambda-calculus based and amount to using functional programming to explain other programming systems.
The original project from whose wreckage by paradox lambda-calculus survived, to unify logic with an account of computable functions, appears to have been reborn in unexpected form, via the propositions-as-types paradigm.
Many of the PLT topics mentioned on LtU are covered - PLT in 20 pages or less. I'm still hoping for someone to publish a pop-PLT book that takes something like these 20 pages and turns them into a 800 page novel. In the meantime, this is a nice roadmap for PLT that helps provide the connections between such things as Curry-Howard, Coq, System F. (About as close to a cheatsheet for LtU that I've come across). 
The Untyped Lambda-Calculus, Hossein Hojjat, University of Teheran: good simple presentation

The Y Combinator: two good derivation, here and this one with Javascript

An Introduction to Lambda Calculus and Scheme, Jim Larson, 1996-07-26, short and good

Compiling to lambda-calculus: Turtles all the way down - post with brief ant to the point explanation of lambda calculus, with compilation. One of many useful post in Matt Might rich blog. Many bibliographic references. 

What is a Universal Computing Machine? by Jean-Cahrles Delvenne: interesting, but reader must be familiar with Universal Machines Theory. It is a proposal of a new definition. Related to Wolfram cellular automata.

terça-feira, 11 de dezembro de 2012

Is IT Falling Short of Business Expectations?

This papers complements what DeMarco said. Software should be used - developped - to do things companies are not doing.

Quoting: "...the most financially successful companies are doing things that others aren't doing. Notably, successful companies are working together with their IT organizations to develop new products and IT is used to help support business growth." 

sábado, 8 de dezembro de 2012

domingo, 2 de dezembro de 2012

Fighting Complexity

Getting rid of complexity is the theme of Dr. Neumann research in computers and network security.  See Killing the Computer to Save It

"... the insight that “complex systems break in complex ways” — that the increasing complexity of modern hardware and software has made it virtually impossible to identify the flaws and vulnerabilities in computer systems and ensure that they are secure and trustworthy."
 
“I’m fundamentally an optimist with regard to what we can do with research,” he said. “I’m fundamentally a pessimist with respect to what corporations who are fundamentally beholden to their stockholders do, because they’re always working on short-term appearance.”

Avoid Object Oriented Programming

Good advices: "In many programming courses and tutorials, everything is going along just fine when there's a sudden speed bump of vocabulary: objects and constructors and abstract base classes and private methods. Then in the next assignment the simple three-element tuple representing an RGB color is replaced by a class with getters and setters and multiple constructors and--most critically--a lot more code." in OOP Isn't a Fundamental Particle of Computing. It just put OOP in its right place.

See also Don't Distract New Programmers with OOP: "The shift from procedural to OO brings with it a shift from thinking about problems and solutions to thinking about architecture."

The cost of bugs

Infographic on the cost of bugs. Slightly biased to agile programming.

We do have a serious quality problem in software. Mainly driven by:

- Go to market pressure
- Lack of professionalism and craftmanship

2012: Software still sucks

We still have a record of bad software projects. See The Failed Record of the Software Industry. Questions (that we will try to answer):

1. Is it really so?
2. Why?
3. How can we change this?