Live data from Hacker News

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

news.ycombinator.com

11–20 of 57 posts

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

#11

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.

'practical common lisp' was a lot of fun, introducing topics through a series of practical hacks.

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

#12
This is probably different from the other (great) advice on this page, but here goes.

If you have 10 months before you got back to university, I suggest, you work with one language and build something substantial in that time. It doesn't matter which language you select (and this is where my advice differs from those of people who recommend lisp/Haskell and so on, you could choose C or C++ or Java, it doesn't matter).

The key is to make something substantial, but which also has a lot of intermediate stopping points (a ray tracer/renderer is a good example, it gives you visual feedback of your progress) and work on it every day. Writing a large program is substantially different experience from working through toy examples and you will learn a lot, irrespective of the language you use.

Of course you could still use lisp or haskell or smalltalk (EDIT: if you are already somewhat familiar with them, learning a new language and building something large is tricky) if you so choose, but it doesn't matter really.

Just build something ambitious.

My 2 cents. Good Luck.

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

#13
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.

Javascript certainly works and is convenient.

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

#14
When I started a CS program 15 years ago now our first language was Scheme. This turned out to be an excellent choice, because it put everyone on the same level. The syntax is so simple that those with no experience could focus on the algorithms, and it is a functional language, so those with a lot of experience, typically from imperative languages like C or Pascal, had to effectively start over.

So when we later got to C, the new things were the syntax and the imperative model, but most students had learned enough about algorithms to know what they wanted to do, which made it a lot easier to learn.

After that we also tried out Prolog, which belongs to yet another paradigm, so over the first year we tried a variety of languages that got you thinking very differently about programming than if you'd only do an imperative language.

Later on in the program we had some courses that went down closer to hardware, we did assembly language, and we even wired our own processor, did the microcode for it, and wrote a small assembly program for the "computer" we made.

Over the course of the entire program we never dug deep into one specific language or paradigm, but we went across the entire field of computer science, and that turned out to be an excellent foundation. In my experience, the people I know that are really good programmers have all done this, either through university, or by self-study. It requires a lot of passion for programming to do it by yourself though, but it's an alternative to finding a diverse CS program that focuses on breadth instead of depth.

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

#15
I'm a fellow CS student, but I'm a bit deeper into the curriculum. As a Junior, I'm just now learning other languages in class. I see those first two years as something necessary. It's fairly trivial for me to sit down and read most OO languages now that I've been taught Java for two years in college (plus one year in high school). After learning the syntax, it's far easier to take apart those concepts that they're teaching you and apply them to other languages. Implementing a linked list, for instance, is fairly trivial from one language to another, but you have to fully understand the concept of a linked list before you can implement one in multiple languages. I assume that you still have a stumbling block when it comes to parsing the language, and you're missing out on the concept.

I don't necessarily believe you should keep chugging away at C/C++ until the language kind of disappears and you're left staring at the concept, but if you jump from language to language hoping one will open up things for you, I think you're walking the wrong path. My suggestion is that unless you fully intend to truly learn another language, you should stick with C/C++ and just progress with it. Once you are really comfortable with it, move on to something else. Trust me, once you do have that first language under your belt, the others come a lot more easily.

If you really do want to switch to a different language, I would suggest Python. I learned Python the summer between my Freshman and Sophomore years, and I felt that the language gets out of your way a lot more than Java (the only language I really knew before then). I think Lisp or Haskell might be a bit too much of a stretch from your C/C++ background. I've heard programmers that have been programming for years stumble over Lisp. It's a different way of thinking, and if you're just trying to broaden your horizons, you should be able to do that without learning a different way to think.

I'd also fallow the advice of some of the other people on here and actually build something. I've had a lot of fun doing web development with Ruby on Rails. Ruby's a great language as well, but I found it a little harder to parse coming from a C++-like language than Python. I've heard great things about Django, so maybe you could try building a web app in it?

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

#16

