[plt-scheme] Re: One eyed man leads blind

From: Benjamin L.Russell (DekuDekuplex at Yahoo.com)
Date: Fri Dec 11 16:39:49 EST 2009

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.
>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_)

There is also the following review of this chapter on Lambda the

"Peter Van Roy: Programming Paradigms for Dummies | Lambda the

The following is a quoted summary of this chapter from the LtU review

>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

Posted on the users mailing list.