

Previous
Next
Index
Thread
No Subject

-
To: Public Netbase NewsAgent
-
Date: Sun, 30 Jun 1996 16:37:11 -0700 (PDT)

In article <4l746e$m8r@newsbf02.news.aol.com>, jkasunich@aol.com says...
>
>
>Elsewhere in this thread, much has been said about how well,
>or how poorly, one language or another handles abstraction.
>My $0.02 on the subject:
>
>Every programming language is an abstraction, they just operate
>at different levels. I work on motor drives. The highest level of
>abstraction for this product is what the customer sees: a box
>with a START and STOP botton. He pushes the buttons, and
>the motor spins. He knows nothing else and is happy that way.
>Then you have the control engineer who sits next to me. He
>looks at the drive as a collection of algorithms that control the
>voltages, currents, and magnetic fields in the motor to make it
>generate torque. His view is much more detailed than the
>customer's, but still much simpler than the code that implements
>those algorithms. Next is the C code, followed by the assembly
>code that the compiler generates. Next you have CPU, memory,
>I/O devices, and so on. And below that, you have transistors and
>wires with voltages swinging from 0 volts to 5 volts and back.
>
>Each of these levels has its own 'best' language. The customer
>looks at the instruction manual, the control engineer looks at
>functional block diagrams, the programmers look at C and
>sometimes assembly code, and the hardware designer looks at
>hardware block diagrams and schematic diagrams.
>
>Arguments about which is the best level of abstraction are
>pointless. Any given problem may involve any or ALL of them.
>More than once, we have traced a problem seen by a customer
>down through the control algorithms, the code, and the hardware,
>to a difference of less than one volt, for a time period of less
>then 50 nanoseconds, on a wire at the lowest level of abstraction.
>
>My main point:
>
> The best engineers are those who move easily from
> one level of abstraction to another, and the best tools
> are those that allow such movement. Programming
> languages are no exception.
>
>The language should let you hide complexity at a lower level, but
>MUST NOT make it impossible to see that complexity when needed.
>One of the strengths of C is that you can easily make the transition
>to the next level down. One of its weaknesses is that it is often
>difficult to make the transition to the next level up. Since I do a
>lot of troubleshooting, I would rather be able to move down. If the
>problem can be solved by telling the customer to 'Read the manual,
>dummy', then fine. If not, I look at the control algorithms. If they
>are OK, I look at the C implementation, then either straight to the
>hardware, or maybe the assembly first, and so on down the line.
>
>BTW, the main reason I hate Windows is that Bill G. and company
>apparently believe that the purpose of software is to conceal and
>obfuscate what is going on at the lower levels. Drives me nuts when
>something's broke and all I get is an error message intended for
>kindergarden kids. Exactly the opposite of 'easy movement between
>levels of abstraction'.
>



