[comp.sys.mac.programmer] Obligatory beginning-Mac-programmer questions

phaedrus@milton.acs.washington.edu (The Wanderer) (03/14/90)

     A few quick questions:
     Aside from Inside Mac and the other official documentation, what books
would you recommend for an experienced Pascal/C programmer trying to learn
the Macintosh programming structure?
     Which development environment would you recommend for said experienced
programmer, on a limited budget (still working on paying off the Mac)?
User-friendliness, a good debugger, and clear documentation are all key
issues.
     How much easier does MacApp make the programming process?  Assuming it's
the wonderful base I've heard it is and I immediately rush out to use it, how
strongly should that influence the development environment I buy?  (How many
contortions do I have to go through to use MacApp with Think Pascal, that I
could avoid by using MPW?)
     I apologize if these questions are naive; but it appears that the only
way I'm actually going to see any of these language products is to buy them,
and I'd much rather have feedback from experienced programmers before making
an expensive mistake.
     (Besides, I'm curious to see how our friend from Symantec will reply...)
-- 
Internet: phaedrus@u.washington.edu        (University of Washington, Seattle)
  The views expressed here are not those of this station or its management.
   "If you can keep your head while those about you are losing theirs,
      consider an exciting career as a guillotine operator!"

jackiw@cs.swarthmore.edu (Nick Jackiw) (03/14/90)

phaedrus@milton.acs.washington.edu (The Wanderer) writes:
>      A few quick questions:
>      Aside from Inside Mac and the other official documentation, what books
> would you recommend for an experienced Pascal/C programmer trying to learn
> the Macintosh programming structure?

There are a number of books. None of them, however, is comprehensive, and
with all of them, one will eventually run into problems because of their
limitations and elisions.  Inside Mac, volumes I-IV, are really the best
starting point.  Volume V, unlike the others, is poorly written, and relies
on *implicit* knowledge of arcane parts of I-IV.  (Everything in I-IV that
relies on something else is clearly cross-referenced.)

The Tech Notes, available from APDA or as a hypercard stack ftp'able (I 
believe) from APDA, augment, amend, and clarify the Inside Mac series.
They contain considerable amounts of sample code, as well.

>      Which development environment would you recommend for said experienced
> programmer, on a limited budget (still working on paying off the Mac)?
> User-friendliness, a good debugger, and clear documentation are all key
> issues.

This would be a THINK product...MPW, by the time you get up and running, costs
several hundreds of dollars and a considerable amount of time dedicated to
learning the environment, rather than programming.  THINK C and THINK PASCAL
are both available mail-order for $100-$200.  (Check MacConnection, MacZone,
MacWarehouse, etc.).

If you know Pascal and C equally well, I'd recommend starting with THINK
Pascal.  The Mac's interfaces are designed for communicating with Pascal,
and by not using C, you can avoid a number of problems (parameter-passing
convention, string definition, etc.) not immediately relevant to learning
Mac programming.

>      How much easier does MacApp make the programming process?  Assuming it's
> the wonderful base I've heard it is and I immediately rush out to use it, how
> strongly should that influence the development environment I buy?  (How many
> contortions do I have to go through to use MacApp with Think Pascal, that I
> could avoid by using MPW?)

I believe only the just-released THINK PASCAL 3.0 is compatible with MacApp
(beside MPW, of course).  Not much has been discussed on its ease of use in
THINK.  If you are already acquainted with object-oriented programming, MacApp
may make things easier for you.  If not, postpone getting it.  Again, the
Mac's interface is defined procedurally; learning OOP simultaneously, while
career-wise, is going to detract from learning the Mac.  Also, from what I
understand, while MacApp provides a wonderfully advanced starting-block for
any application development,  in the course of getting the exact functionality
you seek you must be prepared to modify the MacApp sources.  This, of course,
implies prior knowledge of both Mac structure and object-oriented programming
techniques.

