From: Georg Bauhaus on 7 Apr 2010 12:19 J. Clarke schrieb: > On 4/7/2010 2:43 AM, Georg Bauhaus wrote: >> And in fact, VS2005, which was available in 2006, >> does not have <complex.h> for C. > > So what? If there is no C99 but MS and C and scientific programming is required, this means you can only write C++ programs using MS tools if you want objects of standard complex types. (Or choose Ada or Fortran or ...) But C++ was not mentioned as an option. >> VC++ does support <complex>, >> but enough harm has been done in assuming that writing C using >> a C++ compiler is a good idea. > > What "harm" is this? And in point of fact, VS2005 has no C compiler > except the C++ compiler that you say should not be used for writing C. > What you are calling a "C compiler" is in fact a command line switch > applied to the C++ compiler. C++ overlaps C to a large extent. But the compilers must arrange for the parts of the languages outside the respective other language. However little one might think these differences are, ignoring them can lead to error and to portability trouble. MS C and MC C++ are therefore, strictly speaking, impossibly the same compilers. But: referring to more than a command line switch, Microsoft compilers for many languages use some of the common MS translation technology. That does not make the input languages the same. Just like an Intel C++ compiler and an Intel Fortran compiler share some circuitry, AFAIK. This still does not make C++ or Fortran interchangeable. GCC can be made to translate a number of languages. That does not make the languages basically the same, and not even does it make the dialects of C the same: GCC with -std=c99 and with -std=c89 accept a different set of programs. Even when the effective compiler "program" is changed "merely" by a switch. You might call this nitpicking, but observing the little differences contribute to program quality IMO. If the latter does not count, then why bother to consider language properties in the first place? > My complaint is that you seem to be complaining to be complaining. If > you're using a C++ compiler then write C++, don't whine because its C > support is half-assed. Fitzpatrick wanted to write C, not C++, and he wanted standard complex types. So why should he be using a C++ compiler with half-assed support for C99 without complex? (He, not me.) Writing C using a C++ compiler creates, in addition to other things, the hurdle of having to understand C++ in order to make sense of error messages. (But OTOH, the C++ error messages of some compilers *can* be a lot better than C's in some situations.) The unfortunate notion behind "C/C++" incidentally creates a business opportunity for those who wish to be consultants, recongnizing the "pragmatically" blurred approach to language use. Note that this is not the same as integrating modules written in C and other parts of a program written in C++. But this is moving off topic.
From: Keith Thompson on 7 Apr 2010 13:05 "J. Clarke" <jclarke.usenet(a)cox.net> writes: [...] > Well Visual C++ 2008, which is the only "MS C" in current production, > most assuredly DOES implement a standards-compliant complex data type, > so I don't really understand the point of your complaint. This is off-topic, but ... I'm sure the C++ compiler implements C++'s complex type. Does it support C99 complex types when invoked as a C compiler? They're defined quite differently; they have to be, since standard C doesn't have operator overloading. Here's a test case, a complete translation unit that should compile without error with a conforming C99 compiler: double _Complex new; C and C++ are two different languages. -- Keith Thompson (The_Other_Keith) kst-u(a)mib.org <http://www.ghoti.net/~kst> Nokia "We must do something. This is something. Therefore, we must do this." -- Antony Jay and Jonathan Lynn, "Yes Minister"
From: Simon Wright on 7 Apr 2010 15:27 "robin" <robin51(a)dodo.com.au> writes: > As for your supercilious question, do I <<know of *any* algorithm that > was first developed in machine code?>> -- Wasn't Ada Augusta's first program an algorithm to compute Fibonacci numbers? That would certainly have been in machine code. And Alan Turing thought in machine code ...
From: J. Clarke on 7 Apr 2010 15:41 On 4/7/2010 1:05 PM, Keith Thompson wrote: > "J. Clarke"<jclarke.usenet(a)cox.net> writes: > [...] >> Well Visual C++ 2008, which is the only "MS C" in current production, >> most assuredly DOES implement a standards-compliant complex data type, >> so I don't really understand the point of your complaint. > > This is off-topic, but ... > > I'm sure the C++ compiler implements C++'s complex type. Does it > support C99 complex types when invoked as a C compiler? They're > defined quite differently; they have to be, since standard C doesn't > have operator overloading. > > Here's a test case, a complete translation unit that should compile > without error with a conforming C99 compiler: > > double _Complex new; > > C and C++ are two different languages. Precisely. And Microsoft is not touting any of their current projects as a C compiler so why should they support C99? Look, you have a choice, you can use C or you can use Microsoft compilers, but if you're expecting state of the art C from Microsoft you've come to the wrong shop. I just don't understand what's so great about C that one MUST use it in preference to C++.
From: robin on 7 Apr 2010 22:01
"Simon Wright" <simon(a)pushface.org> wrote in message news:m2tyrnjc5f.fsf(a)pushface.org... | "robin" <robin51(a)dodo.com.au> writes: | | > As for your supercilious question, do I <<know of *any* algorithm that | > was first developed in machine code?>> -- | | Wasn't Ada Augusta's first program an algorithm to compute Fibonacci | numbers? That would certainly have been in machine code. | | And Alan Turing thought in machine code ... He did, because he wrote programs (including subroutines) back in 1945 when he designed the Automatic Computing Engine. |