Re: cellular automata & OOP stupid?

*To*: mathgroup at smc.vnet.net*Subject*: [mg21800] Re: [mg21727] cellular automata & OOP stupid?*From*: Jacqueline Zizi <jazi at club-internet.fr>*Date*: Thu, 27 Jan 2000 22:57:48 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

1) About Cellular Automata, why don't look at Mathematica Help > cellular having selected Mathematica Book? This gives you "cellular Automata" and some code and examples and Stephen's work. 2) About OOP, thanks for dealing with a more general question than the usual technical ones on the Group. I don't agree with you when saying "object oriented programming is one of the most supid inventions ever made" and "If you want to do OOP programming you should use SmallTalk, if you prefere functional logic programming you should use Mathematica and if you need efficient code you should use C." I do believe, from my experiences, that I don't "want to do" such or such programming, neither I "prefer" such or such programming paradigm, I want to solve problems with a computer without having to twist my mind to please a machine or a language whatsoever. So, for me, one of the most important thing that Mathematica allows is to be able, with the same syntax, to use all these paradigms, without having to switch all the time betwen them, for local efficiencies reasons that remain to prove, first and second because I don't want to loose a lot of time to interface results between different programs. Is it usefull to win 1/4 of 1/1000 s using such or such trick and then loose hours to interface different worlds? Further on, the most important is to have a new reflexion about solving problems using computers. Far from every other things this new approach allowed by using Mathematica is the more important thing to me. For example, I wrote a simulation tool for boats navigation in Mathematica about 4 years ago (presented at the 1994's developer conference) for one company that also make TGV in France (very fast trains). I used OOP to set the whole using upvalues.I used rewriting rules for example to translate Fortran notations to readable one and between 2 main programs that I had to link my simulation tool with (data analysis and modelisation program done by 2 different other teams in other languages). I used functional programming in a lot of cases where it was usefull to have the more simple and more general code. I did appreciate not to have to switch from SmallTalk to C to Mathematica to solve ONE problem (large general problem, but ONE). At this time I did appreciate to not have to mind about PC or Mac or else . I like Mac, the manager was working with unix on IBM, and other developpers on other plateforms. Other example, I'm working on a Graph Explorer that I Started when I was a visiting scholar at Wolfram research in 96. There is a lot of programs done in C to represent graphs and work on them. But all are inefficient to solve some problems that I solved (Mathieu's conjecture and a Tutte's old conjecture). Why? Just because the procedural way of thinking does not fit well enough the nature of these problems. Again, I use OOP to set the whole, thinking of objects and links to objects is a powerfull thinking used in mathematics in category theory. Upvalues and fields trivial methods offered by Mathematica is enough for that and already a lot. I use functional programming for all transformations on graphs except those releving of rule transformations as deletion-contraction. I use rule transformation each time that one object (graph, vertex, edge or else) needs to be viewed from different points of view. I use interface programming as windows opening and button facilities to go further on clicking just on a button to see the result of a transformation and also to get to my data basis and information to objects quicker. Other example, I was asked to write a Mathematica program to check results obtained by a physician using Fortran to solve coalescence problems 1 or 2 years ago. I used again upvalues and OOP point of view to fit my feeling about particules, one of each is an object interacting with others. This worked well even if, in this case, I decided to have only one class of objects. I mean that it is convenient to have generic words (like objects, method, function, operation, rule) to express general ideas that the computer "understand". Jacqueline Zizi