[comp.sys.amiga] Difficulty in programming

gilgalad@dip.eecs.umich.edu (Ralph Seguin) (06/02/90)

Hi.  I've been watching the discussion of how difficult it is to
program the Amiga versus other systems.  I've seen a lot of nonsense.
Somebody has been making claims that it is relatively difficult to
program the Amiga.  It is just as easy, and often far easier to write
stuff for the Amiga than most other systems around.
 
			See ya, Ralph

 
gilgalad@dip.eecs.umich.edu       gilgalad@zip.eecs.umich.edu
gilgalad@caen.engin.umich.edu     Ralph_Seguin@ub.cc.umich.edu
gilgalad@sparky.eecs.umich.edu    USER6TUN@UMICHUB.BITNET

Ralph Seguin               |  In order to get infinitely many monkeys to type
565 South Zeeb Rd.         | something that actually makes sense, you need to
Ann Arbor, MI 48103        | have infinitely many monkey editors as well.
(313) 662-1506

laba-1ei@e260-2f.berkeley.edu (Joseph Chung) (06/02/90)

In article <2487@zipeecs.umich.edu> gilgalad@dip.eecs.umich.edu (Ralph Seguin)
writes:
>Hi.  I've been watching the discussion of how difficult it is to
>program the Amiga versus other systems.  I've seen a lot of nonsense.
>Somebody has been making claims that it is relatively difficult to
>program the Amiga.  It is just as easy, and often far easier to write
>stuff for the Amiga than most other systems around.
> 

Try this one on for size:

In an IBM (no flames please!), if I want to put a character anywhere on the
screen, I just
1. load a segment register with the segment of the screen.
2. write the proper byte to the screen location (using a simple offset) (In
short, is a basic POKE command!)

How would you accomplish this in an Amiga?
Let's see.
1. Create my own screen, or should it be my window (damn, where did I put
    my copy of NewWindow struct ...)

The above is just one very tiny example.  In short, I would like you to show
me how programming a multitasking system can be *easier* than programming a
monotasking one.