>      I apologize if these questions are naive; but it appears that the only
> way I'm actually going to see any of these language products is to buy them,
> and I'd much rather have feedback from experienced programmers before making
> an expensive mistake.

My disclaimers:  I've never used MacApp.  I use THINK Pascal frequently, MPW
Pascal, C, and Assembler infrequently. I began in your position with advice
similar to that that I've just offered, and I've found my environment nice
enough to never merit switching.



--
-----Nicholas Jackiw [jackiw@cs.swarthmore.edu|jackiw@swarthmr.bitnet]-----
"... Then, with an infernal shovel that increases my strength, I dig out of
that inexhaustable mine whole chunks of lice, big as mountains.  I split them
up with an axe and I transport them in the depths of night to city streets."

jackiw@cs.swarthmore.edu (Nick Jackiw) (03/14/90)

jackiw@cs.swarthmore.edu (Nick Jackiw) writes:
> The Tech Notes, available from APDA or as a hypercard stack ftp'able (I 
> believe) from APDA, augment, amend, and clarify the Inside Mac series.
                ^^^^

Sorry, I meant apple.com.



--
-----Nicholas Jackiw [jackiw@cs.swarthmore.edu|jackiw@swarthmr.bitnet]-----
"... Then, with an infernal shovel that increases my strength, I dig out of
that inexhaustable mine whole chunks of lice, big as mountains.  I split them
up with an axe and I transport them in the depths of night to city streets."

siegel@endor.harvard.edu (Rich Siegel) (03/14/90)

In article <2392@milton.acs.washington.edu> phaedrus@milton.acs.washington.edu (The Wanderer) writes:
>
>     A few quick questions:
>     Aside from Inside Mac and the other official documentation, what books
>would you recommend for an experienced Pascal/C programmer trying to learn
>the Macintosh programming structure?

	"How to Write Macintosh Software" and "Macintosh Programming Secrets",
both by Scott Knaster. The first is a good guide to coping with the OS, and
the second describes lots of interesting Toolbox tricks.

	Another good book is the TMON user's manual. It comes with a free
machine-level debugger.

>     Which development environment would you recommend for said experienced
>programmer, on a limited budget (still working on paying off the Mac)?
>User-friendliness, a good debugger, and clear documentation are all key
>issues.

	THINK C or THINK Pascal. They fill all of your criteria.

>     How much easier does MacApp make the programming process?  Assuming it's
>the wonderful base I've heard it is and I immediately rush out to use it, how
>strongly should that influence the development environment I buy?  (How many
>contortions do I have to go through to use MacApp with Think Pascal, that I
>could avoid by using MPW?)

	Ultimately, MacApp helps a lot, but the learning curve is very long.
It shouldn't make a difference in your choice of Pascal compiler; THINK
Pascal 3.0 supports MacApp practically out of the box, with some automatic
conversion.

	Both THINK C and THINK Pascal include the THINK Class Library, which
is similar in concept to MacApp, but is much easier to learn and use; you
can always save your pennies and get MacApp later if the TCL doesn't suit your needs.

>     (Besides, I'm curious to see how our friend from Symantec will reply...)
	
	You'll have to give me better bait than that. :-)

R.




~~~~~~~~~~~~~~~
 Rich Siegel
 Staff Software Developer
 Symantec Corporation, Language Products Group
 Internet: siegel@endor.harvard.edu
 UUCP: ..harvard!endor!siegel

"When someone who makes four hundred and fifty dollars an hour wants to
tell you something for free, it's a good idea to listen."

~~~~~~~~~~~~~~~

levin@bbn.com (Joel B Levin) (03/14/90)

In article <2217@husc6.harvard.edu> siegel@endor.UUCP (Rich Siegel) writes:
|
|	Another good book is the TMON user's manual. It comes with a free
|machine-level debugger.

What an interesting way to put it (expensive book).

I hear that THINK offers a class library in source code with some
pretty extensive books about the techniques of developing Mac code
and about the C programming language.  These come with a free C
compiler that's supposed to be pretty good.

	:-)

		/JBL
