Image for post
Image for post

In order to unfold the concept of recursion in an approachable way, let’s start by clarifying two concepts that need to be really clear before moving any forward: stack and heap.

What is stack?

Stack is a special area of the computer memory which stores temporary variables created by a function. Is stack, variables are declared, stored and initialized during runtime. It is a temporary storage memory. When the task is complete, the memory of the variable will be erased.

What is heap?

The heap is the actual memory space available for the computer’s CPU to use. …


Image for post
Image for post
The concept of ‘mutability’ (hence: mutants) will actually be relevant for this article.

Moving forward into learning software engineering, will inevitable put you against the concept of Object Oriented Programming, or OOP for short.

From Wikipedia:

“Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which can contain data and code: data in the form of fields (often known as attributes or properties), and code, in the form of procedures (often known as methods).”

Referring specifically about Python, it is an extremely versatile programming language and that versatility comes from its object-oriented nature. As the title says, everything in Python is considered an object. Everything.

But what does this…


Image for post
Image for post

What is a class?

A class is a code template for creating objects along with related data and functions. Objects have variables and behavior associated with them. In Python a class is created by the keyword class.

An object is created using the constructor of the class. This object will then be called the instance of the class. In Python we create instances in the following manner

Instance = class(arguments)

Attributes and Methods in class:

A class by itself has no purpose unless there is some functionality associated to it. These functionalities are defined by setting attributes, which act as containers for data and functions related to those attributes…


Image for post
Image for post

The more code we write, the more we realize that some parts or chunks of code are repeatedly used in many programs. Something as repetitive like a mathematic operation can be re-used over and over in virtually every program we write.

A library allows us to have those repetitive functions outside the specific programs and be able to utilize them whenever we need. There are huge advantages associated to that, being the most evident not having to re-write the code over an over again every time we need to use the same function.

Libraries are already-compiled and usage-ready functions to…


Image for post
Image for post
We normally only get to see the tip of the iceberg.

“ls” it is probably the first and most often used command you will learn whenever you start working on a Linux based shell.

In the simplest possible way to say it, the “ls” command is used to list the contents of a directory. When used with no extra arguments within the command line (meaning when you type only “ls” and hit enter), the system response will display a list with whatever files (and sub-directories) exist at that moment within the current directory you are positioned at.


Image for post
Image for post

(This article applies for UNIX systems only.)

What is a C static library?

A C library is just a set of named functions.

Static libraries (also known as archives) have been around as long as C itself. Like a .zip file, they’re just a bag of object files — containing functions, of course — with a table of contents in front giving the address of each name. Static libraries are created from object files using a librarian utility of some kind. One such programs is ar (ar as in archive).

Functions in static libraries are joined to a program’s main…


Image for post
Image for post

The big C.

Whatever we get to see in a device’s screen, such as a computer, smart phone or even our TV sets nowadays it is originated in a set of text instructions written in one of many available computer programs. This applies for web-sites, games or pretty much anything else you could think about.

C is a programming language designed by Dennis Ritchie back in the 70's. It is what is known as a low-level language, meaning that it provides little or no abstraction from a computer’s instruction set architecture — commands or functions in the language map closely to processor instructions…


  1. Soft Links (symbolic links)

You can make links to files and directories, and you can create links (shortcuts) on different partitions and with a different inode number than the original.

If the real copy is deleted, the link will not work.

A soft link (symbolic link) acts as a pointer or a reference to the file name. It does not access the data available in the original file. If the earlier file is deleted, the soft link will be pointing to a file that does not exist anymore.

2. Hard Links

Hard links are for files only; you cannot link…

Flavio Orlando

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store