-jc
--
Joseph Chung
== You can always find what you're not looking for! ==
laba-1ei@web.berkeley.edu

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (06/02/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>Try this one on for size:
>
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just
>1. load a segment register with the segment of the screen.
>2. write the proper byte to the screen location (using a simple offset) (In
>short, is a basic POKE command!)
>
>How would you accomplish this in an Amiga?

Well, how about :
	win = fopen("CON:640/200/0/0","w+");
	fprintf(fp,"\e[%d;%dH%s",y,x,"X");

Prints the character X at x, y.

Of course in your rather rude IBM example you just bang on the hardware,
the equivalently rude thing on the Amiga is :
	IntuitionBase = OpenLibrary("intuition.library",0L);
	GfxBase = OpenLibrary("graphics.library",0L);
	rp = &(IntuitionBase->FirstScreen->RastPort);
	Move(rp, x, y);
	Text(rp, "X", 1);

Of course this screws up the display, just like the IBM example given
does. The only difference between this and making it nice is getting
your own rastport which means opening your own window which is really
trivial in AmigaBASIC and in C it is also pretty trivial. 

My final comment on all this silliness is wait until you get a real job
and someone asks you to put characters on an "X11" window. Hooboy,
that may be too difficult for you. This is one of the reason why 
"years and years" of experience programming the IBM PC just doesn't
cut it in my book.
--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"

phoenix@ms.uky.edu (R'ykandar Korra'ti) (06/02/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>In article <2487@zipeecs.umich.edu> gilgalad@dip.eecs.umich.edu (Ralph Seguin)
>writes:
>>It is just as easy, and often far easier to write
>>stuff for the Amiga than most other systems around.
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just [write directly to a memory location]
>How would you accomplish this in an Amiga?
>1. Create my own screen, or should it be my window (damn, where did I put
>    my copy of NewWindow struct ...)
     Very invalid. This is giving the IBM the benefit of having a screen
set up already, which is always done automatically by the hardware. (Even
ignoring the fact that it's the only screen available, and that you're
insuring that your programme will be harder to port by writing directly to
the hardware).
     Give the Amiga the same benefit - in the form, say, of an open,
full-screen CLI - and you can put a character at location X using a simple
escape code sequence. (You can also do this with the IBM, as I'm sure you
know.)
     Now: let's try it the other way (reversing the prejuduce for a moment):
     Let's open a graphics screen with at least one window and pull-down
menus and a mouse pointer. At the same time, we want to keep our original
command screen (Workbench on the Amiga; the text-based command.com "screen"
on the IBM) available through some sort of switching mechanism (of your
choice.) Using pre-supplied windowing routines other than those provided
by the operating system or a standard compiler (say, Turbo Pascal) is NOT
allowed. I think you'll find it's a lot easier on the Amiga, no?
>In short, I would like you to show
>me how programming a multitasking system can be *easier* than programming a
>monotasking one.
     Multi-tasking versus mono-tasking is not a factor in difficulty of
programming. See: windows 3.0, where you sample MS-DOS programme will run
concurrently with other MS-DOS programmes (Multitasking, sort of) or along
with pure MS-DOS (Single-tasking) thanks to the wonders of virtual machines.
                                                    - R'ykandar.
-- 
| R'ykandar Korra'ti | Editor, LOW ORBIT | PLink: Skywise | CIS 72406,370 |
| Elfinkind, Unite! | phoenix@ms.uky.edu | phoenix%ms.uky.edu@ukcc.bitnet |
| "Careful, mom, the toys are loose!" - from The Wizard of Speed and Time |

navas@cory.Berkeley.EDU (David C. Navas) (06/03/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just
>1. load a segment register with the segment of the screen.
>2. write the proper byte to the screen location (using a simple offset) (In
>short, is a basic POKE command!)
>How would you accomplish this in an Amiga?
>1. Create my own screen, or should it be my window (damn, where did I put
>    my copy of NewWindow struct ...)
>The above is just one very tiny example.  In short, I would like you to show
>me how programming a multitasking system can be *easier* than programming a
>monotasking one.

Now, now, Joe -- it's not all that bad.

Try using -- Write(Output(), "Hello World", 11)  [I hope I have that in the
						correct order]

On an IBM, you have to:  make sure if you have an appropriate graphics card,
load the *correct* segment register and load the *proper* byte.  Which can
end up being just a wee bit more complicated than a 'simple' poke.

In fact, in my experience (which is about to become painfully broader)
accessing any memory in a PC is a pain in the butt.  But that's a tangent...

Now, of course if you wanted to *draw* a character into the *graphics*
screen, lessee, you need to...  [you get the picture, right?]

It's clear you've never seen how the Mac applications have to talk to *their*
interface.  Darn good thing they had a toolbox!!

>Joseph Chung
>== You can always find what you're not looking for! ==
>laba-1ei@web.berkeley.edu


David Navas                                   navas@cory.berkeley.edu
"Excuse my ignorance, but I've been run over by my train of thought."  -me

ammrk@swbatl.sbc.com (Mike R. Kraml) (06/03/90)

In article <136558@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:
>In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>>Try this one on for size:
>>
>>In an IBM (no flames please!), if I want to put a character anywhere on the
>>screen, I just
>>1. load a segment register with the segment of the screen.
>>2. write the proper byte to the screen location (using a simple offset) (In
>>short, is a basic POKE command!)
>>
>>How would you accomplish this in an Amiga?
>
>Well, how about :
>	win = fopen("CON:640/200/0/0","w+");
>	fprintf(fp,"\e[%d;%dH%s",y,x,"X");
>
>Prints the character X at x, y.
>
>Of course in your rather rude IBM example you just bang on the hardware,
>the equivalently rude thing on the Amiga is :
>	IntuitionBase = OpenLibrary("intuition.library",0L);
>	GfxBase = OpenLibrary("graphics.library",0L);
>	rp = &(IntuitionBase->FirstScreen->RastPort);
>	Move(rp, x, y);
>	Text(rp, "X", 1);
>
>Of course this screws up the display, just like the IBM example given
>does. The only difference between this and making it nice is getting
>your own rastport which means opening your own window which is really
>trivial in AmigaBASIC and in C it is also pretty trivial. 
>
>My final comment on all this silliness is wait until you get a real job
>and someone asks you to put characters on an "X11" window. Hooboy,
>that may be too difficult for you. This is one of the reason why 
>"years and years" of experience programming the IBM PC just doesn't
>cut it in my book.

Yes... I had to Reprint all of this wonderfull Followup!  Excellent reply
Chuck, you took the words right out of my mouth!!!!!! 

>--
>--Chuck McManis						    Sun Microsystems
>uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
>These opinions are my own and no one elses, but you knew that didn't you.
>"I tell you this parrot is bleeding deceased!"


-- 
 =============================================================================
  Mike Kraml - Manager-Separations MECHANIZATION - SWBT - (The Techies)
  UUCP: {uunet, bellcore, texbell}...!swbatl.sbc.com!ammrk   
 =============================================================================

ckp@grebyn.com (Checkpoint Technologies) (06/04/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>Try this one on for size:
>
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just
>1. load a segment register with the segment of the screen.
>2. write the proper byte to the screen location (using a simple offset) (In
>short, is a basic POKE command!)
>
>How would you accomplish this in an Amiga?
>Let's see.
>1. Create my own screen, or should it be my window (damn, where did I put
>    my copy of NewWindow struct ...)

You must admit that was not a great example.


On both IBM (clone) systems and the Amiga, in C, you
can open a file to the console and use ANSI control sequences for input
and output; in fact one program can be written which will work equally
well on both the IBM and the Amiga.  (And further, you can be more sure
that the program will work correctly on the Amiga because there's no
prerequisite that the user choose to install the ANSI.SYS screen
driver.)
-- 
First comes the logo: C H E C K P O I N T  T E C H N O L O G I E S      / /  
                                                                    \\ / /    
Then, the disclaimer:  All expressed opinions are, indeed, opinions. \  / o
Now for the witty part:    I'm pink, therefore, I'm spam!             \/

pa2027@sdcc13.ucsd.edu (Knight 'o Shadows) (06/04/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just
>1. load a segment register with the segment of the screen.
>2. write the proper byte to the screen location (using a simple offset) (In
>short, is a basic POKE command!)
>
>How would you accomplish this in an Amiga?
>Let's see.
>1. Create my own screen, or should it be my window (damn, where did I put
>    my copy of NewWindow struct ...)
>
>The above is just one very tiny example.  In short, I would like you to show
>me how programming a multitasking system can be *easier* than programming a
>monotasking one.
>
>-jc
>--
>Joseph Chung
>== You can always find what you're not looking for! ==
>laba-1ei@web.berkeley.edu

Say what??? You're comparing a text environment with a GUI!  Let's
see you put a character somewhere under Windows or GEM!!!  I can do
it that easily opening a console window too on the Amiga.  You're
comparing Apples to Oranges here...

Also programming under AmigaDos is inherently multi-tasking.  I
don't
have to worry about multitasking (unless I want too).  All I do is
write the program without breaking rules, and ta da! it'll
multitask.

Before you try flaming an architecture, know what you're talking
about first!!! thanks,
    
    -Brad McQuaid

--
Michael Butler - "Water, water everywhere nor any drop to drink"-
S.T. Coleridge and Iron Maiden////   Brad McQuaid - When reality
obscures your dreams, mind becomes a graveyard of memories, that
wander like the lonely breeze... -Fates Warning, No Exit

bknight@runxtsa.runx.oz.au (Phillip Mills) (06/04/90)

gilgalad@dip.eecs.umich.edu (Ralph Seguin) writes:

> Hi.  I've been watching the discussion of how difficult it is to
> program the Amiga versus other systems.  I've seen a lot of nonsense.
> Somebody has been making claims that it is relatively difficult to
> program the Amiga.  It is just as easy, and often far easier to write
> stuff for the Amiga than most other systems around.

As far as my experience in programming goes the AMIGA is really easiy compared
to some machine's! Example is the Apple IIGS (which I used to own) - Very easy
to construct something but Bloody damn difficult to conform to the WEIRD satndars

I tis easier to write software for the AMIGA than any other computer either
using an Assembler or 'C' Development language! Oh Well that is my opinion any
way! (Try Programming a mac *:)		)

See YA!

bknight@runxtsa.runx.oz.au

 

new@udel.EDU (Darren New) (06/04/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just
>1. load a segment register with the segment of the screen.
>2. write the proper byte to the screen location (using a simple offset) (In
>short, is a basic POKE command!)

Uh huh.  And what exactly is the segment register for the screen?
Last I looked, even the two original available screens (CGA and Monochrome)
did not have the same base segment for the screen memory.  Lets take
a different example: wait five seconds on any computer running MS-dos.
		   -- Darren

gpsteffler@tiger.uwaterloo.ca (Glenn Steffler) (06/05/90)

In article <20990@estelle.udel.EDU> new@ee.udel.edu (Darren New) writes:
>In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>>In an IBM (no flames please!), if I want to put a character anywhere on the
>
>did not have the same base segment for the screen memory.  Lets take
>a different example: wait five seconds on any computer running MS-dos.
>		   -- Darren

Ummm...do you mind I ask why you limit a PC to running MS-DOS...Getting a 
five second timout is as easy as a simgle function call, and a procedure
address it needs to vector to once the delay has been accomplished...

if you happen to be programming in Windows.

----
Co-Op Scum
Glenn Patrick Steffler
gpsteffl@sunee.uwaterloo.ca	gpsteffl@sunee.waterloo.edu

jmelv@madnix.UUCP (John Melvin) (06/05/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu>, laba-1ei@e260-2f.berkeley.edu (Joseph Chung) writes:
> In article <2487@zipeecs.umich.edu> gilgalad@dip.eecs.umich.edu (Ralph Seguin)
> writes:
> >Hi.  I've been watching the discussion of how difficult it is to
> >program the Amiga versus other systems.  I've seen a lot of nonsense.
> >Somebody has been making claims that it is relatively difficult to
> >program the Amiga.  It is just as easy, and often far easier to write
> >stuff for the Amiga than most other systems around.
> > 
> 
> Try this one on for size:
> 
> In an IBM (no flames please!), if I want to put a character anywhere on the
> screen, I just
> 1. load a segment register with the segment of the screen.
> 2. write the proper byte to the screen location (using a simple offset) (In
> short, is a basic POKE command!)
> 
> How would you accomplish this in an Amiga?
> Let's see.
> 1. Create my own screen, or should it be my window (damn, where did I put
>     my copy of NewWindow struct ...)
> 
> The above is just one very tiny example.  In short, I would like you to show
> me how programming a multitasking system can be *easier* than programming a
> monotasking one.
> 

	Let's at least compare apples to apples, not oranges.  Your example
	is based more on the added complexity of a GUI interface rather than
	the specifics of programming on machine or another.  I can tell you
	first hand you IBM becomes quite a bit more like an Amiga once you
	load up you brand-spanking-new Windows 3.0 (esp. with regard to the
	'setup' necessary to have a screen to talk to).  It is _not_ the
	multitasking nature that 'forces' more difficulty, but rather the
	environment attempting to be achieved (specifically the intelligent
	managing of limited resources).  Oh, just to be nasty, I'd like to
	'poke' my char at the 40 1/2 column on the screen -- oh, guess that
	won't work on a strictly columnar screen that is the IBM default :).
	Anyhow, using the console device on the Amiga is just like the PC in
	terms of difficulty if you want a strictly column-based, easy to
	use, minimal programmer difficulty method of output.  How boring.

	John

[d*mmit]
[pnews]
[let]
[me]
[post]
[this]
[article]
[with]
[appropriate]
[context]
[included!]
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
John P. Melvin         "Magic is real -- unless declared integer."
                                                                       //
UUCP:  {harvard|rutgers|ucbvax}!uwvax!astroatc!nicmad!madnix!jmelv   \X/ AMIGA

laba-1ei@e260-3c.berkeley.edu (Joseph Chung) (06/05/90)

Since I posted the original REPLY that generated so much flames, I feel that
I must clarify my position.  I in no way endorsed the IBM PC when I said it
was easier to program.  I own an Amiga and I like it very much, (yea even
programming it!)

Now, maybe all your emminences out there can help a little guy out.  I've
toyed with the Pets, 64's, AppleII's, IBM's, and Amigas, and in all cases I
found it easier to get things done on everything else but the Amiga.

When I first bought the Amiga, I faced one of my steepest learning curves.
But hey, maybe I just find this type of programming harder.  I didn't know
all of you had such an easier time learning to program it (compared to a few
of the aforementioned systems).

So what's wrong here ?? :)

And why did some of you (you know who you are!) out there resort to more
than friendly :) replies?  I took those messages with the utmost respect and
care.

-jc
--
Joseph Chung
== You can always find what you're not looking for! ==
laba-1ei@web.berkeley.edu

northrup@wpi.wpi.edu (Jim Northrup) (06/05/90)

In article <1990Jun5.084107.162@agate.berkeley.edu> laba-1ei@e260-3c (Joseph Chung) writes:
>.............................I in no way endorsed the IBM PC when I said it
>was easier to program......................................................
>.....................................................................I've
>toyed with the Pets, 64's, AppleII's, IBM's, and Amigas, and in all cases I
>found it easier to get things done on everything else but the Amiga.
>When I first bought the Amiga, I faced one of my steepest learning curves.
>But hey, maybe I just find this type of programming harder................

I agree with you, 100%.  But it's not really the _Amiga_ that's so hard to
program, so much as GUI's in general.  As somebody pointed out, writing for
MS-Windows or a Mac would be also be hard.

I understood you message as you posted it in the first place: GUI's in general,
and the Amiga in particular, are in fact harder to program than any of the
machines you mentioned above, which typically come without GUI's.

As far as GUI's go, though, the Amiga probably has a fairly easy one to
program.  (e.g. I'm writing X-windows applications  now.  Ugh!)

>.............................................................I didn't know
>all of you had such an easier time learning to program it (compared to a few
>of the aforementioned systems).

Unless they'd programmed GUI's before, I wouldn't believe them if they said
they had an easy time with the Amiga than with (say) a non-Windows PC.

In summary, you're right, they're wrong.  :-)
-- 
Jim Northrup                                               northrup@wpi.wpi.edu
Assistant Professor, Mathematical Sciences             WPI, Worcester MA  01609

cosell@bbn.com (Bernie Cosell) (06/05/90)

I think you people are missing part of the point.  Granted that
programming for a really flexible GUI on a multitasking machine has
some inherent difficulties.  NONETHELESS, AmigaDos has a bunch of what
I think are bad design decisions that make it a *lot* harder than it
should have had to be.  [NB: I can't compare this to programming either
the PC or the MAC [I understand that the latter is a REAL nightmare!],
but only to programming on 'big' systems... I didn't get my Amiga as
the king of small machines, but rather as the smallest 'real' machine,
and so I evaluate NOT in contrast to the other little boxes, but as a
small incarnation of a BIG one...]

1) the absence of resource tracking.  This decision pollutes the Amiga
at every level.  It makes msot routine programming tasks a (relative)
nightmare, since you have to be anal-retentive to a degree I find a
constant nuisance.  Freeing locks, closing open files, freeing memory,
etc, etc.  It makes interrupt-handling code a mess, it means that it is
hard to get rid of a runaway program...  altogether a loser.

2) Having the sender be the 'owner' of messages.  Having a
message-passing paradigm within the operating system is a lovely and
clever idea.  Having messages be the 'property' of the *sender* was a
serious mistake: again, making programs more complicated, making it
overall much more likely that the machine gets screwed up, etc.  The
problem is that, as with resource tracking, this decision makes it
unnecessarily difficult to clean up a process, and also means that the
code has to be uglified to have wait's to make sure that everything
that was sent gets replied to.  A different plan (which we happen to
use in a system here and works out just fine) is to have the current
holder of a message be its owner, and so be responsible for freeing it
(or forwarding it, or whatever the recipient wants to do with it).  It
means that you can just "send it and forget it", instead of having to
ensure that you wait for the reply before you exit your process.
Instead of treating the reply as a REAL reply, just treat it as an
*independent* message going in the reverse direction... means that if
the requestor is gone, for whatever reason, the replier can just
discard the message and the system happily hums along... nothing lost,
no gurus, no nothing..

   /Bernie\

jmeissen@oregon.oacis.org (John Meissen) (06/05/90)

People think the Amiga is difficult to program for a variety of 
reasons, but so far I haven't seen any that make sense. For
instance,...

In article <56964@bbn.BBN.COM> cosell@bbn.com (Bernie Cosell) writes:
>I think you people are missing part of the point.  Granted that
>programming for a really flexible GUI on a multitasking machine has
>some inherent difficulties.  NONETHELESS, AmigaDos has a bunch of what
>I think are bad design decisions that make it a *lot* harder than it
	[etc. etc.]
>1) the absence of resource tracking.  This decision pollutes the Amiga
>at every level.  It makes msot routine programming tasks a (relative)
>nightmare, since you have to be anal-retentive to a degree I find a
>constant nuisance.  Freeing locks, closing open files, freeing memory,
>etc, etc.  It makes interrupt-handling code a mess, it means that it is
>hard to get rid of a runaway program...  altogether a loser.

Oh, give me a break. This is just lazy programming. Any programmer
that wasn't careful about closing open files and freeing memory, etc.,
wouldn't be working for me for very long. And I don't care WHAT
system he is writing programs for. It can be nice to have the
system clean up after you when you make mistakes, but it's not
commercial quality software when your program depends on it.

>2) Having the sender be the 'owner' of messages.  Having a
>message-passing paradigm within the operating system is a lovely and
>clever idea.  Having messages be the 'property' of the *sender* was a
>serious mistake: again, making programs more complicated, making it
	[long dissertation deleted]

This is another misconception. Remember, there isn't any resource
tracking on the Amiga. No process is the "owner" of any memory. It's
merely convention that a process return a message when it is through
with it. This has more to do with synchronization than ownership.
When the message comes back, you know the recipient is finished with
it. There's nothing at all preventing you from implementing a
different scheme within the framework of your own programs.

>   /Bernie\


-- 
John Meissen .............................. Oregon Advanced Computing Institute
jmeissen@oacis.org        (Internet) | "That's the remarkable thing about life;
..!sequent!oacis!jmeissen (UUCP)     |  things are never so bad that they can't
jmeissen                  (BIX)      |  get worse." - Calvin & Hobbes

ckp@grebyn.com (Checkpoint Technologies) (06/06/90)

In article <1990Jun5.084107.162@agate.berkeley.edu> laba-1ei@e260-3c (Joseph Chung) writes:
>
>Since I posted the original REPLY that generated so much flames, I feel that
>I must clarify my position.  I in no way endorsed the IBM PC when I said it
>was easier to program.  I own an Amiga and I like it very much, (yea even
>programming it!)
>
>Now, maybe all your emminences out there can help a little guy out.  I've
>toyed with the Pets, 64's, AppleII's, IBM's, and Amigas, and in all cases I
>found it easier to get things done on everything else but the Amiga.

If you're really interested in a simple Amiga programming environment,
then you should read the Bantam AmigaDOS manual and nothing else.  Then
you can use Read() and Write() with CON: for input and output, and it's
about as simple as you want it to be. You can even get mouse click
messages, raw keycodes, and window configuration information.

But if you think that doing windows, menus, gadgets, requesters,
screens, views and viewports, bobs, sprites, and such sophisticated
Amiga things, when acting as a task in a multi-tasking system, should
be as simple as doing single-tasking text applications on the IBM, then
you are just going to be dissapointed.  Get used to it.
-- 
First comes the logo: C H E C K P O I N T  T E C H N O L O G I E S      / /  
                                                                    \\ / /    
Then, the disclaimer:  All expressed opinions are, indeed, opinions. \  / o
Now for the witty part:    I'm pink, therefore, I'm spam!             \/

daveh@cbmvax.commodore.com (Dave Haynie) (06/06/90)

In article <1990Jun5.084107.162@agate.berkeley.edu> laba-1ei@e260-3c (Joseph Chung) writes:

>Now, maybe all your emminences out there can help a little guy out.  I've
>toyed with the Pets, 64's, AppleII's, IBM's, and Amigas, and in all cases I
>found it easier to get things done on everything else but the Amiga.

I think "toy-ed" is the operative word.  Pets, 64's, AppleII's, and IBMs (at
least under MS-DOS) are very fundamentally the same, to the programmer.  You
own most everything, and do whatever you feel like with it.  This also has
a severe tendency toward making the machine you're programming a toy, or
something similar.  On the C64, for instance, even straightforward programs
poke to the screen, jump to illegal places in ROM, etc.  So the ROM is
essentially a part of the C64 hardware design now, and you'll never get an
improved C64 that's C64 compatible.  Even the C128 resorts to a new mode and
completely different ROM to use new features.  The MS-DOS machines were a
little better, but not much -- MS-DOS applications are very hardware specific,
and most of the new OSs for PClone machines like DesqView or MS-Windows use
quite a bit of magic to get the average MS-DOS program to run.  The '386
chip helps here, but doesn't change a kludge from being a kludge.

>When I first bought the Amiga, I faced one of my steepest learning curves.
>But hey, maybe I just find this type of programming harder.  I didn't know
>all of you had such an easier time learning to program it (compared to a few
>of the aforementioned systems).

Like I said, the aforementioned systems are all very similar.  If you've
spent years programming minicomputers, systems like those you mentioned would
seem much more difficult to you than the Amiga.  It all depends on your point
of view.  I learned BASIC on a Cyber 72, then a PET, then I spend several
years programming on a Sorcerer, then moved to a DEC-20, then UNIX on a 
PDP-11, then an Intel 8080 development machine, then VMS on a VAX.  After all 
of that, I found things like the C64 and C128 far too weak for any serious 
programming.  The Amiga was the first PC I really felt comfortable with.

>So what's wrong here ?? :)

Your prespective.  Program nothing but an Amiga for a year or two and then
try going back.

>Joseph Chung


-- 
Dave Haynie Commodore-Amiga (Amiga 3000) "The Crew That Never Rests"
   {uunet|pyramid|rutgers}!cbmvax!daveh      PLINK: hazy     BIX: hazy
	"I have been given the freedom to do as I see fit" -REM

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (06/07/90)

In article <1990Jun5.084107.162@agate.berkeley.edu> (Joseph Chung) writes:
>When I first bought the Amiga, I faced one of my steepest learning curves.
>But hey, maybe I just find this type of programming harder.  I didn't know
>all of you had such an easier time learning to program it (compared to a few
>of the aforementioned systems).
>So what's wrong here ?? :)

It is all relative to what you have done before. Is there really a lot
of difference be learning that poking addresses X, Y, and Z will put
a C64 into Hi-res color mode, versus calling function OpenScreen() with
parameters X, Y, and Z will get you an Amiga Screen in Hi-res color mode?

If you learn how to program on a PC maybe it is tougher than if you learned
how to program on a window based box. I think a lot of people took offense
at the implication in your message that the Amiga was _gratuitously_ 
harder to program. Meaning that for some reason the designers had made
up a bunch of rules on programming just to make it harder to program.
This was of course not the case and everyone let you know what they
thought. 


--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"

eachus@linus.mitre.org (Robert I. Eachus) (06/07/90)

In article <136762@sun.Eng.Sun.COM> cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) writes:

   It is all relative to what you have done before. Is there really a lot
   of difference be learning that poking addresses X, Y, and Z will put
   a C64 into Hi-res color mode, versus calling function OpenScreen() with
   parameters X, Y, and Z will get you an Amiga Screen in Hi-res color mode?

     The major difference, I think is learning how NOT to think