=
Nets: levin@bbn.com  |  "There were sweetheart roses on Yancey Wilmerding's
 or {...}!bbn!levin  |  bureau that morning.  Wide-eyed and distraught, she
POTS: (617)873-3463  |  stood with all her faculties rooted to the floor."

anders@penguin (Anders Wallgren) (03/15/90)

In article <319FHPY@xavier.swarthmore.edu>, jackiw@cs (Nick Jackiw) writes:
>phaedrus@milton.acs.washington.edu (The Wanderer) writes:
>> How much easier does MacApp make the programming process?  Assuming it's
>> the wonderful base I've heard it is and I immediately rush out to use it, how
>> strongly should that influence the development environment I buy?  (How many
>> contortions do I have to go through to use MacApp with Think Pascal, that I
>> could avoid by using MPW?)
>
>I believe only the just-released THINK PASCAL 3.0 is compatible with MacApp
>(beside MPW, of course).  Not much has been discussed on its ease of use in
>THINK.  If you are already acquainted with object-oriented programming, MacApp
>may make things easier for you.  If not, postpone getting it.  Again, the
>Mac's interface is defined procedurally; learning OOP simultaneously, while
>career-wise, is going to detract from learning the Mac.  Also, from what I
>understand, while MacApp provides a wonderfully advanced starting-block for
>any application development,  in the course of getting the exact functionality
>you seek you must be prepared to modify the MacApp sources.  This, of course,
>implies prior knowledge of both Mac structure and object-oriented programming
>techniques.
>

Just to clarify - you don't need to modify the MacApp sources - this
is one of the beauties of OOP.  You do however, define your own
objects as subclasses of MacApp's classes, and, in this sense, you
modify MacApp.  Occasionally, you need your MASBA (MacApp Source
Breathing Apparatus - Keith Rollin's phrase, not mine) to figure out
what you're supposed to be doing, but I've never found it necessary to
touch the MacApp source code with anything other than a highlighter.

anders

gft_robert@gsbacd.uchicago.edu (03/15/90)

Like Rich said: both Knaster's books are excellent.

But you should _definitely_ also check out the "Mac Revealed" books by Stephen
Chernicoff.  They are very good for getting a re-phrase of IM (which can
sometimes help when you're not exactly sure of what IM's getting at) and they
give you some sample code.  Vol. 1 and 2 are the most helpful.

I recommend THINK Pascal if you're going to use Pascal (which, as one poster
noted, is probably the wisest route).  I just got version 3.0 (in 5 days! 
Symantec service is _much_ better than it used to be), and though I haven't
played with it much, it looks _real_ nice.  It's even got _3_ bound doc books. 
Classy.

Robert



============================================================================
= gft_robert@gsbacd.uchicago.edu * generic disclaimer: * "It's more fun to =
=            		         * all my opinions are *  compute"         =
=                                * mine                *  -Kraftwerk       =
============================================================================

chewy@apple.com (Paul Snively) (03/15/90)

In article <2217@husc6.harvard.edu> siegel@endor.harvard.edu (Rich Siegel) 
writes:
> In article <2392@milton.acs.washington.edu> 
phaedrus@milton.acs.washington.edu (The Wanderer) writes:
> >
> >     A few quick questions:
> >     Aside from Inside Mac and the other official documentation, what 
books
> >would you recommend for an experienced Pascal/C programmer trying to 
learn
> >the Macintosh programming structure?
> 
>         "How to Write Macintosh Software" and "Macintosh Programming 
Secrets",
> both by Scott Knaster. The first is a good guide to coping with the OS, 
and
> the second describes lots of interesting Toolbox tricks.

I'd like to ditto Rich's recommendations here and add the current editions 
of Chernicoff's books; they're pretty good Q&D intros to the subjects 
covered in IM I-V.

BTW, be sure to get IM I-IV absolutely and V if you intend to run on SEs 
or Mac IIs.  Also get the Tech Notes (yeah, all 250+ of them).  Ugh.

