C as a Platonic pathology

D

Dennis \(Icarus\)

On Aug 22, 8:42 pm, "Dennis \(Icarus\)" <[email protected]>
wrote:
I will agree that owing to the greater power of full-feature
compilers, many younger programmers prefer to refer to interpretive
compilers as interpreters. Nonetheless, as I've shown (did you miss
it) all "interpreters", save for the limit case of a language like
Mouse (do you know it?) do compilation in Aho/Sethi's sense, therefore
Richard Heathfield is guilty of libel qed.

Check page 3 of the dragon book, 1986 edition.
"Instead of producing a target program as a translation, an interpreter
performs the operations implied by the source program".

Now, a compiler can generate actual machien code, it could generate code for
a VM, it could generate aassembly, or even translate into another source
language.

The key is the separation of translation and execution.
Reminding me that a DAG is an AST, and a Snark is a Boojum.

A DAG (directed acyclic graph) is not necessarily an AST.

OK, so for you, object code generation for a real machine is a
necessary condition for being a compiler. That's not common use.

It is as far as I can tell.

Dennis.
 
B

Barry Schwarz

On Sat, 22 Aug 2009 19:16:23 -0500, "Dennis \(Icarus\)"


snip
Now, a compiler can generate actual machien code, it could generate code for
a VM, it could generate aassembly, or even translate into another source
language.

You are free to assign any meaning you like to a word but the only
reference I could find that tolerates your expansion of the meaning is
the Linux Info Project. Every other reference requires the output to
be executable machine language. In my experience, programs which
produce output in a different source language have been called
language translators, not compilers.
 
C

Charlton Wilbur

[a great deal]

The fundamental mistake you are making is that you are assuming that Mr
Nilges is arguing in order to arrive at the truth. In fact, he is
arguing in order to hear his own voice, which means that facts and
definitions are useful only insofar as they can be quibbled over at
great length.

You are not going to get him to concede the point, because that will
shorten, rather than lengthen, the argument; and there is nobody left to
impress, as most of the people with more than two brain cells to rub
together have realized that he is a self-important twit with a bad case
of logorrhea.

Charlton
 
D

Dennis \(Icarus\)

Barry Schwarz said:
On Sat, 22 Aug 2009 19:16:23 -0500, "Dennis \(Icarus\)"


snip


You are free to assign any meaning you like to a word but the only

Yes, but to foster communication it's good to use accepted definitions.
reference I could find that tolerates your expansion of the meaning is
the Linux Info Project. Every other reference requires the output to
be executable machine language. In my experience, programs which
produce output in a different source language have been called
language translators, not compilers.

And yet, the phases are so similar. :)
leexical analysis, syntactical analysis, code generation.....

The references I've seen to cfront have referred to it as a compiler, even
though the output was C, and not executable machine language. Just one
example.

Dennis
 
K

Keith Thompson

Barry Schwarz said:
You are free to assign any meaning you like to a word but the only
reference I could find that tolerates your expansion of the meaning is
the Linux Info Project. Every other reference requires the output to
be executable machine language. In my experience, programs which
produce output in a different source language have been called
language translators, not compilers.

The distinction between a compiler and a translator is somewhat vague.
Here's how I've always heard it described.

Suppose you have a translator T that translates some input language
to target language, where the target language itself requires a
compiler or interpreter for the target program to be executed.
(Example: translator = cfront, input language = C++, target
language = C.. There are numerous other examples with C as the
target language.) If errors in the input language program are always
diagnosed by the translator then the translator is a compiler using
the target language as an intermediate form. If, on the other
hand, some errors are left to be diagnosed by the target language
compiler or interpreter, and significant portions of the translated
program are passed through unchanged, then the translator is more
of a preprocessor. The old Ratfor preprocessor, which implemented
control flow constructs for Fortran, is an expamle of this.

In both cases, it might be as accurate to say that the translator
is the front end of a compiler for the input language, and the
compiler consists of both the translator and the compiler for the
target language. For example, cfront together with the C compiler
would constitute a C++ compiler.
 
S

spinoza1111

On Aug 22, 8:42 pm, "Dennis \(Icarus\)" <[email protected]>
wrote:
<snip>




