Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming Technology

How To Get Into Programming? 195

writermike asks: "Like many on Slashdot, I practically grew up with computers. I've had one or more since 1978. However, unlike a lot of people here, I simply never learned how to program. Twenty-seven years later, I still know nothing about 'programming.' I'm a fairly successful technology troubleshooter, having been in that role for 15 years, and I find as I delve deeper into why programs fail, my interest in programming rises, and I feel that not knowing the principles is a hole in my knowledge that hampers me a bit. There are so many books and courses out there that seem to focus less on principles and more on specific languages and/or the 'career-track'. I don't really want to code the next great web service. I want to learn principles, then begin to learn a language. Where can I begin the adventure I should have started back in 1978?"
This discussion has been archived. No new comments can be posted.

How To Get Into Programming?

Comments Filter:
  • ANSI C (Score:3, Informative)

    by Shads ( 4567 ) * <shadusNO@SPAMshadus.org> on Monday October 24, 2005 @01:49PM (#13865250) Homepage Journal
    Is probally the most valuable programming language to learn. It may not always be the most commercially viable but it definetly provides the most insight into programming really. If you're going to learn a language don't learn some gui version of it first. Learn the low level stuff and build up to gui interfaces.

  • Take a class (Score:5, Informative)

    by araven ( 71003 ) on Monday October 24, 2005 @01:53PM (#13865282)
    Most community colleges have beginning programming classes. It's a way to get started before branching out on your own.
    ~
  • by DominicanZero ( 861859 ) on Monday October 24, 2005 @02:04PM (#13865385) Homepage
    Firstly, it's better if you start with basic programming logic and algorythms, and an industry-standarized language like C right afterwards; once you have the basics of these things, you can move on to other languages, both simpler and more complex. A few good reference books are these:
    Teach yourself beginning programming in 24 hours [amazon.com]
    Beginning programming for Dummies [amazon.com]
    C for Dummies [amazon.com]
    The C Programming Language [amazon.com]

    Those could serve as a good start. If you need further help, I can get you a basic manual of how to start programming in Visual Basic from the stuff I used at college; contact me through email (it's in my url) if you're interested.
  • by jhoger ( 519683 ) on Monday October 24, 2005 @03:52PM (#13866156) Homepage
    I agree with that. Developing web pages and scripts is the most natural way to learn to programming. No barrier to entry for most folks. Everone has the tools and there are lots of docs free on the web.

    Actually, I would suggests starting with HTML. It's not programming per se, but it is a close relative, and many of the same skills are required. Just make sure you use a text editor to write your code, not a crutch web page generator, at least not for this purpose. Vi, emacs, or even something like notepad is OK.

    Then JavaScript, then Java or C# or C. Eventually, you must get to C. It will probably take a while to "get" C pointers, but it is so for everyone.

    General advice: you're the programmer. Everything is *your* fault. This is a mistake fledgling programmers make: they tend to be ready to blame the interpreter, the computer, the disk drive. But 99% of the time, the problem is your code. The other side of that coin is most of the software challenges you will encounter are doable if you put the effort into it. Always have Google handy to look things up and find the easy way to do it.

    On that score: good programmers are usually interested in "The Right Way" to do a thing. If the way you've chosen seems klunky and inefficient and that there is a better way: well, that's because there probably is a better way. Seek out the "best ways" (there is usually only one best way... yes, it's weird). It takes time, but that's how you learn.

    Oh yeah, laziness: if you aren't maximizing laziness (in the sense of putting extra effort now to avoid work later) you aren't a Real Programmer.

    -- John.
  • by jcwynholds ( 765111 ) on Monday October 24, 2005 @04:04PM (#13866233)
    I see the language as just a medium. And when I say medium, I mean it in the sense that the painter uses canvas as his medium. The programmer uses a languages like a medium. Don't get hung up on which to use; the "best" one is entirely your opinion.
    So if you wish to learn programming, the medium isn't as important as the problem you're trying to solve. If I were in your shoes, I would try approaching a classic computing problem (eg generating Fibonacci sequence) using several of the languages that appeal to you. I use Python and C/C++, but that is simply my preference. But seeing a similar problem solved by different languages (and if _you_ do all the coding), then you would get a much better sense as to why to use one language or set of methods for a solution to a problem. I solve the same problem over and over to learn new languages and to get a better sense of new features of a language.
    And as far as other suggestions I have seen here:
    * Don't use IDE's. They're fine once you understand (fully) what they're doing, but when you're learning the window dressing can be confusing, and can become a crutch that many cannot do without. I'm not saying that we should go back to punchcards, but if you want to learn, begin from the beginning.
    * Get used to using a good text editor. Vi is my choice, but I have seen alot of Emacs stuff that is also very handy. I recommend Vi.
    * Steer clear of M$ Dev stuff. Perl, python, and gcc (and just about every other language) are all available for win32, so use those unless you're getting paid to develop with Vis Studio.
    * Use interpreters *AND* compilers. Learning when to use one and not another helps with the "everything looks like a nail when holding a hammer".
    In conclusion, at University, classes showed how to solve many problems with one language, but I found myself learning more when I solved one problem with several languages. It gave me insight as to how to structure things, and the inner workings of each language.
  • Mod parent DOWN! (Score:5, Informative)

    by evilpenguin ( 18720 ) on Monday October 24, 2005 @04:18PM (#13866347)
    Oh my God!

    I won't say this is completely wrong, because perl is a language where you can do an awful lot of useful things with a very small investment of time and effort, but the idea that one can learn "principles" of programming from our favorite hydra of a language is not a good one.

    IMHO (which is not H, BTW), I would start with a language that has a more coherent design.

    The big question is "objects" or "not objects." Secondarily, native compiler or scripted/VM language (which has more to do with getting used to the toolchain).

    I'm going to assume that you would like all the software to be free of charge.

    If you are going for objects, I would recommend starting with Java or Python. I would NOT recommend C++ because it is a complex hybrid of C and objects, doesn't have a single inheritance model, and gets enormously complex in its effort to cover all possible bases. Not that C++ can't be a great language, I just think it is not a best first stop.

    If you are going for non-objects, believe it or not, I would recommend C.

    Yes, C is full of pitfalls, but it is a simple language in design, easy to learn , but difficult to master. It can express powerful data constructs with simplistic data types and the experience of it translates well both "down" to assembly and "up" to other "safer" but more complex procedural languages. C is also a "classic native compiled" toolchain, which will stand you in good stead for all such similar toolchains.

    Java I recommend from experience, Python from reputation (people I know, respect, and trust like Python -- I haven't yet had occasion to go much beyond the "Hello, world" stage with it).

    As for how to start, for both of my "basic" choices, C and Java, I recommend beginning with a simple text editor and the command-line tools. Master using these for a few multi-file projects. In C, get used to writing and maintaining a Make file. Once you are comfortable with these basics, feel free to move to IDEs for simplifying/streamlining. But learn those low level skills so you don't become what I lovingly term a "tool junkie:" a person who can only be productive with a certain set of tools from a certain vendor.

    Back to perl for a moment: Please folks, don't think I'm trying to get religious about perl. I love perl. I use perl every day. But a programmer learning programming from perl is like a chemisty student learning the definition of "exothermic" with dynamite. Perl is, by Larry Wall's own admission (nay, boast) "pathologically eclectic." Perl's whole philosophy is "there's more than one way to do it." For learning, I like a language where there is one right way to do it. That way you don't develop bad or confusing habits. Once you have discipline and style, you move to the more expressive languages and you make good code with them. Bad perl code is just plain terrifying. In my 20 years of programming, once I got beyond BASIC, which is very much a toy, I went to Pascal. Pascal is a great (IMHO) learning language. But I don't see a lot of Pascal development these days (outside of variants like Delphi, which, I'm afraid, take you down the "tool junkie" path).

    Anyone got a great compiled procedural language suggestions besides C?

  • by Richard Dick Head ( 803293 ) on Monday October 24, 2005 @07:24PM (#13867540) Homepage Journal
    The binary opposite of the color 'black' is 'not black'.

    I dunno bud, if your defining black as something other than the opposite of white, then your doing something bad. Even if you consider that you might have other slots available in the bit slice you are considering, you really should make them Don't Cares for sanity.

    !white = !00000000 00000000 00000000 = 11111111 11111111 11111111 = black.If you're having to think about things some other way, something is wrong. Or you're a mathematician :P

    Anyway to stay on topic, here's my particular path so far in the quest for coding:

    Walk through this online course:
    http://www.eskimo.com/~scs/cclass/ [eskimo.com]

    Now write at least 3 different (as in technique) programs that crash your computer before you continue. You can boot into Windows if you're feeling lazy. :)

    Buy C++ Primer Plus, and go as far as you can till you're bored out of your mind and itching to code something real. (Optional)

    Get this library, then go thru tutorials. Then frolick and play:
    http://www.opengl.org/resources/libraries/glut.htm l [opengl.org]

    Make a xxeyes program. Like xeyes but looks away from your mouse. (That way you can get outside crosseyes dammit! :D)

    Make a program that scrambles an image into 10x10 blocks.

    Reimplement pong.

    Make a program to play wav files. Brownie points if you can get a spectrum analyzer or some other representation working with GLUT. (Read up on fast Fourier transforms, which is what you'll be using. Don't use a library for it, thats cheating :) )

    Check out wxWidgets. Walk through the tutorials.

    Make your own text editor.

    Make a basic sound player app with a spectrum analyzer. Make it echo/reverb output. (Read up on FIR Filters)


    I'm sure I've forgotten things...oh well. Just tackle whatever sounds fun.

This file will self-destruct in five minutes.

Working...