Live data from Hacker News

Ask HN: What language should I learn first?

news.ycombinator.com

61–70 of 77 posts

Re: Ask HN: What language should I learn first?

#61

I'd lean slightly toward recommending Python to beginners, but don't get stuck on whatever you learn first. Try to learn at least one new language a year till you have several under your belt -- and even then, its not a bad idea to continue to do that. And try to mix families -- each provides different insights. The first few might be something like: 1. One of Python or Ruby 2. JavaScript 3. One of Java or C# 4. Erla…

Good recommendations, I think.

Thank god you didn't recommend Perl or PHP.

shivers

Re: Ask HN: What language should I learn first?

#62

Here's my path (~30 years worth). high school: basic 6502 assembly a little FORTRAN a little pascal, but didn't understand it mit: scheme (sicp omfg) symbolics lisp common lisp clu pdp-10 assembly connection machine a little C a little more FORTRAN grad school / 90's: a lot of C (system programming / unix kernel hacking) Obj-C / NeXTStep (reappears later as OSX / iOS platform) MIPS assembly (branch delay slots ftw) x…

"I'm a little weird because I did a lot of Lisp early, and then became an OS hacker."

+1 for introspection! (Or do programmers call that reflection?)

Re: Ask HN: What language should I learn first?

#63
When you don't have a Jeep, don't take the shortcut that runs through the jungle. You're goal should be to keep moving and not get discouraged when you get stuck on something. I would learn a language that lets you take the highway instead of the shorter but trickier jungle road. Ruby, Python, Basic, and Javascript could be considered "highway" languages while C, C++, Java, and most other languages could be considered "jungle shortcut" languages.

Re: Ask HN: What language should I learn first?

#65

I guess this will also help- http://www.charlespetzold.com/code/

That's a very very good book, although what he is probably asking for is a programming language :)

I think it would help OP to understand programming in general sense but then I am still a newbie so correct me I am wrong.

Re: Ask HN: What language should I learn first?

#66
post #34

For serious work, starting with something like Python is probably a good idea (as many people have suggested), but if your goal is to learn about programming, I'd actually suggest you start with assembly. Assembly is really tedious to do anything practical with, but as a way to understand some of the most fundamental concepts in programming it really can't be beat. Doing the equivalent of hello world, in assembly and…

Definitely NO. Assembly is okay as a second or third language, but not as the first one. Python->C->ASM will have a much larger chance of success than ASM->C->Python; there's a good reason why college programs don't start with assembly first.

In my experience, there are two kinds of programmers. Top down and bottom up. Top down programmers have good success going from high-level languages to low-level. Though, learning a low-level language for them is not really necessary. Bottom up programmers don't grasp many of the fundamentals of programming until they can build them from basic underlying concepts. Some bottom up programmers may never get to a higher level language and end up as systems programmers or embedded programmers, maxing out with C as a high level language.

Personally, I am a bottom up programmer. I started with C and I found it confusing and ended up really disliking programming (I was in an EE program). Then in a later term we used assembly and once I got that foundation, everything clicked. I suddenly realized why C was necessary and what it provided. High level languages were then built up from there.

Everyone is different. There won't be one path.

Re: Ask HN: What language should I learn first?

#67

Slightly against the flow here: I chose Python (and Django) when I learned to code (and built our MVP for www.gmbl.io, still a few rough edges - plug, plug) Python's GREAT, no doubt, and Django is also very good. But I've repeatedly found myself wishing I'd gone with Ruby/Rails (it was basically a coin toss.) because I've ended up in an environment where everyone else is working in Ruby for their pet projects - and i…

I agree, the opposite happened to me. I learned Ruby on Rails, but everybody around me was Python/Django, so inevitably I made the switch because friend knowledge makes it easier to pick up.

Shall we swap friend groups? :-D

I'm thinking about switching to Ruby (or at least learning enough I can join in.)

Re: Ask HN: What language should I learn first?

#68

Whatever you choose, learn git along with it. It helps to answer the question, "This used to work, what did I do to break it?" Also, call me sentimental but I learned C/C++ as my first language and would recommend it. I don't see a codeacademy class for that though, and it's not really perfect for web development. If you find that codeacademy isn't working out, I've also personally used codeschool.com and had great e…

Actually, I should have mentioned this in my own post. I can't emphasise the point about git enough. I didn't really get it at first so shied away. Version control is one of THE most important things you'll learn, for a whole variety of reasons.

When it clicked I remember thinking: "Oh, it's like save games for coding."

Re: Ask HN: What language should I learn first?

#69
What are your short, medium, and long term goals? How much do you understand about how computers and networks work?

If you want to start by creating web pages but eventually move to programming, learn HTML. Get really, really good at it - but without CSS. Then learn CSS, and learn how they work together, how they complement each other. Then add Javacript and DOM manipulation. You can do some very cool stuff, you'll learn a lot of logic along the way, make interesting mistakes, etc.

If you want to control a computer, get something that speaks Bourne shell (OSX, Linux, etc.) and get really, really good at defensive-minded shell scripting (by defensive-minded I mean always being alert for errors, always quoting variables, always checking return codes, etc.). You will learn a lot about how computers work, how they are structured, etc.

In both cases, you will also begin to feel the frustrations of working with these tools: Why doesn't this work, why is this so hard, etc., etc.

You could start with something more modern, more powerful, like Python or PHP or Ruby, but will you appreciate their power if you don't have a good understanding of the problems they were created to solve?

But that may not matter, if you want to build web apps using powerful modern frameworks. Where are coming from, where do you want to go?

There are many, many other ways to answer the question, depending on what it is you actually want to accomplish and how much you understand about how computers work.

Post reply on HN