[TYPES] Declarative vs imperative

Mark Janssen dreamingforward at gmail.com
Mon Apr 22 20:52:24 EDT 2013

>> A C program is not a specification in any sense (if it's even
>> appropriate to call C source text a "program", prior to compilation
>> into an executable).  Only the theorist who has never gotten "close to
>> the machine" could ever say that. <other ranting elided>
> Nikhil's point was the a C program is a "specification" in the sense that it
> has details left out which are filled in by the compiler and the run-time
> system automatically.  He is pointing out the *relativity* of the notions of
> specification and implementation.

But there are no details left out.  Neither the computer nor compiler
"fills in the gaps".  What computing devices are you talking about?
At every step, at the various levels of abstraction, from the
high-level source code, to the the binary executable, there is a
complete and detailed "transformation" logic.   It will compile down
to the same machine code *every* time, if it's working properly.  That
is the beauty or power of the machine--it is completely and rigorously
predictable, if it isn't, it's not a computer.

> May I also point out that this message of your was way too patronizing?
> Please take it for granted that we are all computer scientists here.  We
> have all written assembly language programs, perhaps small compilers and
> fragments of operating systems as part of our education.  So, we don't need
> to be lectured on those topics.

I really thought so, but these continued confusions leaves me little
else to conclude.  What machines do you use, where a C compiler fills
in the gaps of your source code?  Quantum computers?

> However, almost all of us on this list would agree that a compiler does not
> constitute the "meaning" of a programming language.  Rather, the compiler is
> an implementation tool that must preserve the meaning of programs, with a
> notion of "meaning" that is independently defined.

Now you have pointed out an important issue.  Source code as no
meaning.  Computers are inert and not capable of determining meaning.
 It's meaning is determined by the *programmer* who is following the
intentions and specification of the *language designer*.  I don't
believe the word "meaning" needs to be ambiguous because there should
be no disagreement that machines are not conscious.

I do appreciate the dialog and respect your experiences, but these
confusions and ambiguities are seriously debilitating.

Tacoma, Washington

More information about the Types-list mailing list