Basic Concepts in Software Development: Algorithms, Libraries, Frameworks and the Internet

Today software development is a relatively uncomplicated task, given the years of accumulated knowledge about it. In this brief article we try to elucidate some concepts which can be useful to satisfy the curiosity of any beginner in the area.

Algorithms

What is an algorithm?

Briefly, we can understand an algorithm as a set of rules and instructions placed in a specific order to perform a specific task on a computer, although not only on it. Algorithms are an everyday thing: cake recipes, schedules, market lists, all these ways of organizing actions into specific steps and orders contain the germ of what an algorithm is.

In programming, however, we have slightly more fixed rules. Before any decision about the manner or order, we need to ask ourselves: what do we want our algorithm to do? Bearing this in mind, then we can think of a series of logical operations whose invariable conclusion will be contained by these operations themselves.

An algorithm is just that: this set of rules and operations. It is not yet a program, but it comprises the sequence of variables and conditions that must be obeyed for a defined problem to be solved in a defined way.

1_XFInJcLoy1SGkYFNkDGmlw

Libraries and Frameworks

After all, what's the difference between the two?

Having already a few generations of professionals and enthusiasts, programming today is no longer a solitary task done only by garage devs or elitist enthusiasts, if anything, programming has become a social enterprise. Decades of experience were ultimately condensed into vast collections of code and templates made available online. Keeping that in mind, what is the difference between Libraries and Frameworks?

One of the main differences between Libraries and Frameworks is that a library is a source of codes and templates that when used by a developer allow control over the flow of an application. A framework is a set of low-level rules and libraries that control the application flow when the developer is not in charge.

The definitive difference, therefore, between libraries and frameworks is in their execution level and function: Libraries are time-tested reusable data sets that can help to automate a program's functionality. A Library can be used by multiple users for different purposes and can be modified at their whim.

A Framework, on the other hand, is somewhat stiff: Frameworks allow their users to create software, using it in a way delimited by the framework itself. Frameworks are extensible, that is, they can be expanded according to the programmer's needs, however, their code cannot be modified - when a user uses a framework, all calls are made by the framework itself, not by the programmer. So frameworks are powerful automation tools, but not necessarily as flexible as libraries can be.

Here are some useful links regarding this section, keep them in mind, as they most surely will be useful in the future:

Libraries:

  • Moment.js: Library to convert, validate, manipulate and display dates and times
  • Chart.js: Library for creating charts
  • Voca: Library to work with Strings
  • mo.js: Library to create amazing animations with SVG
  • React: Library for creating user interfaces

Frameworks:

  • Angular: Framework for creating web applications
  • Vue.js: Framework also for creating web applications
  • Ionic: Framework to create mobile apps with Angular, React or Vue
  • Express: Framework to create applications with Node.js
  • LoopBack: Framework to create APIs and microservices with Node.js

The Internet

What's the internet?

In simple terms, the internet is the backbone of the web, being the technical infrastructure that makes it possible. Having roots in US military projects in the 1960s, today the internet is a global and extra-planetary system of communication through which data can be sent and received through.

As a global network of computers responsible for transferring huge amounts of data and facilitating its processing, the internet has been constantly evolving since its beginnings. Beyond that, the internet expanded beyond traditional communication and work, giving rise to what is now called the "internet of things". There is still some separation between the analog and digital worlds, but the fact is that this line, following an established historical trend, is slowly but surely disappearing.

Speaking of historical trends, we can delimit three important moments in the history of the World Wide Web:

  • Web 1.0 The original incarnation of the internet, focused mostly on reading data. Described by most experts as a less interactive form of the internet, its main focus was on aiding research.

  • Web 2.0 Emerged as Javascript applets and modules were incorporated into the web. More interactive, fields and forms are common there, as are all sorts of transactions, resource uploads and social interactions. We are currently in the transition from Web 2.0 to 3.0. Among the problems that are still common, although mitigated by years of research, are those of privacy. With the use of cookies and the like, user data is tracked and every interaction leaves a mark accessible by both well-intentioned and malicious people.

  • Web 3.0 Currently exists only in small pockets. We can say that its focuses are a semantic evolution and the growth of automation processes, as well as the link between virtual objects and individual sites in a continuous way. This could theoretically solve some of the Web 2.0 tracker and cookie problems, perhaps giving rise to others.

Conclusion

Is this all?

Nope. This being said, this introductory post ends here. We hope it is useful in your own growth as a programmer.