racket/collects/help/servlets/research/why.ss
2006-11-23 22:46:57 +00:00

61 lines
3.5 KiB
Scheme

(module why mzscheme
(require "../private/headelts.ss"
"../private/util.ss"
(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") "."))))