Subject: RE: [hackers-il] Re: Technion Computer Science Anomalities

From: Omer Musaev <[email-masked]>
Date: Sun, 23 Sep 2001 10:11:02 +0200

> -----Original Message-----
> From: Shlomi Fish [mailto:[email-masked]]
> Sent: Friday, September 21, 2001 7:21 AM
> To: [email-masked]
> Subject: [hackers-il] Re: Technion Computer Science Anomalities

....
> Well, my experiences with VB are mainly with Visual Basic for
> Applications, which was the scripting language of Excel, and 
> now I think
> Word, Access, etc. too. I now like Perl much better than VBA, 
> but for the
> brief time I worked with VBA, I did not find it very inconsistent.
> 
> Then again, I only wrote Excel macros, and did not work with the Win32
> API. So let's focus on Visual Basic for Applications alone.
> 

VB != VBA. VBA is visual, in sense that you can manipulate objects on screen
and have some code generated for you, it is basic, in sense that it _is_
limited,
( it was proved better to use excel table instead of built-in collection
types ),
and it has a tight interface with Excel. It is much more of a language than
Word Basic
( which was dropped, iirc ). However, it is _not_ VB. 

> My point was that after a person has been taught programming 
> in a language
> which does not have very good support for OOP, he can be taught
> programming in those languages.

I doubt it. It is very easy to continue to think of C++ as of C with 
classes and not as of completely unrelated language. Moreover, concepts
like MVC, patterns and unit testing should be taught from the start on
when teaching OOP, and are harder to introduce students to when teaching
OOP with non-OOP language.
 
> 
> I do not recommend Perl as a first programming language. But 
> then again I
> would not recommend LISP either, and I have very serious 
> doubts regarding
> Python. (note that I don't know the latter too well)
> 
> One of the advantages Perl (and perhaps also Scheme or LISP) has over
> Python is that objects are physical references to hashes. In 
> that way,
> the students learn that objects are not something magical and have a
> better idea how it is implemented.

Well, that is exactly the idea you want to hide from a student before 
he can think of objects just like objects. The need to sense "something 
physical" is very annoying and leads to lack of understanding ( this 
statement is based on personal experience as a lecturer )

> > > But I'm not sure if exposing people to OOP is a must for a first
> > > programming language. With Structured Programming, and OOP, and
> > > Functional Programming, and Relational Data Programming, 
> and all the
> > > other paradigms I may be less aware of, there is too much 
> ground to
> > > cover in the first semester. OOP is very nice and useful, 
> but people
> > > can get exposed to it somewhat later without any side-effects.
> >
> > It's the paradigms that are important, and should be 
> taught. If there
> > is a single language that can be used to illustrate all the 
> important
> > paradigms, use it. Scheme (SICP) comes to mind.
> >
> 
> The question is whether you want to fit all the paradigms 
> during the first
> course the students take in programming? I think some of them can be
> out-sourced to later on.

If the course is something like "Introduction to computer science", then
yes. 
An introduction to computer science should give a student an idea of what he
is going to learn. If the course is something like "Intro to programming",
then
no.

> Regards,
> 	Shlomi Fish
-- 
Omer Mussaev
Mercury Interactive / Topaz Prism R&D
Core Technologies team