Explore chapters and articles related to this topic
Software and Technology Standards as Tools
Published in Jim Goodell, Janet Kolodner, Learning Engineering Toolkit, 2023
Jim Goodell, Andrew J. Hampton, Richard Tong, Sae Schatz
There are several different programming paradigms, which refer to the frameworks, patterns, and styles of software development. Two common paradigmsare procedural and object-oriented programming. Procedural programming specifies the sequence of steps to reach a desired state, and for that reason, it’s sometimes called linear programming. Procedural programs also include procedures (sometimes called functions or modules) that encapsulate certain steps into repeatable recipes that are called by the code. In contrast, object-oriented programming uses software objects that contain both data and coded functions. Basically, each object is like a miniature program that includes a blueprint, and then you can create as many instances of that blueprint as you’d like. For example, you might have an object called “math_problem” that includes all of the typical properties (such as instructions, problem, answer, and steps) and methods (such as displayProblem, checkAnswer, and giveHint) of an algebra question. Then, rather than write code for each math problem, you could just create new questions from your “math_problem” class. Figure 14.1 demonstrates a basic software object with properties and methods.2
Applying IEC 61499 Design Paradigms: Object-Oriented Programming, Component-Based Design, and Service-Oriented Architecture
Published in Alois Zoitl, Thomas Strasser, Distributed Control Applications, 2017
Wenbin Dai, Valeriy Vyatkin, James H. Christensen
There are many programming paradigms already developed in the computer science domain, such as structured, imperative, declarative, functional, logical, and object-oriented programming paradigms [16]. These programming paradigms usually fit well for one or more specified domains. Programs may be developed in multi-paradigm styles and a programming language may support many paradigms. Some paradigms have already made significant impacts in the industrial automation domain. For example, the object-oriented paradigm is officially supported by the IEC 61131-3 standard third edition [21]. The object-oriented paradigm is also applied to the IEC 61499 standard in several applications such as airport baggage handling systems [2], process control [1], and smart grid [22] and building automation systems [19]. More importantly, a generic design guideline is expected to be summarized from existing approaches in order to provide comprehensive guidelines for applying various design paradigms in distributed automation programming.
Solving Partially Observable Environments with Universal Search Using Dataflow Graph-Based Programming Model
Published in IETE Journal of Research, 2021
Swarna Kamal Paul, Parama Bhaumik
While generating all possible combination of program graphs, the metasearcher creates a bunch of semantically equivalent programs in terms of output produced for all inputs and some program produces undefined output (like non-terminating programs). As we are using functional programming paradigm, programs can be algebraically reasoned due to the absence of side effects. Side effects are observable effects or modifications made by a function outside its local context. This means other than returning a value, a function may modify some state of its external environment. Side effects cause difficulty in reasoning of programs as the program may behave differently at different times for the same input. Due to the absence of side effects, programs are transformed to algebraic expressions followed by simplification. Equivalent programs are found by comparing the simplified algebraic expressions. Programs that produce undefined output can also be recognized by simplifying the algebraic expressions. However, it is not possible to reason and find all equivalent and invalid programs due to halting problem and unknown environment. But many of the programs can be deterministically reasoned about. Paul and Bhaumik [34] proposed a method of pruning equivalent programs in universal search. However, their method would efficiently work in case of a single task. The strategy would not work in an agent with memory for solving a set of tasks in different but related environments. In our case, the semantic reasoning of functional programs guarantees the equivalence of equivalent programs across all environments.
Survey on frontiers of language and robotics
Published in Advanced Robotics, 2019
T. Taniguchi, D. Mochihashi, T. Nagai, S. Uchida, N. Inoue, I. Kobayashi, T. Nakamura, Y. Hagiwara, N. Iwahashi, T. Inamura
LP is essentially a declarative programming paradigm based on formal logic. LP has its roots in automated theorem proving, where the purpose is to test whether or not a logic program Γ can prove a logical formula, or query, ψ, i.e. or . For computational efficiency, the language used in logic programs is typically restricted to a subset of first-order logic (e.g. Horn clauses [32]). From a reasoning perspective, LP serves as an inference engine. Hobbs et al. [33] propose an Interpretation as Abduction framework, where natural language understanding is formulated as abductive theorem proving. In this context, a logic program Γ is a commonsense knowledge base (e.g. ) and a query ψ will be a question that is of interest (e.g. ).
Rattlesnake: A MOOSE-Based Multiphysics Multischeme Radiation Transport Application
Published in Nuclear Technology, 2021
Yaqi Wang, Sebastian Schunert, Javier Ortensi, Vincent Laboure, Mark DeHart, Zachary Prince, Fande Kong, Jackson Harter, Paolo Balestra, Frederick Gleicher
ISOXML uses the object-oriented programming paradigm. Data are held in classes in C++, typically having associated XML input and output formats as illustrated in Fig. 2. Operations including interpolation, mixing, folding (creating pseudo-isotopes with fixed isotope densities), reducing (reducing tables with correlation of state variables), fitting, and more, are facilitated by a flexible object-oriented interface that insulates users from the complexity of these operations. A graphical user interface (GUI) is provided for visualizing, checking, and manipulating the data.