Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

User Profile for russell@bway.net

User Name: russell@bway.net (Benjamin L. Russell)
Member Since: Dec 17, '01 12:00:00AM
Email: Send Email
Homepage:
Location:
Bio: .plan:
\"Common sense is the collection of prejudices acquired by age eighteen.\"
-- Albert Einstein

Functional programming is elegant. It violates the common sense of the financial programming community. Its members believe that it is better to write a fast, ugly procedure that nobody can understand than a perhaps slower, elegant procedure that everybody can understand.

Notwithstanding, there *is* beauty in computer science, just as there is in art or physics; however, the key lies in elegance of efficiency.

Abelson, Sussman, and Sussman, in their so-called \"Wizard Book\" (_Structure and Interpretation of Computer Programs_) called computer science a \"procedural epistemology\" (Preface to the First Edition), but I would prefer the term \"functional epistemology.\" A computer program need not be procedural; it can be functional as well. Sometimes, functional can even be better (as in, more efficient overall).

Just as some of the greatest mathematicians were amateurs from early Greece, some of the greatest computer scientists can be amateurs as well. One of early Greek amateur mathematicians, Euclid, invented Euclidean geometry. His protege, Archimedes, is considered (together with Newton and Gauss) one of the greatest mathematicians of all time.

Similarly, one need not be a professional to become a computer scientist, so long as knowledge, not profit (again, violating the \"common sense\" of the financial programming community), is the motive.

Modern functional (including some semi-functional) programming languages include the following:

* Haskell
* ML
* Scheme
* LISP

Others can also be found. Thinking in such languages can bring a fresh perspective to software engineering, and result in elegant code that is easy to maintain and reuse.

In addition, it is even possible to do functional prototyping for object-oriented languages, such as Java, thus potentially speeding development time. (One example can be found in _A Little Java, A Few Patterns,_ by Matthias Felleisen and Daniel P. Friedman.)

My belief is that functional programming is crucial to appreciating the Promethean task of software engineering. Somebody once said, \"Beware mathematicians bearing programs.\" Another added, \"Beware programmers bearing proofs.\" I would add, \"Beware software engineers bearing functional prototypes.\"
PGP Key:

Last 10 hints for user russell@bway.net

No user hints

Last 10 comments for user russell@bway.net

1. Aqua Emacs works fine in Applications folder Dec 14, '02 07:07:31PM

Posting statistics for user russell@bway.net

Total number of articles: 0
Total number of comments: 1
Find all postings by russell@bway.net