In article <2217@husc6.harvard.edu> siegel@endor.harvard.edu (Rich Siegel) 
writes:
>         Another good book is the TMON user's manual. It comes with a free
> machine-level debugger.

Gee, thanks, Rich (I wrote the TMON User's Guide, in my previous life at 
ICOM Simulations, Inc.)  I'll second his recommendation here, too, in my 
obviously completely unbiased opinion. ;-)

In article <2217@husc6.harvard.edu> siegel@endor.harvard.edu (Rich Siegel) 
writes:
> >     How much easier does MacApp make the programming process?  
Assuming it's
> >the wonderful base I've heard it is and I immediately rush out to use 
it, how
> >strongly should that influence the development environment I buy?  (How 
many
> >contortions do I have to go through to use MacApp with Think Pascal, 
that I
> >could avoid by using MPW?)
> 
>         Ultimately, MacApp helps a lot, but the learning curve is very 
long.
> It shouldn't make a difference in your choice of Pascal compiler; THINK
> Pascal 3.0 supports MacApp practically out of the box, with some 
automatic
> conversion.

Rich is oversimplifying just a little here.  The MacApp that THINK Pascal 
3.0 compiles "practically out of the box" is MacApp 2.0b9; THINK has done 
a very good job of providing conversion tools that handle the general 
case, but my experiences in attempting to convert versions of MacApp later 
than 2.0b9 haven't been very successful.  Which is not to say that THINK 
did anything wrong; they were in the unfortunate position of having to 
ship before Apple made MacApp 2.0 final.  C'est la vie.

In article <2217@husc6.harvard.edu> siegel@endor.harvard.edu (Rich Siegel) 
writes:
>         Both THINK C and THINK Pascal include the THINK Class Library, 
which
> is similar in concept to MacApp, but is much easier to learn and use; you
> can always save your pennies and get MacApp later if the TCL doesn't 
suit your needs.

Sounds like sound advice to me.

In addition to the above, let me just add that, since you're already an 
experienced Pascal/C programmer, it _is_ worth your while to learn 
object-oriented programming now, as Apple's world is clearly headed in 
that direction.  THINK's TCL and related tutorials offer a good 
introduction both to the concepts and to the class libraries themselves.  
MacApp might be thought of as "industrial strength"--it has had some of 
Apple's best Mac Wizards involved in its evolution over its roughly 
five-year lifespan, and does lots of very cool things for you.  It also 
has tutorials available, and is supported not only by us in MacDTS, but 
also by the MacApp Developers' Association, and has a regular newsletter, 
"Frameworks," associated with it, should you wish to subscribe to it.

I must also take issue with a previous post that said, in effect, that 
once you start doing real work with MacApp that you find yourself changing 
the MacApp sources.  This simple isn't true; the whole nature of 
object-oriented programming is that, when you wish to alter the 
functionality of some piece of code, you override it (this does _not_ 
imply changing the sources of the libraries).  It _may_ imply knowing 
exactly what the thing you wish to override does.  To simplify that 
process, MacApp 2.0 versions ship with a very nice little Object 
Pascal/C++ browser, itself written in MacApp (sorry, no sources for the 
browser yet--maybe later).

I hope all of this helps somewhat!

__________________________________________________________________________
                                Paul Snively
                      Macintosh Developer Technical Support
                             Apple Computer, Inc.

1st Choice: Paul_Snively.DTS@qm.gateway.apple.com
2nd Choice: CHEWBACCA@applelink.apple.com
Last Choice: chewy@apple.com

Just because I work for Apple Computer, Inc. doesn't mean that I believe 
what they believe, or vice-versa.
__________________________________________________________________________

lsr@Apple.COM (Larry Rosenstein) (03/15/90)

In article <2392@milton.acs.washington.edu> 
phaedrus@milton.acs.washington.edu (The Wanderer) writes:
>How much easier does MacApp make the programming process?  Assuming it's
>the wonderful base I've heard it is and I immediately rush out to use it, 

