In this paper essential aspects of block-oriented world viewing are emphasized and presented in a relation to simulation models of systems managed by complex and sophisticated decision rules. The construction of such models can be essentially simplified when one combines the agent-oriented, object-oriented and blockoriented paradigms of programming. The use of the described way leads to certain paradoxical relations among computing agents. Some applications are added.
BASIC SUPPOSITIONS
Main Technique of Constructing Simulation ModelsThe technique of computer simulation is commonly applied in case the studied system is complex. The consequence is that the simulation models are complex, too, and there are difficulties with their programming and debugging. Since the early sixties, the simulation programming languages have enabled evading such difficulties. Instead of algorithmizing the run of the simulation models, the users of these languages had only to describe the simulated system and the language processor automatically translated such descriptions into corresponding algorithms (computer programs).Already one of the first simulation languages, GPSS, offered their users to declare certain sets of elements equipped by similar configurations of their private entities (called "parameters") and influencing the computer run by commonly formulated "life rules", i.e. algorithms switched according to a common "scheduling system" related to common modeled Newtonian time flow (Gordon 1961, Florea andKalisz 2000).The first object-oriented language SIMULA 67 (Dahl and Nygaard 1968) introduced also the life rules, generalized them to "co-routines" and led to the agents. In spite of they essential help it to be successful in simulation of very large systems, the next popular existence of the object-oriented programming (in C++ and Smalltalk) refused the life rules. Long time after, the agent orientation slowly returned, but under other titles and other metaphors taken from the world around us.
Principles of Block OrientationTrue block orientation was introduced in ALGOL 60 (Backus et al. 1960), considering blocks as parts of algorithms with own entities (namely "local" variables, procedures and -for some good authors also destinations of transfers in algorithm run). In fact, such parts of algorithms, called "textual blocks", are only abstract patterns of "block instances", i.e. components of the relating computing process. The block instances are in a certain case "copies" of the textual blocks, which are able to influence the computing according to the statements occurring in the related textual blocks. In some cases (e.g. recursive calls of procedures) more instances of the same textual block exist in the same time and influence the computing process.An essential aspect of the block orientation is block nesting: Textual block b is considered as a certain sort of statement and occurs among the other statements forming another textual block B (and so on recursively, as B can be also among the statements of another b...