Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

chili

macrumors member
Original poster
Oct 16, 2009
35
0
Hey guys i'm 14 years old and i'm a pretty big mac/iphone h4x0r.

I have decided to start to learn programming but i'm a total n00b.
I've made some cool applescript applications but now i wanna start for real.

Should I learn C++ or Java? I know Java os more object-based and easier to work with but c++ is just a language everybody should know.

Also, do you guys know a good book that can get me started? Oh, and also what app should i use? I know theres eclipse and also netbeans.

PLEASE HELP I NEED TO KNOW WHERE TO START!!!!!

P.S. I don't have anyone who can help me except for my dad who knows pascal and is a pretty big g33k himself... :apple:4life
 
You should start with C, then make the choice for moving to Objective-C or C++.

If you plan on developing on the Mac platform, then Objective-C is the most obvious choice.

Java and C++ are both based on C, it is harder to learn either without some fundamental C knowledge.


Pickup the book "Learn C on the Mac" , best book there is in my opinion.
 
Wow thanks!

Thanks man, i'll order the book as soon as i can..

And what app should I use to do programming? I've used xcode to make an objective-c/cocoa application but only via Interface Builder (fail).
I've also made a couple of widgets in dashcode...
 
Stick with XCode. It has templates to setup a C or C++ project. You can then just type the examples out your book, click build & run and off it goes.
 
First advice, stop with this 'n00b', 'h4x0r', 'g33k' crap. Leet wasn't even cool when it started long time ago, and neither is it today!

Second, there is no reason not to start with object orientated programming right away.
It's much easier to learn it straight ahead.

I don't recommend learning Java in case that you want to learn Apple specified programming.
Go the direct route and make yourself familiar with Objective-C.

A good book I can highly recommend is 'Cocoa programming for Mac OS X' by Aaron Hillegass. Just make sure you get the latest (3rd) edition.
 
Stick with XCode. It has templates to setup a C or C++ project. You can then just type the examples out your book, click build & run and off it goes.

... and you'll never know how to compile and run your code when you're on a machine without XCode. Text editor + terminal + gcc/g++ is where I think one should cut your teeth. When you get to the point that maintaining your makefiles is taking more time than writing your code, move to an IDE.

-Lee
 
First advice, stop with this 'n00b', 'h4x0r', 'g33k' crap. Leet wasn't even cool when it started long time ago, and neither is it today!

Second, there is no reason not to start with object orientated programming right away.
It's much easier to learn it straight ahead.

I don't recommend learning Java in case that you want to learn Apple specified programming.
Go the direct route and make yourself familiar with Objective-C.

A good book I can highly recommend is 'Cocoa programming for Mac OS X' by Aaron Hillegass. Just make sure you get the latest (3rd) edition.


I agree. It wasn't cool in 1995 on Efnet IRC and it surely isn't now.

4gr33d!
 
Second, there is no reason not to start with object orientated programming right away.
It's much easier to learn it straight ahead.

I disagree, I think it's a "learn to walk before you learn to run" kinda thing.

Firstly, even modern games and programs are still written in C for their performance and portability of code. So there is really no good reason NOT to learn C. Getting to know C's standard library of functions can solve problems down the line as well.

Secondly, learning C teaches you the fundamentals of programming and lets you appreciate the features of objects and methods.

Bottom line, I think learning C makes you a better Objective-C programmer. And you should be able to bang through "Learn C on the Mac" in just a couple of weeks.
 
You guys are awesome

Thanks guys, you replied so quickly.....

I just ordered 3 books of the learn series

"learn c on the mac", "learn objective c on the mac", and "iphone 3 developing"

oh and btw 1m sup4 l33t h4x0r pwn4g3 LOL!

how long do you guys think it will take me to learn c?
 
Java and C++ are both based on C, it is harder to learn either without some fundamental C knowledge.
I can't think of a single reason to learn C if learning Java is the goal. C isn't going to teach you anything useful about Java you wouldn't learn by just starting Java off the bat, and it's more likely to create confusion learning Java.

I've taught Java programming classes for the last 9 years and had plenty of non-C programmers as students. As a Java developer I prefer working with Java programmers who did not come from C first, because C programmers working in Java often have bad habits, very non Java-like coding conventions, and tend to think less about OO and more about implementation details.

The only reason to learn C is if you need to program in C, and that's not very common anymore.
 
Why are people recommending C like languages to someone who only knows a scripting language?