sequentially. I have run into a number of former application
programmers who never could learn this, and therefore had to be
assigned away from systems programming and even compiler writing.

     The test I always use now is whether someone can write re-entrant
code.  If they can do that, the Amiga is a lot easier to program for
than Suntools, or X-windows, or even a PC.  If they can't, anything
they do for an interactive environment will be either buggy or
frustrating to use.  Unfortunately, a lot of games, even some I paid
money for, seem to fall in this category.

     (Note to game authors: Put a bug in your code using the debugger,
or use the one you are currently debugging, so that the game will die.
Now select Quit from the menu.  Nothing happens?  Don't release it.
If it cleans up all of its memory and exits, it passes my FIRST test
for games.)
--

					Robert I. Eachus

   Amiga 3000 - The hardware makes it great, the software makes it
                awesome, and the price will make it ubiquitous.

jdutka@wpi.wpi.edu (John Dutka) (06/07/90)

In article <12338@cbmvax.commodore.com> daveh@cbmvax (Dave Haynie) writes:
>years programming on a Sorcerer, then moved to a DEC-20, then UNIX on a 

Finally!  Someone who admits to programming on a DEC-20.  I did some
FORTRAN programming for mechanical/aerospace engineering applications on a
DEC-20 a few years ago, and programming on an Encore Multimax now just isn't
the same.  :)


