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
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 Functional programming. Mostrar todas as postagens
Mostrando postagens com marcador Functional programming. Mostrar todas as postagens
quarta-feira, 15 de novembro de 2017
quarta-feira, 4 de outubro de 2017
domingo, 10 de setembro de 2017
sábado, 29 de abril de 2017
sábado, 24 de janeiro de 2015
domingo, 6 de outubro de 2013
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.
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
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 Untyped Lambda-Calculus, Hossein Hojjat, University of Teheran: good simple presentation
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 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.
sábado, 29 de setembro de 2012
Functional Programming is (still) overrated
Is it? Read An Apology of Sort. Ideas on Functional Programming, OOP fad and... apology of Clojure.
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.
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)
“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.
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".
"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?
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".
Assinar:
Postagens (Atom)