[plt-scheme] Re: One eyed man leads blind
On Thu, 10 Dec 2009 14:09:04 -0800 (PST), wooks
<wookiz at hotmail.com> wrote:
>So it looks like I'll be teaching a course in Programming Paradigms
>next term/semester. I never actually took a course in the subject
>myself and have varying degrees of familiarity with the main
>paradigms. Life is going to get very interesting.
>
>There are a number of recommended texts none of which I am familiar
>with, one of which is Mitchell's Concepts of Programming Languages.
>
>http://www.amazon.com/Concepts-Programming-Languages-John-Mitchell/dp/0521780985/ref=sr_1_1?ie=UTF8&s=books&qid=1260482563&sr=8-1
>
>I would welcome advice, pointers to resources and suggestions.
You may find the following chapter interesting:
"Programming Paradigms for Dummies: What Every Programmer Should Know"
by Peter Van Roy (one of the authors of _Concepts, Techniques, and
Models of Computer Programming_)
http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
There is also the following review of this chapter on Lambda the
Ultimate:
"Peter Van Roy: Programming Paradigms for Dummies | Lambda the
Ultimate"
http://lambda-the-ultimate.org/node/3465
The following is a quoted summary of this chapter from the LtU review
above:
>This chapter gives an introduction to all the main programming paradigms, their underlying
>concepts, and the relationships between them. We give a broad view to help
>programmers choose the right concepts they need to solve the problems at hand. We
>give a taxonomy of almost 30 useful programming paradigms and how they are related.
>Most of them differ only in one or a few concepts, but this can make a world of difference
>in programming. We explain briefly how programming paradigms influence language
>design, and we show two sweet spots: dual-paradigm languages and a definitive language.
>We introduce the main concepts of programming languages: records, closures,
>independence (concurrency), and named state. We explain the main principles of data
>abstraction and how it lets us organize large programs. Finally, we conclude by focusing
>on concurrency, which is widely considered the hardest concept to program with.
>We present four little-known but important paradigms that greatly simplify concurrent
>programming with respect to mainstream languages: declarative concurrency (both eager
>and lazy), functional reactive programming, discrete synchronous programming, and
>constraint programming. These paradigms have no race conditions and can be used in
>cases where no other paradigm works. We explain why for multi-core processors and we
>give several examples from computer music, which often uses these paradigms.
-- Benjamin L. Russell