On Fri, 21 Dec 2001, Paolo Alexis Falcone wrote:

> [EMAIL PROTECTED] wrote:
> 
> >CS11 courses in UP Diliman will now start with Java and will be encouraged
> >to use Linux instead of WinXP or Win2K. CS12, however, will be in Java and
> >C. Why C? Well, using Java exclusively removes the experiences of debugging
> >pointers and our CS32 (data structures) requires that the student knows how
> >to implement lists, stack, etc. using pointers.
> 
> Question (I've already finished CS32, anyway): it bothers me, but why use
> pointers and C in CS32 ? I know it's the most efficient way hardware-wise, but
> would an OOPL be more adept for such? Java gives a good opportunity to remove
> one's self from bothering about the constraints of hardware and instead
> concentrate on building the data structure, but with the trade-off of not
> being so hardware efficient. C++ is somehow hardware efficient (as it is
> a superset of C) and strives to avoid too much pointer manipulation but 
>unfortunately has a not-so-mature ABI. C is procedural as opposed to OOP,
> and each use of a similar ADT would require another replication of the ADT,
> as opposed to making instantiations of an ADT object using constructors,
> Forgive me for sounding so paradoxical as I'm also minding that each school of
> solution has its own tradeoff, but I've not been so sold off as to why C as
> opposed to an OOPL that either eliminates the hardware constraints or does not,
> (can't forget that I did also the MP's in CS32 using C and C++ as well...). Or
> maybe it's because it's the most mature of all the languages presented?

As a computer scientist, you should be able to implement the data
structures in any given language, even as low level as you can go. After
all, they are abstractions. Insulating yourself from the hard task of
implementation only removes the experience of working out the data
structures. Java's strength becomes its weakness when used to -teach- or
-learn- data structures. In the same manner that we like having access to
the source so we know the insides of a program, implementing data
structures using C is learning what's inside the "black box" of the
abstractions that we use and practically take little notice of. Using C is
perhaps the lowest level one can go in order to keep the comprehension of
the data structure abstractions intact. Assembly language can also be
used, but oftentimes it becomes a hindrance in teaching data structures
because you have to deal with assembly language nits first.

Consider what you could do if all you know in order to cook a meal was to
open the prepared package, dump the contents into a bowl, add hot
boiling water, stir, leave standing for three (3) minutes, then
serve? Compare this with knowing all the different ingredients that you
have at your disposal in the kitchen, available for purchase at the
market, and a gazillion different recipes. 

After you've done things the hard way, the facility and ease of using the
newer languages becomes more appreciated. Of course, there's still the
advantage of knowing how the abstractions can be used in different
scenarios. The whole point of such courses is to acquaint the young
computer scientist with the toolset of the discipline. 

How can one say that one has chosen something when he only knows of one
and no alternatives?

-- 
___  Eric Pareja ([EMAIL PROTECTED])    | Information Management Service  [IMS]
\@/  Network and Systems Administrator | University of the Philippines Manila
 v   "Even the smallest person can change the course of the future." -Tolkien

_
Philippine Linux Users Group. Web site and archives at http://plug.linux.org.ph
To leave: send "unsubscribe" in the body to [EMAIL PROTECTED]

To subscribe to the Linux Newbies' List: send "subscribe" in the body to 
[EMAIL PROTECTED]

Reply via email to