MacApp eliminates the need to understand every detail of the Toolbox 
before you can write your program.  If what you want to do is write a 
Macintosh applications that prints, saves document, etc. then MacApp is 
the way to go.

If you want to learn about the details of the Macintosh Toolbox, then 
MacApp will probably be a distraction.  It will take some digging to find 
out where MacApp does its scrolling (for example), so it's not the best 
way to understand the Control Manager.  For that there are some skeleton 
programs that you can use.

The learning curve for MacApp is not as bad as people think, especially if 
you compare it to learning the necessary chapters of Inside Macintosh.  
(Not to mention all the little programming tricks that are scattered in 
Tech Notes and peoples' heads.)  

The best approach is to play with the sample programs and try to 
understand what's going on.  There's also a very good tutorial now, which 
builds a simple icon editor from the ground up.  (There's also a book 
coming out in the next month, which is largely based on the MacApp class 
run by Apple's Developer University.  I was one of the co-authors.)

Most of the comments above should apply equally well to the THINK Class 
Library, although I haven't looked at it.  I'm told that it is simpler 
than MacApp, so that might help with the learning curve.

Larry Rosenstein, Apple Computer, Inc.
Object Specialist

Internet: lsr@Apple.com   UUCP: {nsc, sun}!apple!lsr
AppleLink: Rosenstein1

phaedrus@milton.acs.washington.edu (The Wanderer) (03/15/90)

In article <2392@milton.acs.washington.edu> I asked a bunch of questions
about Macintosh programming books, development environments, and MacApp.
The response has been overwhelming; my mailbox overfloweth.  (But I like it,
I like it...)
      Aside from Inside Mac, Programmer's Introduction to the Mac Family,
and the other Addison-Wesley-published books, the Macintosh Revealed series
was recommended at least five times, so I plan on looking at it first, after
the Addison-Wesley series.  I figure this shouldn't take me more than four or
five months, after which I can get down to actually programming. :)
      The huge majority of those recommending language environments suggested
the THINK languages (with Pascal getting the preference over C, since the
Macintosh ROM was designed with Pascal conventions in mind); it appears to
outrank MPW in ease of learning and use (not surprising, considering the
command-line interface of MPW), debugging, documentation, and price.
      The consensus seems to be that THINK Pascal 3.0 handles MacApp
well enough; there are glitches, particularly in using the final version
(rather than the betas), but most repliers didn't seem to think that MacApp
was an appropriate learning tool anyway.  Besides, the consensus was that
Symantec would solve these glitches somehow, considering their reputation
for service.
      I thank you all very much for your help; it's relieving to see that
those of us who can't afford to become Partners can still get good-quality
technical help, from Apple as well as from others.



-- 
Internet: phaedrus@u.washington.edu        (University of Washington, Seattle)
  The views expressed here are not those of this station or its management.
   "If you can keep your head while those about you are losing theirs,
      consider an exciting career as a guillotine operator!"

siegel@endor.harvard.edu (Rich Siegel) (03/15/90)

In article <7179@goofy.Apple.COM> chewy@apple.com (Paul Snively) writes:
>
>Rich is oversimplifying just a little here.  The MacApp that THINK Pascal 
>3.0 compiles "practically out of the box" is MacApp 2.0b9; THINK has done 
>a very good job of providing conversion tools that handle the general 
>case, but my experiences in attempting to convert versions of MacApp later 
>than 2.0b9 haven't been very successful.  Which is not to say that THINK 
>did anything wrong; they were in the unfortunate position of having to 
>ship before Apple made MacApp 2.0 final.  C'est la vie.

A couple of things worth noting:

	1) MacApp 2.0b9 is the latest shipping version from APDA. As far as I'm
concerned, it's not particularly important that anything other than APDA-
released versions of MacApp are supported. It takes me a pair of 16-hour
days to figure out the changes and implement new tweaks and find the problems
and recommend some changes to Steve Friedrich.

	2) Versions since 2.0b9 have introduced significant archtectural
