Explore chapters and articles related to this topic
Parallel Computing
Published in Sanjay Saxena, Sudip Paul, High-Performance Medical Image Processing, 2022
Biswajit Jena, Pulkit Thakar, Gopal Krishna Nayak, Sanjay Saxena
Implicit Interaction: There are certain situations where the message passing occurs between two processes but the user/ programer is not able to see it. I usually happen when the compiler or runtime are responsible for such passing of messages. They usually occur with two kinds of languages, which are domain specific languages and functional programming languages. Domain specific languages are those which are specialized to a specific domain and implicit interaction occur here because concurrency in high level operation is a common phenomenon. Functional programming languages are those which are constructed only by the composition of functions. The implicit interactions are here present when there is no side-effect of which allows the function’s execution be parallel. Managing such parallelism is difficult but there are languages such as Concurrent Haskell which make it possible to manage such parallelism by the user/programer.
Coding Guidelines
Published in Chris Hobbs, Embedded Software Development for Safety-Critical Systems, 2019
In my experience, functional programming languages such as Lisp/Clojure,LISPClojure Scheme,Scheme Erlang,Erlang OCamlOCaml and Haskell have been used in mission-critical, but not in safety-critical embedded systems.
Parallel Computing Programming Basics
Published in Vivek Kale, Parallel Computing Architectures and APIs, 2019
In a pure functional programming language such as Haskell, data is immutable and, generally, there are no side effects. Immutable data obviates the need for locking in developing thread-safe software. Haskell’s pure functions have no side effects and this property makes writing code for parallel execution easier.
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.
Teaching Programming in the 21st Century
Published in Journal of Computer Information Systems, 2023
Although functional programming has not been very popular with computer science degrees for the last decades, several studies and technological trends suggest the importance of this paradigm and its advantages over other more favored ones among programming educators.11 As described above, almost all software industry has turned its back on functional programming, while academia usually forgets this programming paradigm. But the programming paradigms influence what and how students learn abstract concepts that are then applied when they enter the job market, which was, ultimately, why structured programming, for instance, was so successful in the 80s.
An Analysis of Distributed Programming Models and Frameworks for Large-scale Graph Processing
Published in IETE Journal of Research, 2022
Alejandro Corbellini, Daniela Godoy, Cristian Mateos, Silvia Schiaffino, Alejandro Zunino
MapReduce (MR) is both a programming model and a framework by Google designed to process large amounts of unstructured data using a divide and conquer approach. In order to define an algorithm under the MR programming model, the user must divide it in two well-defined operations: map and reduce. The map operation is analogous to the functional programming ”map” function, which produces pairs for a given set of input data. The reduce operation is responsible of merging those pairs produced by the map operation, leading to the final result of the algorithm, as seen in Figure 1.