--
| husc6!m2c!wpi!jdutka | "Hey, baby - wanna do some HEAT TRANSFER?           |
| jdutka@wpi.wpi.edu   |  Heh, heh, heh!"                                    |
| John Dutka, Jr.      |     -Mechanical Engineers On The Prowl              |
| jdutka%wpi.wpi.edu%mitvma.bitnet __________________________________________|

xanthian@zorch.SF-Bay.ORG (Kent Paul Dolan) (06/10/90)

In article <1990Jun2.063414.10292@agate.berkeley.edu> laba-1ei@e260-2f (Joseph Chung) writes:
>In article <2487@zipeecs.umich.edu> gilgalad@dip.eecs.umich.edu (Ralph Seguin)
>writes:
>>Hi.  I've been watching the discussion of how difficult it is to
>>program the Amiga versus other systems.  I've seen a lot of nonsense.
>>Somebody has been making claims that it is relatively difficult to
>>program the Amiga.  It is just as easy, and often far easier to write
>>stuff for the Amiga than most other systems around.
>> 
>
>Try this one on for size:
>
>In an IBM (no flames please!), if I want to put a character anywhere on the
>screen, I just
>1. load a segment register with the segment of the screen.
>2. write the proper byte to the screen location (using a simple offset) (In
>short, is a basic POKE command!)
>
>How would you accomplish this in an Amiga?
>Let's see.
>1. Create my own screen, or should it be my window (damn, where did I put
>    my copy of NewWindow struct ...)
>
>The above is just one very tiny example.  In short, I would like you to show
>me how programming a multitasking system can be *easier* than programming a
>monotasking one.

