In this sec­tion we are going to talk about what is com­put­er pro­gram­ming, his­tor­i­cal back­ground, pro­gram­ming lan­guages and devel­op­ment environments.

At the bot­tom of the page I'm going to list a series of appli­ca­tions in which I've used programming.

This is the main sec¬≠tion of all pro¬≠gram¬≠ming con¬≠tent avail¬≠able on the page.

What is computer programming?

From my point of view, pro­gram­ming is the tool we have to talk with intel­li­gent devices, that is to say elec­tron­ic devices that have a proces­sor inside.

Through pro¬≠gram¬≠ming we will be able to use the func¬≠tion¬≠al¬≠i¬≠ty that these intel¬≠li¬≠gent devices offer us.

Com­put­ers, smart­phones and tablets are the best-known smart devices, but there are a num­ber of oth­er devices that can also be pro­grammed, either via input periph­er­als or by record­ing a pro­gram in their memory.

Devices such as FPGA, Rasp­ber­ry PI, Arduino or PLC are exam­ples of these intel­li­gent devices that we can program.

How to learn programming?

In this page I am going to cre¬≠ate a course of pro¬≠gram¬≠ming by means of arti¬≠cles and videos that in prin¬≠ci¬≠ple is going to be struc¬≠tured in three parts.

Basic Programming

The first part will be the Intro­duc­tion to Pro­gram­ming, here will be list­ed all arti­cles on pro­gram­ming con­cepts, pseudocode and basic pro­gram­ming issues.


The sec¬≠ond part will be about analy¬≠sis and devel¬≠op¬≠ment of algo¬≠rithms, in this part we will ana¬≠lyze dif¬≠fer¬≠ent algo¬≠rithms and imple¬≠ment them in C# lan¬≠guage for Unity.

Object Oriented Programming

The third part will be about object-ori­ent­ed pro­gram­ming, the most recent pro­gram­ming par­a­digm that allows us to mod­el pro­gram­ming objects with a cer­tain behavior.

I will reg­u­lar­ly cre­ate new arti­cles and videos on each of these topics.

When did computer programming come into being?

What is con¬≠sid¬≠ered the first gen¬≠er¬≠a¬≠tion of com¬≠put¬≠ers emerged in the 1940s.

They were huge machines that could per¬≠form cal¬≠cu¬≠la¬≠tions using bistable devices such as relays or vac¬≠u¬≠um valves (bistable because they can be in two states, abstract¬≠ly thought of as 0 and 1). 

The ENIAC (Elec¬≠tron¬≠ic Numer¬≠i¬≠cal Inte¬≠gra¬≠tor And Comput¬≠er), com¬≠puta¬≠dor e inte¬≠grador num√©ri¬≠co elec¬≠tr√≥ni¬≠co is con¬≠sid¬≠ered one of the first gen¬≠er¬≠al pur¬≠pose computers.

These devices were pro¬≠grammed using machine lan¬≠guage, i.e. com¬≠bi¬≠na¬≠tions of bina¬≠ry words rep¬≠re¬≠sent¬≠ing data and instruc¬≠tions. The machine processed the data with the appro¬≠pri¬≠ate instruc¬≠tion and pro¬≠duced out¬≠put data.

In the sec­ond gen­er­a­tion of com­put­ers, vac­u­um valves were replaced by tran­sis­tors, result­ing in an abrupt reduc­tion in size and pow­er consumption.

Programming Languages

Proces¬≠sors under¬≠stand data and instruc¬≠tions in machine lan¬≠guage, i.e. ones and zeros. 

To make it sim­pler to make pro­grams for proces­sors, the Assem­bler lan­guage was cre­at­ed, which is prac­ti­cal­ly machine lan­guage but using words that are easy to remember.

