[Tutor] Introduction to modelling with Python

spir ☣ denis.spir at gmail.com
Sun Mar 28 13:50:30 CEST 2010


On Sun, 28 Mar 2010 10:26:43 +0100
AG <computing.account at googlemail.com> wrote:

> Modulok wrote:
> > Could you further define 'modeling' in context?
[...]

> The modelling I was referring to is not about 3-D design, but about 
> scenario modelling.  For example, to understand the impacts of climate 
> change on particular bodies of water, given different circumstances 
> (e.g. x% of rain in the preceding year, or prevailing winds, or y number 
> of herd animals using the water resource, and/ or upstream engineering 
> developments, etc.), the idea would be to (a) identify those aspects 
> most relevant and least relevant and (b) to programme those elements 
> according to certain parameters of fluctuation (perhaps OOP might be 
> useful here), and then (c) to manipulate those values according to 
> different scenarios.  These manipulations can then be replayed any 
> number of times (e.g. a Monte Carlo treatment) to obtain their 
> statistical average and probabilities.
> 
> The foregoing is possibly not the most elegant example, but hopefully 
> gives you a clearer idea of what I was asking about.
> 
> Thanks for your interest.
> 
> AG

Note: this is personal point of view. Just hope you & others find it interesting.

Programming, for me, is just modelling and coding; in a sense of "modelling" similar to the one you give, which is also close to the sense used in scientific/research activity, as I understand it. The main particuliarity of programming is that the target is a machine, which implies good (accuracy) and bad (rigidity) requirements.

More precisely, I call "model" the mental picture we have of a "topic" -- more or less accurate, indeed, according to the guy's lucidity on the topic (clarity of mind) and to the requirements. A program is then a given expression of the programmer's model of the topic in a given language; and a running program is a simulation of the topic according to the model. The program may itself be more or less accurate in the sense there may be some distortion between the model and the program's actual "semantics".
In programming practice, except in trivial cases, there is a constant move forth & back between modelling and coding, because while coding and testing we learn about the topic, get a clearer view, and modify the model. Which in turn requires updating the program, building a kind of feedback loop, until we are satisfied with the model, the program, the simulation (*).

Like any language (--> Sapir-Worf hypothesis), a programming language certainly strongly influences the way we basically *think* about things, not only how we express it, meaning it will filter our ability to model. For the best and/or for the worse. We may simply not be able to model independently of one (or more) given language(s). After some years programming in Java, a programmer switching to Python will produce not only Java code reworded into Python (which is ugly ;-), but Java *thought* (model) (which is wrong ;-).

To relate this with your request, I thus think learning to model in Python is just learning to program well in Python, which itself is just a specialisation of learning to program well. If you really want this, and have enough time, then for me you should instead learn to program using various languages, as different as possible, so as to learn various modelling patterns. And apply those languages on a variety of topics, including some in your own field. A life time's job!
Again, this is just my opinion.


Denis

(*) I like the word simulation here because it does not imply the topic to have anything to do with reality. Instead, it can be imaginary, in most cases real is at most a referent. Think at games (they exist only in the author and players' minds) or even an editor (the legacy way of writing just provides a metaphor). In many cases, the simulation is its own sense, meaning the simulation *is* the topic, there is no referent.
________________________________

vit esse estrany ☣

spir.wikidot.com


More information about the Tutor mailing list