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

RE: peasant revolt against DrScheme!



> I'd like to be able to tell my
> non-scheme-using friends, "hey, you can do all the same stuff 
> you can do in
> {perl,python,C} in scheme, and you can also do tons more!", instead of
> "you're thinking about programming in the wrong way; you have 
> to totally
> unlearn all of your ideas about programming and start over".  
> The hope is
> that if I could say the first, they'd learn the second on 
> their own later.

I think that Mike's argument suggests a very important point.
That point is that there a lot of people who already subscribe
to the established "imperitive" programming paradigm, and that
those people must be won over as well.

In responding to this thread, a number of the educators on the
list are now going over the intricate details of how to educate next
fall's CS freshmen.

What career path do the courses you provide prepare the student for?

Where "career path" might be among the following:
1. CS researher --- such as a professor at a university. Or perhaps
someone working at a large company that can afford to staff pure
researchers.

2. Professional software developer. Lot's of variety here. I'll throw out
two that I'm familiar with:
   
   Developer working for a midsized company producing software "products".
   Such software relies heavily on the OS for a lot of funcionality. 
   The market for the software is centered heavily on the choice of the OS.

   Developer producing custom software for a particular client. More
flexibilty
   in the choice of OS nonetheless a lot of functionality is provided by
   the OS.

3. Professional in some other discipline who must develop software to assist
with their primary focus. e.g. a mechanical engineer who writes a program to
model a component. etc.

Of course, "career path" no doubt includes other scenarious that I haven't
considered.

I expect that the answer to this will be that Scheme provides an excellent
foundation for all of these carreer paths.

I'll tie this in with my opening paragraph and say that what has primarily
been discussed on this thread is how Scheme prepares the student for
industry.

May I suggest that many of you already have a solid grasp on this problem
and that you're doing quite well, but that the problem we (advocates of the
use
of Scheme) should be addressing is how do we prepare industry for Scheme.

So over the next several years, I should expect to see more and more young
software
engineers entering the industry with Scheme on their resumes.

Now what?

I doubt that the young Schemer will be put to work (re-)designing whatever
product
from the ground up to be written in Scheme. My doubts are motivated by the
very
large population of C/C++ programmers who will be the Schemers' managers and
who
aren't due to retire for a few decades.

Perhaps the Schemer will be put to work maintaining a small part of a large
body
of legacy C/C++ code. A terrible waste of a perfectly good Schemer.

Here's a sickening irony: Imagine writing a tool in Scheme to automate the
process of testing a C/C++ program. I've actually written a few, gotten
in trouble for it too.

Another sickening irony: Imagine writing a build script in Scheme.
I.e. a program written in Scheme to help process C/C++ source code.

So let me add to Mike's hypothetical quote: 

"you're thinking about programming in the wrong way; you have 
to totally unlearn all of your ideas about programming and start over
 *and* you have to re-write your system in Scheme because it's broken
by virtue of having been written in C/C++."

Even if the established body of imperitive programmers *believed* this
sentence,
they'd still have a hard time owning up to it.

So, in conclusion, I think that how to educate Caltech CS freshmen is only
a small piece of the puzzle. I think that we are faced with is the more
monumental
task of producing a "paradigm shift" in the industry.