When I started a CS program 15 years ago now our first language was Scheme. This turned out to be an excellent choice, because it put everyone on the same level. The syntax is so simple that those with no experience could focus on the algorithms, and it is a functional language, so those with a lot of experience, typically from imperative languages like C or Pascal, had to effectively start over. So when we later got…

That sounds fascinating. I'll dig through the course catalog and see of there's anything comparable.

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

#17

When I started a CS program 15 years ago now our first language was Scheme. This turned out to be an excellent choice, because it put everyone on the same level. The syntax is so simple that those with no experience could focus on the algorithms, and it is a functional language, so those with a lot of experience, typically from imperative languages like C or Pascal, had to effectively start over. So when we later got…

As a side-note, it is sad that "the industry" is always complaining that university graduates aren't better prepared for actual work, and is always pushing for CS programmes to be more vocational, more focused on whatever language is popular right now, because it's the good programmers with broad knowledge that push the industry forward, not the rote programmers that learned Java 15 years ago, have been doing it ever since, and can't possibly be moved from their comfort zone.

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

#18
I´m a CS graduate too (fifth year) and i know how you are feeling.

Before entering the course i was skeptical , and until the thirty year i fell like i was wasting time. The point is, when you are at the academic world, it´s not about how get real things done, it´s more about to learn general concepts to build a solid base (in terms of knowledge). With this base, you will be able to learn how to get REAL thinks done much more fast, in a very professional way(read, trustable for the "market").

Therefore, you are not going to CS (or Math, another good option) to get things done, you are going to build a very good "BASE" to get (a lot of) things done.

In a simple way, goes like this: Learning lisp, python, c++ and java, you are investing on "content" for your professional life. Going to CS you are investing in "context". A guy who learns lisp in a garage is very different from a guy who made CS and learn lisp by himself. The second one have much more "base" and a better context to solve problems, although both have the same "content" (the lisp knowledge).

Don´t give up on CS and try to be close from as much people as you can, specially the good guys ... in this way you will be building a very good "context".

Oh, about the programming language ... i think you are starting from the wrong point. First, you should pick up an idea or project to implement (something that you really want to do) and then you go for the language. And yes, the best way to get "content" is working on real projects. Ruby is good for scripting, as python and php are, so if you are going to build something for the web, you should not think about C, C++ and Lisp, just pick a language more close to the web related stuff. But if your idea, or project is about mathematics, desktop and hard calculations, forget about ruby and php and go for C or Lisp. Therefore you start choosing a project (or idea) and then the programming language to learn, not the language and then the idea.

Well, i´m a very noob just like you, and my words are probably full of lies, but that´s my experience in the last five years. Hope you can get something useful from this big (sorry by that) post.

And sorry by my poor english.

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

#19

I'm a fellow CS student, but I'm a bit deeper into the curriculum. As a Junior, I'm just now learning other languages in class. I see those first two years as something necessary. It's fairly trivial for me to sit down and read most OO languages now that I've been taught Java for two years in college (plus one year in high school). After learning the syntax, it's far easier to take apart those concepts that they're t…

I'd forgotten Django. That sounds interesting. I did enjoy Python when I used in in Highschool, and I wouldn't mind learning more.

About your other point, with sticking to C/C++ until the language disappears, I think I'm just afraid I'll get stuck in that paradigm, and if I don't broaden my horizons now, I'll have a hard time later on. You may have a point though. I'll think about it.

Thanks for the advice.

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

#20

I´m a CS graduate too (fifth year) and i know how you are feeling. Before entering the course i was skeptical , and until the thirty year i fell like i was wasting time. The point is, when you are at the academic world, it´s not about how get real things done, it´s more about to learn general concepts to build a solid base (in terms of knowledge). With this base, you will be able to learn how to get REAL thinks done…

I guess I hadn't thought of it that way, with content and context. I did enjoy working with other students, and I think hacking code with them was very valuable for learning.

Thanks for the advice, and your English is just fine. Obviously not perfect, but more than good enough.

Post reply on HN