sexta-feira, 8 de março de 2013

Answer to ResearchGate question:

Which first language do you think is the best for learning programming techniques?

Francisco Frechina · Universitat Politècnica de València
I would bet for the mix of SML, Racket, Ruby and finally Haskell.

SML give you some notions like:
- Benefits of no mutation
- Algebraic datatypes, pattern matching
- Higher-order functions; closures
- Lexical scope
- Currying
- Syntactic sugar
- Parametric polymorphism and container types
- Type inference
- Abstract types

However, Racket shows interesting things like:
- Dynamic vs. static typing
- Laziness and streams
- Implementing languages, especially higher-order functions
- Macros
- Abstract types via dynamic type-creation
- Reflexion

On the other hand, for the OOP, Ruby would be great showing:
- Dynamic dispatch
- Pure object-orientation
- Multiple inheritance, interfaces, and mixins
- OO vs. functional decomposition and extensibility
- Subtyping for records, functions, and objects
- Class-based subtyping
- Subtyping
- Subtyping vs. parametric polymorphism; bounded polymorphism
- Reflexion in OOP

And after all this, I would introduce the lazyness of Haskell
and go deeper in all Haskell stuff.

Of course, this is just one (of many) way(s) for learning 
programming languages techniques


-----------------------

See also the classical: Teach Yourself Programming in Ten Years