Mostrando postagens com marcador Functional programming. Mostrar todas as postagens
Mostrando postagens com marcador Functional programming. Mostrar todas as postagens

quarta-feira, 15 de novembro de 2017

Backus had it right!

Can Programming Be Liberated from the Von Neumann Style?

Tikhon Jelvis has it right! 

And some more findings and opinionn on functional programming. Including discovery of the possibility compile-time garbage collection (to be studied):


https://www.quora.com/Why-does-functional-programming-have-such-a-high-status-in-academic-circles

https://en.wikipedia.org/wiki/ML_(programming_language)

http://lambda-the-ultimate.org/node/2047
https://softwareengineering.stackexchange.com/questions/339666/managed-code-could-gc-be-taken-care-of-during-compile-time
https://link.springer.com/chapter/10.1007/978-1-4471-3810-5_14
https://www.researchgate.net/publication/227295133_Compile-time_garbage_collection_for_lazy_functional_languages
https://lirias.kuleuven.be/bitstream/123456789/131304/1/Mazur.pdf

terça-feira, 25 de dezembro de 2012

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

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.

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, 26 de junho de 2011

The Art of Computer Programming

Matt Barton, The Fine Art of Computer Programming, Free Software and the Future of Literate Programming:

“When software became merchandise, the opportunity vanished of teaching software development as a craft and as artistry” (Richard P. Gabriel and Ron Goldman)

Barton mentions Pope, essayist and poet, as a model. Code should be read like poetry. "It is perhaps time to elect a new Pope. To my mind, there is only one man of sufficient merit and tenacity to warrant such an honor: Donald E. Knuth. I nominate Knuth because of the development of what he terms literate programming, ..."

"The truth, according to Knuth, is that programming is “both a science and an art, and that the two aspects nicely complement each other”

From Literate Programming, Patrick TJ McPhee: "The second important idea is the view of program writing as a special type of literary work with its stress on the readers, as opposite to the stress on computers many programmers have."

Stan Kelly-Bootle, Ode or Code: "Dijkstra’s oft-quoted advice was, “Besides a mathematical inclination, an exceptionally good mastery of one’s native tongue is the most vital asset of a competent programmer.”" (Stan being an excellent example of brilliant mastery of English language)

domingo, 14 de novembro de 2010

Programação funcional

Lisp, Scheme, Haskell... linguagens antigas voltando, programação funcional em Javascript, em F#.  A idéia vem vindo, talvez substitua o modismo orientação a objetos.  Talvez mais, seja a chegada da Teoria da Computação aplicada à prática.

A functional approach to data structures and its use in multidimensional searching, B.Chazelle, 1988,  como desenvolver matemáticamente o tratamento de estruturas de dados. Tratamento matemático sério. Vide de Chazelle também os artigos sobre algoritmos, um novo paradigma.

Why functional programming matters, J.Hughes, 1984, como usar programação funcional para estruturar programas. Na linha de Structure and Implementation of Computer Programs (SICP), Abelson e Sussman, MIT. Ver também Why why fucntional programming matters. Ver ainda Lisp: A Language for Stratified Design, Abelson and Syssman, 1987, também na linha de SICP.

Functional Programming for the Rest of Us, 2006,  porque programação funcional, de abstração de estruturas de controle até closures.

Church Thesis and Functional Programming, D.Turner:   dos fundamentos, Church, Lambda-calculus, até a linguagem Miranda.

segunda-feira, 20 de setembro de 2010

Homoicônica?

"Clojure é uma linguagem homoicônica, ou seja, as mesmas estruturas de dados usadas nos programas são usadas para representá-los internamente" em Programação Funcional e Concorrente para JVM com Clojure: boa apresentação de linguagem funcional, Clojure. Onde está a referência a homoicônica?

"Aproveite o poder e expressividade de uma linguagem homoicônica", simpática paródia do clássico "Use filtro solar".

Linguagem sucinta: PicoLisp

Um Lisp minimalista. Funcionando há anos. Usado para aplicações comerciais reais. Com boa performance. E pouquíssimo conhecido.

Perfeito exemplo de linguagem sucinta (ver simplicidade):
. it's tiny
. it's very succinct
. built-in support for web applications
. integrated object-oriented database, with direct bindings between (web) UI widgets and database objects
. actively maintained and improved (around 4 new releases per year, latest release is from Dec 30 2007)
. mostly cross-platform (Linux, Mac OS X, FreeBSD, Cygwin on Windows). Unfortunately it doesn't have native Windows version.
. open-source (GPL)
(picoLisp - Arc before Arc)

Picolisp

Principal artigo, Pico Lisp A Radical Approach to Application Development

PicoLisp in Rosetta Code

Picolisp in Wikipedia

A comparar com OpenLisp

Performance:
   Picolisp and openlisp: new eval speed champions
   PicoLisp takes the performance crown?

terça-feira, 7 de setembro de 2010

Functional programming = fun.....

Putting the fun in functional programming:  depoimento de um profissional, que trabalhou com OO, foi para programação funcional, gostou, descobriu que pode fazer muito mais com muito menos, que programação funcional é igual a orientação a objetos sem o formalismo pesado. Que em programação funcional os objetos - ou funções - nascem naturalmente, que tendem a ser re-usáveis, que os programas ficam menores e mais expressivos.

Palavra-chave nisso tudo: abstração.  (sobre abstração: vide - e estude - SICP)

"in the OOP world, programming quickly became more about structure and frameworks than about solutions": programação fica burocrática. Acaba a criatividade. Acaba a descoberta de abstrações, o que acontece naturalmente em programação funcional. E não é "fun".