[plt-scheme] Interacting w/ MzScheme
Matthias Felleisen <matthias at ccs.neu.edu> writes:
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
> This has nothing to do with flamewar. Tell us and we will listen. If it is a
> flame, we will tune out the heat and find the part that matters. -- Matthias
OK, if you enjoy fire-fighting here you go:
A) Drscheme doesn't do the most basic editing facilities remotely right.
1. no mark-ring, no proper understanding of marked region: I do a substantial
part of my navigation with C-u C-SPC and region and mark related stuff in
general seems broken or nonexistent in drscheme
2. crippled isearch:
- ill-designed search dialog: I find the attentional distraction of some
big visual flash at the bottom of the screen everytime I do an isearch
quite annoying. It doesn't help that almost none of the stuff in it is
of any help and thus mainly ends up wasting space.
- no proper search history etc. (M-p etc.)
- instead a new isearch repeats the last search (*even* if that last search
was a failure in which case the bloody thing then beeps at one) -- IMO
it's bad because
+ typically chances that I don't want to search the same thing again in a
new search session are quite good [1]
+ OTOH obtaining the behavior under emacs, *when* it is desired, is
*less* than *1* key press (Depress control, depress s , release and
press s again, release both control and s)
+ there is substantial cost if is *not* the desired behavior, especially
if it means one ends up somewhere completely different in the file
rather than somewhere close or inside the current screen (in which one
which ones attention was focus and where one wanted to search in the
first place)
- no highlighting of all matches on screen
- generally non of the fancy stuff (try C-hm C-s if you didn't notice what
you're missing)
- no marks (see 1.)
- stupid modality costs time and nerves (in emacs RET and all movement
commands get you out of isearch)
- SIGNIFICANTLY these two things combined mean that you can no longer
properly use isearch for *editing* rather than *finding* as such; in
emacs you might want to rebind C-w and M-w and C-y in the
isearch-mode-map; but then you can use isearch as a very effective means
to select (and copy/delete etc.) regions of text
3. 1) and especially 2) are killers for me; but lots of other important basic
editing commands missing to name just a few random ones:
- dabbrev-expand
- exchange-point-and-mark
- backward-kill-sexp
- rectangle and register commands
- session-jump-to-last-change (this is not part of core emacs, but since
<http://emacs-session.sourceforge.net> is possibly the single most useful
emacs package around, I'd recommend having a look at it;
session-jump-to-last-change (C-xC-/) basically cycles through the
positions that were last modified, amongst other things it is incredibly
useful if one writes something, stops in the middle to look at some other
parts of code and then can resume there immediately)
B) General interface woes
- responsiveness
- even the facilities for the painstakingly and separately written
documentation are terribly ineffective and cumbersome to use compared to
the ancient `info' (or even mozilla)
- annoying pop-up windows for everything no multiple buffers or frames
- horrible file-dialog
- the features that would be cool in principle are poorly designed or don't
use their potential (mouse-hover arrows to same identifier -- why do I
have do use the mouse? why do the arrows have to render the text
unreadable? Maybe some subtle change in background color on resting the
cursor under a symbol (and a keyboard way to navigate or rename the
different occurrences) might work quite well to make this actually
useful)
- rather poor fonts for me under debian, but that might not be a PLT issue.
C) (IMO) terrible general architecture:
- In emacs I getting the documentation, keybinding, function-name and or
actual code of just about anything is a matter of very few keypresses
(*even* for menu-items) and hacking it is no problem.
Now maybe this is just some deep sort of cultural divide or something
were I just haven't seen the light yet --for some reason I've never been
able to fathom why scheme doesn't have docstrings for example (it would
seem to me that designing a programming language with REPL but without
something like docstrings is fundamentally braindamaged) or why there
isn't any proper error handling, debugging or really interactive
development facility in in drscheme -- or why 'documentation' doesn't
even make it into htdp's index (last time I looked, site seems down now).
I'd be genuinely curious to know about the *downsides* of having
docstrings in a language so if anyone can enlighten me please do (for
some reason almost all vaguely functional programming languages seem to
offer REPLs but no docstrings and I really can't understand why).
Minor point: Apparently bad debian packages:
- I just apt-get install'ed the latest drscheme to make sure what I wrote;
not only did the installation process take several minutes the result
also seems broken -- on startup (and after nuking ~/.plt*) I get an error
box:
standard-module-name-resolver: collection not found: "trace" in any
of: ("~/.plt-scheme/207/collects" "/usr/lib/plt/collects")
Why do I bother to write all this stuff? Well, I think in principle plt scheme
and a properly done IDE (or least editor) environment on top of it could be
eventually become something that makes a real difference, namely a foundation
one which to build actually *interesting* applications, viz quite unlike the
typical KDE/Gnome/Windoze crap.
I think the minimum requirements for doing something genuinely good would be a
decent and freely available interactive programming language with rich
libraries and high expressiveness that still remains suitability for end-user
programming (for more sophisticated but not computer science PhD end-users).
Additionally it would really help to have good existing editing facilities
built on top of that language and a powerful GUI framework (powerful enough to
do something rather different from the current GUI stuff, not necessarily full
of widgets; I think one would want at least fast and good 2D vector graphics
and text rendering).
I don't think PLT qualifies as of yet (or possibly ever), but than it is in a
fairly minuscule set of potential candidates I can think of.
'as
Footnotes:
[1] This is easy to investigate empirically BTW -- by "dribbling" in emacs and
then analysing the keypress patterns for C-s / C-r sequences to see how
often the same word was searched for consecutively