[ubuntu-us-in] Time for a change

Rob Ludwick rob at rcludw.no-ip.org
Tue Nov 20 03:21:59 GMT 2007

Well... I wear both hats, programmer and sysadmin.  I've played with a
lot of different technologies, and have written things in multiple
languages and frameworks.  And some languages work well for system
administration, (Perl, Bash).  Some are good on Windows (C#, Java), and
some are just necessary (C, C++).

So this is my positive spin:

Perl is great for text processing and system administration.

C and C++ are great if you want optimized code that runs at CPU speed.

Java is great if everything you need to interface with is Java, XML, or
a database, or you want to rapidly prototype something.

Python is a great free form language that lets you code the way you
think, and also allows for easy prototyping.

Just in case you think I'm too cynical to leave out the negatives:

Programming in Java sucks unless you're using eclipse (or something
similar).  And then everything's a pointer so you're always checking for
null pointers.  (Look Before You Leap)   Some argue that it actually
makes lousy programmers because they have no experience outside what the
language allows them (which, btw, was designed by committee).

Decoding someone else's obfuscated perl routine to fix a bug sucks. It
also suffers from "Hey, that symbol is not used yet" syndrome.

If you're trying to write your own binary tree implementation in C,
don't.  You'll be debugging the memory allocation for a long time.

Programming C++ can be an art.  And it can take a while to learn.  Most
C++ programmers don't fully understand the language, I think.  There are
many who don't utilize the STL which should be used (and isn't) from
page one in most C++ books. 

Python... it's easy to program in.  Too easy.  Debugging other's code
can be a challenge because type and function obfuscation is part of the
language, and programmers don't always document their code clearly. 

If you do write python, please, please don't write the following code:

def somefunction(x):
  if x < 10: 
   return otherfunc(x)
  if x < 20:
   return "Error:  Some error"
   return None

Note that just because you called otherfunc(x) doesn't mean it will
succeed either, leaving the caller of your function with an ambiguous
success type.  Writing programs like this make you evil, causing your
friends and co-workers to pray for pestilence to befall your offspring
for generations to come.. 


On Sun, 2007-11-18 at 15:08 +0000, Daniel Dunn wrote: 
> In my busy schedule of work, being a father, being a husband, and
> trying to let people know about Ubuntu, I have decided to learn a
> programming language. I learned VB in highschool, and i have dabbled
> with different languages since then, but not hing serious. I was
> wondering from the "Experts" what language would be a good start? I
> would love to give back to the Ubuntu community by helping to code and
> debug projects. I had been thinking about C#, but any recommendations
> would be helpful.

More information about the Ubuntu-us-in mailing list