views:

236

answers:

12

Of course I know about the most obvious thing to do... continue writing some programs!

But what exactly should one do after learning a language? I personally just finished reading K&R ANSI C. So do I now find a book on the Windows API or something? I'm not exactly someone who will be doing some hardcore programming aside from hobby and data manipulation. A friend of mine who knows that I'm a chemistry and mathematics major told me that I should probably learn PERL and Python. What do you guys think?

+2  A: 

Write a lot of code in that language you just learned. Think of some personal projects and maybe expand on your knowledge by learning some extra libraries. Then try to learn some new languages like Perl, Python, or Java and compare the strengths and weaknesses between the languages.

jtbradle
+9  A: 

The thing is you don't learn the language and then do something with it.

You learn language by doing something in it. And there is seldom an ending point in learning it. Because with each project you learn not only more of language features, but also dive deeper into framework libraries and also learn new ways to design and structure your programs. And there are usually new versions on the way at any time. It's a continuous growth and improvement process.

In fact, there is never a question what to do with a language. You have an idea a project which you need to do, and you ask yourself how can I accomplish this in my language. In general case, you ask yourself first what language, framework or tool I need to do my job, then you come to how to do it in this language.

Developer Art
A: 

After I start learning a language, I try building a little program with it to solve some problem I have, or do something fun and interesting. I usually find gaps in my learning that can only be discovered by doing.

I try to set the scope as greater than trivial, but not especially complicated.

C is a great language for interacting with hardware. If you want to play with things more tangeable than the system beep and the parallel port, you could always try playing with Lego Mindstorms programming.

http://bricxcc.sourceforge.net/nbc/
http://www.amazon.com/LEGO-Mindstorms-NXT-Power-Programming/dp/0973864923

Ryan Michela
+2  A: 

If you do programming as a hobby: Do what you want to do at the moment / makes fun, not what others recommend you to do.

IMO you will soon notice where you are really interested in.

winSharp93
A: 

I'd recommend learning a .NET language, and in particular C#. One distinct advantage it has over both Perl and Python is that the version under active development is mostly backwards compatible with previous versions. Microsoft try very hard not to introduce breaking changes in C# (Visual Basic didn't get so lucky though).

I think it's also useful to learn a scripting language such as Python or Ruby, for solving simple tasks interactively and quickly, but that can come later.

Mark Byers
Why? What about the original question makes you think it would be a good idea for the questioner to learn a .NET language next? And why do you think there's more likelihood of breaking changes in Perl than C#? Why do you think the questioner needs a heavier OO language than Perl or Python?
David Thornley
@David Thornley: Perl already plan to make breaking changes between versions 5.0 and 6.0. I'm surprised that you were unaware of this. The C# team have made it clear that backwards compatibility has a very high priority.
Mark Byers
@Mark Byers: Perl 6 will not be compatible with Perl 5. Last I looked (a couple of years ago), they were going to pains to make sure Perl 5 stuff would still work, so you wouldn't get Perl 6 without asking for it. Nobody's dropping support for Perl 5 any time soon, since there's an immense amount of Perl 5 code out there.
David Thornley
I can't see why you got -1 on this. .NET is clearly the way to go. ;)
Filip Ekberg
@Filip: .NET is the way to go for everybody, under all circumstances? And C# is the language for everybody all the time? I think not.
David Thornley
A: 

Since you have learned the language C, I suggest you explore what C is used for. if you are on windows you might want to look at this.

Hassan Syed
+1  A: 

C# would be a good language to learn since it is similar to C. As others have said, practice, practice and more practice is key to learning any language.

If you're doing Windows programming, it would be worth your while to learn a .NET language. Once you are familiar with .NET there are many different languages with .NET ports.

Heather
+1  A: 

I can't recommend jumping right into the Windows API. That's a big subject, and learning it while learning to program in C (you've read the book, not learned to program in it) is not something I'd recommend to people in general. Stick to console apps while you get familiar with C, then if you want to program standard Windows apps learn C# (or C++ and MFC). I wouldn't want your first experience with an API being Win32.

If you have no particular attachment to C, I'd listen to your friend and learn Python. It's easy to learn and practice, and will do a surprising amount of things you may find useful.

David Thornley
Thanks! To be honest, I don't have any real attachment at all. I only picked it up because in middle school, a friend of mine would always talk about how great the language is...My other friend constantly questions me about why I decided to learn C and how I should drop it at this instant and pick up PERL or Python. I guess I'll get more familiar and experienced with C then learn one of the two.Judging from the other answers, I guess I should stick to console programs for now!
withchemicals
A: 

If you enjoy math type problems, consider doing some Project Euler problems. They are great for practicing programming, and keeping your math skills sharp.

zdav
A: 

A capability that has never been tested is of limited value to its owner; you don't yet know if you can rely on it in use.

If you genuinely want to consider yourself knowledgeable in C and to some degree a C programmer, write some C programs. You may find it comes as naturally as you thought it would, you may find things that seemed fine on paper suddenly become a challenge. This will be the time when you discover if you've actually learnt C or merely read the book.

eftpotrm
A: 

After you've learned a new language it's better to sit and think about the problems where it can be applied in comparison with other languages you know. It's always great see how the same things solved with totally different paradigms.

Boris Treukhov
+1  A: 

Challenge yourself.

As many others have stated there are online-places such as Project Euler which will probably help you learn some programming, however in that special case you need to know a lot of other things than programming to get yourself around.

My suggestion is to try solve trivial problems, things that you think will help you on a day-by-day basis. Even if the solution already exists and it's re-inventing the wheel you will get a deeper knowledge in how these things might work.

Examples

  • Program ToDo-List which automaticly sends you an sms / email or any other type of notification when it might think you are lazy and sync it with your calendar.
  • Create a List of groseries and approximatly how often you need to refill them. Also, when the list is done and the software is working, create a module for it which allowes you to get recepies for the ingedients that you have home.

There are a lot of fun projects you can dig in to, easy problems, hard problems and boring problems. Don't beat yourself up if you can't solve everything.

And also, there are a lot of good books which might come in handy when freshening up your skills.

  • Framework Design Guidelines - Get an idea how to create a huge API uses by thousands of people
  • Reversing The secrets of Reverse Engingeering - If you want to dig even deeper ingo how programs operate and learn how to hack your own software to make it more secure, this is a defentive book.
  • Code Complete - If you are thinking of changing your carrier to Software Development, you must read this great book which will give you insight in how to become a better programmer, @ office, @ home and everywhere else.

There are loads of other good books, but each of these books got hidden tasks which will help you learn new exiting things about programing.

Knowing one language is just the begining

Filip Ekberg