No problem!

You are considering programming in the small, which is the wrong place to
be looking for the benefits of programming the Amiga.

Look instead at programming in the large.  Many companies look at the large
installed base of IBM-PC's and their clones, and say "$$$!!! That's the
place to write programs for sale!".  Then they get into the beta testing
stage of a product and find:

more than 20 incompatible printer formats, requiring a separate driver for
each;

half a dozen incompatible display technologies, requiring either separate
drivers or complex code;

at least two incompatible mouse technologies, requiring separate drivers;

several incompatible raster image export and import formats, ditto;

two or more incompatible memory expansion technologies, each with several
incompatible software access technologies, ditto;

imperfect or incompatible BIOS emulations, requiring separate product releases;

a buggy and poorly maintained operating system, causing headaches all through
the development cycle;

and the list goes on.

I was fired from a company a year ago because my (within size spec, within
speed spec, meeting functional spec, bug free) code had "held up their
development process" (actually, they'd overspec'ed their needs by a factor
of four in complexity); the product release date had slipped seven months
in the nine months I was there as a member of an 18 person development team!

A year later, the product is _still_ not released, and this from about the
fifth largest software developer for the PC family.  A project originally
intended to require 12 months has taken at least 30.

Trying to develop _substantial_ code (not screen pokes) in the PC marketplace
is at least one order of magnitude harder than it is in the Amiga market, I
would guess, and the problem continues to worsen.

