Software Development (DS) has had determining characteristics from the beginning to the present day. From the beginning the World of Software Development was divided into 2: The Development of Free and Open Source Software and the Development of Private and Closed Source Software.
And all this in turn started a race to produce similar types of Software to various types of applications in each DS World. Thus the DS gave way to the first and still current Systems Software (SS), then to the Programming Software (SP) to the Application Software (SA). And the latter in turn, from the traditional Native Applications, that is, installable and specific to each Operating System (OS) to the new Distributed Applications that run from the Internet on a Blockchain.
Practically at the same time that the SS were born, which were basically the OS itself, and included device drivers (drivers), system utilities and all those tools used for the specific control of the computer's characteristics, that is, all those programs that facilitated the management of Hardware (HW) elements, such as such as: memory, disks, ports, devices and peripherals, the SP and the SA were also born.
SPs included those SW products used by programmers to develop other computer programs using different programming languages and / or databases. SPs generally include so-called text editors, compilers, interpreters, linkers, and debuggers. In addition to the well-known Integrated Development Environments (IDE), that is, the SW that group in the same environment (generally graphic: GUI), all the necessary tools, previously mentioned, to cover the complete development cycle of a program.
And the SAs grouped the SW used by the (end) users to carry out a task. SAs generally include office automation, graphic or multimedia design, accounting or administration SW, to name just a small fraction of all the categories of applications that we can find in this category. Therefore, the SA or simply an application is about
Any program that allows an end user to perform different tasks on a computer, laptop, tablet, mobile phone or other types of equipment or technological platforms.
The Applications (Apps) at the beginning of the computer age had as an essential characteristic having to be installed to be used, and only within a single or particular, Native OS. But with time and the progress of computer science and technology, the Apps were changing obtaining and going through characteristics such as: portability, multiplatform, modularity and scalability. And so, today we have many types of Apps, ranging from traditional native to new distributed.
Native applications, those that were developed specifically for a certain OS, generally using a Software Development Kit (SDK), they were the first to be created. The fundamental characteristic of these Apps is that they adapt 100% to the functionalities and characteristics of the equipment, device or platform, thus obtaining a better user experience. Therefore, they tend to look and function better in their native environment, as well as run more fluid and stable. Although they usually have a higher development cost, if you have to create one for each version of Native OS.
Moving forward, Web Applications emerged, tAlso known as WebApp, which are those that run embedded within a page or website through an Internet browser. Therefore, they are executed in practically any Internet browser and on any type of equipment, device or platform. And practically the same thing that can be done in them in web format can be done in their native installable application format.
Hybrid Applications emerged from the union of the previous 2, which are those Apps that are developed with the languages of the WebApps allowing their use on different platforms, but with the ability of Native Apps to access a large part of the HW characteristics of the equipment, device or platform where it is executed. That is, they take full advantage of the versatility of a web development and the ability to adapt to HW like Native Apps.
Nowadays, Progressive Web Applications are developed, also known as Progressive Web Apps (PWA), which are basically web pages that make use of "Service Workers" and other technologies, and they behave more similar to Native Apps and less to WebApps. In such a way, while the "Service Workers" and other technologies are running in the background, the application runs within the Web browser.
At the same time and finally, the current Apps have been migrating to the Distributed Applications format, also known as Decentralized Applications (Dapps), which are decentralized Apps that use a «Blockchain» platform. so that users directly relate to each other and carry out operations (agreements) without the mediation of a central entity that administers the service. Consequently, in a DApp each of its users is a node of a decentralized network in which all act together as if they were a global notary of any movement made on the platform on which it runs.
The world of Software Development for being immersed in the very heart of Science and Technology does not stop evolving and advancing. And this is how the installable software (Native App) gave way to many other forms of applications (Web, Hybrid, Progressive, Distributed).
Forms that will surely soon give way to new and innovative forms of Apps, which will be impacted by the use of current and changing technologies, such as Big Data, Deep Learning, Artificial Intelligence, and the still changing technologies such as Cloud Computing and Blockchain.