Links
Course Documents
     Main Page
     Assignments
     Contact Information
     Course Announcement
     Course Participants
     Discussion Forum
     Lecture Material
     Previous Course
     Project
     Questionnaires
     Schedule and Syllabus
     Swiki Basics
Swiki Features:
  View this Page
  Edit this Page
  Printer Friendly View
  Lock this Page
  References to this Page
  Uploads to this Page
  History of this Page
  Top of the Swiki
  Recent Changes
  Search the Swiki
  Help Guide
Related Links:
     Atlas Program
     Center for LifeLong Learning and Design
     Computer Science Department
     Institute of Cognitive Science
     College of Architecture and Planning
     University of Colorado at Boulder
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

View this PageEdit this PagePrinter Friendly ViewLock this PageReferences to this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide