Snurg that was hilarious, thanks for sharing that with us, otherwise I'd have totally missed it!
Programming languages... The big important part, in my opinion, is what the eventual goal is. Is it to learn "programming" or do you actually want to do something with your gained knowledge? The reason I ask: if there are problems to be solved then you might not necessarily need a programming language perse.
But ok... First: anything will do. If this is only about "programming" then seriously.. It's your call.
I am (well, was
) quite an enthusiastic and vivid (
Sun) Solaris user. Sun is the creator of the Java language, and boy did it show! If you installed Solaris using the regular installer then it would actually help to become a little familiar with Java error messages because it was definitely possible to run into a few of those. I'm quite convinced that I'll never be using Solaris again (definitely not for personal use, FreeBSD more than filled in the gap) but my servers still heavily rely on Java. All my servers have OpenJDK + Ant installed and although I definitely prefer using an IDE such as Netbeans I also heavily rely on plain old
vi for some basic programming. Usually specific (not too complicated) system tools which I use on my servers.
So here's my take on this.
First: scripting can be a good way to get into programming. What is scripting? Something one tier "lower" than programming. For example: shell scripts.
Never underestimate the kind of stuff you can do with them, especially in combination with all your userland tools (
test(1) (also known as
[),
file(1),
awk(1),
date(1) to name but a few). Just check out
sh(1) and you'll soon see that there's much more to your command line ('shell') than merely typing in
ls.
Next programming itself.. languages really come in all shapes and sizes. From Perl, PHP, Python right down to Java, C and perhaps even VB.NET. The main problem: with so many languages also come many preferences. We all have our favorites so to speak, my personal ones being Java, C#, VB.NET, C and Perl.
When it comes to learning a language then my recommendation would be a language which is well documented and isn't too low level. For starters I would recommend either Java or Perl.
Java
Java is quite well documented (look
here for a good example) and also decently popular. What could be a benefit for your learning experience is that it doesn't really matter if you use it on BSD, Windows, Linux, OS X, etc. Java will run almost everywhere, so you could work your way up on Windows (if that's your desktop for example) and then try out your newly gained expertise on FreeBSD.
Perl
This language can be a bit tricky to get into, in my opinion it isn't as well documented as Java is (sort off, hear me out!) but once you get your fingers behind the way things work then boy can it deliver! Note that I'm not claiming that it lacks documentation or anything,
most certainly not, but it is my personal experience that not all of that documentation is as easy to follow and newbie friendly as it could be. But of course... my experiences are dated.
Although Perl can also run on Windows it'll do you much more good on FreeBSD. Now, the reason why you might want to learn Perl is that it's actually being heavily used in many software projects throughout FreeBSD (if you want to):
Code:
unicron:/home/peter $ pkg info -rx perl5
mc-4.8.20_2
kvirc-qt4-4.2.0_8
bugzilla50-5.0.4
inn-2.6.1
irssi-1.1.1,1
squid-3.5.27_3
vim-8.0.1539
apache24-2.4.29
git-2.16.2
postgresql95-client-9.5.12
(I trimmed the list a bit for obvious reasons)
All these projects don't necessarily depend on Perl in order to work, but they rely on Perl to provide you ways to control their behavior using the Perl language. And yes, some will refer to that as scripting, true enough, but even so.. If you want to call it scripting or programming, Perl is definitely something worth considering.
And finally, last but certainly not least, there's C.
I'm not too sure about C being a good language to start with, but if you set your mind to it then nothing is impossible I suppose. The reason I mention this is because FreeBSD is pretty much fully build upon C. Just take a look around
/usr/src and you'll see.
So if your goal is also to build upon FreeBSD and expand on it with your own toolset.. then this could be an option.
Of course it might be more beneficial to use shell scripts and/or other languages (such as Perl) but if your main goal is "programming" then this is a sure way to give into that.
And that's my 2 cents.