Programming

Introduction

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.

Algorithms

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

Unity

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

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