Design, Learning, and Collaboration - Spring 2002

Assignment 12 - CodeBroker

Jon Marbach


How many programming languages have you used?

Well, I've used about 4 or 5: C++, VisualBasic, Python, Java, and Modula-3.

In your experience, what is the most difficult part of learning a new programming language?

I'd have to say that most languages have intuitive elements and then small things that I consistently forget. For example, block structure in Python is completely defined by indentation so I would probably write something like this (a function to scale a vector):

def VecScale( vec, scalar )

for i in range(0,len(vec))
vec[i] = vec[i]scalar

return vec

Which looks reasonable, but I always forget the :'s at the end of certain lines so what it really should be is:

def VecScale( vec, scalar ):

for i in range(0,len(vec)):
vec[i] = vec[i]scalar

return vec

One thing that I like about VisualBasic is that the editor shows you there's an error on a line by coloring the line red, so you don't have to wait until you try to run the program to find the error. Example:

lsTemp.x1 = ((ls.x1 + 1) / 2 picGraph.ScaleWidth


After reading Tomo's answer, I'd have to add that actually, the most difficulty lies in switching between different paradigms, i.e. a user who is used to programming in C++/Java will have a very difficult time learning ML since the difference in functional and non-functional programming is so great conceptually.

Have you ever found that you have accidentally implemented a function that is in the library already?

Probably many times, but how would I know? If you're using a specific API you would know what functions to look for, for example, when using OpenGL, I don't expect to have to do matrix multiplications myself. As a more common example, noone ever writes their own sin function. But for higher level functionality, I'm sure I've reinvented the wheel many times.

What did you find interesting about the article?

The discussion of the "Not-invented-here" phenomenon related directly to my work over the weekend. I ended up writing my own 3d scene loading and management code whereas there are open-source libraries to do this. There was good reason in that the library I found has compilation issues under IRIX, the main environment it would be used under. That, leveraged with the simplicity of my needs (I didn't need the full functionality of the library), I chose to develop a few classes myself, assuming that it would take me less time to write it myself than learn the classes, adapt their use to my needs, and work around the compiler problems. A large part of the motivation was certainly the feeling that I would understand my own code better than stumbling through someone else's library.

I thought the discussion of the experiment was interesting because we haven't read anything like that this semester.

What did you find not interesting about the article?

Nothing in particular.

How could it be extended?

Can it be made general enough to be used in other development environments?



Back to Assignment 12