Kent, the man from xanth.
<xanthian@Zorch.SF-Bay.ORG> <xanthian@well.sf.ca.us>

(What held up their development the most was the classic problem Fred Brooks
described in The Mythical Man Month:  throwing bodies at a late software
project.  The team went from 9 to 26 from the time the schedule started
slipping.  Each new person required that work be devised for them to do;
most of the existing work was single threaded through one programmer, hard
to teach or subdivide, so _new_ features were added to the product, making
it late than ever.  Still, their stock keeps going up. ;-)

GWO110%URIACC.BITNET@brownvm.brown.edu (F. Michael Theilig) (06/11/90)

On 10 Jun 90 09:47:10 GMT you said:
>
>You are considering programming in the small, which is the wrong place to
>be looking for the benefits of programming the Amiga.
>
>Look instead at programming in the large.  Many companies look at the large
>installed base of IBM-PC's and their clones, and say "$$$!!! That's the
>place to write programs for sale!".  Then they get into the beta testing
>stage of a product and find:
>
>more than 20 incompatible printer formats, requiring a separate driver for
>each;
>
>half a dozen incompatible display technologies, requiring either separate
>drivers or complex code;
>
>at least two incompatible mouse technologies, requiring separate drivers;
>
>several incompatible raster image export and import formats, ditto;
>
>two or more incompatible memory expansion technologies, each with several
>incompatible software access technologies, ditto;
>
>imperfect or incompatible BIOS emulations, requiring separate product releases;
>
>a buggy and poorly maintained operating system, causing headaches all through
>the development cycle;
>
>and the list goes on.
>
     While I sorda agreed when I read the first few posts about smaller
 systems being easier to program (I migraded up from the C64), doing anything
 complex on a smaller system is a serious pain.  On the C64 you had two
 useable language options:  BASIC and ML.  BASIC was slow and very limited,
 and writing major code (I did a BBS which was *HUGE*!) was almost impossible.
 The assemblers I used (better ones were available) were slow, buggy, and a
 pain to use.

     The Amiga is complicated almost to a fault (definate learning curve),
 and the C64 was simplistic to a fault.  Once I get fully up and running
 with Amiga programming, I know I'll never want to leave it.

 ----
      F. Michael Theilig  -  The University of Rhode Island at Little Rest
                            GWO110 at URIACC.Bitnet
                            GKZ117 at URIACC.Bitnet

"Gooooood coffee."

BAXTER_A@wehi.dn.mu.oz (06/13/90)

In article <21622@snow-white.udel.EDU>, GWO110%URIACC.BITNET@brownvm.brown.edu (F. Michael Theilig) write> 
>      The Amiga is complicated almost to a fault (definate learning curve),
>  and the C64 was simplistic to a fault.  Once I get fully up and running
>  with Amiga programming, I know I'll never want to leave it.
> 
>  ----
>       F. Michael Theilig  -  The University of Rhode Island at Little Rest
>                             GWO110 at URIACC.Bitnet
>                             GKZ117 at URIACC.Bitnet
> 
> "Gooooood coffee."

Hmm. I don't know why people keep saying that.

The Amiga is not that complicated. If you just bought it and you want to 
write a BBS, THAT's complicated.

When I bought it, I wanted to write my startup sequence. The only problem
I had was the idiot company forgot to include the instruction manual,
forgot to mention it wasn't in the box, let some complete moron write
it, and got got tin-pot company to publish it, so I had to travel 2,000
miles to buy it.

All we need is good, clear, accessible manuals.
The new programmers docs are fine.
I hope they have started putting the ADos book in the box.

Regards Alan