Welcome to the MacNN Forums.

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

You are here: MacNN Forums > Software - Troubleshooting and Discussion > Developer Center > Help to be a programer

Help to be a programer
Thread Tools
Forum Regular
Join Date: Oct 2000
Location: singapore
Status: Offline
Reply With Quote
Jan 14, 2003, 01:57 PM
 
Hi, there is this question always in my mind and since I own a Mac, there is no other place where I can post my question which is better then here.
I would like to learn programing and write Mac software, but I have no computer science knowledge. Would anybody recommend a book or something to help me get started? And which program and language should I begin with? Please give me a hand and let me join in the world of developing Mac software.

Freeman
     
Mac Enthusiast
Join Date: Sep 2000
Location: Vermont, USA
Status: Offline
Reply With Quote
Jan 14, 2003, 04:04 PM
 
I was in your shoes a little while ago. I became an online developer for Apple (because it is free) and downloaded their developer tools. I then went through their Cocoa Java tempertature converter tutorial. That got me off to a good start.

Good luck.
     
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Jan 14, 2003, 10:19 PM
 
This depends on if you want to learn computer science (good habits) or just programming (bad habits).
     
Dedicated MacNNer
Join Date: Nov 2000
Status: Offline
Reply With Quote
Jan 15, 2003, 11:29 AM
 
"This depends on if you want to learn computer science (good habits) or just programming (bad habits)."

Not only is this an oversimplification, it's wrong.

Computer science is applied mathematics and logic. Computer scientists devise new algorithms and prove or disprove the validity and characteristics of these algorithms through rigorous use of formal logic. A computer scientist can perform his job without ever touching a computer. Remember writing geometry proofs in highschool? That's what a computer scientist does.

Computer programmers are more akin to engineers. They utilize algorithms devised by computer scientists to produce a product, software. Good programmers use design patterns to construct software, like architects use design patterns to design buildings. Obviously this is not a "bad habit".

The two fields are not mutually exclusive. Computer scientists sometimes implement their algorithms in software, and programmers sometimes devise completely new algorithms. For example, Donald Knuth, one of the most influential computer scientists, has written several programs including TeX, but his primary occupation is computer science.

Employers are a major contributing factor to this confusion. Nine out of ten employers require programmers to have a degree in computer science, when what they really need is programmers with a background in software engineering. Hopefully more universities will step up to the plate and offer degrees focused on software engineering.

Anyone else got clarifications. corrections, or additions? I'd like to solidify my response to this common misunderstanding.
     
Dedicated MacNNer
Join Date: Nov 2000
Status: Offline
Reply With Quote
Jan 15, 2003, 12:10 PM
 
Freeman,

I would suggest you have a look at Python for Beginners and Thinking in Python. Supposedly, Python is an excellent language for novice programmers.

You might also consider Smalltalk. It's a simple, powerful language comprised of 5 keywords. You can get a non-commercial version of Visualworks by Cincom here, or get a copy of Squeak here. Visualworks ships with some excellent tutorials, but Squeak is probably easier to use.

Cocoa/ObjC have their roots in Smalltalk, so if you decide to go that route, you'll be able to apply your Smalltalk knowledege to developing Cocoa applications; however, you'll be able to find more support for Python in the form of tutorials, mailing lists, forums, etc.

Whatever you do, stay far far away from C or C++. C is good for when you just HAVE to be able to do things at the hardware level. C++ is just an abomination. I'm sure the devil has put aside a few extra hot pokers for Bjarne Stroustrup.
     
Fresh-Faced Recruit
Join Date: Nov 2002
Location: Sydney Australia
Status: Offline
Reply With Quote
Jan 15, 2003, 06:47 PM
 
Languages are just tool kits that allow you to achieve different objectives.

C - Gives machine level control, with more speed and power than most. Great for Operating Systems.

C++ - the language of choice for most large software projects, like Photoshop, and for most games. But I have been told it is a B*i*t*c*h to work with.

Objective-C/Cocoa - Great for Mac OSX, as the power of C++ without the pain. But really only for OSX, but it can be ported. But outside of OSX it is a virtually exiting language, with no major project's written in it outside of OSX, and Apple.

Java - My preferred language and one of the most popular developer language in the world. High level language, so non of the machine level stuff. Easy to learn Syntax, fully Object Orientated, Completely Portable, great support for for Java on OSX. Plus can be used to build virtually anteing from Dynamic database driven web-site, to Games, and assorted Applications. But has some draw backs like any language.

