61 lines
3.5 KiB
Scheme
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") "."))))
|