Creation of software

Computer

The creation of a software is based on precise conceptual ideas and implementation using adapted programming tools.

Looking for a software idea

To sell a product on the market, it is better that this product is not a more or less disguised copy of an existing product.
This rule is also valid for software. If we create a word processing software comparable to MSWord with some improvements then from the start of the sale, we will attract the attention of competitors and it will become very difficult to succeed.

It is not useless to carry out a market study concerning software. The software present in the various software stores on the internet allow to have an overview of the market. Add that internet searches can give information about sales.

Generally, it is necessary to avoid thinking about software that is aimed at a too small audience, which only affect several hundred people or whose usefulness is perplexing.
For example, we should not hope to interest many users with a memorization software of sentences, which records in a directory the text entered on the keyboard with the date and time.

We must also drop the ideas of software that would be quite close to free software or provided by default with certain operating systems or even some software have become classic programming exercises in computer science schools.

But sometimes there is the chance to have the right idea and at the right time. The best examples illustrating this saying is the games Flappy Bird and Candy Crush Saga.

Design of a software

The designer must start by making a draft of the software by reflecting on the following points :

  • feature,

  • interactions with the user,

  • the appearance

Then, he must choose a programming language in which the software will be realized. It depends on the type software (for desktop computer, mobile phone, …​) and the targeted platform.
Then he must determine, the algorithmic difficulties that he could encounter. For example, if the software must recognize typed numbers in a grid, does he know an efficient algorithm to do it or does it have a library that accomplishes this character recognition task? It is best to solve this type of problem before embarking on programming.
He will then be able to describe the logic of the program using diagrams, often composed of named boxes, connected by arrows. These boxes often group functions or methods that have a common trait (manipulating the same data structure or helping to perform a specific task).
When the organization of the program is sufficiently detailed, coding can begin.
A part that is quite often overlooked is that of the appearance of the software.
The main reason is that it requires time (creation of themes, images, logos, graphic objects mobiles, fonts, …​) or that it adds a considerable cost to the software.

Programming a software

Programming a software requires knowledge of at least one programming language and many of practice.
In addition to the programming language, the developer must know how to use certain libraries or technologies run.
In the realization of a software, the programming generally represents the part that requires the most concentration and attention. Coding errors can compromise the completion of the software on time want.

Let’s take a look at which development tools can be useful for the implementation of software.

Development tools

The main development tools are programming languages (compilers or interpreters) and auxiliary programming languages for relational databases.

But it is almost essential to have a debugger and a "production engine" of the make type.

To work on the source of a program, some continue to develop with code editors as Vim, Emacs, …​, but others prefer to opt for an integrated development environment (IDE) such as Eclipse, NetBeans, Visual Studio, KDevelop, QDevelop, …​

A bit halfway between a code editor and a EDI, VSCode is often used for web applications.

The major disadvantage of EDI is that they are very resource intensive and therefore require a powerful computer so as not to row.

The other disadvantage is that they are not always cross-platform and this can be a problem for those who work on several operating systems.

Choice of programming language

On some proprietary operating systems, the choice of programming languages to develop a commercial application is voluntarily restricted by the owners of these systems.

On Mac OS, the following languages are practically imposed

  • Swift

  • Objective C

On Windows, the following languages are preferred

  • C#

  • VB.NET

  • and in some cases the C++

On Android, the following languages are preferred

  • Kotlin

  • Java

  • optionally the C++

Let’s point out in passing that there are cross-platform development systems such as Xamarin, Qt or Windev allowing to program software for several operating systems.

On operating systems based on Linux, or *BSD, there is no preferred programming language, but the most used for applications are the C and the C++.

Regarding the programming of web applications, there is at least one programming language to know for the client side and a server-side programming language, which may be different from the first.

Server-side, depending on the hosting not all programming languages are available. The PHP language remains the most widespread and practically installed by default on the servers.

Some hosting providers offer other languages such as Java, C#, Golang, Python, Ruby, Lua, JavaScript with Node.js.

In some clouds, it is languages such as Java or C# that are privileged.

On the client side, there are multiple options despite that the JavaScript is the only language to be implemented in all browsers.
For a long time, some developers wanted the replacement of the JavaScript by a stack-based virtual machine in browsers. This would have allowed an opening of the programming client-side to other languages. But there is little chance that this will happen in the near future, given that many technologies rest on the JavaScript. However, a language from the bytecode category, called Wasm (WebAssemby) appeared in 2017 to complement the JavaScript and with superior performance.
Recent browsers integrate a Wasm execution machine but which cannot interact with the DOM (Document Object Model). Thus the Wasm does not entirely replace the JavaScript which remains unavoidable.

To avoid certain JavaScript problems such as the absence of typing or the lack of some features you can use compilers from other programming languages to the JavaScript.

The most common are:

  • Dart

  • TypeScript

  • Elm

  • PureScript

  • CoffeeScript

  • ClojureScript

  • Scala.js

  • Reason

  • HAXE

  • Nim

But the JavaScript remains the preferred language for front-end programming and it has a quantity impressive libraries and software frameworks.

Previously, the jQuery library which facilitates access to the DOM was considered essential given the disparities between the different implementations of JavaScript in browsers. But this library tends to be used less and less by developers, because the JavaScript of the recent browsers is a bit more standardized. Many JavaScript software frameworks have been created in an attempt to facilitate the creation of components reusable graphics in front-end programming. Let us cite for example Backbone, Ember, knockout, …​
Two frameworks Angular and Vue and a JavaScript React library have imposed themselves and integrate a Virtual DOM which makes them efficient in case of intensive access to the DOM. The latter make it possible to create web applications in a simple page and at the same time mobile applications. But there is a downside regarding the optimization of the ranking in the search engines of the websites created with Angular, view or React since the JavaScript is executed only after the HTML code has been loaded.
By the way, the fact that Vue.js be light allows it to be used as a replacement for jQuery.


RSS


Mail


Follow


Preferencesoft Website Privacy Policy