In this section we are going to talk about what is computer programming, historical background, programming languages and development environments.
At the bottom of the page I’m going to list a series of applications in which I’ve used programming.
This is the main section of all programming content available on the page.
What is computer programming?
From my point of view, programming is the tool we have to talk with intelligent devices, that is to say electronic devices that have a processor inside.
Through programming we will be able to use the functionality that these intelligent devices offer us.
Computers, smartphones and tablets are the best-known smart devices, but there are a number of other devices that can also be programmed, either via input peripherals or by recording a program in their memory.
Devices such as FPGA, Raspberry PI, Arduino or PLC are examples of these intelligent devices that we can program.
How to learn programming?
In this page I am going to create a course of programming by means of articles and videos that in principle is going to be structured in three parts.
The first part will be the Introduction to Programming, here will be listed all articles on programming concepts, pseudocode and basic programming issues.
The second part will be about analysis and development of algorithms, in this part we will analyze different algorithms and implement them in C# language for Unity.
Object Oriented Programming
The third part will be about object-oriented programming, the most recent programming paradigm that allows us to model programming objects with a certain behavior.
I will regularly create new articles and videos on each of these topics.
When did computer programming come into being?
What is considered the first generation of computers emerged in the 1940s.
They were huge machines that could perform calculations using bistable devices such as relays or vacuum valves (bistable because they can be in two states, abstractly thought of as 0 and 1).
These devices were programmed using machine language, i.e. combinations of binary words representing data and instructions. The machine processed the data with the appropriate instruction and produced output data.
In the second generation of computers, vacuum valves were replaced by transistors, resulting in an abrupt reduction in size and power consumption.
Processors understand data and instructions in machine language, i.e. ones and zeros.
To make it simpler to make programs for processors, the Assembler language was created, which is practically machine language but using words that are easy to remember.
Machine language and Assembler are known as “low level” languages, this means low level of abstraction, which means that we are writing a program directly for the processor, this implies knowing the architecture and Instruction Set of the particular processor we are working with.
Then we have high level abstraction languages such as C, C++, Java, C#, Python, etc. These languages allow us to detach from the architecture of processors and create programs for different platforms and devices.
Development environments and programming languages
The development environment is software that allows us to develop programs and compile them.
Here are a few popular development environments
Because the interest of this page is the development of videogames in principle using Unity, one of the programming languages that we are going to study is C# using the graphic engine Unity with the Visual Studio editor.
We’ll write code in Visual Studio and simulate it in Unity. We will print messages in the console to check the functioning of the code.
These IDE allow us to use a wide range of languages to study programming.
This is something a little more ambitious, but if we manage to get past the installation and configuration phase of Android Studio, we can practice Java programming using this software.
Blender is a very versatile software, we can use it to practice the Python language, which will allow us to do interesting things like create our own Addons.
Computer programming applications
We can use programming to solve a large number of problems, I will list a number of uses I have given to programming.
In my free time I work on a couple of game projects at Unity. Knowing the program flow of a game and creating scripts in C# language we can manipulate the graphics by computer and control them with peripherals.
There are several popular game engines nowadays, for example Unreal Engine.
Develop Android Applications
With the Android Studio environment we can create mobile applications using Java language and XML.
Program micro controllers
At university we learned to program Microchip pic microcontrollers using Assembler language.
The microcontroller is a processing device that has some internal modules such as digital analog converters, timers and so on.
I’ve also done projects with Arduino.
Program PLC to control industrial machines
In industry, when precise control over a process is required, control systems with Programmable Logic Controllers (PLCs) are often implemented.
In my case I use the Delta brand and its WPLSoft environment that allows to program the PLC using Ladder or contact language. You can also create status machines.
Process Data Table with Excel
A somewhat curious application, but the fact of knowing how to program was useful to me to analyze a huge amount of data collected by a program.
When it comes to repetitive tasks, macros are our salvation.
There are different applications that allow us to create complex macros using some programming language.
In my case I made myself a keyboard specially dedicated for macro, that when pressing a key makes a series of actions depending on the program that is active.