learn Java & ObjectiveC at same time??

Discussion in 'Mac Programming' started by ste1989, Apr 18, 2010.

  1. ste1989 macrumors member

    Joined:
    Jun 11, 2009
    #1
    Hi, Im currently in high school.
    I'm determined to learn to program. Tried once before reading through about first 100-200 pages of the programming in objective-c book and learn c on the mac book.
    However from then sort of stopped doing it due to school restraints.

    Now though, I have exams soon, then a long summer break for about 2-3 months. In this time I want to begin learning, and maybe even create a basic yet functional app depending on how fast i pick it up..
    Therefore, since I have already read a bit on C and then later Objective C, I was planning on learning that.
    Advantage of course that macs use this for programming.


    HOWEVER!!!! In september, starting computing in school and will be learning java on windows PCs (Schools choice, not mine).

    What do you think I should do out of these options and why.
    1. Learn C over summer, and spend a while making programs JUST C, not objective-c
    2. Move Straight onto objective C again having read about 100 pages of objective c book (kochran one I think)
    3. Start Learning Java, in preparation for school computing starting in september. (which books/resources if you think this one)
    4. Do none over summer, wait until you learn java from a teacher in school.


    Thanks, think I covered most stuff.
    PS. If you want to comment "try searching", "already asked before" etc, then don't bother, each persons situation is different, and nobody is forcing you to comment on this thread.
    I understand it might be annoying, but you can just ignore thread and then as soon as some people do reply kindly, the thread will be closed and you wont have to see it again.

    THANKS :D
     
  2. Mernak macrumors 6502

    Joined:
    Apr 9, 2006
    Location:
    Kirkland, WA
    #2
    How much do you know about the programming class in your school? I would be guessing that it would just a pretty introductory class, so you could probably learn Java just fine there, but probably not getting into many advanced features.

    I would personally suggest not learning c, since c++ and Object Oriented design patterns are what you would more likely see in general (and in your class). C++ is a very powerful language, but slightly more difficult than the alternatives (based off of my limited knowledge of Objective-C)

    Going straight to Objective-C is very doable, as long as your book explains the basics and doesn't assume that you have had previous programming experience (I have the Hillgrass books, which is pretty good, and I have heard Kochran is also very good). I would suggest this if you want to program just for Mac, not doing multi-platform or Web programs.

    Learning Java is never a bad idea, it's a very useful language with lots of functions and it can be used for a lot of stuff, and can run on any OS and on the web. Honestly, if you are interested in Java, and spend just some time with it over the summer, you could probably get fairly far ahead of the class (which would probably make it kinda boring, unfortunately). As for recommendations, I would suggest anything from O'Reilly (Learning Java pops into my mind, it's kinda pricy normally, but you can get it used off of amazon cheaply, or Borders has really good coupons sometimes)

    If you are interested in programming, I would not do number 4. The worst that can happen if you do program over the Summer is that they will tell you easier, faster ways to do do things and point out what you could do better.

    You could also start with another language, I would suggest Python if you do. It's has a fairly low learning curve (definitely lower than Java or Obj-C), but is still very powerful and can be used for multi-platform and Web programs.
     
  3. ranguvar macrumors 6502

    Joined:
    Sep 18, 2009
    #3
    Some things to keep in mind:

    - C, Java and Objective-C share (pretty much) the same syntax. This includes many things like basic arrays, loops, if-statements, functions, semicolons, etc. Once you know them in one I'd say don't start learning a language like Python with a different syntax (like the poster above me).
    - C is a procedural language, Java and Objective-C are object-oriented languages. With that follows a different approach to solving problems.
    - Objective-C is a superset of C. Both languages share important concepts such as pointers and memory management, which Java does not have.


    I myself know Java, C and Objective-C (though I'm far from being an accomplished programmer). I learned Java first, in school. Later, I learned C and Objective-C with books. I don't think that it would have made a big difference to have learned the languages in a different order.

    If you really don't know where to start, I'd say start with Java. You can start with the basics (no objects), then gradually move on to understand concepts like object-orientation. Java has the advantage that you don't have to care about pointers and memory management, so you can concentrate on more important things first.

    Cheers!

    P.S.: Don't wanna make you look dumb with my post, I just don't know how much you already picked up with reading Kochan's book and stuff on the internet so far :)
     
  4. flyingturtle macrumors regular

    Joined:
    Apr 7, 2010
    #4
    Do what you feel like, whatever keeps you motivated. What do you want to learn more, right now?

    If your current passion is Mac programming, then learn C/Objective-C and the Cocoa Framework, and make some applications. Have fun! That is the main point.

    When your class starts up in September, then start learning Java. You'll have a class to keep you motivated and the programming concepts and experience that you gained from Mac programming will be valuable and you'll learn Java more quickly since you've already learned the fundamentals of programming.

    Only the first programming language is the hardest. Once you know the basics, then you'll be able to learn other languages quickly.

    The hardest part, as your know, is to keep yourself motivated. So learn what you think is going to be fun for now.

    I don't think it's necessary for you to study Java now if you are already planning to take a course as it's probably a beginner class. Java can be overwhelming for some at first because you have to learn programming basics AND object oriented programming, but if you already have a solid understanding of programming basics with Objective-C and know how to use a framework like Cocoa, then when you learn Java, you won't be overwhelmed as all you need to know is the syntax, which is similar to C, and Object Oriented Programming concepts.
     
  5. mdatwood macrumors 6502a

    Joined:
    Mar 14, 2010
    Location:
    Denver, CO
    #5
    I would start with C because the language itself is the simplest of the 3. You can learn a lot of basic programming concepts without cluttering them up with OO right out of the gate. Also, nearly everything you learn in C is transferable to obj-c and a lot of it is transferable to Java.

    Unlike ASM, C is also an approachable language that builds a direct bridge from the software a programmer writes to the hardware that executes the program. IMHO, understanding this bridge builds a foundation that makes it easier to learn more advanced topics later on.

    With that said, I agree with the poster above that said do whatever one keeps you motivated. Remember, at the end of the day you're writing programs to solve a problem, so find a problem that interests you and solve it. :)

    *EDIT*

    And if you really want to get a leg up for school, start building the standard data structures and searching algorithms in whatever language you pick to learn. I can promise those are what you'll be coding at least by the end of second semester :)
     
  6. chrono1081 macrumors 604

    chrono1081

    Joined:
    Jan 26, 2008
    Location:
    Isla Nublar
    #6
     
  7. winninganthem macrumors 6502a

    winninganthem

    Joined:
    Jun 10, 2008
    #7
    I would wait until you learn from a teacher in school. Programming is a very difficult discipline and there's more to it than just learning the ins and outs of a particular language.

    For example, you have to know common conventions and practices that programmers follow (such as avoiding the use of global variables, creating subroutines to reduce repeated code, creating clear comments, etc), and paradigms (such as structured as opposed to object-oriented programming, which were mentioned a couple posts earlier).

    I tried teaching myself Java thinking that I'd pick it up quickly ('cause I already knew HTML, how hard could it be, right?) before I entered high school but I didn't have the discipline to follow through. I needed an instructor to guide me and teach me the principles correctly.

    Java vs. C as a 1st language
    This topic is very controversial, as there are strong believers in both camps. Java as a first programming language is good because it teaches you the OOP style early on. It is considered a "high-level" programming language, meaning that it lets you perform a lot of tasks without really worrying about low-level machine tasks, such as allocating memory and dealing with registers. This is very convenient for programmers, but this is also exactly the reason why some people advocate C over Java as a first language.

    C is very important language to know for any programmer because it serves as sort of a half way point between Java and assembly language in terms of abstraction. Assembly language is very difficult because you have to move bits around and worry about where your memory goes in order to accomplish seemingly trivial tasks in Java like printing out a string. C gives you access to low-level functions if you want it, while Java doesn't allow you to get your hands that dirty.

    The advantage of programming at the low-level is that you learn how the computer deals with instructions and allocating memory and you create programs that are as efficient as possible. Java gives a programmer a very high level of abstraction, but that comes with a price: Java programs are often less efficient than programs written in C.

    For that reason, many programmers believe that new programmers being taught "the Java way" first are being coddled and learning how to do things messily.

    I personally don't think there's anything wrong with learning Java as a first language, however, if you consider yourself to be a serious programmer, you cannot be afraid of dealing with things at low-level. Be aware also that Objective-C and iPhone programming requires you to deal with pointers (a concept you learn when you work with C) to some extent.

    TLDR version: Wait til you have an instructor. Java is ok as a first language. Programming is more than learning languages; it's a way of thinking. Don't think in terms of the programming language, think in terms of what you want the computer to do for you. Once you start thinking that way with Java, you'll find yourself able to adapt to any language.
     
  8. shoaibbarki macrumors newbie

    Joined:
    Mar 20, 2014
    #8
    learning objective C after Java

    hello programmers!!!!!!!!!!!!!!!!
    Nowadays Im learning Java,and Im also interested in Objective C,should I learn objective C after Java....
     
  9. firewood macrumors 604

    Joined:
    Jul 29, 2003
    Location:
    Silicon Valley
    #9
    The days of C were said to be numbered decades ago, and will likely be said to still be numbered decades from now. It's like the people who said the days of Apple were numbered, over and over again, for decades.

    According to tiobe, straight C's popularity is down a few percent over the past decade. But given that C is a proper subset of Objective C (the fast efficient subset), it's popularity might continue to grow into the future.

    Learning both Objective C and Java the same year will likely make one a better programmer at both (since you will be able to directly experience their strengths and weaknesses.) I would also learn at least one interpretive language as well.
     
  10. ArtOfWarfare macrumors 604

    ArtOfWarfare

    Joined:
    Nov 26, 2007
    #10
    I wouldn't suggest learning a language just for the sake of learning it - learn it for a reason. Have a project that you want to make that you can only make with Objective-C. Projects that fall into that category are apps that utilize Cocoa on OS X or a native iOS app.
     
  11. robvas macrumors 68020

    Joined:
    Mar 29, 2009
    Location:
    USA
    #11
    Definitely agree with this.


    I also think Python or Javascript make a much better first language than C, C++, Objective-C, or even Java. Especially a better one than C.

    It's hard enough to learn functions, loops, algorithms, logic, etc when you have to worry about datatypes and pointers and memory allocation to worry about.
     
  12. hiddenmarkov macrumors 6502a

    Joined:
    Mar 12, 2014
    Location:
    Japan
    #12
    I would not have 4 as an option.

    Over the summer you could lazily learn some programming. Lazily in the sense of not burning all your summer days slaved to you keyboard but taking some time here and there to work some coding exercises.

    If only to give several tools a go. Since you have the summer break you have a fair amount of time to download and try out say text editors more in depth so you pick one that is you, then go into more advanced items in the editor to make it all home like.

    This a task better suited when you have lots of freetime. I know with my windows to mac shift but a busy real life making the time to pick a more mac based editor was a pain.

    If looking for free, fun, and useful I will 2nd a recommendation I saw elsewhere for ( http://learnpythonthehardway.org/ ) .
    It does not like many even intro stuff weigh you down at first with excessive details and gets you jsut coding from the start.

    In time you need and get the details. This author's premise, to me it sees anyway, is to actually get you in the race car and have a fun spin around the easy course on a race track. The days will come when you have to know how to memorize a whole track to know how to prepare for turn 5's hairpin not even hitting turn 4 yet to use an analogy.
     
  13. lee1210 macrumors 68040

    lee1210

    Joined:
    Jan 10, 2005
    Location:
    Dallas, TX
    #13
    The post "hello programmers!!!!" was made recently. Everything else is 4 years old.

    -Lee
     
  14. GuyNamedRitchie macrumors newbie

    Joined:
    May 17, 2012
    #14
    Let's keep the thread going!

    Hi All,

    I am very grateful that I came upon this thread (thanks to google). I am a high school teacher who is trying to learn some programming so that I will be able to teach more technology in my classes. This thread has been very helpful to me with all contributors offering some wonderful personal advice.

    I have been having fun and learning a lot of the basics using codecademy.com for HTML. The students that I have put onto it seem to be getting a great deal out of it too.

    Are there any good sites like this for interactively learning Objective C? I would love to get my students into creating some very basic iOS programmes.

    Thanks all!
    Ritchie
     
  15. 960design macrumors 68000

    Joined:
    Apr 17, 2012
    Location:
    Destin, FL
    #15
    There are sites that obfuscate the actual code and teach the algorithmic portion of development, which is not a bad starting place for young learners.

    I've been a programmer since I was 10, so 32 years now. I learned Java when it was called Oak. I have a programming club that allows freedom to develop at their own pace without curriculum getting in the way. I just provide the tools and assistance.

    Some of the tools:
    Greenfoot ( at greenfoot.org amazing at teaching the fundamentals of object oriented design in a gamey way, students will be modding and creating a game the very first day ).
    Cocos2d ( any book, this teaches gaming on a mac or iOS platform, here students will be developing fully deployable games and applications ).
    Java and C++ for the students that quickly get basics from above and feel limited by the software.

    I'm more of a facilitator instead of a teacher though. Good luck. I've found if you give them the tools and let them free, they will amaze you.

    PS. forgot to add a link ( I haven't tested this one, just a quick search ).
    http://www.raywenderlich.com/61391/how-to-make-a-simple-iphone-game-with-cocos2d-3-0-tutorial
     

Share This Page