[CentOS] OT: programming language for morons (newbie friendly language in Open Source world)

Tue Dec 14 09:32:16 UTC 2010
Gabriel Tabares <gabriel.tabares at roboreus.com>

> Hi folks
>
> I have more than 12 years experience with UNIX system administration,
> but I am too stupid for programming. My only programming experience is
> shell scripting. I tried to learn Java, but don't understand it
> because it is too complicated for my limited brainpower.
>
> What programming language should I learn?
>

First of all, what's the reason you want to learn to program? For the 
enjoyment of it? To be able to write more complex admin tools? To create 
front-end applications?

If you already know shell scripting, Perl should be easy for you, as the 
syntax is similar (a hybrid of Shell, awk and C, if I remember 
correctly) and is very easy to learn. It also is installed on every Unix 
I've used in the last decade and has an extremely large repository of 
libraries, CPAN, which covers everything you may need and more (writing 
Perl in latin, really?). On the other hand, the OO syntax is awkward, to 
say the least, and reading other people's code can be difficult 
sometimes, as "there is more than one way to it".

Python is quite simple. The syntax is quite alien, compared to most 
"C-based" languages, but it seems to be simple and straightforward for 
most people. It also is included with most modern Unix-like OS.

Both, Python and Perl are widely used in CentOS, so you should be able 
to open a tool and see how it works.

PHP can also be useful and it's easy to learn, but it is mostly oriented 
towards web development so, unless that is the way you want to go, I 
would ignore it. It also tends to be a bit of a mess, API wise.

Ruby is another language that seems to be gaining a lot of traction but 
I just can't stand the syntax, and that comes from someone who used to 
be a Perl developer. It also seems to be less in use as a systems 
language, as opposed to a web development language with Ruby on Rails.

C can be a good language if you want to start "from the bottom", learn 
how to use pointers, to manage memory without help and to be able to 
write low-level stuff. The syntax is extremely simple, but it's a 
difficult language to master, as it is quite low-level, compared to 
other languages.

If you didn't get Java, I would stay well away from C# (it's mostly a 
Java clone, despite the fact that it now seems to have a nicer syntax a 
a few extra bits that Java misses) and C++ (far too complex... it does 
everything you may want to do but that power comes at the cost of 
simplicity).

My personal preference would be to go for Python. While the issue with 
meaningful whitespace can be REALLY annoying, especially if you copy and 
paste from a terminal (tabs will get converted to spaces and Python 
doesn't like mixed tabs/spaces, indentation is meaningful), the language 
itself is quite clean and straightforward, there are plenty of books and 
tutorials online and, if you're desperate, most sysadmins seem to be 
picking it up as part of their arsenal these days.

Even if you don't end up using Python as your main language, I see it as 
a very good way of learning to program.

Whatever you choose, good luck and let us know what you decide.

Gabriel