

Ask HN: Am confused. Please suggest - sunny_s

Hi, I am a long time reader, first time submitting.
I'm a bit confused with my current situation, I would be very grateful if you guys could give me a few pointers. I am not so experienced as most of you here, but i've mostly picked up stuff I'm interested in quite well and easily.<p>My primary interest is network programming. I have done quite a bit of reading and experimenting and am familiar with mechanisms of most protocols. Now I want to start writing code. I read introductory stuff on python and grasped it well too. I had just started playing with the python modules, when I met somebody(with a tall reputation) at the local lug meeting who told me that I could always learn python very easily later but C was the language I must know, specially given my interest on network programming. I did some research and thought maybe the guy is right. So I've been with a k&#38;r for 4 weeks now. It didn't intimidate me but I am progressing very very slowly and maybe that's why also slacking a bit. I am posting this because I'm at the stage where it's even worrying me now.
I'm always thinking that in python i could be building stuff right now. I know python won't teach me low level things like memory management etc, but my progress is pain-stakingly slow in C.<p>Question: Should I continue battling with C like i'm now and write some working code in it or switch to python where i'll be at a bit more ease? Will a high level language spoil me too much to come back to C later?
======
mbrubeck
It's absolutely not true that C is necessary to be a network programmer. There
are some cases where it will absolutely be the best tool (especially for
embedded or proprietary hardware), but just look at all the useful network
software being written in Erlang, Java, Python/Twisted, Ruby/EventMachine, and
now Node.js (just to name a few).

Memcached, for example, was first written in Python, then ported to C. Dustin
Sallings (one of the maintainers of memcached) has also written a Java client,
a server port in Erlang, another server in Google's Go language, and yet
another in Python with Twisted:

<http://dustin.github.com/2009/10/11/ememcached.html>

<http://dustin.github.com/2009/11/12/gomemcached.html>

<http://github.com/dustin/twisted-memcached>

I hope that inspires you to continue to learn new tools based on what you want
to work with, and not think that you "need" to learn one specific tool. On the
other hand, I agree that learning C is a worthwhile goal, will teach you a
lot, and will help you contribute to many existing companies/projects.

------
mahmud
You can get-by with just read-only C skills. Invest your time learning the ins
and outs of python and its performance characteristics.

It's also inevitable that you will have to learn systems programming; POSIX or
Win32 API most likely, for Unix and Windows respectively. But not for another
year or so.

Have fun.

------
gills
You can learn the ins and outs of network programming in pretty much any
language. When you find yourself needing the level of control or speed which C
offers, or compatibility with some platform, then go there.

------
jmonegro
You might find very useful answers over at StackOverflow, or ServerFault, most
likely from people who are already successful network programmers.

~~~
sunny_s
I've just posted it there and got good replies, thanks

