0
$\begingroup$

I have noted that in several very unrelated human natural languages, people often confuse the term "virtual" with "digital".

As for Computer Science, is it correct to categorize all software whatsoever to "digital" or "analogue" (by means of how programs work)?

$\endgroup$
3
  • $\begingroup$ People often confuse the term "virtual" with "digital". - do they? did any researcher categorized software to "digital" or "analogue" - any suggestions to what "analog" software could mean? $\endgroup$ Aug 10, 2021 at 6:06
  • $\begingroup$ @StanislavBashkyrtsev well what would "digital" software would mean? $\endgroup$ Aug 10, 2021 at 7:42
  • $\begingroup$ I've never heard anyone say "digital software". There could be a digital solution, a digital filter - because there are analog counterparts. $\endgroup$ Aug 10, 2021 at 10:59

1 Answer 1

1
$\begingroup$

In Computer Science, we don't really talk about "software". But we do talk about algorithms and models of computation, and also sometimes about computing machines.

When we think about algorithms, there are two ways in which they can operate over either discrete or continuous domains:

  • The algorithm can operate on discrete values (for example, integers or bits) or continuous values (for example real numbers).
  • The algorithm can consist of discrete "steps", or it can operate in a continuous manner.

All four combinations are possible: algorithms that operate on discrete values in steps, algorithms that operate on continuous values in steps, algorithms that operate continuously on discrete values, and algorithms that operate continuously on continuous values.

Algorithms that operate on discrete values in discrete steps are called digital algorithms. Computing machines that work in discrete steps on discrete values are called digital computers. A digital computer can only execute digital algorithms. All "typical" computers are digital computers: your phone, your laptop, your desktop, the various cloud services, supercomputers, it doesn't matter. All of them are digital computers and thus can only execute digital algorithms.

For example, "computers" (by which I mean what the layperson would recognize as a computer) cannot work with real numbers. You would need infinite storage, infinite time, or both. Instead, we use floating point numbers, for example, which are a limited precision approximation of real numbers.

Algorithms that operate continuously on continuous values are called analog algorithms. And computing machines that work continuously on continuous values are called analog computers. The most famous analog computer, and probably one of the oldest computers in general, is the Antikythera Mechanism, a 2000+ year old computer for astronomical predictions. The most widely-used analog computer, and one that (depending on your age) you may have even used yourself, is a slide rule.

I don't think the other two combinations have specific names.

So, in short, we can call a program for a digital computer (i.e. what we normally think about as a "computer") a digital program, and we can call a program for an analog computer an analog program. Although most analog computers are not programmable, they are fixed-purpose computing machines, so the idea of a "program" doesn't really make sense for them. (Unless you consider the way that the parts are put together, e.g. in a slide rule, the "program". Or you could consider the instructions for a human how to operate a slide rule the "program".)

$\endgroup$
2
  • $\begingroup$ Could you give an example of an algorithm working in continuous steps? $\endgroup$
    – vonbrand
    Aug 14, 2021 at 16:30
  • $\begingroup$ That doesn't really make sense. Steps are by definition discrete. $\endgroup$ Aug 14, 2021 at 18:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.