As was foretold, we've added advertisements to the forums! If you have questions, or if you encounter any bugs, please visit this thread: https://forums.penny-arcade.com/discussion/240191/forum-advertisement-faq-and-reports-thread/
Options

A Journey into Programming

ChrisDudeChrisDude Registered User regular
edited November 2006 in Help / Advice Forum
I would like to start getting into programming, both for personal fun and possibly as a career lead. Thing is, I've never done any programming before so I don't know where to really start learning.

What books or training regimens or resources should I look for to start this sort of thing? What language should I start with? I know C++ is very widespread but how forgiving/easy to learn is it for beginners? Any help would be greatly appreciated. :D

Chris Pennell Is A Huge Nerd - My blog. I talk about nerd-ish things a lot.
ChrisDude on

Posts

  • Options
    AndorienAndorien Registered User regular
    edited November 2006
    I personally recommend starting with C or C++. As long as you have good material to learn from, you shouldn't have any problems (I started with C++ in a college course).

    The advantage is that most modern languages have their syntax derived from C, resources are easy to find, and it's the industry standard to boot.

    This place should give you some insight.

    C# is worth a look, but I wouldn't recommend it for learning a general skill. C and C++ will teach you a lot more about how to program, and wont hold your hand. It's also Windows specific, since it's based off of Microsoft's Common Language Runtime (part of the whole .Net Framework thing).

    If you have trouble with the C languages, you might look into Visual Basic, which is made for ease and rapid deployment. I don't like it since it feels too removed from the lower level aspects, and it doesn't use C syntax.

    Be warned: outside of a classroom, beginning programming can feel really tedious. When learning from a book, the reasons and applications of different quirks and features of programming aren't as apparent, and it's easy to get bored. You don't want nor need material that covers everything 100% in order, start to finish. In truth, when you start out, expect 75% of what happens to be fucking magic, and the details of how everything works will be slowly revealed.

    Andorien on
  • Options
    CentipeedCentipeed Registered User regular
    edited November 2006
    I dallied in BASIC in my youth, then moved onto VB, but didn't really get into it or understand all the concepts. In college, they taught us Delphi, which got me used to using semi-colons at the end of lines, and that's pretty much it. But it was easy, and I could build relatively powerful stuff.

    Right now, I'm at uni and they're teaching us Java (Applets, not applications, but whatever). It's harder to get your head around, given that it's object orientated, which I'm not used to, but now I pretty much know the basics and I do well in it.

    I honestly recommend you take a course, because I tried learning Java from a book and it just didn't work. I couldn't grasp the object orientated thing, when actually it's much simpler in practice than it seems when reading out of books.

    Centipeed on
  • Options
    JaninJanin Registered User regular
    edited November 2006
    Try Python. It has an excellent tutorial, high quality documentation, and is used a great deal for anything from web applications to game scripting.

    Whatever you do, please don't learn Visual Basic. It literally takes years to un-train those who did so.

    Janin on
    [SIGPIC][/SIGPIC]
  • Options
    KyzenKyzen Registered User regular
    edited November 2006
    I can vouch for the fact that C# will get you a tangible result pretty fast, but is a bad language to start with. I did, and now I find myself lacking a lot of OOP knowledge because of how much C# encourages and allows for sloppy programming.

    Kyzen on
  • Options
    theclamtheclam Registered User regular
    edited November 2006
    Take a course. It's so much easier than learning from a book.

    Python is so much easier to learn than C/C++ and it will teach my almost all of the same concepts.

    theclam on
    rez_guy.png
  • Options
    homeobockshomeobocks Registered User regular
    edited November 2006
    DO NOT start with C++. It is a huge language. Huge. Ditto for Java.

    An absolutely fantastic introductory textbook is "An Invitiation to Computer Science" by Schneider and Gersting (it gives an overview of C++ or Java or something, but works it into a very balanced CS curriculum).

    homeobocks on
  • Options
    LightReaperLightReaper Registered User regular
    edited November 2006
    If it helps any my course is teaching us delphi to show us the basics and structure of a programming language,you might want to give that a try; dunno how good it is though.

    LightReaper on
  • Options
    sirSolariussirSolarius Registered User regular
    edited November 2006
    Are you in school? If so, take the intro to programming course... it really doesn't get better than that.

    Python gets another vote from me.

    sirSolarius on
  • Options
    an_altan_alt Registered User regular
    edited November 2006
    I won't recommend a language, other than to say C isn't a bad one to start.

    What I will recommend is that you find a book (or tutorial) that doesn't have you make anything that doesn't output anything besides plain text for at least the first 1/3. The visual stuff is easy once you understand how to code. Books that cater to instant gratification rarely give proper coverage to the fundamentals in my experience.

    an_alt on
    Pony wrote:
    I think that the internet has been for years on the path to creating what is essentially an electronic Necronomicon: A collection of blasphemous unrealities so perverse that to even glimpse at its contents, if but for a moment, is to irrevocably forfeit a portion of your sanity.
    Xbox - PearlBlueS0ul, Steam
    If you ever need to talk to someone, feel free to message me. Yes, that includes you.
  • Options
    mrcheesypantsmrcheesypants Registered User regular
    edited November 2006
    www.htdp.org

    That the best book for learning how to program. It has made me a shill everytime I respond to one of these "learning to program" threads. While there is a free E-book available you will want a copy in print. It starts off very slow and then speeds up to more advance concepts. It will give you a strong foundation for programming.

    After you read that book I suggest you try your hand at learning Java or C# on the account that learning those languages forces you to learn OOP.

    Edit: Oh and don't start with C++. For a hobbyist programmer writting his or her own apps it takes too much work to write one GUI program. I would suggest learning C from C tutorials/books on the account that they do a better job focusing on aspects such as pointers and referencing than C++ books which 70% focus on OOP.

    mrcheesypants on
    Diamond Code: 2706 8089 2710
    Oh god. When I was younger, me and my friends wanted to burn the Harry Potter books.

    Then I moved to Georgia.
  • Options
    I'd Fuck Chuck Lidell UpI'd Fuck Chuck Lidell Up Registered User regular
    edited November 2006
    man i loved C++, that's what I started with and it really helped me with Java.

    if you are going to do Java I'd say start with something based on java code.

    i took java in highschool and i was having a tough time with it until i entered the robocode competition.

    their code is based largely on java.

    I'd Fuck Chuck Lidell Up on
  • Options
    WezoinWezoin Registered User regular
    edited November 2006
    I personally started by getting Beginning Programming for Dummies, which taught QBasic, it was alright (I was only 11 or so at the time so it was all "ZOMG I R AWESOME") then from there taught myself visual basic (Visual Basic Express can be had for free from microsoft now-a-days, or at least I think the free version is called Express...) I tried to learn a bit of C, but saw it as way too complex at this point.

    I didn't program again till high school when I learnt Java with a "Ready to Program With Java Technology" program. This is where I would recommend you start, as Java is a powerful language that you can expand from, and this really teaches you all the ground work. It'll require about a $60 investment to get set up with the stuff, but I find it makes it REALLY simple. Alternatively, you could spend the $20 on just the CD and go to My School Introductory Comp Sci Course Site and read the exercises and notes and work your way through that.

    Here is the link to the creator of this software: http://www.holtsoft.com/ready/

    This will teach you a good chunk of Java, and then moving from there to a point where you could actually have a job doing this is quite a minor thing (it's essentially learning how to write the code for opening a window, which is only 2 or 3 lines of code)

    Wezoin on
  • Options
    AndorienAndorien Registered User regular
    edited November 2006
    While I don't agree with coding in Java, because it forces that damn runtime environment, and java programs run like ass, Wezoin does bring up a good point:

    Microsoft will let you download the Express editions of their 2005 Visual Studio products (you can get C++, C#, VB, and J#).

    http://msdn.microsoft.com/vstudio/express/

    Andorien on
  • Options
    clsCorwinclsCorwin Registered User regular
    edited November 2006
    www.htdp.org

    That the best book for learning how to program. It has made me a shill everytime I respond to one of these "learning to program" threads. While there is a free E-book available you will want a copy in print. It starts off very slow and then speeds up to more advance concepts. It will give you a strong foundation for programming.

    Thumbs up to this guy. They book has you learn using DrScheme, which I used in high school in my Data Structures class.

    clsCorwin on
  • Options
    CentipeedCentipeed Registered User regular
    edited November 2006
    Andorien wrote:
    While I don't agree with coding in Java, because it forces that damn runtime environment, and java programs run like ass, Wezoin does bring up a good point:

    Microsoft will let you download the Express editions of their 2005 Visual Studio products (you can get C++, C#, VB, and J#).

    http://msdn.microsoft.com/vstudio/express/

    I definitely don't think, now that I'm learning in Java, that starting with a Visual development tool is best. Simplicity is the name of the game until you know a language well enough.

    Centipeed on
  • Options
    DocDoc Registered User, ClubPA regular
    edited November 2006
    Yet another vote for Python from me. Not only is it easy to learn, you'll learn good coding practices (through simply learning the language!) and avoid bad habits that come from some other languages.

    Doc on
  • Options
    japanjapan Registered User regular
    edited November 2006
    Python is fun. I've been playing around with it on and off (I, too am trying to learn to program).

    Also, this (free) book is pretty good. It focuses more on programming concepts, and uses Python to demonstrate them, rather than teaching you Python specifically.

    japan on
  • Options
    DrFrylockDrFrylock Registered User regular
    edited November 2006
    Andorien wrote:
    While I don't agree with coding in Java, because it forces that damn runtime environment, and java programs run like ass

    Thank you, time traveller from 1995. While the runtime environment can be somewhat onerous, your programs will generally run without recompilation on nearly every major platform available. Also, Java programs no longer run "like ass," the JIT compilers in modern JVMs give you performance equal or better than equivalent C/C++ code in most cases. If you want a native UI, use SWT. You cannot look at Eclipse and tell me that Java isn't ready for prime time.

    There is a tension in learning programming today between high-level languages, that make problems go away, and low-level languages that expose those problems to you.

    For example, Java and Python are nice languages to program in because they handle memory management duties for you with garbage collectors. Also, there're really no pointers and pointer arithmetic to hassle with, like in C/C++. However, can you really be a good programmer without understanding how to use pointers and pointer arithmetic?

    In the same sense, Python is nicer than Java because it is dynamically typed and allows you to do all kinds of cool things that Java does not. However, can you really appreciate/take advantage of these cool things without understanding why they are cool?

    Maybe it's a question of learning style. If you were learning carpentry, would you build a table using hand tools first, and then move up to the power tools, or would you start with the power tools and risk that you'll be completely incompetent when somebody hands you a backsaw...

    DrFrylock on
  • Options
    vonPoonBurGervonPoonBurGer Registered User regular
    edited November 2006
    I won't wade in on the debate of Java vs. Python vs. C/C++, everyone has their preference, and which works best often depends on what you're looking to do and who you're working with. I would like to point to http://www.mindviewinc.com/ as a good resource, though. Bruce Eckel writes some very useful learning books, or at least that was my experience. His Thinking in Java book saved my bacon when I got tasked with Java development in my first job, despite telling my employer that I didn't know anything about Java. He's also written Thinking in C++, and Thinking in Python is available in a prerelease form, though they're updated less frequently than his Java book and I don't know if they're as thorough and accurate as the Java book was. All of the books are entirely free in digital form though, so even if the C++ and Python books aren't quite as good as the Java book was, oh well, it's not like they cost you anything!

    vonPoonBurGer on
    Xbox Live:vonPoon | PSN: vonPoon | Steam: vonPoonBurGer
  • Options
    JaninJanin Registered User regular
    edited November 2006
    DrFrylock wrote:
    Thank you, time traveller from 1995. While the runtime environment can be somewhat onerous, your programs will generally run without recompilation on nearly every major platform available. Also, Java programs no longer run "like ass," the JIT compilers in modern JVMs give you performance equal or better than equivalent C/C++ code in most cases. If you want a native UI, use SWT. You cannot look at Eclipse and tell me that Java isn't ready for prime time.

    Man, have you even used Eclipse? It takes longer to start up than the underlying operating system!
    DrFrylock wrote:
    For example, Java and Python are nice languages to program in because they handle memory management duties for you with garbage collectors. Also, there're really no pointers and pointer arithmetic to hassle with, like in C/C++. However, can you really be a good programmer without understanding how to use pointers and pointer arithmetic?

    I'd say that somebody who doesn't have to learn about pointers at the same time as everything else can become a better programmer. You learn a lot more coding something in Lisp than in assembly, even though the latter exposes far more low-level behaviour.
    DrFrylock wrote:
    In the same sense, Python is nicer than Java because it is dynamically typed and allows you to do all kinds of cool things that Java does not. However, can you really appreciate/take advantage of these cool things without understanding why they are cool?

    Maybe it's a question of learning style. If you were learning carpentry, would you build a table using hand tools first, and then move up to the power tools, or would you start with the power tools and risk that you'll be completely incompetent when somebody hands you a backsaw...

    Programming isn't about manipulating bits and bytes. It's about creating mathematical formulae and creating abstractions. High-level, strongly typed, functional-style languages like Lisp/Scheme, Python, or Haskell do far more to teach good programming skills than assembly, C, or C++.

    Janin on
    [SIGPIC][/SIGPIC]
  • Options
    AndorienAndorien Registered User regular
    edited November 2006
    DrFrylock wrote:
    Thank you, time traveller from 1995. While the runtime environment can be somewhat onerous, your programs will generally run without recompilation on nearly every major platform available. Also, Java programs no longer run "like ass," the JIT compilers in modern JVMs give you performance equal or better than equivalent C/C++ code in most cases. If you want a native UI, use SWT. You cannot look at Eclipse and tell me that Java isn't ready for prime time.

    Why thank you for kindly sweeping away every experience I've had with Java for the past 5 years. There's a reason I don't use Azureus.
    Centipeed wrote:
    I definitely don't think, now that I'm learning in Java, that starting with a Visual development tool is best. Simplicity is the name of the game until you know a language well enough.

    This is true, and I mostly just linked them because, hey, free compilers with a decent text editor along with. The visual design features are simply optional.

    Andorien on
  • Options
    DrFrylockDrFrylock Registered User regular
    edited November 2006
    jmillikin wrote:
    Man, have you even used Eclipse? It takes longer to start up than the underlying operating system!

    Yes, I've used Eclipse, and developed extensively with and for it. I won an Eclipse Innovation Grant this year. Yes, the memory footprint is somewhat large and it takes a while to start up. It's a massive development environment. I haven't used Visual Studio in a while, but if I recall correctly the startup times were at least somewhat similar. After the startup, the performance is certainly on par with any native app I've used. The development features in the language (continuous compilation, refactoring, hot code replace) are certainly light years ahead of nearly anything else I'm familiar with. As a bonus, when and if I bork the environment it doesn't segfault and disappear.
    I'd say that somebody who doesn't have to learn about pointers at the same time as everything else can become a better programmer. You learn a lot more coding something in Lisp than in assembly, even though the latter exposes far more low-level behaviour.

    Yes, this is certainly possible. You will learn different kinds of things, though.
    Programming isn't about manipulating bits and bytes. It's about creating mathematical formulae and creating abstractions. High-level, strongly typed, functional-style languages like Lisp/Scheme, Python, or Haskell do far more to teach good programming skills than assembly, C, or C++.

    Programming is about both formulas and abstractions and manipulating bits and bytes. The focus of your development depends on the task at hand. At some point in a programming career, you're going to have to learn both. Someone who understands only the bits and bytes will write poorly structured, ugly code because they don't understand how it all fits together in a framework of algorithms and data structures. Someone who understands only the algorithms and data structures will never understand development for embedded systems, device drivers, or how to truly optimize their code.

    DrFrylock on
  • Options
    piLpiL Registered User regular
    edited November 2006
    Andorien wrote:
    This is true, and I mostly just linked them because, hey, free compilers with a decent text editor along with. The visual design features are simply optional.

    Things made a lot mores sense to me when I started learning with notepad and then moved to jEdit, than when I tried to use a dev tool, simply because I didn't have to worry about the program's features getting between me and the code. I found pulling up the tool that came with Java just got in my way.

    piL on
  • Options
    CentipeedCentipeed Registered User regular
    edited November 2006
    piL wrote:
    Andorien wrote:
    This is true, and I mostly just linked them because, hey, free compilers with a decent text editor along with. The visual design features are simply optional.

    Things made a lot mores sense to me when I started learning with notepad and then moved to jEdit, than when I tried to use a dev tool, simply because I didn't have to worry about the program's features getting between me and the code. I found pulling up the tool that came with Java just got in my way.

    I agree entirely. I use TextPad exclusively for my Java programming, and I don't think I'd want it any more complicated than that. And TextPad is a simple program.

    Centipeed on
  • Options
    japanjapan Registered User regular
    edited November 2006
    While I still personally recommend Python, the free book that I linked to has versions for Python, Java and C++.

    If you're feeling saucy you could download all three, skim the first few chapters of each, and decide what you'd be most comfortable with. That way you could at least start with something you reckon you'd enjoy.

    For actually learning, I always find what works best for me is to set myself a project of some kind. Nothing ambitious, just something simple you can conceptually visualise. Break it down into sub-tasks (which is standard programming practice anyway) and write those parts one by one, testing as you go.

    For example, to teach myself PHP and SQL I made a trivial little webapp that keeps track of my game collection. There are a ton of ways I could have done that with less effort, but this way I got to do some learning along the way, and it was easy to keep motivated.

    japan on
  • Options
    TheGreat2ndTheGreat2nd Registered User regular
    edited November 2006
    Just a comment on Java, if you go into it, JCreator is awesome.
    And yeah, Java has no pointers.

    TheGreat2nd on
    BinghamtonUniversity.png
    I'm Jacob Wilson. | facebook | thegreat2nd | [url="aim:goim?screenname=TheGreatSecond&message=Hello+from+the+Penny+Arcade+Forums!"]aim[/url]
  • Options
    eaquinoeaquino Registered User new member
    edited November 2006
    I'm going to agree with the Python as a first language, or maybe Ruby. Both have all of the fundamentals, minus the pointers. At some point you'll need to learn about them, but that's what school is for.

    As a note on IDE's like eclipse and Visual Studio. If you're trying to learn a language, just get a simple editor like VIM, Emacs, or TextMate (if you're on a mac.) The IDE's are great once you've learned the language, but it's something you should try to learn without. I've met far too many developers that are completely lost without an IDE.

    As for learning aids, the books posted above are great. O'Reilly tends to have some decent teaching books. Then, find some helpful people that know the language, like on some forums or irc, and have them look over your code.

    eaquino on
  • Options
    mrcheesypantsmrcheesypants Registered User regular
    edited November 2006
    Guys I think we are getting too deep in a language debate which can really screw up a guy going into the mindset that the language chosen matters a lot. The differences between Java and C/C++ to a beginner are not that large enough to matter to a beginer programmer. Yes Java can sometimes be a little bit slow but only for programs so large that there is no way the OP can write it by himself.

    Now to the OP keep in mind that learning a computer language is a lot like learning spoken languages. Do you really think a child growing up in Spain has a harder time learning Spainish than a child growing up in England to learn English? Most languages are about as hard to learn as the other (well, atleast Java, C/C++, and Python). Now the way most books are written is to to teach mostly syntax of a computer language. Most do not go into actual programming concepts (Recurision, Algorithms, etc) but just enough to be "fluent" in that language. They may give exercises but for the most part they test fluency instead of giving a problem which takes thought to fix.

    Let me get back to the spoken language metaphor on the account that this can be hard to understand for a hobbyist who has not learned this lesson yet (and I know 90% of hobbyist programmers learn this lesson the hard way. I dunno about those who first learn via formal education). Writting a program is like writting a novel. In order to write a good book it takes more than just knowledge of the english language. One needs to write a good story and keep in consideration flow, plot, charecter development as well as other things that someone who just knows english would not be able to know.

    Computer languages can be learned in about a week or two. If that is all you focus on then you will finish and say to yourself "ok, now what do I do?" You may try to write some code but find that it is hopelessly impossible and it will completly overwhelm you. I have yet to meet a hobbyist who did not experiance this problem. I for example studied C++ as my first language. I got a begineer's book, found a few tutorials, finished them, did all of the exercises and still couldn't write 20 lines of code to save my life. Every guy who self taught themselves coding has experianced this. I did not know how to design a program and then searched for a book on how to design programs. Guess which book I found? www.htdp.com . After I read it everything came together and I started writting small applications for myself.

    tl;dr- Just go to www.htdp.com and thank me for it later.

    mrcheesypants on
    Diamond Code: 2706 8089 2710
    Oh god. When I was younger, me and my friends wanted to burn the Harry Potter books.

    Then I moved to Georgia.
  • Options
    ArminasArminas Student of Life SF, CARegistered User regular
    edited November 2006
    Instead of focusing on a particular language, learning the theories behind programming are important. If you're really bored and have lots of time, you can freely (well, kind of) take UC Berkeley's introductory Computer Science course. It's the first course on the way to a CS major here. I only thought of recommending this because, uh, well.... Someone on ebay was actually selling "Introductory Programming Courses" and turns out he just emailed the link to UC Berkeley's webcast. All you need is something that can read a real-player stream (namely "real player" even if I hate it).

    Here's the CS61a (intro to CS basically) webcast.

    EDIT: I apologize for the short blurb before it, I would go more into it right now if I weren't about to pass out. I don't mean to just whore out my university's resources. :oops:

    Arminas on
  • Options
    CentipeedCentipeed Registered User regular
    edited November 2006
    I went from BASIC to Delphi to Java, in terms of actually seriously programming in said languages (I messed around in VB somewhat), so I don't have a clue what pointers are. I looked it up on Wikipedia, I think, but it was either boring as hell, or I just didn't understand (I can't remember), so I still have no clue. Would someone care to explain them to me in simple terms?

    Centipeed on
  • Options
    KoopaParatroopaKoopaParatroopa Registered User regular
    edited November 2006
    I'm going to point something out that is *really* important, but isn't generally understood by people that want to learn how to program:

    If you know how to program in C++ like a rockstar, you still won't be able to make diddly squat. C++ is the easy part (and by easy, I mean outright trivial).

    The vast majority of the knowladge is based around learning to use calls to the operating system (god help you if it was written by Microsoft), and learning to use code libraries written by other people (god help you if they were written by Microsoft).

    KoopaParatroopa on
  • Options
    KoopaParatroopaKoopaParatroopa Registered User regular
    edited November 2006
    Centipeed wrote:
    I went from BASIC to Delphi to Java, in terms of actually seriously programming in said languages (I messed around in VB somewhat), so I don't have a clue what pointers are. I looked it up on Wikipedia, I think, but it was either boring as hell, or I just didn't understand (I can't remember), so I still have no clue. Would someone care to explain them to me in simple terms?

    When you declare a variable such as:

    int var;

    'var' is simply an alias for a starting memory address, and note explaining how long the memory block is.


    All pointers do, is allow you to do is access memory by giving a memory address instead of an alias.

    It is rather powerful.

    KoopaParatroopa on
  • Options
    SpackleSpackle Registered User regular
    edited November 2006
    Centipeed wrote:
    I went from BASIC to Delphi to Java, in terms of actually seriously programming in said languages (I messed around in VB somewhat), so I don't have a clue what pointers are. I looked it up on Wikipedia, I think, but it was either boring as hell, or I just didn't understand (I can't remember), so I still have no clue. Would someone care to explain them to me in simple terms?

    When you declare a variable such as:

    int var;

    'var' is simply an alias for a starting memory address, and note explaining how long the memory block is.


    All pointers do, is allow you to do is access memory by giving a memory address instead of an alias.

    It is rather powerful.

    Just wanted to expand a bit on pointers. You can imagine the power by being able to 'point' to objects in memory instead of having variables hold the entirety of the object.

    Like an array. You have an organized set of data in memory that you want to access. So instead of copying each piece of data in memory to local memory, you instead delcare an array (effectively a pointer) and you now have a pointer to the memory addresses, thus no need to copy and waste local memory. Now you can copy just what you need to local memory, process it, and return it back, freeing up your local memory.

    My c/c++ is a bit rusty (bloody .NET) but I just wanted to add a little bit to pointers. Once understood, your code will look incredibly cryptic, but will be very VERY memory effective and fast.

    Spackle on
    Taco Bell does win the franchise war according to the tome of knowledge that is Demolition Man. However, I've watched Demolition Man more then a few times and never once did I see WoW. In conclusion Taco Bell has more lasting power then WoW.
    D&D Metal Thread: HERE
  • Options
    ChrisDudeChrisDude Registered User regular
    edited November 2006
    Thanks for all the replies, guys. I think I'm going to look over Python, Java, and C/C++ and weigh the pros and cons of them before I decide what to start with.

    Thanks also to those who linked to the eBooks, that should help my decision along nicely.

    ChrisDude on
    Chris Pennell Is A Huge Nerd - My blog. I talk about nerd-ish things a lot.
  • Options
    b0bd0db0bd0d Registered User regular
    edited November 2006
    Assembly! I learned 6502 assembly as my first real language. Bare metal baby! Yeah! On a side note, learning some assembly will make everything easier. I'm seriuos. You'll understand how the computer actually works. You'll never take anything for granted again. And you wont be confused about pointers.

    ahhh 16 bit math with 8 bit registers. Damn near gives me a hard on.

    b0bd0d on
  • Options
    AndorienAndorien Registered User regular
    edited November 2006
    b0bd0d wrote:
    Assembly! I learned 6502 assembly as my first real language. Bare metal baby! Yeah! On a side note, learning some assembly will make everything easier. I'm seriuos. You'll understand how the computer actually works. You'll never take anything for granted again. And you wont be confused about pointers.

    ahhh 16 bit math with 8 bit registers. Damn near gives me a hard on.

    I recommend not doing this until you get some fundamentals down. It DOES teach you a lot, but jesus christ it's tedius, and encourages jumping. Jumping is great for assembly (considering that you HAVE to do it), but it's not a good habit to start with.

    Andorien on
  • Options
    KoopaParatroopaKoopaParatroopa Registered User regular
    edited November 2006
    Learning assembly is actually pretty easy, and there isnt much to it, so long as you just stick to learning 'assembly language' and not memorizing all the calls to other people's code blocks. You will learn the fundamental units of logic used in ALL programing, and you will know why doing addition is simply better than subtraction, and why subtraction is worlds better than doing multiplication or division.

    By learning assembly language, you will also know the theoretical model that computers and programs emulate. If you want to understand wtf is going on with stuff like the heap, page-files, multi-threading, and all that other stuff, it helps to understand the theoretical model of a program, and how operating systems were designed to run them.


    I'd reccomend: Assembly Language step-by-step. It is a little old, but your reading it for understanding of how computers work, not to program something in assembly. Although you could do assembly programing after reading this book, provided you had the right documentation.

    KoopaParatroopa on
Sign In or Register to comment.