Realtime computing?

Realtime computing?

Yen Wel

Process algebra is important for a major problem at the center of computing. This is the halting problem. It determines the difference between batch and real time computing. This is also the difference between a function and a process. An algorithm based on functions needs to halt since it can't input or output during the computation. Algorithms based on processes allow this. Modern day big data stacks like apache spark or storm are essentially about parallelizing sequential/batch computing. They try to make it real time by mini-batch and parallelizing but you are still waiting untill the last batch has run to get your result or run the next batch. Very popular machine learning algorithms like neural networks (deep learning) are based on functions and also have to run in batch. In distributed computed computing you also have the concept of concurrency. This is different from parrallellizing since it implies that different computations can run at the same time and share their input and output over communication channels. This becomes ever more important as our hardware becomes smaller, connected and distributed (IOT to use a buzzword).


In modern languages like go-lang, clojure or rust the concepts of channels are slowly being introduced. These are based on one of the original process algebra CSP. There are different flavors of realtime learning algorithms based on process algebra. One of the most interesting is Grouped Performance Evaluating Process Algebra (GPEPA). These allow real time performance simulation and evaluation. It's used as an abstraction and modularization layer over Markov processes and allows controlling complex (large state space) real time processes.


Report Page