---

If it really is your first steps into the non-scripted programming world, I'd go for RealBasic(Or a BASIC derivative) or Python. They're simple Object Orientated languages that will teach you the basics of OO.
 
Why are people recommending C like languages to someone who only knows a scripting language?
Because they believe that knowing C basics is more important for writing in ObjC than abstract object-oriented programming applied directly to newbie. Using OO in real Cocoa programs is imposed by the framework, benefits of OOP in helloworld-level programs are not clear.
 
I disagree, I think it's a "learn to walk before you learn to run" kinda thing.

.

Of course you have to get the basics, but that should not take that long.
I've learned Java (still my language of choice :rolleyes:) in college and we spend less than a semester for the basics and then started with object orientation.
I'd think that the step to OOP is much more difficult to people who have done modular programming for years.
 
Because they believe that knowing C basics is more important for writing in ObjC than abstract object-oriented programming applied directly to newbie. Using OO in real Cocoa programs is imposed by the framework, benefits of OOP in helloworld-level programs are not clear.

Thats the thing, C IS PROCEDURAL. You don't actually need to "know" C to use Obj-C. As Steven very quick to tell people. You can use "C" with Obj-C but you are still mainly using Smalltalk style Syntax. Learning C in a way would be counter productive unless you're actually going to do kernel functions, if you're only interested in creating OO UserLand programs...

---

How dare you belittle Hello World. It is the milestone of any programmer. :D
 
Hey guys i'm 14 years old and i'm a pretty big mac/iphone h4x0r.

I have decided to start to learn programming but i'm a total n00b.
I've made some cool applescript applications but now i wanna start for real.

Should I learn C++ or Java? I know Java os more object-based and easier to work with but c++ is just a language everybody should know.

Also, do you guys know a good book that can get me started? Oh, and also what app should i use? I know theres eclipse and also netbeans.

PLEASE HELP I NEED TO KNOW WHERE TO START!!!!!

P.S. I don't have anyone who can help me except for my dad who knows pascal and is a pretty big g33k himself... :apple:4life

Contrary to what some people may tell you, don't learn C. It's procedural, but for anything big you'll need object orientation. It's a bit hard to understand at first, but once you get it, it's very helpful.

If you want to learn either C++ or Java, I'd say go with Java. You get to have garbage collection but not those very advanced (and thus rather confusing) C++ features .
Plus, I believe Java's standard library is superior to C++'s, and learning Java keeps the focus on learning object oriented programming.

Lastly, don't write in leet, and don't say "Apple 4 Life". That's for amateurs, not programmers ;).
 
man...

I dont know anything about this stuff but MorphingDragon and ranguvar seem to be right.

The only problem is that i already ordered the books.

so would you guys recommend starting with the second one "learn objective c on mac"? wouldn't it be too hard for me if i have absolutely no background in programming?
 
I dont know anything about this stuff but MorphingDragon and ranguvar seem to be right.

The only problem is that i already ordered the books.

so would you guys recommend starting with the second one "learn objective c on mac"? wouldn't it be too hard for me if i have absolutely no background in programming?
Don't bother with C. It's more likely to hinder you than help you, unless you have a reason to learn that language specifically (i.e. you plan to do very low level programming).

Look, if you want to learn programming, you should learn OO, and one of the best books out there is Bruce Eckels Thinking in Java or Thinking in C++ Which OO language you learn is less important as how you go about learning OO. Eckel's book is one of the best ways to get there.
 
As an Amazon Associate, MacRumors earns a commission from qualifying purchases made through links in this post.
Just start. You're not going to be irreparably damaged by any of the languages or paradigms mentioned here. Don't start with BASIC or fortran, and you'll be fine. any antecdotal evidence of some programmer being unable to adapt to a new language or paradigm means they are a bad programmer, not that they are poisoned by past experience with a particular language.

I feel that background with C gives a better understanding of how the machine, memory model, etc works. And it makes you appreciate a garbage collected or retain-counted memory management system, and might just make you aware of leaking references, etc. With that said, you can live without those things, and come back to them later if you want.

The main point is just do it. Whatever language and paradigm you start with will not make or break your future in programming. Algorithms and problem-solving are the crux, the language and paradigm are just details. You should be able to pick up a new language pretty quickly, and match the style of any team. That is the easy part.

