# new to programming



## mads (Nov 8, 2002)

What programming language is best suited for cocoa programming?

I've heard many different things, like c++ and objective-c.

Can anyone give my any discription of the different languages?


----------



## wiz (Nov 8, 2002)

hmmm

objective-c++  ,    java


----------



## MacLuv (Nov 8, 2002)

go get yourself the book, "teach yourself C++ in 21 days" by SAMS publishing... will give you all the basic tools you need to start diving in...

If you're really "new" to programming, like, complete beginner, you need to use something like RealBasic and learn the concepts behind OOP (object-orientated programming)... this will keep you busy enough... if you try to dive into Cocoa right away without some sort of instruction you'll get lost without a trace...

Yeah, even though I don't like the software too much, RealBasic is definately a great place for beginners to dig in... once you start mastering RB, you can move on to more robust, complex developing environments like Cocoa and Java... (that intro to Java tutorial on sun's site is such a load of crap)...


----------



## symphonix (Nov 9, 2002)

Java is also a really good one to start with for Cocoa programming. Although the apps will be a little slower than Objective-C Cocoa, it is a little easier to get off the ground and learn with.


----------



## Oscar Castillo (Nov 9, 2002)

If you're totally new, go for that will be the language best for the tasks you wish to accomplish.  If you want to write for Cocoa Objective C is the way to go.  Start with a simple C or C++ book, even the dummies series.  Simple explanation is all that's required to get the basics, then go for "Learning Cocoa with Objectice C" afterwards if you want more you can get "Building Cocoa Applications, A Step by Step Guide".


----------



## MacLuv (Nov 9, 2002)

> _Originally posted by Oscar Castillo _
> *If you're totally new, go for that will be the language best for the tasks you wish to accomplish.  If you want to write for Cocoa Objective C is the way to go.  Start with a simple C or C++ book, even the dummies series.  Simple explanation is all that's required to get the basics, then go for "Learning Cocoa with Objectice C" afterwards if you want more you can get "Building Cocoa Applications, A Step by Step Guide". *



Yeah but for complete newbies I think that's a lot to chew off... don't you?


----------



## Oscar Castillo (Nov 9, 2002)

> _Originally posted by MacLuv _
> *Yeah but for complete newbies I think that's a lot to chew off... don't you? *



Dabbling in languages that are going to be used as nothing more than a stepping stone really is not the way to go as I see it.  Any BASIC language would be a real waste, despite there beaing some decent implementations out there. 
I don't think a simply C book would be impossible to grasp for a newbie.  Starting elsewhere while in the end wanting to end some place totally different would be a waste.


----------



## MacLuv (Nov 9, 2002)

> _Originally posted by Oscar Castillo _
> *Dabbling in languages that are going to be used as nothing more than a stepping stone really is not the way to go as I see it.  Any BASIC language would be a real waste, despite there beaing some decent implementations out there.
> I don't think a simply C book would be impossible to grasp for a newbie.  Starting elsewhere while in the end wanting to end some place totally different would be a waste. *



I certainly don't see it that way... learning how to program in FORTRAN might not be the way step up, but getting to know one's way around an OOP environment is tricky... and can be off-putting. 

One must remember that newbies to programming always want to create the killer app after they've compiled their first "Hello World" app... gotta learn how to walk before you learn to run...

that's why I say RB is the perfect educational step-up... it will familiarize people with how programming works without scaring them away, and when they're ready, they can "graduate" to Cocoa. 

I agree that C++ isn't that difficult to muster, but everybody learns at his/her own pace, and one of the biggest gripes I have in the programming world is that it's all geekspeak--nobody takes the time to "translate" programming language into easy to understand concepts for beginners.


----------



## Oscar Castillo (Nov 9, 2002)

Ok you see it differently.  I say any BASIC is a bad start unless he's going to write quick programs for personal use, within a department or organization  for small tasks that don't need the speed or functionality of C.
I specifically said in my original post to begin with a "simple" C book.
"C/C++ for Dummies", even the SAMS "Teach Yourself C++ in 21 days" is very simple and to the point for any beginner.  Line by line explanations. 
Learning OOP techiniques can fill an entire book alone on that subject, but the starting point for a newbie should never be some language he may never use again.  The OOP techniques you mentioned are also done with just about any intro book on Java, C++, Objective-C.  It's a waste to learn RB, its syntax, and then dump it all and retain only the OOP concepts then start all over with another language.


----------



## MacLuv (Nov 10, 2002)

> _Originally posted by Oscar Castillo _
> *Ok you see it differently.  I say any BASIC is a bad start unless he's going to write quick programs for personal use, within a department or organization  for small tasks that don't need the speed or functionality of C.
> *


And what sort of programs would you expect someone new to programming to write? A new P2P client or email client? A sound editor? When people are new to programming, a lot of small accomplishments will lead up to the bigger app, but taking on more than one can chew is setting one up for failure.  



