Re: Where does programming begin?



Logan Shaw wrote:
Florian Brucker wrote:
When one looks at it from a more theoretical point of view it's easier
IMO: Given a Turing machine it's clear what 'programming' should mean:
Supplying the program. If I try to adapt this by replacing the Turing
machine with just any machine that supports 'enough features' I arrive at

Programming is the act of creating a set of commands that can
then be interpreted independently by a machine.

This is probably way too far for your taste, as it includes stuff like
writing HTML (which would in that sense program the computer to produce
a certain graphical layout via the browser). It also includes
programming your VCR, your radio, your alarm clock, etc. But IMHO this
is what the word itself means.

Things my definition does not include is creating the whole machine,
especially if the machine does not interpret programs (e.g. constructing
a finite state automata, because here the machine and the program cannot
be seperated easily).

I think this comment gets at the root of at least the terminology. In the
very early days of (digital) computers, there were special-purpose machines
which had to be built or at least rewired to change their behavior. Then
came the innovation of stored-program computers, in which the functioning
of the computer was no longer just an inherent characteristic of the
machine
but was instead made a part of the state of the machine. Programming is
the
process of changing the state of the machine in such a way that its
behavior
changes.

Note that this terminology is applied not just to data that exists in
volatile
storage. Consider the terms PROM and FPGA. The former is a Programmable
Read-Only Memory, and the latter is a Field-Programmable Gate Array. It's
interesting to note the difference between the terms PROM and EPROM: the
"E" means Erasable, and the distinction is made because a PROM is not
erasable.
So programming, in the general sense, may be a one-way (irreversible)
process.

But I'm not entirely satisfied with that definition. Let's suppose I
made a
photo viewer that reads bitmap data from a PROM and shows it on a CRT.
I can
program some bitmap data (say, a picture of my dog) into the PROM, but
if I do
this, have I really programmed the machine? In some really weak sense
maybe
I have, because the machine's behavior is different: it shows a different
image on its screen. But isn't the stuff on the PROM just the computer's
input and not something that modifies its behavior? That seems fairly
clear
if the image is bitmap data. But suppose it's a vector display instead and
the data is telling the machine which direction to move the CRT's electron
gun over time. That sounds more like a program to me. On the other other
hand, suppose the PROM contains data which is technically a vector program
for the CRT, but in reality it's a degenerate case that moves the gun just
like a raster display. Maybe that's data again.

I suppose one answer could be that programming requires creating
instructions
that express some sort of abstraction. Or maybe it is the process of
applying
reasoning to the task of creating data that modifies the computer's
behavior
in some desired way.

Ah! That's it. And what Heathfield said.

The OP question, as shown, does not seem so cut, and dry, easy to
answer. But, for many people at least, I do think it's one of those of
the category, 'you know it when you see it.'

At a high enough level, or maybe just fairly easy to spot as a function
of easy to delineate criteria, one moves from programming the machine to
programming the program, so to speak -- programming the machine being
the creation of that abstraction on an otherwise dumb machine which is
alluded to above. I think somewhere in this description probably lies
the essential distinction between "programming", and not -- for many,
anyway. A simpler way to put it might be the distinction between what
is essentially configuring a program, and programming.

For instance, with high level languages, say 3gl such as C, as opposed
to assembly, and using only pre-built library routines, one can make a
distinction between programming, and configuring -- configuring would be
filling in the values for parameters to the pre-built routines, and
programming would be, for a start at least, the high level, top down
organization representing the overall program, and beyond that, the
creation of routines using only the C language as opposed to any
pre-built library routines.

I think it's useful to understand the difference between programming,
and not, because it's useful to be in touch with the nuts, and bolts
essence of programming regardless of how high the level of programming
language one uses. I guess I feel this important because with a
sufficient level of abstraction, it's easy to forget what one is doing
so to speak -- to move too far away from a problem solving mind set, and
toward a more automaton one -- once one does this one is more prone to
make bad decisions, miss opportunities, and so on, though I realize, and
note, this is what the "high level" is supposed to insulate from.

Bryan


- Logan

--
Posted via a free Usenet account from http://www.teranews.com

.



Relevant Pages

  • 1702A EPROM Programmer Trouble Shooting
    ... I can "program" a completely erased 0x00 PROM to completely 0x00. ... small PCB to adapt the 0v to -47v programming voltages that the ... my timing against a data sheet. ...
    (sci.electronics.design)
  • Re: Where does programming begin?
    ... IMO: Given a Turing machine it's clear what 'programming' should mean: ... Consider the terms PROM and FPGA. ... photo viewer that reads bitmap data from a PROM and shows it on a CRT. ...
    (comp.programming)
  • Re: Where does programming begin?
    ... IMO: Given a Turing machine it's clear what 'programming' should mean: ... Consider the terms PROM and FPGA. ... photo viewer that reads bitmap data from a PROM and shows it on a CRT. ...
    (comp.programming)
  • Re: Programming 74ALS188 PROM
    ... need to duplicate this working 74ALS188 PROM but I still have no clue ... know the programming algorithm for this PROM. ... PCB, I assume). ...
    (comp.arch.embedded)
  • Re: what is the difference between "configuring" and "programming"?
    ... "configuring Xilinx FPGAs" and "programming CPLDs and PROMs" i am not a english-speaker, and cann't fully understand the difference of the two words "configuring" and "programming", anybody can explain that for me? ... The typical rationale given was that because one is a volatile medium and the other a non-volatile medium (PROM and CPLD) and their programmed behavior different in that one loses its memory after power off and the other doesn't; so the "action" describing the programming operation should be different, ...
    (comp.arch.fpga)