Machine lan¬≠guage and Assem¬≠bler are known as "low lev¬≠el" lan¬≠guages, this means low lev¬≠el of abstrac¬≠tion, which means that we are writ¬≠ing a pro¬≠gram direct¬≠ly for the proces¬≠sor, this implies know¬≠ing the archi¬≠tec¬≠ture and Instruc¬≠tion Set of the par¬≠tic¬≠u¬≠lar proces¬≠sor we are work¬≠ing with.

Then we have high lev­el abstrac­tion lan­guages such as C, C++, Java, C#, Python, etc. These lan­guages allow us to detach from the archi­tec­ture of proces­sors and cre­ate pro­grams for dif­fer­ent plat­forms and devices.

Development environments and programming languages

The devel¬≠op¬≠ment envi¬≠ron¬≠ment is soft¬≠ware that allows us to devel¬≠op pro¬≠grams and com¬≠pile them.

Here are a few pop­u­lar devel­op­ment environments


Because the inter­est of this page is the devel­op­ment of videogames in prin­ci­ple using Uni­ty, one of the pro­gram­ming lan­guages that we are going to study is C# using the graph­ic engine Uni­ty with the Visu­al Stu­dio editor.

We'll write code in Visu¬≠al Stu¬≠dio and sim¬≠u¬≠late it in Uni¬≠ty. We will print mes¬≠sages in the con¬≠sole to check the func¬≠tion¬≠ing of the code.

Visual Studio, NetBeans o Eclipse

These IDE allow us to use a wide range of lan­guages to study programming.

Android Studio

This is some­thing a lit­tle more ambi­tious, but if we man­age to get past the instal­la­tion and con­fig­u­ra­tion phase of Android Stu­dio, we can prac­tice Java pro­gram­ming using this software.


Blender is a very ver­sa­tile soft­ware, we can use it to prac­tice the Python lan­guage, which will allow us to do inter­est­ing things like cre­ate our own Addons.

Computer programming applications

We can use pro­gram­ming to solve a large num­ber of prob­lems, I will list a num­ber of uses I have giv­en to programming.

Game Development

In my free time I work on a cou­ple of game projects at Uni­ty. Know­ing the pro­gram flow of a game and cre­at­ing scripts in C# lan­guage we can manip­u­late the graph­ics by com­put­er and con­trol them with peripherals.

There are sev­er­al pop­u­lar game engines nowa­days, for exam­ple Unre­al Engine.

Develop Android Applications

With the Android Stu¬≠dio envi¬≠ron¬≠ment we can cre¬≠ate mobile appli¬≠ca¬≠tions using Java lan¬≠guage and XML.

Program micro controllers

At uni­ver­si­ty we learned to pro­gram Microchip pic micro­con­trollers using Assem­bler language.

The micro¬≠con¬≠troller is a pro¬≠cess¬≠ing device that has some inter¬≠nal mod¬≠ules such as dig¬≠i¬≠tal ana¬≠log con¬≠vert¬≠ers, timers and so on.

I've also done projects with Arduino.

Program PLC to control industrial machines

In indus­try, when pre­cise con­trol over a process is required, con­trol sys­tems with Pro­gram­ma­ble Log­ic Con­trollers (PLCs) are often implemented.

In my case I use the Delta brand and its WPLSoft envi­ron­ment that allows to pro­gram the PLC using Lad­der or con­tact lan­guage. You can also cre­ate sta­tus machines.

Process Data Table with Excel

A some­what curi­ous appli­ca­tion, but the fact of know­ing how to pro­gram was use­ful to me to ana­lyze a huge amount of data col­lect­ed by a program.

Create macros

When it comes to repet¬≠i¬≠tive tasks, macros are our salvation. 

There are dif­fer­ent appli­ca­tions that allow us to cre­ate com­plex macros using some pro­gram­ming language.

In my case I made myself a key­board spe­cial­ly ded­i­cat­ed for macro, that when press­ing a key makes a series of actions depend­ing on the pro­gram that is active.

Scroll to Top
Secured By miniOrange