changes - changes which, in my humble opinion, should bever be made this
late in the beta cycle.

	3) MacApp will compile practically out of the box as far as most
prospective users are concerned: all they need to do is install MacApp
as instructed by the MacApp docs, install the THINK MacApp compatibility
package as instructed by our doc, run the converter, and that's it. No
manual changes to MacApp are required. The automatic changes which are
applied address differences in runtime architecture between THINK Pascal
and MPW Pascal; the MacApp group has been more than helpful in making
changes to MacApp to accomodate differences in the two compilers and 
linkers.

Sorry to sound snappish, but I've spent the past two 16-hour days getting
MacApp 2.0b12 to work.

R.



~~~~~~~~~~~~~~~
 Rich Siegel
 Staff Software Developer
 Symantec Corporation, Language Products Group
 Internet: siegel@endor.harvard.edu
 UUCP: ..harvard!endor!siegel

"When someone who makes four hundred and fifty dollars an hour wants to
tell you something for free, it's a good idea to listen."

~~~~~~~~~~~~~~~

chewy@apple.com (Paul Snively) (03/16/90)

In article <2234@husc6.harvard.edu> siegel@endor.harvard.edu (Rich Siegel) 
writes:
> A couple of things worth noting:
> 
>         1) MacApp 2.0b9 is the latest shipping version from APDA. As far 
as I'm
> concerned, it's not particularly important that anything other than APDA-
> released versions of MacApp are supported. It takes me a pair of 16-hour
> days to figure out the changes and implement new tweaks and find the 
problems
> and recommend some changes to Steve Friedrich.

Understood and appreciated, believe me!  Perhaps I should have made more 
clear that what THINK Pascal 3.0 supports is precisely what's available to 
the world at large, and it does it extremely well.

>         2) Versions since 2.0b9 have introduced significant archtectural
> changes - changes which, in my humble opinion, should bever be made this
> late in the beta cycle.

Well, that's why it's beta.  Sometimes an architectural change solves a 
multitude of problems.  And part of MacApp 2.0's charter was pretty much 
to start with a clean architectural slate--MacApp 2.0xx is very, very 
different from 1.1.1, for example.

I really wish that it had been frozen for you guys before you had to ship, 
but we just weren't able to do it.  I really _am_ sorry about that.

>         3) MacApp will compile practically out of the box as far as most
> prospective users are concerned: all they need to do is install MacApp
> as instructed by the MacApp docs, install the THINK MacApp compatibility
> package as instructed by our doc, run the converter, and that's it. No
> manual changes to MacApp are required. The automatic changes which are
> applied address differences in runtime architecture between THINK Pascal
> and MPW Pascal; the MacApp group has been more than helpful in making
> changes to MacApp to accomodate differences in the two compilers and 
> linkers.

And you guys have done a fantastic job of making THINK meet us halfway; I 
don't wish to minimize that point at all.

> Sorry to sound snappish, but I've spent the past two 16-hour days getting
> MacApp 2.0b12 to work.

Really, Rich, I'm sure that all of us here, especially in MacDTS, 
appreciate that; it'll be a major boon to Apple, to Symantec, to both of 
our developers, and ultimately to the users who will have access to more 
robust and functional software as a direct result of your efforts.  After 
all, that's really what it's all about--the users and what they can do, 
and how well.

Thanks for the blood, sweat, and tears, and please pass that along to the 
rest of the THINK languages team(s).
> R.

__________________________________________________________________________
                                Paul Snively
                      Macintosh Developer Technical Support
                             Apple Computer, Inc.

1st Choice: Paul_Snively.DTS@qm.gateway.apple.com
2nd Choice: CHEWBACCA@applelink.apple.com
Last Choice: chewy@apple.com

Just because I work for Apple Computer, Inc. doesn't mean that I believe 
what they believe, or vice-versa.
__________________________________________________________________________