I think I understand your observations and criticisms of "software writers", "software jocks" and "software people". Your use of those terms instead of "software engineer" is interesting, because it suggests that you don't consider programmers to be "real" engineers. And perhaps you're right...
As time has gone on, my studies of what biologists are learning make it clear that life is based on information. As Richard Dawkins put it, bodies are merely vehicles for genes, and the basis of life is down at the DNA and its unique ability to store and replicate information. DNA provides data structure that is operated upon by the embryonic environment to build a physical body.
You can see it coming: Software interacts with the runtime environment (hardware) to produce something that, while generally incorporeal, exists, and might be construed as "embodying" the intention of the software's designer.
Just like the way the unique embryological environment produces different individuals from the same DNA code, the myriad combinations of hardware and data in runtime environments produces a vast number of unique instantiations of the thing that the sofware creates. No two running instances of Microsoft Word are identical. Or consider PostScript...one set of instructions for printing a page, which has been uniquely instantiated trillions of times, each instance ("incarnation") a unique combination of the document being printed and the printer hardware interacting with PostScript. It's not a completely abstract metaphor to say that software "lives" each time it runs, and that each "life" and each "lifetime" is as unique as any human life (albeit at a much smaller scale of complexity).
This actually does bear on what you said...I create software in a way that I think is more like evolution than it is like intentional engineering. I'm a Hacker of the old-school--I proceed in tiny steps, test what I've done against reality (the environment and the goal of the software), and let cybernetic selection prune the bad code and preserve the good code. I'm tutored by error messages and educated by traps. It's not so much the formalism of "genetic programming" as it is my instinct that my software creations will be stronger and healthier if I act as the agent of their accelerated evolution into a "fit organism", than if I take the hubristic approach of starting with a detailed paper design and simply do the mechanical work of fleshing it out. Specs never survive contact with reality, even more so with software specs compared to matter-based specs, so I'd rather not waste the time.
So I'm not a software engineer, and I'm not an Intelligent Designer either. It's uncanny, and must be deeply meaningful, that the same natural forces that produce good organisms can produce good software. I fly blind, just like Mother Nature, but somehow at the end what the process produces works OK.
A few random notes...the "freedom to rewrite software code" isn't infinite because it hits the boundary of functionality, beyond which it simply doesn't work; just like an evolving organism is bound by the limits of viability.
Programmers aren't trying to "uncover the codes of software" the way scientists are trying to uncover the "codes of nature". I'm not too sure, upon reflection, just what a Computer Scientist is actually studying, in the classic scientific sense. Up until recently the field has been ironically recursive: Computer Science was making it up as it went and then studying the results, generating "paradigms" that programmers were supposed to use...which use the Computer Scientists then avidly studied to create new paradigms. It's been a strange brew of anthropology, mathematics, and philosophy. I think that there will come a convergence of information theory, cybernetics, quantum mechanics via quantum computing, biology and genetics, to form a science that can actually be studied. We're at that threshold, but not quite across it yet.
But for now I'd say that us programmers, when we're honest about it, are about at the level of shamans, practical magicians who flail around trying different things until we find a few techniques that work, which we employ for our patrons under the guise of secret knowledge and magical powers. A programmer can tell you how it works, but why it works is actually a baffling question if you dig deep enough. It's all magic, just trust us.
This is way far off from where you started this thread, but the branch dragging in programmers got me thinking about your criticisms versus et's defense. You both have your points, but I wanted to issue the mea culpa that programmers shouldn't be expected to think like classical scientists. We're exploring a different universe, one that's as malleable and fluid as you describe, and that works according to different and mostly undiscovered laws (which may turn out, someday, to be the same as the laws describing this universe), and the inevitable result is that programmers really do think different(ly).
Space/Science » in reply to That Sucked - Skip Above
Not so bad
The whole thread (27 posts)
- Planetary Scientists Officially Oppose Bad Science
- re:And what exactly is the alternative definition of a planet? (n/t)
- Unclear, but probably closer to original
- Yawn... Much heat and smoke, no light. (n/t)
- Signatures
- re:And what exactly is the alternative definition of a planet? (n/t)
