#Lattice vs. Manx
29 messages in this thread
Eet – there have _never_ been more Manz examples. The RKM examples have
_always_ been in Lattice, all the original stuff was in Lattice, and even
during Manxes heyday, there was more lattice. manx just wishes there was
more – and with the current state of affairs, they have a huge amount of
catchup to do to get even, much less exceed the amount of Lattice source.
Ben,
For a long time, most developers were using Manx, due to its better code
generation, sped of compilation, resulting code size, and so on. That isn't
the case now, but there have alays been numerous examples in Manx to draw
from. I wouldn't go so far as to say there were more examples in Manx, but
among' example programs, most of what was useful to me for illustrative
purposes was indeed manx.
-larry
Larry, I'd have to say that there was never a time when "most developers
were using manx". There was a time when manx was highly touted here on CIS,
despite it's backwards inclusion of garbage capabilities like ILAC, it's
inability to link in the std Amiga format, the all-in-one (small) data
capability, it's far-from compliance with ANSI, and it's default to 16 bit
operation when that was NOT the std… I heard a lot of people here singing
it's praises – but I rarely ran into code that was actually made with it. I
know some of the PD guys use it – Keith, for instance – and I know that
some of the developers use it, too. There were some perfectly horrible code
examples in Transactor, for instance. But Lattice was never the minority
compiler – it only seemed that way to those who had Manx, because they
wanted it to be that way.
they generated smaller code only with the default options set to non-std –
16 bit. Lattice pointed out (repeatedly) that if you asked for 16 bit stuff
and so on with the then-current compiler, you got executable of comparable
size. Part of that issue was start-up code, too – the Lattice startup code
is much more robust, feature wise, than the Manx, which made it bigger.
Faster code? Same issues. Use the same options, you got comparable code.
There never was any huge performance gap, except to hopeful Manx owners.
I've been generating Amiga applications with Lattice for almost five years
now, and I've been completely satisified – my one fling with Manx was
truncated by the peculiar proprietary linking, the lousy defaults, the
small data capacity, and the fact that it supported ILAC, which I view as
the worst C sin going.
Ben
Amateur Radio Callsign is A A 7 A S
Ben, Lattice had a head start w/ the Amiga market in that they were the 1st
compiler up and running. However, once Manx was available _almost
everyone_ used our product over Lattice's. It was only when Lattice came
out w/ the 5.0x product that people went back to them. The fact is that
for a long time Manx produced better code for the majority of applications
than Lattice did. The fact is that Manx had a source debugger available
before Lattice did. The Lattice and Manx products are now, at this point,
pretty much evenly matched (comparing Lattice 5.05 and Manx 5.0a).
And please don't talk about ANSI compatability (of which Lattice doesn't
have at the moment, and they've only been close to since 5.0x. And I'm
sick of hearing about ILAC – if you don't like it, don't use it. If you
won't use Manx becasue we offer features Lattice doesn't have, which you
are in no way forced to use by us, then its your loss.
-Mike
Well I'd point out that much of the ANSI features were in Lattice 4.0, such
as ANSI prototyping (which I considered to be more valuable than a
debugger). Lattice is also not as far from ANSI compatibility as you seem
to be implying. Let's try to avoid a big religious war here, please.
Didn't mean to start any rwars – sorry if I gave that impression. However,
lots of people seem to believe that 'prototyping=ANSI', which is
ridiculously far from the truth. There are little matters like
auto-aggregate initialization, string concatenation, library functions, et
al which are also required to be even close to ANSI. Without a doubt 5.0x
of the Lattice compiler comes pretty close to ANSI (not as close as Manx,
but most people won't notice the difference), but Lattice 4.0 doesn't cut
it as ANSI just because of prototyping. As for the debugger vs. ANSI
compatibility, I'd take a debugger any day.
Yes, but Lattice 4.0 was out somewhere around 2.5-3 years ago, when ANSI
wasn't even close to being approved yet. And I really disagree with you
about the debugger. It is amazing how many bugs can be found in supposedly
good code by adding prototype checking. Debuggers don't help to avoid bugs
before they start.
Yes, it is amazing how many bugs prototyping can help find. In fact,
prototyping has done alot to improve my own code quite a bit. However, for
every bug found by function prototyping, 10 more will still be in your
code. Function prototyping does nothing for finding uninitialized
pointers, array overwrites, or a host of other problems. And what about
problems in the actual algorithm being used? In all these cases, a
debugger is by far the best way to pinpoint the problem (in combination
with other methods of course).
Seriously think about how much prototyping speeds up your development time,
and how much a debugger speeds up your development time. I think you'll
find that the debugger ends up doing alot more work, and helps the
programmer more, than the prototypes do. I'm in no way downgrading the
importance of function prototypes, I'm only saying that they only catch one
limited class of bugs.
Mike, IMHO YOU are the one getting a bit non-productive in your comments.
Please tone it down… t h a n k s.
I use Lattice now, but I used MANX before that. What do mean by "peculiar
proprietary linking"? The linking options both MANX and Lattice are
bizarre. (And IMHO Lattice is winning that race) 🙂
Steve, apparently you forget that there was a 'standard' object text when
the Amiga was released. It is described in that ancient (dare I say
revered) tome "AmigaDOS Technical Reference Manual" (nah, prolly better not
use the word revered). Anywho, Lattice supported it, Manx did not.
On the other hand, Lattice one-sidedly expanded the "standard object
format" at one stage in the game of catch-up, by adding new hunk types and
extra debugging information. These additions weren't backwards compatible
to other utilities that manipulated object files, so I don't see why you're
nominating Lattice for sainthood. "All those developers who had to provide
modules in two formats"? How many people does that really affect? After
all, both C compiler companies have done many, many things to make their
system more proprietary and less portable, in order to lock their users
into a particular compiler. And couldn't Manx 3.6 load and link regular
Amiga object modules, but it couldn't create them?
John, all of what you say is true. Lattice _did_ extend (an obviously
extensible language….Amiga Object). BTW, the debugging information
couldn't have been TOO much of a push..since the programs still loaded and
Lattice did NOT (nor did C=) change the LoadSeg() to compensate. Manx
_eventually_ could read 'standard object'.
I disagree. It seems to me that after Manx came out that there was quickly
alot more examples becoming available. I stuck with Lattice anyway and
haven't regretted it since. It does seem that these days Lattice is back to
being the more respected package.
Mike
You're free to disagree – but you're wrong. :^)
Ben
Amateur Radio Callsign is A A 7 A S
Ben,
your wrong. When I got my Manx compiler (since Lattice never sent me
update notices, which was NOT there fault, but C='s), I joined CIS. I
never lacked for examples here. If anything, it seemed to me that there
were more Manx examples than there were Lattice examples, of the new
software uploads.
True, this has changed, and it seems roughly balanced, but your way
offbase here, Ben. I know you don't like Manx, for some of it's features,
but some of us do (and let's not start that arguement all over again).
Brian J. Bartlett
dog oogies… there were more Manx _graphic_ examples on CIS, I know, I
went looking at the time I was shopping for my compiler, so nyaaa.
–Eet–
Didn't Manx have the better compiler a few years ago. I glad the Amiga
market had some competion. Not anything like the PC market, but at least a
little competion has lead to better C compilers over the years.
<<<< Michael Shea >>>> <<<< 76665,3360 >>>>
No, manx never had the better compiler.
Manx defaulted to 16 bit generation (non-std at the time) which resulted in
considerably smaller executeble. Naturally. They also had a smaller, less
capable startup module that was linked in – again, we end up with smaller
code. They had a proprietary link format. You couldn't link in an AMiga
.obj file. They were WAY behind on the current "in-vouge" C stds, that is,
the stds that were in the proces of becoming ANSII, which Lattice kept up
with very well.
There was a lot of BS here about how Manx made this wonderful small, fast
code. John Tobbes, who wrote the Lattice compiler (more or less) took the
time to show the Manx users that using the compiler switches to select 16
bit, no stack checking, and so on, that the Lattice compiler benched out
the same size or SMALLER!!! Further, he provided a number of examples where
the startup code was stripped to the functionality of the Manx code, which
even reduced the cmd size more. The alleged superiority of Manx is mainly
propaganda. Things like defaulting to base register addressing… sure,
saves code size all over the place, AND limits you to 64k (or sometimes
32k) of data. Lattice defaulted to 32 bit addressing – more reasonable,
IMHO, but you could always tell the compiler you wanted base-relative
addressing and get it, along with the penalty of small data space.
Lattice got tired of hearing all this trash, and made the base relative, 16
bit options the default. Too bad – it was not a compiler change, just a
default change, and that only because of all the Manx propaganda from all
directions.
The manx compiler follows a philosophy similar to the IBM one… we'll do
it our way, never mind the standards. I have little use for it.
Lastly, Manx supports in-line asm code; there is nothing worse in the world
of C programming that in-line asm. It's a poor technique used by lazy or
incompetant programmers (or both).
Ben
Amateur Radio Callsign is A A 7 A S
Ben, the only 'standards' we didn't support for a long time was the Amiga
object standard and ANSI. We didn't do ANSI for awhile because we
perceived our source-debugger would be more valuable to Amiga developers,
to which most Amiga developers apparently agreed. As for not supporting
the amiga object format, this is practically a non-issue as almost all\
3rd-party libraries are supplied in Manx and lattice versions anyway. Also,
w/ 5.0a we are by far the more ANSI compliant compiler than Lattice is.
And for ILAC, well you're just hard headed. Considering the fact that no
one has ever forced anybody else to use it, I don't know why you're so
vocal about it.
-Mike
Of course it didn't occur to you that you were (by your irresponsibly
ignoring the standard object format) just simply pushing work YOU should
have done off onto all those developers who needed to provide linking
libraries in 2 formats.
You'd be forced to do that anyway. In the PC world there's the .obj
standard, and yet you still have to provide seperate libraries for Borland,
Lattice, Aztec, MS, etc. This is because each compiler uses 'helper'
functions in its own library to do things like long arithmetic, etc. Also,
library routines like malloc() are implimented differently and require
different background machinery (and often header files) to operate. So even
if Manx did use the BLink format, you'd still be forced to provide 2
libraries.
I don't think anybody can complain about the competion between Manx and
Lattice! I think we're all winners (and whiners).
Not true, Ben. Most inhouse development for the Amiga isn't done on either
Manx or Lattice, or even on the Amiga at all!
Perhaps you view us as being in a severe catch-up situation, but that is
blatantly false. If you look at the _numbers_ of units sold, Lattice and
Manx are pretty evenly matched. Its true on CIS there appears to be more
Lattice users, but on Bix and in general theres a 1:1 ratio. And when
companies like CinemaWare use Manx, and products like VideoScape-3D are
developed w/ Manx, I think your statement is shown to be even more-false.
-Mike
Mike,
I started out using ,the Amiga-C (Lattice) compiler. I finally gave up on
doing anything serious with it and went to Aztec-C. I love it. I had
already sunk the money into the Amiga-C compiler, and I wanted to stay with
it (you know, the baby duckling syndrome), but Lattice didn't make it very
easy on me. I called for support a couple of times, because it appeared the
compiler was generating incorrect array and structure offsets, but was told
I would have to get support from Commodore because I had purchased the
Amiga-C compiler, not the Lattice compiler. This was a big mistake on
Lattice's part, because it alienated programmer's who had purchased the
compiler, knowing it was developed by Lattice, and expecting Lattice
support. I decided to buy the Lattice product for the support, but I read
an ad that announced the introduction of the Aztec-C source level debugger.
That was a real coup, fella's. When I called Lattice and asked about a
possible SDB offering from them (I was STILL trying to buy Lattice!), they
told me that NO enhancements were planned for the compiler. Period. What
was I to do? I bought the Aztec compiler and SDB, and I have been happy
ever since. I have worked with Unix and I am fond of vi, grep, etc. This
was icing on the cake. To be honest, the 5.0x release of Lattice is a far
different/better animal than the old Lattice compiler I was working with,
but the Aztec C DEFINITELY was superior in a number of ways before Lattice
got back into the fray. BTW, I have used a number of different Aztec C
cross compilers, on the job (8080, Z80, etc.), and they have been around a
LONG time (stability, etc.). Lattice has been around a long time too for
that matter. So either compiler will do an EXCELLENT job, its just that the
Lattice marketing guys burned me. BTW, when I was at AmiExpo 2 years ago, a
couple of their programmers were showing me their soon-to-be-released SDB,
and had me really interested. Then along came the sales force, who got bent
out of shape, and made them stop talking to me! I'm sorry Lattice, but I'm
[ MORE ]
[ continuation ]
not going to BEG you to let me buy/investigate you products. 'nuf said 😉
BTW, I just got my Aztec-C 5.0 upgrade. WOW!
Marcus
Please don't blame Lattice for the lack of CBM support you received for
the Amiga C compiler. Lattice still supports that compiler in a sense, in
that you can still upgrade for only $100. I can't explain what happened to
you at the AmiExpo since I wasn't there, but keep in mind that many people
have questions and stop by and we can't spend all our time on a few
people. I do feel that one of the ways Lattice really excels over Manx is
in our technical support, but I'd really like to stay out of this religious
war. It really doesn't do anybody any good.
There have been more Lattice examples, but very early the REAL programmers
quickly found out that those crusty first versions of Lattice were TOTAL
JUNK and that Aztec simply blew the doors of Lattice. Things have changed
and Lattice is a good compiler now, but I believe that still the GOOD
examples are written in Aztec. It does seem to be moving the other way
though now that Lattice is better (for now). Quantity != Quality.