BTW, this is a MASSIVE petitio principii, or question begging
argument:
(Ex)(Ey)[isAnInterpreter(x) && isACompiler(y) &&
doesLexicalAndSyntaxAnalysis(x) && doesLexicalAndSyntaxAnalysis(x) &&
x!= y]
therefore (you conclude) that doesLexicalAndSyntaxAnalysis "cannot" be
used.
Absurd, and heart-breakingly so.

It is heartbreakingly absurd, in that, what I said, what that both
inteprerters and compilers have to perform lexical analysis and synatical
aalysis, hence you cannot claim an interpreter is a compiler on that basis.
Go reread your claim above where you state
"You cannot properly label it an interpreter if it compiles, viz., does
lexical and syntactical analysis."

Yes. Do you understand the difference between a noun and a verb,
Reading Rainbow? Do you understand that the root words are verbs?
How the interpreter is implemented, and what it does with the statement
afterwards, is up to the system.


They'll also add up to an interpeter, as lexical analysis and syntax
analysis are phases of the general problem - laguage translation.

Both nouns apply, then, to the products that Schildt and I produced.
They are compilers (minus back or ass end) and interpreters. It sounds
like you get more, and if I were a sleazebag I'd say so, but I'm not a
sleazebag, so there.
 
S

spinoza1111

On Aug 22, 8:42 pm, "Dennis \(Icarus\)" <[email protected]>
wrote:
<snip>
<snip>








Check page 3 of the dragon book, 1986 edition.
"Instead of producing a target program as a translation, an interpreter
performs the operations implied by the source program".

Now, a compiler can generate actual machien code, it could generate code for
a VM, it could generate aassembly, or even translate into another source
language.

The key is the separation of translation and execution.





A DAG (directed acyclic graph) is not necessarily an AST.

<snip>





It is as far as I can tell.

I agree that usage is trending that way. However, the older meaning
still applies as well, therefore Richard Heathfield is guilty of
libel.
 
S

spinoza1111

On Sat, 22 Aug 2009 19:16:23 -0500, "Dennis \(Icarus\)"


snip


You are free to assign any meaning you like to a word but the only
reference I could find that tolerates your expansion of the meaning is
the Linux Info Project.  Every other reference requires the output to
be executable machine language.  In my experience, programs which
produce output in a different source language have been called
language translators, not compilers.

You've not read enough.
 
S

spinoza1111

Yes, but to foster communication it's good to use accepted definitions.


And yet, the phases are so similar. :)
leexical analysis, syntactical analysis, code generation.....

The references I've seen to cfront have referred to it as a compiler, even
though the output was C, and not executable machine language. Just one
example.

Dennis

The problem here seems to me to be an inability to think in terms of
what's called "topoi", in literary studies. The word derives more or
less from topology in which metric and projective relations are set
aside. Although topology is highly numerate, it appeared to Lacan that
it provided a bridge between mathematics and otherwise "unrelated"
fields including psychoanalysis and literarure.

A "compiler" (using scare quotes to show that unlike certain people
here I don't presume the meanings of words at issue to be known, which
is a *petitio principii*) does front end work. Does it cease being **
in some sense ** a compiler if its developers decide to generate C
SOURCE CODE, because they ALREADY HAVE a nifty keen swell optimizing
compiler for C? And is not this *pons asinorum* in real use in
"industry?"

Shoes for industry! Shoes for the day! Shoes for industry! Shoes for
the day! - The Firesign Theater, Don't Crush that Dwarf, Hand Me the
Pliers

Incapable of conceiving qualitative *topoi* which have no decision
procedure for labeling things, you clowns, who love labels (such as
"troll"), can't seem to get that what's a "compiler" depends upon a
community's praxis and needs, and therefore, seek to libel people
who've accomplished more than you, by denying in Schildt's case that
Little C is a compiler.
 
S

spinoza1111

The distinction between a compiler and a translator is somewhat vague.
Here's how I've always heard it described.

Suppose you have a translator T that translates some input language
to target language, where the target language itself requires a
compiler or interpreter for the target program to be executed.
(Example: translator = cfront, input language = C++, target
language = C.. There are numerous other examples with C as the
target language.) If errors in the input language program are always
diagnosed by the translator then the translator is a compiler using
the target language as an intermediate form. If, on the other
hand, some errors are left to be diagnosed by the target language
compiler or interpreter, and significant portions of the translated
program are passed through unchanged, then the translator is more
of a preprocessor. The old Ratfor preprocessor, which implemented
control flow constructs for Fortran, is an expamle of this.

