Absolute noob to Linux programming needs language choice help

S

stylecomputers

Hey guys,

I am absolutely new to Linux programming, with no w######s programming
experience except a small amount of C++ console apps.
Reasonably new to Linux, BSD etc, got good sound networking base of
knowledge and dont have any problem working the command line etc.

I want to learn a language that I can use in my networking duties that
is most likely to be of use to me. I have a few choices I can think of
being:

Python
Perl
C

Any other Langs out there that would be better suited?

I want to be able to use the app's I write in OpenBSD and RH versions
of Linux

What would you reccomend (Unbiased opinion please, I'm after the
functionality I'll love it later :) )

Cheers

Ty
 
J

James Stroud

Hey guys,

I am absolutely new to Linux programming, with no w######s programming
experience except a small amount of C++ console apps.
Reasonably new to Linux, BSD etc, got good sound networking base of
knowledge and dont have any problem working the command line etc.

I want to learn a language that I can use in my networking duties that
is most likely to be of use to me. I have a few choices I can think of
being:

Python
Perl
C

Any other Langs out there that would be better suited?

I want to be able to use the app's I write in OpenBSD and RH versions
of Linux

What would you reccomend (Unbiased opinion please, I'm after the
functionality I'll love it later :) )

Cheers

Ty

Yes python will be good for this. I'm not so sure C is better suited.
Definitely resist "shell scripting". Several chapters in Mark Lutz's
_Programming Python_ will help with networking (after you have read
through _Learning Python_ or equivalent). NewRiders publishes _Python
Web Programming_ authored by Steve Holden, who visits this list on occasion.

James

--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
 
S

stylecomputers

Thanks James,

Good to know resist shell scripting.

Python web programming now theres something I had no Idea you could do
with Python. how interesting :).

Just been to your website, the letters after your name wouldnt fit very
easily on one line would they :)

Cheers

Ty
 
M

Mirco Wahab

Thus spoke (e-mail address removed) (on 2006-06-21 03:51):
I want to learn a language that I can use in my networking duties that
is most likely to be of use to me. I have a few choices I can think of
being:

Python
Perl
C

C is not really a choice in the perimeter
of Perl and Python.

Perl was created to do "networking duties" in
the Unix environment and had a phenomenal impact,
was (then) also a long time the number #1 scripting
language for web apps ('CGI' was almost synonymously
used w/Perl).

Then came Python, which was (iirc) also intended for
solving problems around "networking duties" by the GvR,
who didn't like the appearance of Perl-Programs (couldn't
stand sigils and braces, I guess;-).

So it's today just a matter of
1) personal taste, what do think is fancier for you,
2) choice of the community you want to be in.

BTW. I don't really think its a "choice"
at all, I'd use each language where it
applies best.
Any other Langs out there that would be better suited?

Never ever ;-)

Regards

Mirco
 
A

Alex Martelli

Hey guys,

I am absolutely new to Linux programming, with no w######s programming
experience except a small amount of C++ console apps.
Reasonably new to Linux, BSD etc, got good sound networking base of
knowledge and dont have any problem working the command line etc.

I want to learn a language that I can use in my networking duties that
is most likely to be of use to me. I have a few choices I can think of
being:

Python
Perl
C

Any other Langs out there that would be better suited?

I want to be able to use the app's I write in OpenBSD and RH versions
of Linux