Real-Basic - Then their is Real-Basic, some people like it. Related to MS Visual Basic, but I have only heard bad things about RB on OSX. But easy to learn I have been told.

Programming is about trade offs, gain flexibility lose speed. Gain feature loose portability, etc etc.

A good point is that you will need to learn many languages, each one has something to teach.
     
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Jan 16, 2003, 02:24 AM
 
Originally posted by int69h:
"This depends on if you want to learn computer science (good habits) or just programming (bad habits)."

Not only is this an oversimplification, it's wrong...
Sorry, but I think you're the one oversimplifying. Design of algorithms is just a part of the entire computer science field, not its entirety. It's the theoretical portion of the discipline, while software engineering is the somewhat more practical application of the theories and other engineering concepts. There should be no distinction, both combine to make up computer science. It IS possible to program without understanding any of the theory, but often those programs will be poor.
(Last edited by itai195; Jan 16, 2003 at 02:30 AM. )
     
Dedicated MacNNer
Join Date: Nov 2000
Status: Offline
Reply With Quote
Jan 16, 2003, 07:18 AM
 
Physicists and Accounts both utilize the works of Mathematicians daily in their jobs. Would you argue that they are also Mathematicians? I had to (poorly) use the syntax and grammar of the English language to construct this post. Does that make me a professional writer?

Perhaps the Computer Science department at Stanford can explain it better than I.

I'm not advocating that programmers need no knowledge of computer science. Obviously they need to know the fundamentals like basic datastructures, searching and sorting, etc.
     
Professional Poster
Join Date: Sep 1999
Location: Ottawa, ON, Canada
Status: Offline
Reply With Quote
Jan 16, 2003, 10:26 AM
 
Originally posted by int69h:

I'm not advocating that programmers need no knowledge of computer science. Obviously they need to know the fundamentals like basic datastructures, searching and sorting, etc.
Agreed. I would also argue that programmers should have knowledge of interface design too. Having knowledge of software interface design as well as real world object interface design is important. I wish more schools would make it mandatory. Too many programmers believe simply having a GUI makes it easy to use. Gee, I wonder where that theory came from.
     
Addicted to MacNN
Join Date: May 2001
Location: Cupertino, CA
Status: Offline
Reply With Quote
Jan 16, 2003, 04:00 PM
 
int69h: I think we agree more than we think we do, we're just using different terminology. What I was basically trying to say is that learning computer programming is one thing, but in order to be a truly competent programmer you have to know a sizable amount of the theory. You can be a programmer without knowing any theory, but you'll often learn bad habits that way. You do not have to be an expert in algorithm design to be a competent programmer, but you have to know which algorithms and data structures to use in particular situations, and you should be able to, in general, determine the efficiency of your code.

BTW, I'm a Berkeley grad and you're linking me to a Stanford website? FOR SHAME!

hayesk: I agree that applications programmers should have an education in interface design, but there is a ton of other software out there that requires no interface. Making interface design a requirement for everybody would be overkill, I think.
     
Dedicated MacNNer
Join Date: Nov 2000
Status: Offline
Reply With Quote
Jan 16, 2003, 10:14 PM
 
BTW, I'm a Berkeley grad and you're linking me to a Stanford website? FOR SHAME!
In an ideal world, Soda Hall would be transplanted onto Stanford's campus, or Berkeley would lure Knuth away from Stanford.

I've still got a roll of film to develop from my visit to Soda Hall a few years ago. That "History of Computing" display on the first floor was pretty cool.


edit to make this post semi-ontopic for developer forum:

Woz got his BS EECS from UC Berkeley in 1987.


Edit to correct previous edit.

The former editor has been sacked
(Last edited by int69h; Jan 16, 2003 at 10:25 PM. )
     
Posting Junkie
Join Date: Feb 2000
Location: Washington, DC
Status: Offline
Reply With Quote
Jan 19, 2003, 01:08 PM
 
I'm considering buying this book to learn Object C...

Anyone read/look at this?

http://www.amazon.com/exec/obidos/AS...988984-1726456

I think I'm going to jump in feet first and then go back and learn how I did everything...

I'm also considerin going to take a few classes in C and C++ (I know this is all object C, but that's what I'm mooking for)

I basically just want to write a few key (small) apps and do the shareware thing...
     
