Programmers are taught to take reality and simplify it- but ensure that the simplification still maintains all the properties and behaviors of the real-world subject being modelled that are pertinent in the context.
Example- the behavior of a car is important for a driving simulator, but the contents of the glove box are not.
Programmers are perhaps the only professional Platonic philosophers around. I use this actually in my UML class.
Plato had three levels of reality:
- Concrete, and physical
- Images of the concrete (pictures, models, etc)
- The idea of the things
Every program has to model a concrete thing, or something that could be concrete (an interstellar spacecraft is not concrete, but still represents a concrete, though nonexistant, object). The programmer must think about this thing, and understand it in order to create the code that represents it (the image of the concrete).
However, to make _that_ happen, a programmer has to understand the Idea of the thing, how the Idea of a car, plane, bank account, stock, law of physic, behaves. How else can the modelling of it take place?
Who else would be comfortable talking about a bank transaction as if it were a physical object?
This is why I make comments about XML being the universal language. XML is a language that allows you to define the structure of data- you can take an english sentance, and with XML tagging, create a document that could be parsed, if not understood, by someone who knows only the XML formatting you used.
XML transends grammar, words, and phonetics, to create a language that does nothing but describe the Structure of things.