In both cases, it might be as accurate to say that the translator
is the front end of a compiler for the input language, and the
compiler consists of both the translator and the compiler for the
target language. For example, cfront together with the C compiler
would constitute a C++ compiler.

Lawyers are gonna love this shit. That's because you didn't listen to
me, you big stupid idiot, when I said that COMPILE is the root word.
Because COMPILE is a verb, you will never come up with a definition of
the noun adequate to praxis.

How do you suppose "compilers" were invented? The Official, reifying,
Platonic Story was written by journalists with no clue, and they
fanned out of New York City to Princeton, Yale and Harvard to discover
that a couple of folks "invented" the compiler.

They didn't realise that to compile as a verb is a natural gesture of
the intelligent programmer faced with a problem above a certain level
of complexity. In the very early days, a spiritual mentor (as I relate
in my book) wrote what he later realized were compilers to solve
"hard" problems in railroad data processing, and at that early date,
there were no idiotic managers around to tell him not to "reinvent the
wheel" or that he'd exceeded his remit!

This was because the word, and therefore the Concept (Begriff) didn't
exist in 1955!
 
S

spinoza1111

[a great deal]

The fundamental mistake you are making is that you are assuming that Mr
Nilges is arguing in order to arrive at the truth.  In fact, he is
arguing in order to hear his own voice, which means that facts and
definitions are useful only insofar as they can be quibbled over at
great length.

No, the definitions being proposed are arrogant, reifying, and
productive of corporate stupefaction.
You are not going to get him to concede the point, because that will
shorten, rather than lengthen, the argument; and there is nobody left to
impress, as most of the people with more than two brain cells to rub
together have realized that he is a self-important twit with a bad case
of logorrhea.

Gee, what's "logorrhea"? That's a mighty big word, son. Does it mean
by any chance "can write?"
 
K

Kaz Kylheku

On Sat, 22 Aug 2009 19:16:23 -0500, "Dennis \(Icarus\)"


snip


You are free to assign any meaning you like to a word but the only
reference I could find that tolerates your expansion of the meaning is
the Linux Info Project. Every other reference requires the output to
be executable machine language.

There are language implementations that are called compilers, which output C,
and not machine code.

Lisp hackers refer to sufficiently sohpisticated macros as compilers. LOOP is
effectively a compiler. It translates things like
(loop for x below 5 collecting (* x x)) into Lisp code written without LOOP.

Both C's in ``yacc'' stand for ``compiler'': yet another compiler-compiler.
Yacc outputs C; its compilation has to do with translating a grammar into
program logic.

Programs that grok interface languages and produce RPC stubs and other
materials have been called ``interface compilers'', as have been programs
that generate code from the output of some user interface designer.

Man page for "pic" program:

PIC(1) PIC(1)

NAME
pic - compile pictures for troff or TeX

If you want to insist that compilation refers only to translating a programming
language to machine code, you will have to accept that you will be perceived as
a parochial kook.
 
S

spinoza1111

There are language implementations that are called compilers, which output C,
and not machine code.

Lisp hackers refer to sufficiently sohpisticated macros as compilers.  LOOP is
effectively a compiler. It translates things like
(loop for x below 5 collecting (* x x)) into Lisp code written without LOOP.

Both C's in ``yacc'' stand for ``compiler'': yet another compiler-compiler.
Yacc outputs C; its compilation has to do with translating a grammar into
program logic.

yacc is often referred to as "not another compiler-compiler", either
in the sense of "oh no, not another compiler-compiler" or in the sense
of "generates C code how could it be a compiler of compilers".
o
Programs that grok interface languages and produce RPC stubs and other
materials have been called ``interface compilers'', as have been programs
that generate code from the output of some user interface designer.

Man page for "pic" program:

        PIC(1)                                                  PIC(1)

        NAME
               pic - compile pictures for troff or TeX

If you want to insist that compilation refers only to translating a programming
language to machine code, you will have to accept that you will be perceived as
a parochial kook.

