Next step programming for mac?

Discussion in 'Mac Programming' started by liptonlover, May 19, 2008.

  1. liptonlover macrumors 6502a

    Joined:
    Mar 13, 2008
    #1
    Hi everyone! My family has used macs for years, before I was born. But Unfortunately when my dad got me into programming, and he started teaching me because I was so interested, he was teaching me BASIC. He had/has a powerful BASIC compiler, maybe you've heard of blitzmax? But as my programming knowledge in general progressed I was finding out that BASIC isn't the way to go if you're serious about programming, and I am. So here's my programming experience:

    simplest html (img tag, the usual for forums.)
    5-6 years of "advanced" BASIC, using blitzmax.
    3 years of advanced BASIC including GUI on the palm platform.
    I've been working on learning C, and ObjC/cocoa with a variety of websites, tutorials, books, etc. and I'm coming pretty far with C it should only be a matter of time.
    I know my way around xcode and IB, I can make extremely simple apps.

    I'd say I'm a pretty experienced palm programmer for the tool I was using though through my discoveries I found that C is the way to go even if it is harder.
    So now where do I go? I have ordered the latest cocoa programming for the mac os x from big nerd ranch, and I'm using cocoalab's tutorial and will look into their links soon. But I really want to dig deep. I get frustrated when I can do something well but I have no idea WHY it works like that. Any good books or websites?
    Thanks in advance! Nate
     
  2. yeroen macrumors 6502a

    yeroen

    Joined:
    Mar 8, 2007
    Location:
    Cambridge, MA
    #2
    Since you're learning C, I'd suggest you learn your way around UNIX and the UNIX C API's.
     
  3. adrian.oconnor macrumors 6502

    Joined:
    Jan 16, 2008
    Location:
    Nottingham, England
    #3
    Hmmm. I don't suppose I'll have any answers for you, but I'll share my experience anyway (FWIW).

    For a long time I was at about the level you seem to be at (strangely, I too learned with Blitz Basic - but that was the original Amiga version and it was 1993!). I knew how to code, but I wasn't very good, and I stayed that way for about 6 years.

    The next real breakthrough came when I actually got a job programming. At that time I was working on a helpdesk fixing problems with Windows Server. I got the programming job on the back of learning SQL and HTML to the point that I re-wrote the front end to our ticket-tracking system (and did a vastly better job than the $40K system that I replaced, though that wasn't difficult because it was a terrible system). Someone in the company saw what I had done and I was quickly transfered to the development team. After that I quickly became, IMHO, a pretty good developer.

    I immediately realised why I hadn't progressed to this level before - I hadn't had 'real' (and achievable) projects to work on. Working towards something is the thing that drives me, as a programmer. Since getting that job I've written dozens of applications and hundreds of smaller utilities and sub-projects; the common theme of all of these projects is that they all had a genuine purpose and reason for being.

    Now I plan carefully even projects that I do for fun. If I don't, I write a few hundred lines of code and then lose steam. Getting ideas isn't easy, especially if all you want to do is write the next Photoshop or Flash or some other massive application (which is an impossible dream). You should consider what would be useful to you - maybe a new way of visualising and playing your albums in iTunes (like a simple app that can show a zoomed-out view of your album artwork for easy selection). That kind of project is challenging yet achievable, and you'll learn a lot from it. Plus you can keep extending it - Apple Remote Support, Different browse modes (by artist/category/popularity) and so on.

    One piece of advice I would give is to learn SQL. Being good at SQL has been a major benefit in my career, and it gave me a new way of thinking about data. I think I would have benefited from this even if I was writing single user apps or even games (not least of all because SQLite/CoreData uses SQL!). It's a fantastic tool to have at your disposal.

    I'd also recommend reading books on English language (really!) and on design (all kinds of design, not just software). So many developers create a bad impression because they write clumsy sentences or can't choose a nice colour scheme or interface layout. If you can add that extra layer of polish it not only helps your software be successful, but it makes you feel better too!

    I didn't really use books to learn (though of course I bought them and use them for reference), I just hacked away.
     
  4. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #4
    my goal when I'm at a professional level is to be working on smaller stuff and to be working on games. So I don't know how much SQL will help me, though I don't really know what it is. And are you saying my english is bad? :D
     
  5. Nutter macrumors 6502

    Joined:
    Mar 31, 2005
    Location:
    London, England
    #5
    I know exactly what you mean. I had the same problem while I was learning, and the more Cocoa material I covered, the more confused I became.

    This all cleared up for me when I took a step back and learned about the language (C/Objective-C) in detail. Once you know exactly how the language works, Cocoa becomes less magical and mysterious.

    I would advise you to get Programming in Objective-C by Steve Kochan, and work through it before you start on the Hillegass book you just bought.
     
  6. yeroen macrumors 6502a

    yeroen

    Joined:
    Mar 8, 2007
    Location:
    Cambridge, MA
    #6
    For game and game engine development, it's all C++ and OpenGL (or DirectX on Windows). Eventually, you'll also have to be comfortable with linear algebra, i.e. matrix math.
     
  7. wrldwzrd89 macrumors G5

    wrldwzrd89

    Joined:
    Jun 6, 2003
    Location:
    Solon, OH
    #7
    SQL is important if you're working on any sort of database, since SQL is the primary way of communicating with most databases. For example, a web-based game that uses PHP for the front-end scripting and MySQL for the back-end database would be far easier to make if you have SQL experience.
     
  8. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #8
    thanks for all the help so far!
    @ nutter - I'm trying to avoid buying books if possible, the only reason I'm getting cocoa programming for the mac os x is because my dad has an older version so he knows it is a good book... unfortunately that one is a bit outdated and when I tried using it things were changed too much. I will definitely look into that book though, thanks for the link!

    @ yeroen - ugh... 3D. in my limited experience 3D is a bit much for me to think about right now. Strategy is my all time favorite genre, so at least at first my goal is simple strategy. My favorite games are the simple graphics that allow for massive strategy, having hordes of soldiers or whatever. I'm also trying to avoid C++ at least for now, my goal is C and cocoa/ObjC. On a brighter note I know how to use blender3D as a noob, so at least I'm familiar with 3D models and such.

    @ wrldwzrd89 - Internet is another thing lower priority wise.

    Here is my roadmap so far just to make it clear.

    C
    ObjC/Cocoa
    C++ or 3D or both
    Internet

    edit: I forgot another thing... my ultimate goal platform wise is portable platforms. I have always loved palms, though I'm through with them now and I think the iphone and itouch are the future and I love them anyways... so that's the platform I'm planning on using/developing for.

    Thanks again for all the help so far!
     
  9. adrian.oconnor macrumors 6502

    Joined:
    Jan 16, 2008
    Location:
    Nottingham, England
    #9
    Not at all! However, I think you'd be amazed at some of the clumsy English I come across. I don't think many programmers realise the importance of clarity and readability. That applies equally to code-comments too.

    I think SQL is an awesome technology to have in your toolkit. SQLite (part of the iPhone dev kit) could even provide a nice engine for storing all of your data in a large-scale mobile strategy game - it'd give you a way of managing more data than the iPhone alone could ordinarily manage in a 'classic' application (one that kept everything in memory) and also let you persist the state of the game while the app isn't running. But you're right in so far as it probably wouldn't help you much right now. Do bear it in mind though - it changes the way you 'see' data.

    yeroen is right that a career in game development will require C++ and an understanding of the kind of maths used in 3D (matrixes, trigonometry). If you want some sample code to wallow through, try downloading and compiling the Irllicht engine and its samples. That said, a lot of future games are going to be heavily scripted (in terms of programming, not story line - games will always be shallow and badly written ;)) in Python and other dynamic languages.
     
  10. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #10
    speaking of comments... I really gotta work on my comments I never use comments :D
    I guess SQL will be in my future then with any luck... I'll definitely look into that when I have a chance.
    Can someone tell me in short what C++ is? I know it's a "superset" of C, but since I'm still learning what C is, I'm not sure what C++ adds. It seems to me C should be able to do anything as long as it has the right libraries...
     
  11. wrldwzrd89 macrumors G5

    wrldwzrd89

    Joined:
    Jun 6, 2003
    Location:
    Solon, OH
    #11
    C++ is C, with object-oriented programming support (OOP). I strongly suggest you learn it - it'll prove useful for larger projects, making them easier to manage.
     
  12. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #12
    This is more of a general comment on game development and SQL.

    For game development, and I could be way off here, but the way I understand it the hard math is in the physics engine and rendering engine/graphics libraries. The higher level code will generally be making calls to these subsystems. So you could likely work on a game without having to be at the same level as those that write the low-level systems. If you *want* to be the one working on the low level systems, than the math, and OpenGL, etc. are extremely important.

    Next, regarding SQL, if you are the only developer on a small system, you will be writing a lot of your own SQL. Once you're on a larger team, on a more complex system, hopefully there is some form of abstraction from the database and the actual queries are automatically generated or more advanced queries are written by a DBA. I definitely don't think it would ever hurt to know SQL, but if you are a "cog" in a bigger project you are unlikely to be writing a lot of your own SQL. I'm not familiar with ORMs for Cocoa, and I don't know if you'd be able to use them for the iPhone anyway, so for that purpose you probably will have to write your own SQL.

    -Lee
     
  13. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #13
    Then why do people say C++ is so hard? I'm familiar with OOL's. I could certainly use MORE experience with them, but it doesn't sound that hard then.

    3D and SQL are waaaaay beyond me right now. For now I'll work on C and ObjC/Cocoa and possibly C++. So does anyone have any good links? Here's my links in case any of you are interested.

    http://www.cocoalab.com/
    http://osx.hyperjeff.net/reference/CocoaArticles.php
    http://www.cocoadev.com/
    http://www.cocoadevcentral.com/
    http://www.cocoabuilder.com/archive/bydate
    http://www.stepwise.com/

    I got all these from the last chapter of cocoalab's excellent pdf tutorial. I made my first working cocoa app with it, I had problems with my programs from other tutorials.
     
  14. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #14
    Because of the complexity of some of the programming concepts involved. You can write simple C++ programs but it is capable of an awful lot more.
     
  15. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #15
    so on the surface it's just OO but you CAN make it more complicated than that?

    It seems to me C should count as an OO... you can make objects using struct.
     
  16. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #16
    There is more to object orientated programming than just objects. But, yes it is possible to hack a pseudo OO program in C using structs, pointers and function pointers (as well as a few other things). It would probably just be easier to use C++ though.

    I was talking more about things like metaprogramming.
     
  17. yeroen macrumors 6502a

    yeroen

    Joined:
    Mar 8, 2007
    Location:
    Cambridge, MA
    #17
    In some sense, you're correct. For example, Xt/Motif (whatever that is, right?) is an 'object oriented' widget set and API that's entirely in C. But in Xt/Motif, and in C, the OO aspect depends on programmer convention, i.e. it isn't enforced by the language itself.
     
  18. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #18
    ok up until now I've been able to get away with my fairly limited programming dictionary... but what's metaprogramming, Xt/motif, and API? API is only a little familiar I've heard of it...
     
  19. yeroen macrumors 6502a

    yeroen

    Joined:
    Mar 8, 2007
    Location:
    Cambridge, MA
    #19
    metaprogramming = programs that write programs, e.g. "template metaprogramming" in C++ or more mundanely, any compiler

    Xt/Motif = A GUI widget set and API (=application programming interface) for the X11 windowing system. I wouldn't linger over it too much. If you ever need to write GUI apps on X11 (for Linux, BSD, OS X), you'd use Qt or GTK these days, and probably something entirely different 10 years from now when and if you do this professionally.


    Wikipedia is a very good resource for all of this (unlike G.W. Bush, or strangely enough Olivia Newton John, the articles for the above topics aren't too controversial and so are not subject to an edit war).
     
  20. adrian.oconnor macrumors 6502

    Joined:
    Jan 16, 2008
    Location:
    Nottingham, England
    #20
    If you enjoy programming I don't think there's ever a need to take a job where you are just a cog. Besides, those kinds of projects so often fail, or at best grind to a disappointing end, and that's no fun. I understand that a lot of commercial game programmers are treated like cogs, but that's not my field so I can't say.

    As for the split between business programmers and DBAs, I personally believe that a good programmer will almost certainly write better SQL than a good DBA. A DBA's strength should be their ability to maintain the database in a good clean, secure and (hopefully) very responsive state. I'm pleased that in the last few years I've seen this shift take place - a (big) company I recently worked at have a large team of DBAs that no longer write SQL at all (unless specifically asked to). Looking at legacy code that they now have to maintain, this change is a Very Good Thing.

    Sorry to drag things so far off topic...
     
  21. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #21
    it's fine this is interesting :)
    If I ever join some company in the computer world of my own free will and not because I need work, it will be pixar or apple. I don't want to be treated like a cog in any other company :D otherwise I want to try and make it on my own or with my own small company. Yeroen have you ever joined in one of those editing wars? They can be fun :p

    edit: And programming is one of my few true passions, with flying, piano and to a lesser extent 3D modeling.
     
  22. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #22
    Now you've really got me interested...

    -Lee
     
  23. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
  24. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #24
    What a difference a comma makes. I was legitimately wondering what "flying piano" was. :)

    -Lee
     
  25. liptonlover thread starter macrumors 6502a

    Joined:
    Mar 13, 2008
    #25
    hehehehe case and point, good grammar and english matters. It made sense when I typed it but when you pointed it out I saw its double meaning lol.
     

Share This Page