racket/collects/help/servlets/research/why.ss
2005-05-27 18:56:37 +00:00

67 lines
3.5 KiB
Scheme

(module why mzscheme
(require "../private/headelts.ss"
"../private/util.ss")
(require (lib "servlet.ss" "web-server"))
(provide interface-version timeout start)
(define interface-version 'v1)
(define timeout +inf.0)
(define (start initial-request)
(report-errors-to-browser send/finish)
`(HTML
(HEAD ,hd-css
,@hd-links
(TITLE "Why DrScheme?"))
(BODY
(H1 "Why DrScheme?")
"Teaching introductory computing courses with Scheme, or any other "
"functional programming language, facilitates many conceptual tasks "
"and greatly enhances the appeal of computer science. Specifically, "
"students can implement many interesting programs with just a "
"small subset of the language. The execution of a functional program "
"can be explained with simple reduction rules that students mostly "
"know from secondary school. Interactive implementations allow "
"for quick feedback to the programmers andmake the development of "
"small functions a pleasant experience."
(P)
"Unfortunately, the poor quality of the available environments "
"for functional languages negates these advantages. Typical "
"implementations accept too many definitions, that is, definitions "
"that are syntactically well-formed in the sense of the full "
"language but meaningless for beginners. The results are "
"inexplicable behavior, incomprehensible run-time errors, or "
"confusing type error messages. The imperative nature of "
"read-eval-print loops often introduces subtle bugs into "
"otherwise perfect program developments. Scheme, in particular, "
"suffers from an adherence to Lisp's output traditions, which "
"often produces confusing effects. In many cases students, "
"especially those familiar with commercial C++ environments, "
"mistake these problems for problems with the functional "
"approach and reject the approach itself."
(P)
"To overcome this obstacle, we have developed a new programming "
"environment for Scheme. It fully integrates a (graphics-enriched) "
"editor, a multi-lingual parser that can process a hierarchy "
"of syntactically restrictive variants of Scheme, a functional "
"read-eval-print loop, and an algebraically sensible printer. "
"The environment catches the typical syntactic mistakes of "
"beginners and pinpoints the exact source location of run-time "
"exceptions. The new programming environment also provides "
"an algebraic stepper and a static debugger. The former reduces "
"Scheme programs, including programs with assignment and "
"control effects, to values (and effects). The static debugger "
"infers what set of values an expression may produce and how "
"values flow from expressions into variables. It exposes potential "
"safety violations and, upon demand from the programmer, explains "
"its reasoning by drawing value flowgraphs over the program text. "
"Preliminary experience with the environment shows that "
"students find it helpful and that they greatly prefer it to "
"shell-based or Emacs-based systems."
(P)
"A paper that discusses DrScheme in "
"more detail is available in the paper: "
(A ((HREF "http://www.ccs.neu.edu/scheme/pubs#jfp01-fcffksf")
(TARGET "_top")) "DrScheme: A Programming Environment for Scheme") "."))))