Live data from Hacker News

How should I get started with programming? Which language should I learn first?

marco.org

11–20 of 35 posts

Re: How should I get started with programming? Which language should I learn first?

#11
I completely agree that the most important thing is to have a concrete objective that you really want to achieve that you are moving towards.

However, I disagree that every language is equally hard. There are three challenges in learning programming: syntax, logic, and resource management. Those can be optimized for beginners:

Syntax: A syntax that is more natural and less symbolic will be easier to learn. There is a lot to be said about brevity for experienced programmers. For new programmers, it is completely wrong.

Logic: While certain, highly mathematically-inclined people may be different, most people understand the concepts involved with imperative programming (I do this, then this, then this; if I do this thing a lot, I can abstract its concept; etc.). Functional programming, "pure" object oriented programming, etc., are concepts that add impedance.

Resource Management: Whether memory, pixels on the screen, or bytes to a network connection, you've got to interact with the hardware at some point. Different languages approach this in very different ways, from manage everything directly to nearly complete abstraction.

Trying to learn all three at once for any but the most highly motivated is a recipe for frustration and, ultimately, failure.

Re: How should I get started with programming? Which language should I learn first?

#12
It really depends on your goals and background I would say. At my school (education school) the point isn't to create students who can compete with computer science majors next door. Rather, we focus on getting students to 1) be able to understand the basics in order to communicate with more experienced developers and 2) quickly be able to create interactive visual programs for pilot research and the classroom. For us, the purpose is split between programming theory and folding in their learning and instructional theory into design. I used to teach Java which is great for focusing on OO concepts but the end products that students were able to create didn't necessarily match their visions. This discouraged a lot of students and turned them away from code. So sad!

Currently, we use Flash with a focus on OOP with ActionScript 3 (not timeline based loose junk). The advantage of this is that they can easily create rich assets in a simple and familiar environment to make the code part more genuine and purposeful for them. I've found that if you teach it this way they are very motivated to learn the programming concepts to realize their visions which are usually heavily tied to the visual and surface levels of a project. Gotta admit things you directly see are pretty sexy to many people. Once this "wow" moment is satisfied, it's much easier to point them in directions that go back to the programming theory to improve the depth of their work.

If you have a purpose and drive to want to accomplish something concrete you'll stick with the ups and downs so a programming language that supports that goal I think, is an appropriate language. It works well for us, the class is immensely popular and many of my students are very curious now of other languages like JavaScript, objective C, etc. The concepts transfer well too and some have even transitioned toward development. You can always learn new languages later although one commenter poses a good question of how one's starting language influences thinking. Don't have an answer for that one. But, my take is just try to get a good foundation with a language that supports what you want to do.

NOTE: I learned to program myself, and sought out specific programmers I admired to teach me so I don't have the experience of what a typical compsci program and curriculum is like. You might seek those opinions too. I would consider myself pretty darn good at understanding education and learning matters though so if you want any pointers, advice, or questions I'd be more than happy to discuss on this thread. I'm excited that you want to dive into programming. :-)

Re: How should I get started with programming? Which language should I learn first?

#14
post #8

Could always do it the academic way.... C, then C++, then Java, back to C++, back to Java. Once you graduated you will have learned no language mastery, just how to to think like a programmer... If that is what you want

Is this really the standard "academic way"?

At my school, CS classes started in C, did a touch of PHP/JS, then a functional language (was scheme, now OCaml), and then a giant hodgepodge of whatever you/the professor wanted.

Re: How should I get started with programming? Which language should I learn first?

#15

I made the mistake of learning Visual Basic 6 first. That's like starting a race in last place.

While I feel your pain (and cringe on your behalf), I will say that many winners of NASCAR races started in last place.

NASCAR isn't a legitimate sport, it's a spectacle. Any time one car gets too far in front of the others a restart is issued. Various owners have openly admitted they do this "for the fan's excitement".

Re: How should I get started with programming? Which language should I learn first?

#16
Probably some people would kill me for that answer but i would say you should learn PHP.

PHP is simple, good documentation and great community. Facebook is built on top of PHP so as Drupal and Wordpress.

But the main point about my recommendation is that PHP is installed everywhere, you don't have to spend much time configuring and doing sysadmin stuff to make it work.

Re: How should I get started with programming? Which language should I learn first?

#17
post #8

Could always do it the academic way.... C, then C++, then Java, back to C++, back to Java. Once you graduated you will have learned no language mastery, just how to to think like a programmer... If that is what you want

Is this really the standard "academic way"? At my school, CS classes started in C, did a touch of PHP/JS, then a functional language (was scheme, now OCaml), and then a giant hodgepodge of whatever you/the professor wanted.

Java and C are the most common staples, and at lower-grade schools potentially the only languages.

Re: How should I get started with programming? Which language should I learn first?

#19
post #8

Could always do it the academic way.... C, then C++, then Java, back to C++, back to Java. Once you graduated you will have learned no language mastery, just how to to think like a programmer... If that is what you want

Once you graduated you will have learned no language mastery, just how to to think like a programmer... If that is what you want

Which, honestly, isn't necessarily a bad thing. If you know how to think, and you have experience with a language that's at least something like what you want to learn, you can pick up almost anything quickly.

Re: How should I get started with programming? Which language should I learn first?

#20
post #8

Could always do it the academic way.... C, then C++, then Java, back to C++, back to Java. Once you graduated you will have learned no language mastery, just how to to think like a programmer... If that is what you want

Is this really the standard "academic way"? At my school, CS classes started in C, did a touch of PHP/JS, then a functional language (was scheme, now OCaml), and then a giant hodgepodge of whatever you/the professor wanted.

We started with Scheme, then in the second year C++ and some Common Lisp. Later Smalltalk. You learned Java on your own, which is near trivial if you know C++ and Scheme.
Post reply on HN