Dedicated MacNNer
Join Date: Nov 2000
Status: Offline
Reply With Quote
Jan 19, 2003, 04:10 PM
 
You might find the book reviews over at cocoadev useful.

The general recommendation seems to be to start with Cocoa Programming for Mac OS X and then move on to Cocoa Programming.
     
Posting Junkie
Join Date: Feb 2000
Location: Washington, DC
Status: Offline
Reply With Quote
Jan 22, 2003, 11:13 AM
 
If you are young (just out of college) would it be better to learn carbon or cocoa? I would rather be VERY good at one then OK-ish at both...

I'm thinking of Cocoa... but I could be making a big mistake... HELP!?
     
Fresh-Faced Recruit
Join Date: Sep 2001
Status: Offline
Reply With Quote
Jan 22, 2003, 02:47 PM
 
Originally posted by mitchell_pgh:
If you are young (just out of college) would it be better to learn carbon or cocoa? I would rather be VERY good at one then OK-ish at both...

I'm thinking of Cocoa... but I could be making a big mistake... HELP!?
I'm just out of college myself and I chose Cocoa. If you get used to the strange Objective-C syntax, you'll find it's easier and a lot more applicable for future development.

Not only is it a lot simpler than Carbon, the principles you learn from object-oriented programming will also allow you to move on to growing future languages (Java, C#). Also, with the use of Objective-C++ you get a very advanced mixture of languages.

The disadvantage is that there are some things that can only (rarely) be done in Carbon. But you can put these calls in Cocoa often and learn them after you mastered Cocoa.
     
Clinically Insane
Join Date: Oct 2001
Location: San Diego, CA, USA
Status: Offline
Reply With Quote
Jan 22, 2003, 03:09 PM
 
Originally posted by mitchell_pgh:
If you are young (just out of college) would it be better to learn carbon or cocoa? I would rather be VERY good at one then OK-ish at both...

I'm thinking of Cocoa... but I could be making a big mistake... HELP!?
It really depends on what you want to do, I suppose. In general, Cocoa would be the better choice for an API just because it is much easier to learn and work with, and allows for much faster application development. Carbon does have more functionality, but it is large, inelegant (IMO) and not nearly as easy to pick up or work with.

But really, I think you're fooling yourself if you think you'll only ever need one API to get by. You can focus on one, but don't reject others if they're what's needed for the job.

Of course, I don't claim to be an expert of any sort. These are just my general observations.
Chuck
___
"Instead of either 'multi-talented' or 'multitalented' use 'bisexual'."
     
Posting Junkie
Join Date: Feb 2000
Location: Washington, DC
Status: Offline
Reply With Quote
Jan 23, 2003, 09:30 AM
 
Originally posted by Chuckit:
But really, I think you're fooling yourself if you think you'll only ever need one API to get by. You can focus on one, but don't reject others if they're what's needed for the job.

No, I wouldn't only learn one API, but if you are a "guru" at one and understand the other...

Thanks for the input...
     
Dedicated MacNNer
Join Date: May 2001
Location: Edinburgh, UK
Status: Offline
Reply With Quote
Jan 26, 2003, 10:09 PM
 
Originally posted by int69h:
"This depends on if you want to learn computer science (good habits) or just programming (bad habits)."

Not only is this an oversimplification, it's wrong.

Computer science is applied mathematics and logic. Computer scientists devise new algorithms and prove or disprove the validity and characteristics of these algorithms through rigorous use of formal logic. A computer scientist can perform his job without ever touching a computer. Remember writing geometry proofs in highschool? That's what a computer scientist does.
I'm currently in my 3rd year of a computing science course and I sure as hell don't spend my time devising new algorithms. I have however certainly done enough proofs of existing algorithms to make me want to kill some of the people who created them. Most of the time a formal proof would not be economically viable for a company to allow its employees to perform. The only time where it would be used would be things like nuclear power stations and aircraft flight control systems.

From the view of my CS course, which is one of the most theoretical in the UK, computing science is about the design of highly efficient and highly reusable code. It is more about the application of algorithms than the creation of algorithms.
     
   
Thread Tools
Forum Links
Forum Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Top
Privacy Policy
All times are GMT -5. The time now is 02:02 PM.
All contents of these forums © 1995-2011 MacNN. All rights reserved.
Branding + Design: www.gesamtbild.com
vBulletin v.3.8.7 © 2000-2011, Jelsoft Enterprises Ltd., Content Relevant URLs by vBSEO 3.3.2