If you're getting frustrated, then change gears. Giving up is the only thing that will have permanent negative repercussions. Those of us that might argue about the minutae are nerds, and the only reason this gets dragged out so often is passion for programming. Hopefully you get the same spark, and in a few years you'll be a nerd arguing about some inconsequential technical detail.

Good luck, get coding.
-Lee
 
:d

Just start. You're not going to be irreparably damaged by any of the languages or paradigms mentioned here. Don't start with BASIC or fortran, and you'll be fine. any antecdotal evidence of some programmer being unable to adapt to a new language or paradigm means they are a bad programmer, not that they are poisoned by past experience with a particular language.

I feel that background with C gives a better understanding of how the machine, memory model, etc works. And it makes you appreciate a garbage collected or retain-counted memory management system, and might just make you aware of leaking references, etc. With that said, you can live without those things, and come back to them later if you want.

The main point is just do it. Whatever language and paradigm you start with will not make or break your future in programming. Algorithms and problem-solving are the crux, the language and paradigm are just details. You should be able to pick up a new language pretty quickly, and match the style of any team. That is the easy part.

If you're getting frustrated, then change gears. Giving up is the only thing that will have permanent negative repercussions. Those of us that might argue about the minutae are nerds, and the only reason this gets dragged out so often is passion for programming. Hopefully you get the same spark, and in a few years you'll be a nerd arguing about some inconsequential technical detail.

Good luck, get coding.
-Lee

Thanks, that really inspired me. Plus, it's better to know more languages right? learning c will absolutely not be a waste of time. The books are coming in between the 3rd or the 9th of December, but meanwhile im gonna look up some tutorials. Thanks Again
 
Just start. You're not going to be irreparably damaged by any of the languages or paradigms mentioned here. Don't start with BASIC or fortran, and you'll be fine. any antecdotal evidence of some programmer being unable to adapt to a new language or paradigm means they are a bad programmer, not that they are poisoned by past experience with a particular language.

I feel that background with C gives a better understanding of how the machine, memory model, etc works. And it makes you appreciate a garbage collected or retain-counted memory management system, and might just make you aware of leaking references, etc. With that said, you can live without those things, and come back to them later if you want.

The main point is just do it. Whatever language and paradigm you start with will not make or break your future in programming. Algorithms and problem-solving are the crux, the language and paradigm are just details. You should be able to pick up a new language pretty quickly, and match the style of any team. That is the easy part.

If you're getting frustrated, then change gears. Giving up is the only thing that will have permanent negative repercussions. Those of us that might argue about the minutae are nerds, and the only reason this gets dragged out so often is passion for programming. Hopefully you get the same spark, and in a few years you'll be a nerd arguing about some inconsequential technical detail.

Good luck, get coding.
-Lee

As another n00b (yes, I am going to get back to my other thread this weekend), this is inspiring for me too. Thanks. :)

As to Xcode, I use it for text editing and then compile in Terminal.
 
how long do you guys think it will take me to learn c?

No one can answer that. It will take as long as it takes. None of us know you, nor your background or experience, nor what things you're proficient at. Like anything else, some people have a natural talent for some things. Conversely, some people need more time or a different approach to learn something. Or it never really engagesthem so it always remains out of reach.

Part of the process of growing up is finding your natural talents, as well as your natural affinities: the things you really like doing, for no other reason than you like doing them.

Don't stop exploring new things just because you like one thing already. I was entranced by chemistry as a teen until I discovered electronics. Part way through my electronics degree I discovered software. So my degree is in electronics but my career is in software development (with only the occasional bit of electronics). The thread that runs through them all is making things work, and taking things apart to see how they work.
 
No one can answer that. It will take as long as it takes.
Another way to look at it is to answer, "never."

You learn as much of a programming language as you need or want to, but nobody really learns all of a given programming language. I've been programming and teaching Java since 1997 and there are vast parts of the language I don't know. I learn new aspects of the language on a need/want to know basis. Ditto for C++, Perl, Ruby, Python, C, SQL, JavaScript, etc., etc.
 
I just ordered 3 books of the learn series

"learn c on the mac", "learn objective c on the mac", and "iphone 3 developing"

Based on the first line in your first post and the books you ordered, it sounds like you want to create Mac and iPhone apps. So for now forget Java and it's IDEs.

As for learning C or not. I think if you learn that first you'll get a good grounding for knowledge you'll need in Objective-C. Since you'll not have much experience in C, I doubt it will interfere with learning the OOP concepts.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.