I don't think that's off-topic, because it's related to working in or with Linux, very related.  Most newbies will want to develop programming skills; therefore, your question is good.

You'll get a variety of answers, depending on what people do; however, bash and Perl would be good to start with.  bash is necessary if you want to modify system scripts, including the base ones like .bashrc, .bash_profile, /etc/profile, and /etc/bashrc.  bash is also handy if you want to write scripts to do or automate some systems administration tasks, like renaming all of the directories and files in a particular directory, or copying them to some other directory and then tarballing the set, etcetera.  There are frequent uses for bash.

Perl is good, because it can be better than bash for some systems administration tasks.  Plus, Perl has much functionality; it's definitely at least considerably powerful, and being a scripting language, you don't need to deal with compiling, which makes or can make it useful for rad (rapid application development).  Scripting is very nice for many reasons, and Perl is a mighty scripting language.

Much of what can be done with C and C++ can be done with Perl, and scripting being a good approach, and  Perl being a mighty capable scripting language, well, just makes Perl all the more worthwhile.

There are many other programming languages and tools you can learn to work with Linux, such as

- tcl/tk (now integrated with Perl),
- expect (believe Linux has expect, or it can be downloaded),
- python (haven't done any work with python, but it seems to be used a fair amount - you'll find a fair number of python scripts, which has also been integrated with Perl),
- C and C++,
- sql (for rdbms - relational database - programming),
- java,
- many others.

I'ld suggest starting with bash and Perl.  Perl, again, is broad.  You can do rdbms programming with it; network programming, including ftp, sending mail, tcp/ip, web page and cgi programming (internet and intranet), and possibly other types; sockets programming; gui - tying in with tcl/tk for example; automating systems administration tasks; stochastics programming; oo programming; powerful and very practical regular expression parsing; etcetera.

After that, you could look at the other languages, depending on what it is you want to do.  If you want to focus on web page programming, using html, cgi, etcetera or what ever, then you could in the least consider Perl and Java.  If you want to do rdbms work, then there's PostgreSQL, Oracle, and others, with the language being SQL.  This is often useful when doing web development, because many web interfaces interfaces with an rdbms.  For flat file databases, I'ld suggest using Perl, but Perl can also be used to interface with SQL databases (some of them anyway).

At that level, though, you'ld want to learn some of the servers, Apache being a core one as far as internet/intranet development would be concerned.  Perl has a module for interfacing with the Apache server, now, too.

You can find specific mailing lists for these.  I don't know that there are any for Unix scripting, like with bash, but there are for the others; Perl, Java, C, and C++ anyway.  There are newsgroups for various servers; therefore, if you're interested in learning about these, then look for specifically related newsgroups and subscribe.

One general Unix/Linux Perl resource web site is

            http://wwwhost.cc.utexas.edu/cc/services/unix/perl/

There's a fair amount of documentation installed on your Linux system, once Perl is installed.

If you're just starting out programming, then bash and Perl should be two good places to begin.

If you get to the point where you want to modify kernels, then you'll need to learn C and possibly C++.  If you want to learn C++, then you might want to consider learning Objective C, first.  From recent reading, Obj-C supports oo, but more simply than C++.  You could probably learn about Obj-C through the gnu web site

http://www.gnu.org

I'm not sure, but Obj-C may be what you should begin with, out of a choice of C, C++ and Obj-C; although, you'ld definitely be learninig C along the way, because Obj-C is (if memory's accurate) more similar to C, than C++.  If you learned Obj-C, then you'ld be able to do both structured programming with C, as well as oop (object-oriented programming).

However, for many other things, Perl would be adequate, and if working in Linux or Unix, then Perl should be on your agenda.  Perl, SQL and Java would probably be more generally useful, if you don't want to get into low level systems programming.  Some applications are developed in C and or C++, though, like the underlying aspects of GNOME and KDE.

Hence, which way to go depends on what you imagine you want to do.  You could read up on the documentation for Perl, python, tcl/tk, Java, and the others, to get a better idea.  I don't know where you could find documentation for SQL, other than books of course.  However, one method of learning is by example and you may find some for SQL already installed on your Linux box, or after installing one of the SQL rdbms servers.

SQL is a 4GL, 4th generation language, and very English-like; therefore, it's not a monumental feat to learn.  It's powerful, but there's much less need for developing programs to access, manipulate and store data.  The underlying aspect with respect to data organization or normalization, though, is critical to developing good relational databases.

On the other hand, defining data structure or organization is important with all programming languages which manipulate complex data.

That's a long and kind of disorganized explanation, but should be adequate for a start (I don't have the time to turn this into an entirely professional presentation, particularly when there's no income attached).

If you have any other questions, then ask.

mike
 
 

Dreja Julag wrote:

  I know that this is rather off-topic, but I notice that Linux comes with a few optional programming programs.  Out of the wisening experiences you have all had, which programming langauge would you guys say that it would be wise to invest in?  Thanks
 

Drew Jackman
[EMAIL PROTECTED]
ICQ 20177604

 

Reply via email to