Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
I'm new to Linux. I've got Ubuntu and K&R. Now what?
4 points by pashbonk on May 21, 2007 | hide | past | favorite | 20 comments


What do you want to do? Join one of the smaller open source projects, get a mentor and build something amazing! :-)

Seriously, I do think that some hands-on useful development is the fastest track to become a master of your domain! :-)


If you have enough balls to learn C from K&R, you could try learning C++ from Koenig & Moo's "Accelerated C++" instead. C++ contains everything in C, and has a lot of handy higher level constructs. You can deal with the specific idiosyncrasies of pure C later, but can get started quickly with C++. http://tinyurl.com/26cjz9

If you don't have any background in programming, or don't really know that you want to learn C or C++ specifically, I would recommend starting with Python. C++ is good if you know that you want to write systems software, or need to interface with C/C++ libraries. If you're just looking to learn to code, then learn Python. kyro said that he enjoyed learning from the free ebook "How to Think Like a Computer Scientist: Learning with Python". http://www.ibiblio.org/obp/thinkCSpy/


Hmmm, I definitely wouldn't recommend newbies learning C++. Every time I've tried to dig into C++, it's been a turn-off. K&R's great. C's great, and it's small enough to get your head around, but if you want to know a language like C++, yeah, definitely agreed about Python.


What's the trouble with C++? It seem to me that using the higher-level constructs of C++ is a lot friendlier than having to malloc and free things all over the place. You don't have to jump into C++ template metaprogramming. :-)


True, it's just that if you want those features of C++ you're better off jumping up to something modern: Python/C#/Java. Those languages (perhaps even Java) feel well-designed and friendly instead of like a hacked-on OOP addition to C.

I'm aware that C++ is not just a hack, but compared to modern designed-from-scratch languages, it does feel like one a lot of the time.


Similarly, automatic garbage collection is a lot friendlier than C++ memory management.

With C for close-to-the-metal stuff and to optimize bottlenecks, Python for high level, and ctypes to glue both, I find no niche left for C++.


Ditto the recommendation on "How to Think..." ...a few years ago, I had no programming knowledge whatsoever, read about 1/3 of the book, and was already building useful stuff (to me, anyway).


What's your aim? If you've K&R are you trying to learn C? If you want to learn the Unix philosophy then get Kernighan and Pike's _The Unix Programming Environment_. If you want to create a web start-up, learn Python and Django. What skills do you already have?


Are you a Django fan? If not, what's your motive for solely recommending Django, instead of TurboGears or Pylons?

(Yes, the fact that Python has multiple frameworks is a problem, but settling on Django is not a solution.)


Django is a reasonable enough one to learn. He hasn't the skills to examine the possible contenders and make a good decision himself. After learning Django, then he may be in a position to better appraise the competition.

Likewise, I didn't say "read a book on Unix" but gave a specific, worthy, contender. As a complete newcomer there's little more annoying than general hand-waving.


Hm, I guess that's fair enough. My main concern is that if he starts with Django, he might never know there's other frameworks.


If he starts with Python, he may not know there's other languages. If he... If he starts with digital computers, he may not know there's analogue ones. :-)


Yes, yes.. But I hang out in #python.web on freenode, and you'd be surprised how many people I get who think that Django, or mod_python, or CGI is the only way to make Python webapps. Not the best way; the only way.


Here's information on cgi programming with C: http://www.cs.tut.fi/~jkorpela/forms/cgic.html

Not many people do cgi programming (especially with C) anymore, but it will teach you a lot about Linux and programming. You will have to get a working web server for one. Configuring Apache on Ubuntu should be a good learning experience. If you can also get a working database server such as PostgreSQL (my preference) or MySQL working with your website, you will know the basics for building a real web-based application.


Surely the next step is to contact some VC companies and ask for say, $10 million :-). This really is an open ended question! If you are about to start programming then there is no limit to the possibilities so you'd better pick a direction to go in that you will find interesting. Good luck.


'... I'm new ... Now what? ...'

Learn how to become a hacker ~ http://www.catb.org/~esr/faqs/hacker-howto.html


He should also read Snow Crash or Cryptonomicon to become inspired to hack. Man I love those books.

Snow Crash at scribd: http://www.scribd.com/doc/10862/Neal-Stephenson-Snow-Crash


Congrats :) I have first edition of K&R in my bookshelf and I still love it. It cost 25 slovak koruna /approx $1/ at that time :)


Start compiling Gentoo. When it's done, you'll be ready for it.


... go start a company?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: