PhilO

The universal machine

21 posts in this topic

It isn't an entirely new thought, but I was prompted to write here about the scope of computers and computer programming based on some remarks I recently read.

The question is: are computers, and programming, a narrow speciality? Or is there something fundamentally different about these machines that differentiates them from all of the other creations of men?

I will briefly argue in the affirmative, that there *is* something fundamentally different about computers, and programming, than other machines and other work: the fact that computers are essentially *universal* machines, and a programmer correspondingly has an almost infinite range of different possible jobs, depending on the scope of his interest and abilities.

In essentials, this is true because of the programmability of computers. No other machine in human history has the inherent flexibility of a computer system. This is precisely its power. It is no accident that the computer is most closely associated with the operations of the human mind itself; it is not a machine in the conventional sense, but a computational system that can be applied to any aspect of human existence. The evolution of computer as universal machine mirrors the evolution of consciousness itself; consciousness provides its possessor with a vastly greater, more generalized ability to deal with existence. In conjunction with effectors in the form of robotics, these machines can perform physical tasks more rapidly and precisely (in many, not yet all cases) than any human or any dedicated machine.

In concretes, the evidence for my claim of universality is overwhelming. The vast majority of jobs are inherently narrowly defined, whether it range from something as mundane as plumbing to as demanding as surgery. That does not, of course, make those jobs unnecessary (far from it), but the issue here is an argument over scope.

In 2008 in any industrialized country, you would be hard pressed to find any area of human activity that is not affected or reliant on computers and the programmers who make them work.

If you made coffee, the coffeemaker almost certainly has a microprocessor.

Phone calls, whether landline or wireless, are made with computerized handsets and traverse globally spanning networks under realtime computer control of vast complexity.

Many handsets such as iPhones or Blackberrys are powerful self contained computers in their own right.

If you drove to work, the car engine and probably many other systems are under computer control. The roads you drove on were designed with the assistance of calculators and computers. Ditty for the building you enter, if it's modern. The traffic lights are controlled by microprocessors.

If you went into an operating theatre to do surgery, you worked in the building designed with architectural program assistance, surrounded by computer controlled monitors of heartbeat, respiration, etc., using equipment designed with computer assistance, with metal alloys (e.g. in scalpel blades) mixed and melted under the control of computer systems, and manufactured with the assistance of computer aided robotics.

If you went to an office to work, you drove (see above) on the roads (see above) perhaps using a cellphone (see above), entering the building (see above), and probably sat down to work at a ... computer.

If you flew in a Boeing 777 and probably any newer jets, the entire plane was designed on computers without paper and partially constructed by computer controlled robotics systems.

If you're *reading this*, it's on a computer, using the internet (under computer control) from a remote server running a bulletin board program.

And so on.

Each of those areas touched by computers required a different computer program or perhaps many programs. So, to the extent a programmer is versatile, he could program everything from, say, business accounting analysis systems, popular computer games, materials property database/analysis systems, ultra-high temperature superalloy forging system data acquisition and analysis, control of multi-axis robotic systems for laser drillers, image analysis, repair technician training databases, financial software, iPhone applications (to take a sample of just *my own* personal experience.)

Yes, there are common denominators to all programming, but the singularly most important characteristic is adherence to *logic*.

Sure, computers don't do everything, but there is no other machine and no other work controlling it that has anything approaching the general breadth of their capabilities, to my knowledge.

Share this post


Link to post
Share on other sites

It seems to me that affixing "Engineer" to some designation or other in regards to the field of programming would describe a programmer pretty well, if I understand what you are saying. I have heard of "software engineers" but I don't know how the term is applied. It seems restrictive at first blush.

Mechanical Engineer

Structural Engineer

Electrical Engineer

Chemical Engineer

The descriptive term in all these cases tends to delimit these fields as broadly as possible, at a point somewhere in between "physicist" and "mechanic" or "electrician." In this way, "software engineer" seems restricted to the "mechanic/carpenter" level of identification, which is definitely specialization.

"Programming Engineer?" "Computational Engineer?" Neither one rolls off of the tongue, but then, that isn't a requirement for indentification.

Share this post


Link to post
Share on other sites
The descriptive term in all these cases tends to delimit these fields as broadly as possible, at a point somewhere in between "physicist" and "mechanic" or "electrician." In this way, "software engineer" seems restricted to the "mechanic/carpenter" level of identification, which is definitely specialization.

I would not even lump carpenter/mechanic together. A carpenter is razor-thin specialized compared to a programmer/software engineer. A mechanic, less so, depending on the range of machinery he can work on, but still a much more limited scope. (And again, this is not intended as a critique of either, or any, honest profession or ability.)

There is a certain sort of specialization in the sense that there are common denominators to all programming tasks. My primary point though is that the scope of application of these tasks is wider than virtually any other field for the reasons I briefly discussed. The so-so circuit theory book that I had for a class this semester stated that software engineering is a subset of electrical engineering, which is nonsense that confuses the construction of the physical computer hardware with the programming of it - though it is true that EE is another broad field.

It is also true that some programmers restrict themselves to very narrow domains. In that sense, they *have* become specialists, for example somebody working only on operating system internals. However, their personal focus does not detract from the scope of the field as such nor what other, more general programmers have done across a much more diverse range.

Share this post


Link to post
Share on other sites

The chap who makes eye glasses is specialized in that, and the fact that eyeglasses are seen everywhere and essential, doesn't make his craft "universal."

The application of software is wide-spread, but that doesn't mean the creation of that software gains "universal" status, whatever that means - I'm not sure what you are trying to say here.

I am wary of categorical hypotheses, which can at times be pretty 'dim', if you know what I mean.

Share this post


Link to post
Share on other sites
The chap who makes eye glasses is specialized in that, and the fact that eyeglasses are seen everywhere and essential, doesn't make his craft "universal."

True enough, which is why it would be a bad example that focused on non-essentials.

The application of software is wide-spread, but that doesn't mean the creation of that software gains "universal" status, whatever that means - I'm not sure what you are trying to say here.

The *computer* is a universal machine of sorts. For a programmer to successfully implement software in a particular area he must have at least some knowledge of that area, whether it be materials science or accounting or robotics or what-have-you (though not necessarily an expert.) That's what makes the possible jobs very diverse and not "just programming." I thought that central point was obvious, apparently not.

I am wary of categorical hypotheses, which can at times be pretty 'dim', if you know what I mean.

There is little point in reading an (ostensibly) philosophically based board if you reject broad generalizations and principles on principle. Whether you agree with any particular ideas or not is a different matter.

Share this post


Link to post
Share on other sites

The term "Engineer" is handed out too easily and has been watered down as a result. I'm a licensed mechanical engineer. Programmers aren't engineers, in my opinion. I admire them, however, for being able to work the magic they do. They are a special breed.

Share this post


Link to post
Share on other sites
The term "Engineer" is handed out too easily and has been watered down as a result. I'm a licensed mechanical engineer. Programmers aren't engineers, in my opinion. I admire them, however, for being able to work the magic they do. They are a special breed.

Why do you consider "licensed mechanical engineer" to be a category of engineer that is not handed out too easily and watered down? Or are you asserting that the existence of government licensing is an assurance of quality?

It isn't magic and "software engineer" is a meaningful term, though not every programmer classifies as such. Moreover, I have dealt with gas turbine engine engineers, who have a more challenging design environment than most engineers, whose idea of engineering included using materials data (typically superalloys) of sketchy/unknown origin in creating actual engine designs, regardless of their academic and professional certifications.

Share this post


Link to post
Share on other sites
The term "Engineer" is handed out too easily and has been watered down as a result. I'm a licensed mechanical engineer. Programmers aren't engineers, in my opinion. I admire them, however, for being able to work the magic they do. They are a special breed.

Why do you consider "licensed mechanical engineer" to be a category of engineer that is not handed out too easily and watered down?

Actually, I think it is.

Share this post


Link to post
Share on other sites
The term "Engineer" is handed out too easily and has been watered down as a result. I'm a licensed mechanical engineer. Programmers aren't engineers, in my opinion. I admire them, however, for being able to work the magic they do. They are a special breed.

What is the assertion "Programmers aren't engineers" in response to in this thread and what is it supposed to mean -- that not all programmers are engineers, that none are? What is the assertion that "the term 'Engineer' is handed out too easily and has been watered down as a result" in relation to in this thread and what is it supposed to mean -- where has it been watered down that you are talking about? What does being a licensed mechanical engineer have to do with it? What significance to this thread do you ascribe to being "licensed" or being a mechanical engineer in particular? What "special breed" of what are you talking about? What do you mean by "magic" and as opposed to what?

Share this post


Link to post
Share on other sites
The term "Engineer" is handed out too easily and has been watered down as a result. I'm a licensed mechanical engineer. Programmers aren't engineers, in my opinion. I admire them, however, for being able to work the magic they do. They are a special breed.

What is the assertion "Programmers aren't engineers" in response to in this thread and what is it supposed to mean -- that not all programmers are engineers, that none are? What is the assertion that "the term 'Engineer' is handed out too easily and has been watered down as a result" in relation to in this thread and what is it supposed to mean -- where has it been watered down that you are talking about? What does being a licensed mechanical engineer have to do with it? What significance to this thread do you ascribe to being "licensed" or being a mechanical engineer in particular? What "special breed" of what are you talking about? What do you mean by "magic" and as opposed to what?

Could you repeat the question?

;)

Share this post


Link to post
Share on other sites
The term "Engineer" is handed out too easily and has been watered down as a result. I'm a licensed mechanical engineer. Programmers aren't engineers, in my opinion. I admire them, however, for being able to work the magic they do. They are a special breed.

What is the assertion "Programmers aren't engineers" in response to in this thread and what is it supposed to mean -- that not all programmers are engineers, that none are? What is the assertion that "the term 'Engineer' is handed out too easily and has been watered down as a result" in relation to in this thread and what is it supposed to mean -- where has it been watered down that you are talking about? What does being a licensed mechanical engineer have to do with it? What significance to this thread do you ascribe to being "licensed" or being a mechanical engineer in particular? What "special breed" of what are you talking about? What do you mean by "magic" and as opposed to what?

Could you repeat the question?

;)

There is more than one. Do you want to explain what you are talking about or not?

Share this post


Link to post
Share on other sites
They are a special breed.

On the contrary, programming is a straightforward skill that can be taught and learned (of course, there are vast differences in expertise and ability). I reject the stated intrinsicist view which suggests an innate, irreducible ability (which, if true, would logically lead to a government licensing requirement).

Thankfully, we have no licensing requirements whatsoever to be programmers, which has led to huge numbers of people and entrepreneurs entering the field, said competition leading to the software explosion and huge increases in quality relative to what we would have had if titles of "engineer" had to be handed out first. Historically and still today, most software innovation has come from small companies and startups--not the stifling conformity, bureaucracy, and blindness that pervades many large software companies.

Share this post


Link to post
Share on other sites
They are a special breed.

On the contrary, programming is a straightforward skill that can be taught and learned (of course, there are vast differences in expertise and ability). I reject the stated intrinsicist view which suggests an innate, irreducible ability (which, if true, would logically lead to a government licensing requirement).

Who knows what is meant by a whole group of people being admired as a "breed" that works "magic". If it means programmers literally are a "breed" I agree that it would be intrincisism, but what in reality would that actually mean and how would it lead logically to a necessity of government licensing?

Thankfully, we have no licensing requirements whatsoever to be programmers, which has led to huge numbers of people and entrepreneurs entering the field, said competition leading to the software explosion and huge increases in quality relative to what we would have had if titles of "engineer" had to be handed out first. Historically and still today, most software innovation has come from small companies and startups--not the stifling conformity, bureaucracy, and blindness that pervades many large software companies.

I think that so much progress was made with computers so quickly in an environment of freedom because the bureaucrats and politicians didn't catch on to what it was in time to grab control of it and stifle it, though there have been attempts. But in any technical field that still requires ingenuity, creativity and competence, being licensed is not regarded as a sign of status, only bureaucracy and "officialdom". Those engineers who must obtain licenses have to do as they're told before being allowed to function, but no competent engineer of self esteem actually thinks of his "license" as a genuine big accomplishment setting him above others. As in software, there are many "unlicensed" engineers and scientists, including mechanical engineers, doing advanced development work -- often in combination with computers -- in all kinds of fields where their reputation is based on what they do, not an official status. You even see that in cases where managers in positions regarded as "higher" but who don't have the technical understanding or ability of those "beneath them" are not regarded in high esteem. "Skunk works" projects still accomplish great things working around the official rules in order to actually accomplish something. The spirit of Nat Taggert lives on.

Share this post


Link to post
Share on other sites
They are a special breed.

On the contrary, programming is a straightforward skill that can be taught and learned (of course, there are vast differences in expertise and ability). I reject the stated intrinsicist view which suggests an innate, irreducible ability (which, if true, would logically lead to a government licensing requirement).

Who knows what is meant by a whole group of people being admired as a "breed" that works "magic". If it means programmers literally are a "breed" I agree that it would be intrincisism, but what in reality would that actually mean and how would it lead logically to a necessity of government licensing?

I was objecting to the entire presentation of programmers in a binary category--said category having no overlap with engineers, having something even figuratively described as "magic", and the word "breed" implying that the skill was innate and unlearnable. If the purpose was to praise the skills of programmers in general, there are so much better ways to do it, rather than using two distinct descriptions which implied an intrinsicist view. I doubt Abaco really believes in "magic" literally nor that the skill is unlearnable, but those are the implications which I was objecting to.

I can't imagine what programming being an irreducible ability would actually mean--because it's impossible--but if some people were born with a certain physical ability and others were not, and there were no known way to acquire such ability, then it would be fraud for somebody without that ability to misrepresent that they had it. Again, I'm not suggesting Abaco literally believes the full, consistent view which I'm opposing--rather, I'm showing the implications of the statement's original choice of words if they are taken to further conclusions and applied consistently. Maybe all this means is that it was a poor choice of words, and nothing more.

Share this post


Link to post
Share on other sites
They are a special breed.

On the contrary, programming is a straightforward skill that can be taught and learned (of course, there are vast differences in expertise and ability). I reject the stated intrinsicist view which suggests an innate, irreducible ability (which, if true, would logically lead to a government licensing requirement).

Who knows what is meant by a whole group of people being admired as a "breed" that works "magic". If it means programmers literally are a "breed" I agree that it would be intrincisism, but what in reality would that actually mean and how would it lead logically to a necessity of government licensing?

I was objecting to the entire presentation of programmers in a binary category--said category having no overlap with engineers, having something even figuratively described as "magic", and the word "breed" implying that the skill was innate and unlearnable. If the purpose was to praise the skills of programmers in general, there are so much better ways to do it, rather than using two distinct descriptions which implied an intrinsicist view. I doubt Abaco really believes in "magic" literally nor that the skill is unlearnable, but those are the implications which I was objecting to.

Again, I'm not suggesting Abaco literally believes the full, consistent view which I'm opposing--rather, I'm showing the implications of the statement's original choice of words if they are taken to further conclusions and applied consistently. Maybe all this means is that it was a poor choice of words, and nothing more.

I doubt he believes in literal magic, too, but the whole statement was so vague that the meaning of any of it was left up in the air. Is it supposed to mean that software developers are across the board not engineers, etc. for the many other questions raised above? If you take the original statement literally, then the implications you discussed are true, but who knows what it was supposed to mean, in or not out of the context of the thread.

I can't imagine what programming being an irreducible ability would actually mean--because it's impossible--but if some people were born with a certain physical ability and others were not, and there were no known way to acquire such ability, then it would be fraud for somebody without that ability to misrepresent that they had it.

Some people do appear to have a much higher ability in mathematics and programming, but of course in the sense of a potential if pursued and developed, to the point where others cannot compete at their level at all no matter how hard they try. The same holds for physical/mental abilities like in sports. It's fraud for someone without the ability to claim he has it, but that becomes quickly apparent in results completely without regard to anything such a person is born with, which is irrelevant. If a person with the potential doesn't develop it and claims he has the ability then that's fraud too.

But I don't see how any of these distinctions could logically lead to a requirement for government licensing under any conditions. Either you can do something and you can develop a reputation for it or you can't, regardless of what potential or degree of potential you are born with. You're certainly right that we are very fortunate that the attempts to license software engineers have failed.

Share this post


Link to post
Share on other sites
Yes, there are common denominators to all programming, but the singularly most important characteristic is adherence to *logic*.

Logic and analysis. Logic is the art/discipline of inferring conclusions from premises validly. Analysis is the art/discipline of identifying the parts of things and their relationship to each other.

The most useful tool in a problem solvers kit is analysis. The most useful tactic in problem solving is "divide and conquer". Break the problem down into its pieces in the right way and deal with each piece. The is how problems are solved and wars are won.

Bob Kolker

Share this post


Link to post
Share on other sites
Yes, there are common denominators to all programming, but the singularly most important characteristic is adherence to *logic*.

Logic and analysis. Logic is the art/discipline of inferring conclusions from premises validly. Analysis is the art/discipline of identifying the parts of things and their relationship to each other.

The most useful tool in a problem solvers kit is analysis. The most useful tactic in problem solving is "divide and conquer". Break the problem down into its pieces in the right way and deal with each piece. The is how problems are solved and wars are won.

Logic -- non-contradictory identification -- is required for all engineering and all thought ir is not the defining characteristic of programming. Likewise for analysis. The kind of logic and analysis employed in programming (and in mathematics) differs because of the subject matter and the degree of precision possible and necessary.

Breaking down problems into manageable pieces is a crucial strategy, but equally important is synthesis.

Share this post


Link to post
Share on other sites

I've only read 4 or 5 of the posts (from the bottom up). While it's, of course, appropriate to use science and engineering terms when describing programming, do not leave out the reality of how programming is practiced. Donald Knuth deliberately named his book The Art of Computer Programming. Programming is a skill that is learned and perfected much like a musician learns an instrument. I say this being both a musician and a programmer, so maybe I'm biased ;)

Share this post


Link to post
Share on other sites
I've only read 4 or 5 of the posts (from the bottom up). While it's, of course, appropriate to use science and engineering terms when describing programming, do not leave out the reality of how programming is practiced. Donald Knuth deliberately named his book The Art of Computer Programming. Programming is a skill that is learned and perfected much like a musician learns an instrument. I say this being both a musician and a programmer, so maybe I'm biased ;)

I agree. Programming is an art/discipline, but not a science. Mathematics is an art/discipline but not a science. Music is an art/discipline and not a science. Yet each of these arts/disciplines has scientific connections and aspects. The "mechanics" of music, for example rests squarely on the physical nature of vibrations and energy transfer in visco-elastic media.

Bob Kolker

Share this post


Link to post
Share on other sites

In some respects, computer programming and software design can be thought of as applied logic. It has a similar relation to formal (mathematical) logic as applied mathematics has to pure mathematics.

Bob Kolker

Share this post


Link to post
Share on other sites