The use of the word is fundamentally verbal, to refer to a deed and
not a thing. But all's fair here when it comes to the politics of
personal destruction. The goal is to destroy Schildt, and to denigrate
each of his accomplishments.
 
P

Phil Carmody

Barry Schwarz said:
On Sat, 22 Aug 2009 19:16:23 -0500, "Dennis \(Icarus\)"


snip


You are free to assign any meaning you like to a word but the only
reference I could find that tolerates your expansion of the meaning is
the Linux Info Project. Every other reference requires the output to
be executable machine language.

Microsoft (and probably Borland) provides simple counter-examples to
that. Don't you remember the p-code output options they used to have
for when space was a premium?

What about compilers which generate Java bytecode?
In my experience, programs which
produce output in a different source language have been called
language translators, not compilers.

So you've never seen an ASN.1 compiler that had C, C++ or Java as
its target language? Which probably means you've never seen many
ASN.1 compilers.

Phil
 
D

Dennis \(Icarus\)

On Aug 23, 10:59 am, "Dennis \(Icarus\)" <[email protected]>
wrote:
A "compiler" (using scare quotes to show that unlike certain people
here I don't presume the meanings of words at issue to be known, which
is a *petitio principii*) does front end work. Does it cease being **
in some sense ** a compiler if its developers decide to generate C
SOURCE CODE, because they ALREADY HAVE a nifty keen swell optimizing
compiler for C? And is not this *pons asinorum* in real use in
"industry?"

Did you miss what I said about cfront being a compiler?
That should answer your question.

Dennis
 
D

Dennis \(Icarus\)

spinoza1111 said:
Lawyers are gonna love this shit. That's because you didn't listen to
me, you big stupid idiot, when I said that COMPILE is the root word.
Because COMPILE is a verb, you will never come up with a definition of
the noun adequate to praxis.

That looks libelous to me. Congrats, you've become precisely what you
(claim) to decry.
Let me guess, It's C's fault. :)
The main "attack" Ive seen from Keith has been to simply disagree with you.
Unless you care to show otherwise?

This was because the word, and therefore the Concept (Begriff) didn't
exist in 1955!

You realize, I hope, that it is now 2009, and that the word does have a
meaning as regards to a specific type of language translator these days.
There are plenty of books available on compilers, interpreters, and language
translators.

Dennis
 
C

Charlton Wilbur

troll> No, the definitions being proposed are arrogant, reifying,
troll> and productive of corporate stupefaction.

Definitions are not arrogant; people are.

I suspect you don't actually understand what 'reifying' means, although
you probably picked it up wherever you got 'topoi' from.

And 'productive of corporate stupefaction'? You're really stringing
words together just to hear yourself type, aren't you?

troll> Gee, what's "logorrhea"? That's a mighty big word, son. Does
troll> it mean by any chance "can write?"

It is a mighty big word, and I regret that it is not in your vocabulary;
its meaning is closer to "can type, but doesn't have a clue about what
to type, and *really* has no clue about when to stop." You may note the
distinction between typing and writing, of course.

Charlton
 
N

Nick Keighley

spinoza1111 said:

<nonsense snipped>

is this information rich?
And yet you ignore the comments. You were told about malloc.h days
ago, for example.

malloc.h, casting of malloc return value, failure to use -> operator,
use of deeply nested, obfuscated and inelegant code.

I'm only going to respond for the benefit of other people or
if he raises an interesting point about beginner C programming
(he does occaisionaly).
 
T

Tim Streater

Richard Heathfield said:
Charlton Wilbur said:



More formally:

(1) /medical/ a condition associated with certain mental illnesses
characterized by incoherent and very rapid talking, often using
nonsense words. (2) /loosely/ the unnecessary use of lots of words
(also called verbal diarrhoea).

From which we conclude that Spinny's posts are largely content-free.
 
D

Dik T. Winter

> A "compiler" (using scare quotes to show that unlike certain people
> here I don't presume the meanings of words at issue to be known, which
> is a *petitio principii*) does front end work.

Ah, now I think I understand. The Algol 68 compiler I did use on CDC
Cybers in reality consisted of about five compilers, each compiling one
language to another.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,777
Messages
2,569,604
Members
45,223
Latest member
Jurgen2087

Latest Threads

Top