What would you reccomend (Unbiased opinion please, I'm after the
functionality I'll love it later :) )

C is extremely low-level -- you'll want to know it well if you ever need
to program something inside the kernel (or study kernel sources to
understand some detail or anomaly), but for general programming it's a
lot of unwarranted effort.

Python, Perl, and a third language you have not mentioned, Ruby, are
very high level, and each is suitable for just about the same range of
programming (almost any programming, except very low-level;-). The
choice between the three cannot really be based on language level or
power because those aspects essentially coincide; rather, you should
choose based on your tastes, and practical considerations such as the
availability of libraries and other tools (which tends to be excellent
for all three languages, so it's unlikely to guide your choice all that
much). If you want to make sure you have no regrets later, a minimal
amount of study of all three is warranted before you pick one to get
deeper into, IMHO.

Me, I knew the Perl of the time very well when I met Python, and I've
studied Ruby later -- Python definitely meets _my_ needs optimally; but
other people, with very different tastes, could well choose differently!


Alex
 
B

Ben C

Hey guys,

I am absolutely new to Linux programming, with no w######s programming
experience except a small amount of C++ console apps.
Reasonably new to Linux, BSD etc, got good sound networking base of
knowledge and dont have any problem working the command line etc.

I want to learn a language that I can use in my networking duties that
is most likely to be of use to me. I have a few choices I can think of
being:

Python
Perl
C

Any other Langs out there that would be better suited?

I want to be able to use the app's I write in OpenBSD and RH versions
of Linux

What would you reccomend (Unbiased opinion please, I'm after the
functionality I'll love it later :) )

My favourite's Python, but Tcl is definitely worth a look. It's been
around a bit longer than Python (so more time for every conceivable
problem to have been met by someone and fixed), and I'm not an expert
but I think it's particularly good for things like sockets-- they're
just sort of built in and are very easy to work with.
 
C

Cameron Laird

.
.
.
Python, Perl, and a third language you have not mentioned, Ruby, are
very high level, and each is suitable for just about the same range of
programming (almost any programming, except very low-level;-). The
.
[more true and
pertinent obser-
vations]
.
.
Tcl is also in this category. Even with Alex expanding the discussion
to encompass Ruby, I wouldn't mention Tcl--except that the original
questioner explicitly mentioned "networking duties". While his intent
is ambiguous, it deserves to be said that, just as Alex has written,
all four of these languages are rough equivalents, differing as much
in subjective feel as objective functionality, but that
1. Tcl, with its emphasis on event programming,
codes multi-processing TCP servers more com-
pactly than the other three;
2. Tcl is the extension language for Cisco's
IOS and several other networking products;
3. Tcl-based Scotty is the single most mature
SNMP suite any of the four languages have
produced;
4. There's the whole BEEP story; and
5. Tcl-based Expect has a special role in
system administration and network manage-
ment.

There's plenty to read on all these subjects, if you have an interest.
<URL: http://www-128.ibm.com/developerworks/linux/library/l-sc1/ > might
be a place to start.
 
C

Cameron Laird

.
.
.
My favourite's Python, but Tcl is definitely worth a look. It's been
around a bit longer than Python (so more time for every conceivable
problem to have been met by someone and fixed), and I'm not an expert
but I think it's particularly good for things like sockets-- they're
just sort of built in and are very easy to work with.

Tcl's maturity advantage is tiny--*maybe* two years. Both began at
the end of the '80s. There've been close to two decades since to
obscure any initial leads.

I entirely agree with you, though, that Tcl's [socket] command is
a wonderful thing.
 
C

Carl Banks

Hey guys,

I am absolutely new to Linux programming, with no w######s programming
experience except a small amount of C++ console apps.
Reasonably new to Linux, BSD etc, got good sound networking base of
knowledge and dont have any problem working the command line etc.

I want to learn a language that I can use in my networking duties that
is most likely to be of use to me. I have a few choices I can think of
being:

Python
Perl
C

Any other Langs out there that would be better suited?

I want to be able to use the app's I write in OpenBSD and RH versions
of Linux

What would you reccomend (Unbiased opinion please, I'm after the
functionality I'll love it later :) )

I'm known as a Perl hator, but I'll try to be as unbiased as I can.
I'm limiting myself to the three you mentioned.

C is a very simple (meaning "straightforward", not "easy to learn")
language. Almost everything in C is reduced to basic building blocks
that are quite close to how the CPU itself runs. For example, there's
no such thing as a "list" or even a "string" in C; instead, what you
have are pointers, arrays, and a small number of built-in types (and a
small standard library that provides more complex things like strings).
This makes C an excellent language for programming hardware and
low-level stuff like that. However, it's really not optimal for
application programming--it forces you to worry about stuff like
freeing memory and buffer overflows.

I was frustrated with C because I mostly do application stuff, so one
day I sat down to learn Perl. I was amazed at the leap in
productivity--I was able to write an email autoresponder the very same
day I began the tutorial (granted, I was an expert programmer at the
time, but still). Perl freed me from having to worry about stuff like
memory management, and it provided useful things like growable arrays
and dictionaries. However, unlike C, Perl is not simple. Perl is
complicated, ad hoc, and inconsistent. It never really fit inside my
head--I was always afraid there was something going on, some obscure
rule or behavior was lurking. In addition (and here the Perl hator in
me comes out), it's poorly designed as a language: it often makes you
do extra work to do things the better way (for example, local variables
have to be declared, but not globals).

So we have C, which is simple and straightforward but too low-level to
be efficicient at application programming. We have Perl, which is
high-level enough for application programming, but is complicated and
inconsistent.

Then we have Python, which is both simple and high-level.

So, yeah, I like Python best of those three. For someone new to
programming, I definitely recommend learning Python first, unless you
intend to be a expert or professional programmer or to do low-level
stuff, in which case I'd say start with C. Definitely don't start
learning with Perl. It might be the best choice for some people (in
some universes), but it encourages bad programming habits, so I don't
recommend it for newbies. Learning to program in Perl is like learning
to do stand-up comedy by laughing at your own jokes.

For someone looking for looking to learn preferrably only one language,
I'd say Python, without knowing more about your intended problem
domain.


Carl Banks
 
T

Tim Roberts

Tcl's maturity advantage is tiny--*maybe* two years. Both began at
the end of the '80s. There've been close to two decades since to
obscure any initial leads.

The difference is more significant than that. Tcl started in 1987, but
Python's history doesn't begin until the early 1990s, unless you're
counting ABC as well.
 
C

Cameron Laird

The difference is more significant than that. Tcl started in 1987, but
Python's history doesn't begin until the early 1990s, unless you're
counting ABC as well.
.
.
.
We agree it was ambiguous. It was only in 1988 that John Ousterhout
started *using* Tcl, and '89 when he first gave source to early adopters
<URL: http://wiki.tcl.tk/1721 >.

Both Tcl and Python have covered a LOT of territory since then.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,899
Latest member
RodneyMcAu

Latest Threads

Top