Steps for a Successful Mac Programmer?

Discussion in 'Mac Programming' started by j0hnnys, Aug 18, 2010.

  1. j0hnnys macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #1
    So hi everyone! Just an introduction and a help thread I'm making here. This thread is sorta long so if your patient and kind to help...proceed!

    ---Introduction---
    -First off, let me introduce myself. I'm new to the mac community and wish to pursue being a software engineer one day (very determined!). So far, I'm in high school and will be a senior next year. When I started programming, I was just only interested in everything related to windows programming and etc. Aside from when I had my iPhone (which got jacked), Macs always seemed dull to me because:
    1) My school is filled with iMacs (it's pretty much in EVERY room)
    2) I thought it could run less games (before I found out about boot camp)
    3) Never owned a mac.
    -The only place where you will find a windows machine at my school is in my computer science class

    ---How I became interested in Mac?---
    -But ever since my brother got his macbook pro, my vision of macs seemed to change. I mean, just the sexy look of it (yeah, i said sexy) and seeing it load up OS X seemed to just wipe away just about all my interest in windows. Also GarageBand seemed very useful. I decided that I shouldn't judge mac because it seemed dull and its ability to run less games. After that, I spent the whole day researching and googling about mac programming, xcode, objective-c, and etc., but I just mostly found flame wars about macs sucking and windows being better :(. Soooooo.....I wanted to hear it from the special MacRumors community of you all.

    ---My programming experience so far?---
    -As of right now, I'm continuing learning C++ as my first programming language since it was used as in my Intro to Comp. Science class. Next year I will be taking A.P. computer science (remember, it's high school) which will cover Java and assume we know the basics of programming (loops, string, etc.). Because I had no interested in Java at the start of the summer, I decided to boost my knowledge in C++ by downloading Microsoft's Visual C++ compiler and reading Herbert Schildt's C++ Beginner's Guide to cover anything that my teacher didn't cover (and because an older friend told me some of my Comp Sci teacher's solving methods were out of date).

    ---As of right now...---
    -I'm enjoying my summer and going through Schildt's C++ beginner book (not really going through it fast). I hope to be proficient in C++ and hopefully have it help me when I take college courses. I know Objective-C is one the main languages for Mac, but I looked up all the courses for all the colleges around my place and there's no Objective-C courses, so I'm looking to get a book and learn it on my own, expecting my knowledge in C++ will allow me to easily be proficient in Objective-C (which I'm not sure of). I'm pretty interested in Java, too due to its big community and popularity.

    --What I want to do with programming?--
    -Hopefully work for Apple one day? (Unlikely, but whatever keeps me motivated)
    -Work with a team to create desktop software & programs. (Kinda but not really interested in those web development, but who knows, things may change)
    -Creating games would be nice, too.

    ---Now that you know about me and what I'd like to do...---
    **I know many people ask about what's the best language and etc. And the answer always comes out to be "It depends". I'm going to sorta ask the same thing except I already put info on what I'd like to do, which will hopefully help narrow down on the languages.
    --Questions--
    1) Is C++ a good first language to learn for programming in Mac along with Objective-C? (I'm willing to change to Java or C#)
    2) Will knowing C++ allow me to easily learn Objective-C? What about Java?
    3) Is C++ or Java (or any other language) better to start off for ME?
    4) What other languages are very good/useful for mac programming? (I'm hoping Python, because I'm really interested in that, too!)
    5) Are there more mac or windows progammers in demand?

    **Before submitting answers, please know that I will not have a Mac (definately need to get one...) to really practice on (my bro will be dorming this year, so no macbook pro around :(). All I have is a windows computer and macs at school (which is filled with security features that limits you to only school related stuff). I'm WILLING to learn and study the best languages for me. Let me repeat, I'm willing to learn the best language FOR ME. (Sorry if I exaggerated)

    And that's pretty much everything. So thank you for taking your time to help a newcomer and I appreciate any helpful answers!
     
  2. UpQuark macrumors member

    UpQuark

    Joined:
    Jan 8, 2002
    Location:
    Zushi, Japan
    #2


    ACtually, becoming very proficient in C++ will help you learn Obj-C. Obj-C is a superset of C( C+,C++) and much of the syntax of C++ is simular to Obj-C. Infact, via Xcode, you can write code in C++ create a working mac app. Much of the iPhone coding is done in C++(well, not much, but quite a bit - sound handling in AudioToolBox for one) There are some strong differences too - but I suggest books from Apress on Mac/iPhone programming. Once you learn obj-c on the mac, you can also write iPHone apps. Same language.

    Besides learning and writing apps in C++ for Windows, keep an open mind. Some hardcore coders have become very proficient with one Language: " THE ONLY LANGUAGE " ;) And to them, every other language is crap. Take a look at the VI vs EMACS warfare.

    Any coder worth his/her salt will tell you it isn't the tool that makes the application great, it is the coder using the tool.

    Remember that Android apps are done in Java... :)

    Lastly, the very best thing you can do is to keep at it, in whatever language you choose. There are lots out there and lots of applications of those language! It is an exciting time for you!

    Good luck!

    Neil
     
  3. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #3
    First off, congratulations. And the Mac is a great choice, you can do anything with them. Traditional UNIX back end, you have 3D graphics hardware if you want to get into OpenGL, XCode comes with the system...

    Next I'll start by saying explore any language you can. C, Java, C++, Objective-C, PHP, Perl, Ruby, Python, Erlang, Haskell, Pascal, Visual Basic... Every language has a purpose. Programmers can be very opinionated people, so don't waste too much time arguing over which language is 'best', but do look at the things that make a language 'good' or 'bad'.

    How do you get to be a good programmer? By programming! So write as much as you can. For every little thing that you do, try to write a program that can do it for you. Try to clone programs, or parts of programs. Try programming a game, even a simple card game can be very complicated when you start to break it down.

    Personally, I think Java stinks. It used to be, you'd start programming in BASIC that came with your computer, and as you started to reach limits, you'd branch off into C or Pascal (we're talking DOS in the early 90's and before that). Then you'd end up using whatever you needed to go farther than that.

    C is a very powerful language but it isn't for writing general programs, and it can be very difficult to learn. These days it's probably best to start off with Python or maybe even Javascript. Most people find it useful to start off with something that can put stuff on the screen right away, keeps them interested.

    You'll want to get a good understanding of C before you jump into C++ or Objective-C. Buy the K&R book. Schildt's books are not that highly regarded. 21 days/Dummies/24 hours books are also dangerous, they may seem like they are teaching you quickly, but you learn a lot of things 'wrong' and they leave out lots of details.

    Once you start getting the hang of C, you can go wild on the Mac. There are a number of books at your local bookstore (or Amazon or eBay) for getting started with Mac programming. As a plus, most of those skills are going to transfer straight to the iPad/iPhone so you can make stuff to show your friends (and possibly make a couple bucks).

    On a side note, you also should check out software licensing, especially the BSD and GPL licenses. Computers have long been based on code sharing and I personally believe it should be kept that way. Also, software patents are just plain evil.
     
  4. GorillaPaws macrumors 6502a

    GorillaPaws

    Joined:
    Oct 26, 2003
    Location:
    Richmond, VA
    #4
    I would highly recommend getting a Mac mini refurbished or used for cheap if you want to learn Mac development (you might have to mow a few lawns). You're going to want to learn Objective-C for sure, but C++ is still required for some API's.

    If you feel reasonably confident with C++, you might want to skip buying a book on Objective-C, since Apple's docs on the language are pretty good if you're already familiar with C programming. If you still want a book, Kochan's "Programming in Objective-C 2.0" is the one to get (it will start off very slow for you since you've already got a solid Object-Oriented Programming foundation with C++). The second half in particular is a nice introduction to Apple's Foundation Framework which constitutes the bread-and-butter of most Cocoa apps.

    Python is a great language that comes pre-loaded on every Mac. There is a language bridge called PyObjC that you can use to write native Cocoa apps with Python, although you really need to be very proficient in both Python and Objective-C to make it work properly from what I've heard (so PyObjC probably isn't the best starting place). There is still a lot you can do with Python including creating web-services that your Mac apps interface with, as well as scripting.
     
  5. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #5
    Thanks Neil, robvas, and GorillaPaws for the info. I appreciate all your help.

    -I read from many sources that it's better to just go straight to C++ rather than learning C first. Even Mr. Stroustrup himself says so. So I'd decided to stick to C++ rather than learning C first.

    Also, to clarify experience with C++, I mostly learned what any person who's taken an Intro to C++ class: Strings, Arrays, Loops, Problem Solving. Just simple programs dealing mostly with numbers. I'm reading the beginner's C++ book just to cover any basic steps my teacher didn't cover. Remember, I'm still young (17 years old) and inexperienced compared to most people here. :)
     
  6. UpQuark macrumors member

    UpQuark

    Joined:
    Jan 8, 2002
    Location:
    Zushi, Japan
    #6

    I think C++ is the way to go.

    http://www.cprogramming.com/tutorial/c-vs-c++.html

    But again, it is up to you, really. You cannot go wrong with learning any language as there is always another to learn and try!
     
  7. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #7
    Definately right, since I'd like to learn many languages! (Actually, I have my own list of languages I'd like to learn one day :D)
     
  8. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #8
    Then what is actually a good C++ book for beginners? I definitely wouldn't want to miss out on lots of details.
     
  9. Peter Maurer macrumors member

    Joined:
    Oct 9, 2008
    #9
    Don't get too hung up on languages and the specific quirks they may have. The one important step to become a programmer, IMHO, is thinking like a programmer. And this is something that's way more abstract than learning a given language and all its vocabulary.

    Programming languages are very different from spoken languages inasmuch as knowing all the words by heart is significantly less important. You just need to know what you want to do and where to look up stuff you can't remember. You'll also find that programming languages just fade away with time (the first language I learned was BASIC, and Pascal is still one of my favorite languages), so getting overly attached to one of them doesn't make sense anyway.

    My advice (*) would be to concentrate on the problem solving aspect, along with problem finding and problem shaping, of course. Do so with any language that feels comfortable and is easy to work with right now, explore new languages when given the chance, and you'll be fine.

    (*) Disclaimer: I never took computer sciences or anything like that (went to med school instead), so my approach might be different from what trained programmers will tell you. I still manage to make a living by programming for Apple's platforms, though.
     
  10. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #10
    The C++ Programming Language is a good book and the introduction chapters I have read have been surprisingly clear.

    You might find it a little tough. Although frankly it is no harder than K&R which was recommended earlier.
     
  11. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #11
    I know, but I read in a couple of reviews that it's for programmers who know the fundamentals of C++ already. And plus, that book is really expensive :(.
     
  12. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #12
    -Good advice, especially from someone who has never taken a Comp Sci class.
    -It takes me back to when I asked my Comp Sci. teacher, "What programming language should I learn in the future?" Her answer was a wise and very good answer. She told me "None. What's most important is that you learn HOW to program & how programming works. From there, you can pick up any programming language book and learn any language from there." That is why I chose to learn C++, because I know C++ is huge and it will cover many aspects of programming that other languages might not do.
     
  13. MorphingDragon macrumors 603

    MorphingDragon

    Joined:
    Mar 27, 2009
    Location:
    The World Inbetween
    #13
  14. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #14
    eBay! Programming books can be very, very expensive. $80 at a bookstore for some. But you can usually get older books for $1-$5 on eBay.

    The reasons I said to learn C before C++ are:

    1. You can then see how C++ builds upon C
    2. You won't be distracted by objects, etc
    3. You will learn dynamic memory allocation and other basics
    4. Learning to use stdio functions instead of iostreams is arguably harder, which will make you a better programmer ;)

    But as you can already see, everyone is going to have their own opinion on what you should do or learn!

    Bruce Eckel has his C++ books online, for free:

    http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html

    Here's an intro to Objective-C:

    http://www.otierney.net/objective-c.html

    Here's the C FAQ:

    http://c-faq.com/
     
  15. ShortCutMan macrumors member

    Joined:
    Aug 8, 2005
    #15
    Once you get the grips with the basics of programming then you should start expanding your knowledge base. Over the years I have learnt a lot of different programming languages and used a variety of different API's. Learn to be adaptable.

    I just got my first job as a software engineer in a mid size company by showing this trait. I was thrown neck deep in huge libraries of complicated code along with having to learn how to utilise Qt as a GUI library. Being adaptable was very useful in this environment! :)
     
  16. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #16
    Not really. It is an academic book but it explains things well. Plus you can always ask questions here (quote the page number) :).

    Its expensive if you just look at the price, but the book explains everything so you save money by not having to buy a second book.
     
  17. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #17
    The bad thing about a lot of HR departments, is if they are looking for a programmer "with 3 years experience with language X", that's all they are going to take.

    They would rather hire someone who can't program for ****, but has been using language X for a few years, than a very good programmer who hasn't used language X yet, but knows languages W, Y, and Z, and will pick language up in about 90 days on the job.
     
  18. Snips macrumors regular

    Joined:
    Jan 9, 2008
    Location:
    Suffolk, UK
    #18
    Start with something simple, JavaScript is a pretty good starting place - easily accessible, and has many aspects that are expanded in other languages.

    Next, step up to C, and learn about pointers (and what can go awry) and managing memory allocation (and what can go awry).

    By this time, you'll be becoming familiar with libraries - when there's probably an existing library function you can ride off, and when you'll need to "roll-your-own".

    Then, move to C++, or Objective C. Object-Oriented languages require a slightly different mindset, but I would say you would want to be comfortable with pointers and all, before complicating matters further.

    Follow a steady learning curve, jumping in with C++ at the outset will likely take longer, and be a more frustrating journey.

    If you're as serious as you say you are, then putting in the required legwork won't phase you.

    Once you've got true experience of several languages, then you'll understand how they're mostly variations on a theme and won't be phased.

    Steer clear of languages like Lisp, and Perl for now, as they're very interesting, but not something you need to look at until you've got more experience.

    Being successful will take time and effort. Try and solve your own problems, as that way you'll learn much more. Expect programming to be a series of sprints between the next tricky problem or bug. When working on programming puzzles, be prepared to throw away your current implementation and start again - the value you're taking forward is what you learnt, not any given implementation.

    Be conscious of design patterns: like natural language, there's near-infinite number of ways to say [implement] the same thing, but design patterns represent the best-practice, which is tried and tested. Learning from those examples will keep you busy enough, before you're ready to invent your own ;)

    Good luck!
     
  19. MorphingDragon macrumors 603

    MorphingDragon

    Joined:
    Mar 27, 2009
    Location:
    The World Inbetween
    #19
    I'd be more tempted to say start with python than javascript.
     
  20. chown33 macrumors 604

    Joined:
    Aug 9, 2009
    #20
    Sometimes learning a simpler language is better for gaining experience. It makes you think more carefully about how to solve things, where a huge language would have multiple ways of doing with several different library functions. Also, learning simpler languages is simpler.

    For example, decomposition and composition are fundamental skills, but it's easy to find people trying to learn programming that have no idea what those things are, or that they lie at the heart of it all.
     
  21. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #21
    Okay guys, how about this, which language(s) or steps to take would better lead me to Objective-C (can't really practice Obj-C right now b/c I'm not gonna have a mac anytime soon). My main goal is to be proficient in Obj-C.
     
  22. Cromulent macrumors 603

    Cromulent

    Joined:
    Oct 2, 2006
    Location:
    The Land of Hope and Glory
    #22
    C then Objective-C. Although you could probably do fine doing Java then Objective-C or Python then Objective-C.

    Just about any C like language will do you fine. C++ is probably the hardest of the lot to start off with though.
     
  23. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #23
    You can practice Objective-C on Linux all you want. Or, install GNUstep on Windows/Linux.
     
  24. j0hnnys thread starter macrumors member

    Joined:
    Aug 18, 2010
    Location:
    California
    #24
    I have Ubuntu and I'm really confused on how to use the gcc compilers...Can you show me step by step? (And how do you use GNUstep for windows?)
     
  25. balamw Moderator

    balamw

    Staff Member

    Joined:
    Aug 16, 2005
    Location:
    New England
    #25

Share This Page