5. Appendix A

This appendix deals with questions concerning programming concepts often needed to understand the OON stack.

5.1. Introduction

5.1.1. What is hardware?

By using the term hardware, we mean the physical parts that constitute a computer - the motherboard, CPU, GPU, etc. That is, the hard part of a computer, which is touchable and immediately visible in the physical realm.

5.1.2. What is software?

From software, when we refer to it generally, ie. lato sensu, we mean the concept of the abstract parts which constitute a computer - the programs which comprise all the computable abstractions performable by a computer. When we refer to it specifically, ie. stricto sensu, we refer to one of these programs. OpenRPA, OpenFlow and Node-RED are software themselves.

5.1.3. What is a programming language?

A programming language is a set of commands, instructions, and other syntax used to create a software program. Languages that programmers use to write code are called “high-level languages.” This code can be compiled into a “low-level language,” which is recognized directly by computer hardware.¹ OpenRPA itself is developed and maintained in a programming language called C# - read “see sharp”.

¹ - TechTerms - Programming Language Definition (https://techterms.com/definition/programming_language).

From now on, every concept treated in this appendix will refer strictly to their content with regards to C#. These concepts may not apply to other programming languages, which are not concerned in this manual.

5.2. Variables

5.2.1. What is a variable?

A variable is simply a value with a mutable state, this means the user can change it before, during or after the execution of a workflow inside OpenRPA. A variable must also, obligatorily, have a type assigned to itself.

5.2.2. How do I declare a variable inside OpenRPA?

Refer to section Using the Designer or section Variables, Arguments.

5.2.3. What types can a variable assume?

Virtually, any of the types compiled inside the OpenRPA application. If you want to take a peek into it, simply declare a variable and click Browse for types inside it.

5.3. Types

Now that we have properly defined hardware, software, and programming language, we can delve further into types.

5.3.1. Binary representation

5.3.1.1. Bit

A bit is the basic unit used to represent memory inside a computer. A bit may store the values 0 or 1. It is also the smallest possible unit.

At the very end, a bit is represented by using a continuous physical measure - the voltage - and any operation in a computer can be represented in the digital logic level by using Boolean algebra.

The greatest part is: you do not need to understand all of that to use a computer! That occurs because those layers of abstraction are hidden from the end-user. Yet, to understand types we’ll need to use concepts such as the binary number system, which will be discussed further.

5.3.1.2. The decimal number system

Understanding the decimal number system is very easy, since it is the system we normally use everywhere in our daily life. The decimal number system works by taking every unit a and multiplying it by the i-th index times 10. Therefore, a hypothetical number ABC could be represented as seen in the image below. Another example is provided, showing the representation of 356 in the decimal system.

images/decimal_representation.png

5.3.1.3. The binary number system

On the other hand, the binary number system represents numbers using 2 as its base.

5.3.2. What is a type?

A type is the representation of a variable that a computer acts upon, or, putting it in layman terms, what the computer “sees”. If we’re thinking in terms of binary digits - ie. bits, the following types can be explained by their representation in binary digits.