Functional as a first language
Scheme takes a very simple language and build out of it a wonderfully robust
Language for development.Also sicp is written about scheme which makes it worth learning right there.Scheme is about the simplest thing you could imagine that could be a complete language.
Haskell what is really growing on me is the type system.So many of the bugs i see in other languages are due to the wrong type showing up somewhere.In haskell that is almost imposible.Also the idea of a lazy language just has some cool things fall out of it.For example you can create infinite data structures in haskell and then only create the part that you need.
Functional programming makes things a lot easier.In oop languages, you have to deal with managing state across multiple threads without ruining that state.In functional languages, when the majority of the work Cheap Lacoste Shoes UK being done is being done by pure functions, you don't have to worry about it.
In terms of speed/performance, i'm not a real performance jockey, but being functional doesn't mean being slow, and The structure of functional languages has little to do with Their speed.The syntax of functional languages vary greatly such as The differences between clojure and haskell.Clojure is very fast as-Is, and can reach(And sometimes exceed)The speeds of java with after-The-Fact optimization.
So it all really depends what you Cheap Lacoste Polo Shirt are looking for
The biggest plus of learning a functional language before learning an oop lang is that your programming skills get developed firstAndthen you can easily grasp the oop concepts.If you direclty start with an oop language you will have to learn two things simultaenously: "To think about the code"And"To think about the ood".It can get distracting. First practice with a functional languageAnddevelop your programming skills. Then learn OOPAndother paradigms.Since oop was desinged to make up for the shortfalls in structural programming it will be easier to understand why. That is the reason CS courses start with CAndthen go on to C++.
Perhaps the most important reason to consider learning functional programming languages is the understanding of algebraic data-Types.The mental mapping will help in modelling oo class relations and even database design.
The focus on multi-Core/multi-Processor systems stress the use of parallel algorithms which can be expressed clearer and more concisely in fp.The lambda branch of languages will likely see a strong increase in use in the next one to two decades.
But there are also some common pitfalls.To believe fp is simpler is a big mistake, since calculating the space and time complexity as well as delivering proofs of halting can be much more challenging in lambda calculus, especially in languages which support lazy evaluation.
So, learn both!Or perhaps better:First learn a language which embraces both, such as scala.If you don't mind tie-Die t-Shirts and a slight dutch accent, perhaps you'll find the Lacoste Women Long-Sz fp lectures by dr.Erik meijer useful, which are on msdn.
The first, and obvious one is the classic structure and interpretation of computer programs, by abelson and sussman, which remains one of the best introductions to cs out there, and is taught from a functional perspective, using scheme.It's available in full online.If you don't start here, you should get here as some point.
A more recent text covering most of the same ground at a gentler pace, and with a stronger focus on software engineering is how to design programs, by matthew felleisen and a bunch of others from the racket/plt team, which uses the racket dialect of scheme.It's also available online, as is the in-Progress second edition.This book has the advantage that it's designed to be used with the drracket programming environment, which provides a very friendly interface for beginner and expert alike to experiment with code.
On the question of why start with functional programming, i'd like to point at bob harper's blog.Carnegie mellon has recently retooled their cs curriculum to teach functional programming first, and harper has been covering their progress blow-By-Blow on his blog.As one of the guys behind the definition of standard ml, it's obvious that he's for this move, and he argues the reasons for it well.
Finally, i'd caution against learning haskell first, though others may disagree.While haskell's pure approach to fp will certainly breed good habits, the language's focus on lazy computation Outlet isn't necessarily a good match for the beginner;One of the first, and most important things you will need to learn to do as a programmer is to reason about exactly what your program is doing by looking at the source, and about the relative cost of different approaches to the same problem.I'ts my experience that haskell's laziness makes both of these activities somewhat of a challenge for even experienced programmers, though your mileage may vary.