> *
> I specifically said in my original post to begin with a "simple" C book.
> "C/C++ for Dummies", even the SAMS "Teach Yourself C++ in 21 days" is very simple and to the point for any beginner.  Line by line explanations.
> *


These line by line explanations are a good foundation to teach the theory of C, sure, but until one starts to hack away and make mistakes, one will never learn anything. I agree that these are good books but hardly enough to get anyone excited about programming, especially from a newcomers perspective. 

I suggest RealBasic because it has a lot of the common components built into the IDE, and it takes about an hour or so to follow the first tutorial of building a text editor. This tutorial teaches the fundamental concepts of OOP and is more "hands on" than the dummies book or the SAMS book... 



> *
> Learning OOP techiniques can fill an entire book alone on that subject, but the starting point for a newbie should never be some language he may never use again.  The OOP techniques you mentioned are also done with just about any intro book on Java, C++, Objective-C.  It's a waste to learn RB, its syntax, and then dump it all and retain only the OOP concepts then start all over with another language. *


I agree that one shouldn't learn something he/she would never use again, but that's not the case with an IDE like RealBasic... on the contrary, I think the fundamental logic that RB presents can be used to better understand Cocoa, Java, JavaScript, or even ActionScript for FlashMX... it's all related.


----------



## MacLuv (Nov 10, 2002)

> _Originally posted by Oscar Castillo _
> *Dabbling in languages that are going to be used as nothing more than a stepping stone really is not the way to go as I see it.  Any BASIC language would be a real waste, despite there beaing some decent implementations out there.
> I don't think a simply C book would be impossible to grasp for a newbie.  Starting elsewhere while in the end wanting to end some place totally different would be a waste. *



Okay, let's try a realworld example. 

Newbie #1 dives into Cocoa from the start. S/he tries to develop a small application, say a text editor, from scratch, without any help from the outside world. Even though the newbie is very smart and has the basic theory of C++ under his/her belt, difficult concepts and programming techniques are either introduced too quickly or seem completely out of reach. It's hard to find peer support at this level because those who have mastered the language rarely have time to help beginners with their questions. Even a small project in Cocoa can be very resource intensive, and rather than the newbie learning in a fun, supportive environment, the frustration becomes overbearing and s/he quits... and becomes indifferent to the idea of programming a computer.


Newbie #2 uses a basic OOP like RealBasic. In one hour s/he has followed the step-by-step instructions in the tutorial on how to build a text editor. Mistakes are made along the way, but because the application is straightforward and simplistic, the newbie is able to correct his/her mistakes easily. The learning process begins. When the app is done, the newbie can try to repeat the process until s/he understands how applications in event-driven software are built. The environment is more supportive because newcomers are more willling to help each other and give advice.
When the newbie has mastered the essentials of this OOP, s/he can try out new projects.

In this stimulating and supportive environment, one of two things may happen... the basic environment will become too simple for the budding developer and s/he "graduates" to Cocoa, or the newbie remains within the basic development environment, trying to improve his/her skills as more of an enjoyable hobby.

When the experienced RB user "graduates" to Cocoa, s/he will have a better understanding of the logic behind the language. Adopting to the new IDE is a challenging transition rather than an learning obstacle. The new Cocoa user is able to join his/her peers at a certain level of understanding, so new techniques and skills can be learned quickly. 


Either way I see Newbie #2 more fufilled, and that's why I suggest RealBasic as a starting point for any newcomer to navi-programming.


----------



## symphonix (Nov 10, 2002)

MacLuv has a good point, there. But it really comes down to the individual as to what will work for them. You'd probably find it pretty easy to get started in language A, but if you have trouble getting some of the concepts worked out, just give it a rest and move onto language B. For Cocoa the best option is Objective-C, though there's also Java. If you get stuck on one, spend some time mucking around with the other. I found Java clicked with me, though it took some time to understand the way that classes and methods and objects worked together. Once the concept made sense to me, it was easy to learn more complex things. I also recommend

Any experienced programmer usually has a library of books about all sorts of languages, a shelf or box of books going back to the earliest releases of Pascal and Cobol. It is amazing how often you'll find the solution you want in some of these. Even if the languages change, the ideas and concepts are still useful.

Well, Mads, you might as well just dive in. Just realise that it isn't easy, but you'll figure it out if you just keep trying.


----------



## mads (Nov 11, 2002)

Thanks for the help.
I already have quite a lot of experience programming basic on my calculator(TI-85). I guess it's not the same as realbasic or whatever but at least it's something, so I'm gonna try with C first, then Objective-C.


----------



## Oscar Castillo (Nov 11, 2002)

Good, go for C.  It's not any more diffcult to learn than one of those BASICs.  Once you get to OOP, then the concepts are the same, but you'll be glad you started with C because in the end Objective C is your goal.


----------

