The objective of this chapter is to propose some retrospective analysis of the evolution of programming abstractions, from {\em procedures}, {\em objects}, {\em actors}, {\em components}, {\em services}, up to {\em agents}, %have some compare concepts of software component and of agent (and multi-agent system), %The method chosen is to by replacing them within a general historical perspective. Some common referential with three axes/dimensions is chosen: {\em action selection} at the level of one entity, {\em coupling flexibility} between entities, and {\em abstraction level}. We indeed may observe some continuous quest for higher flexibility (through notions such as {\em late binding}, or {\em reification} of {\em connections}) and higher level of {\em abstraction}. Concepts of components, services and agents have some common objectives (notably, {\em software modularity and reconfigurability}), with multi-agent systems raising further concepts of {\em autonomy} and {\em coordination}. notably through the notion of {\em auto-organization} and the use of {\em knowledge}. We hope that this analysis helps at highlighting some of the basic forces motivating the progress of programming abstractions and therefore that it may provide some seeds for the reflection about future programming abstractions.
翻译:本章的目的是对编程抽象概念的演变提出一些回顾性分析,从{em 程序}, {em 对象}, {em 元件}, {em sections}, {em service}, 直到{em 代理},% 有一些比较软件组件和代理(和多试剂系统)的概念,% 所选择的方法是通过在一般历史观点中取而代之。 以三个轴/二轴/二元来选择一些共同的偏向: {em 行动选择} 在一个实体一级, 实体之间和(hem subliploy}, 和{em phem level }}。我们确实可以观察到一些不断追求更大的灵活性(通过诸如{em loced contracil} 或{em commission}) 等概念,甚至可以比较软件组成部分和代理人概念的演变。