[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: occam REPL

Hi Matt!

I look forward to catching up with you at CPA 2006!  Will you be there?

I just checked, and was surprised to see that OCaml *does* have a repl...

Regardless, I agree with your bigger questions. I don't know who would use it. I sometimes wonder if we're hoping to lure the wrong community. Rather than lure the OO community, it seems to me the FP community is closer in spirit to CSP. Hoare's text defines processes functionally; recursion is natural for CSP process expression.

The vast majority of the OO community has been led astray! Java took off because C++ paved the way, and C++ took off (rather than, say, Smalltalk) because C paved the way. What existing language/ environment will pave the way for occam-pi? Possibly Python because of the indentation? I don't know... :-) But C++ was never meant to be an OO language, it was intended to support multiple paradigms, one of which included support for OO constructs; but C++ was committed to backward compatibility with C. Without this commitment, it's doubtful it would have been widely adopted, and Stroustrup knew this.

Unfortunately, when Java benefited from simplifying the syntax and semantics of C++, Gosling, et al., chose a stripped-down monitors multithreading model (e.g., only one, implicit lock, instead of multiple, definable condition variables per monitor). Peter tells a frustrating story of his conversation with Gosling, explaining why monitors were chosen over CSP.

By the way, DrJava has a very nice REPL environment for beginning Java programmers, and the development team for DrJava (the Rice PLT, not to be confused with the original PLT that developed DrScheme--the research group split) uses DrJava to develop DrJava, so it's not just for beginners. In fact, both PLTs are (the ones behind DrScheme and DrJava) are developing functional OO introductions to Java through the use of language levels (subsets of Java), restricting such things as assignment statements (no mutation), etc. Both DrJava and DrScheme (using the ProfessorJ learning languages) provide Java REPLs.

While on the surface a REPL for occam may not seem exciting, perhaps there's a bigger picture here. If we can introduce CS1 students to concurrency before they learn to fear it, we will be on the road to real progress. I've heard Peter speak on several occasions how our curriculum needs to be revamped to teach concurrency much earlier on, that concurrency is natural, and that single-threaded computing in an inherently parallel world is unnatural. I couldn't agree more. (Easy to say now, of course; but the first time I heard Peter discuss this, it was an epiphany for me!)

All of this is to say that having a REPL for occam may be *part* of what's needed to convince the establishment that it shouldn't be objects-first, but concurrency first! :-)

I realize I'm preaching to the choir here, but thanks for reading this far...



On Aug 19, 2006, at 1:45 PM, Matt Jadud wrote:

Hi Marc,

Marc L. Smith wrote:
Hi everyone,
I've been following this most recent thread regarding a REPL for occam, and Damian's last post triggered me to recall that there *is* an experimental language within DrScheme that is an implementation of Functional Reactive Programming. The language is FrTime (pronounced "Father Time"), and I saw a demo of it a couple of years ago. The demo showed off features that would appear to be desirable for an occam REPL as this thread has discussed.

I think the bigger questions is whether a REPL is actually worth the investment of time and effort? What problems does it solve? Who would use it? Certainly, it would require a non-trivial investment of time to convince the compiler to byte-compile on a line-by-line basis, and for the TVM to support that kind of incremental compilation in a sane way. FrTime has the benefit of expanding down to PLT Scheme, which (as Scheme implementations go) was intended for this kind of linguistic exploration.

Java took off just fine without a REPL. I don't think OCaml has one, either... and, for that matter, Perl doesn't have a REPL, but it has practically taken over the world of scripting. These languages do just fine within their spheres. Someone would have to convince me of why a REPL for occam is a truly interesting idea, as it doesn't seem all that exciting to me.