Live data from Hacker News

Ask HN: Confused semi-newbie programmer needs some advice.

news.ycombinator.com

1–10 of 57 posts

Ask HN: Confused semi-newbie programmer needs some advice.

#1
Hey HN, this is my first submission, but I've been reading HN for quite a while now.

Last spring I completed my first year of study in Computer Science, at a relatively large American university. I took two courses in CS: Intro To Programming, and Data Structures. Both of these classes taught exclusively C++.

Besides a little Python (that I've completely forgotten), that is my background in programming.

Initially, I was satisfied with the courses I took. I'm taking a year off to travel (currently, I'm living in Japan), and I've been doing a bit of thinking. I've begun to realize, that while my professors preached that they were trying to teach me the underlying algorithms and not the language, I really only was taught how to do stuff in C/C++. I recently have been playing with SBCL, and I realized that I had no idea what I'm doing. I feel like most of the concepts they taught me depend completely on the way C++ works.

I've decided to correct this. I won't be back at the university for another 10 months, and during that time I want to learn a new language.

I've seen discussions about Scheme, Clojure, CL, C, C++, Java, Haskell, Erlang and so many more.

In your opinions, what should I learn, and how should I learn it? I don't really care about usefulness in the workplace, I just want to see what I know, and I want to learn more.

Anyway, I'm just feeling a little discouraged. I hate feeling like I'm wasting my time at a university to a tune of $20,000 a year. I'm sure I've learned valuable stuff, but it all feels very one-sided.

I really appreciate any advice. I've been really impressed with the entire community here, and I dislike feeling as though I have nothing to offer back.

Re: Ask HN: Confused semi-newbie programmer needs some advice.

#3
You're sort of finding the pleasure and pain of a CS degree: Data Structures doesn't teach you how to program, except in a superficial way in a single language. It teaches you how to manipulate certain building blocks of our field. You'll be thinking in terms of lists, sets, and hashmaps until the day you die, no matter what programming language you eventually end up using.

Now, in C, working with lists requires knowing a bit about how pointers work. If you worked in a different language and used the language's libraries, you might literally never think about how the list is internally represented ever again, and concentrate solely on the API for it.

The biggest suggestion I have for supplementing (not replacing) your expensive CS education is building stuff concurrently with learning stuff, and I don't mean the little toy 100 line projects they assign you for school. Unfortunately, with where you are in the world right now, building stuff is hard. However, if you teach yourself HTML and get ONE dynamic language half-way under your belt, you'll be able to do web programming, which greatly simplifies displaying output to the user. Then all you have to do is do string processing, and blam, you have something FUN to show to the user.

You'd be amazed how far you can get on just combining those simple building blocks. As you grow in expertise, you can go a LOT farther, but for now, learning how to take input from the user, do some crunching, and show them a web page gives you many, many options for doing fun things.

Re: Ask HN: Confused semi-newbie programmer needs some advice.

#5
First, don't feel that you have nothing to give back - not everything is about programming ;p.

Here's a bit of my personal experience. almost two years ago I took my first formal programming courses. It started out with Algorithms (DFD, etc.) and Operating Systems. Then we moved on to C++. At first, I felt just like you: aside from the basic programming principles and logic I learned in Algorithms, all I knew was how to do stuff in C++. I took up Ruby (mainly due to Rails, but it helped me discover a wonderful language).

The curriculum progressed: Java, Delphi, SQL, Visual Basic, .NET, PHP, HTML&CSS, (which I already knew), etc.

You'd be surprised at how much these concepts come back and help out. Basically, what you learn in the first couple of classes is not "how to do stuff in language x", rather how to think and develop an effective algorithm, which can be applied to any programming language. Right now, you know how to do stuff in C++. When you learn another language, you'll just have to learn the syntax and some other quirks, and you'll pick it up quickly.

For example, in my class we took up a good level of Pascal and Delphi in 2-3 months of class, which is not too shabby.

Re: Ask HN: Confused semi-newbie programmer needs some advice.

#6
post #3

You're sort of finding the pleasure and pain of a CS degree: Data Structures doesn't teach you how to program, except in a superficial way in a single language. It teaches you how to manipulate certain building blocks of our field. You'll be thinking in terms of lists, sets, and hashmaps until the day you die, no matter what programming language you eventually end up using. Now, in C, working with lists requires know…

Thanks for the advice. I do know HTML. Simple webpages made great income for a highschool student.

Should I go with simple Javascript, or something more? I only did HTML/CSS, nothing at all with dynamic webpages.

Re: Ask HN: Confused semi-newbie programmer needs some advice.

#9

IMHO as a learning language nothing beats LISP. It's a little tricky in the beginning, but the pay-off is great simply in the way it changes your perception of programming. This is a great place to start: http://gigamonkeys.com/book/

That's what I've been working off of for the past week or so. It's been really fun, I think I was just wondering if it's everything people say about it.

Thanks for the input. I wouldn't mind continuing with CL. Many people I've talked to said they find it incredibly useful for small projects that they need to throw together in a short time.

Re: Ask HN: Confused semi-newbie programmer needs some advice.

#10
Well your coming to that realization 15 years earlier than I did. I developed commercial apps in C/C++ and only recently have discovered lisp and other related languages, and just find them to be much more enjoyable to think and hack in.

If you want an absolute mind blowing trip, grab a copy of scheme or a lisp variant such as Clojure [hip at the moment].. and work through SICP - 'Structure and Interpretation of Computer Programs' the classic course by abelson and sussman of MIT.

You can download the lecture videos and the full course is online. Seeing how they introduced lisp programs to calculate derivatives and do symbolic algebra was awe inspiring.

Language does matter : Python Ruby Haskell.. all respectable, but Id go to the source for some subtleties you'd enjoy - lisp is probably the foundation of all computer languages in some mathematical sense.

Post reply on HN